[Libreoffice-commits] core.git: Branch 'distro/lhm/libreoffice-4-1-6+backports' - 14 commits - configure.ac download.lst i18npool/CustomTarget_collator.mk i18npool/Library_collator_data.mk i18npool/source i18nutil/source icu/ExternalProject_icu.mk icu/icu4c.10129.wintz.patch icu/icu4c.10318.CVE-2013-2924_changeset_34076.patch icu/icu4c.9948.mlym-crash.patch icu/icu4c-aix.patch icu/icu4c-android.patch icu/icu4c-buffer-overflow.patch icu/icu4c-build.patch icu/icu4c-changeset-39671.patch.1 icu/icu4c-changeset-40324.patch.1 icu/icu4c-macosx.patch icu/icu4c-mkdir.patch icu/icu4c-rpath.patch icu/icu4c-solarisgcc.patch icu/icu4c-warnings.patch icu/icu4c-wchar_t.patch icu/UnpackedTarball_icu.mk include/svx libpng/configs lpsolve/lp_solve_5.5-windows.patch Makefile.fetch svx/source
Eike Rathke
erack at redhat.com
Fri Jul 13 13:54:13 UTC 2018
Makefile.fetch | 8
configure.ac | 2
download.lst | 6
i18npool/CustomTarget_collator.mk | 4
i18npool/Library_collator_data.mk | 6
i18npool/source/collator/collator_unicode.cxx | 102
i18npool/source/collator/data/zh_TW_charset.txt | 2658 ++++++++++----------
i18npool/source/collator/gencoll_rule.cxx | 2
i18nutil/source/utility/unicode.cxx | 30
icu/ExternalProject_icu.mk | 2
icu/UnpackedTarball_icu.mk | 12
icu/icu4c-aix.patch | 44
icu/icu4c-android.patch | 38
icu/icu4c-buffer-overflow.patch | 29
icu/icu4c-build.patch | 55
icu/icu4c-changeset-39671.patch.1 | 189 +
icu/icu4c-changeset-40324.patch.1 | 11
icu/icu4c-macosx.patch | 3
icu/icu4c-mkdir.patch | 8
icu/icu4c-rpath.patch | 1
icu/icu4c-solarisgcc.patch | 6
icu/icu4c-warnings.patch | 5
icu/icu4c-wchar_t.patch | 15
icu/icu4c.10129.wintz.patch | 24
icu/icu4c.10318.CVE-2013-2924_changeset_34076.patch | 36
icu/icu4c.9948.mlym-crash.patch | 11
include/svx/ucsubset.hrc | 32
libpng/configs/pnglibconf.h | 267 +-
lpsolve/lp_solve_5.5-windows.patch | 2
svx/source/dialog/charmap.cxx | 125
svx/source/dialog/ucsubset.src | 128
31 files changed, 2182 insertions(+), 1679 deletions(-)
New commits:
commit 1236d677c15e0481c16ccf0aaa57f28f6edafa4c
Author: Eike Rathke <erack at redhat.com>
Date: Wed Nov 8 17:17:44 2017 +0100
Add ICU changeset-40324 fix for CVE-2017-14952
(cherry picked from commit cebe1279665960b732c9cb05c18e481c33e778bb)
Conflicts:
external/icu/UnpackedTarball_icu.mk
Reviewed-on: https://gerrit.libreoffice.org/44494
Tested-by: Eike Rathke <erack at redhat.com>
Reviewed-by: Andras Timar <andras.timar at collabora.com>
(cherry picked from commit 810ed1d7837d52b654edc8905bb0ceb5e17bf858)
Change-Id: Ia457669c5ec6ef5c568f4550c44ef5df32a4be66
diff --git a/icu/UnpackedTarball_icu.mk b/icu/UnpackedTarball_icu.mk
index 6fdcaf6f678b..e5129726b1e6 100644
--- a/icu/UnpackedTarball_icu.mk
+++ b/icu/UnpackedTarball_icu.mk
@@ -23,6 +23,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
icu/icu4c-mkdir.patch \
icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \
icu/icu4c-changeset-39671.patch.1 \
+ icu/icu4c-changeset-40324.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/icu/icu4c-changeset-40324.patch.1 b/icu/icu4c-changeset-40324.patch.1
new file mode 100644
index 000000000000..a651eb19415d
--- /dev/null
+++ b/icu/icu4c-changeset-40324.patch.1
@@ -0,0 +1,11 @@
+# https://ssl.icu-project.org/trac/changeset/40324/trunk/icu4c/source/i18n/zonemeta.cpp
+Index: trunk/icu4c/source/i18n/zonemeta.cpp
+===================================================================
+--- icu.orig/source/i18n/zonemeta.cpp
++++ icu/source/i18n/zonemeta.cpp
+@@ -691,5 +691,4 @@
+ if (U_FAILURE(status)) {
+ delete mzMappings;
+- deleteOlsonToMetaMappingEntry(entry);
+ uprv_free(entry);
+ break;
commit c5997d5c2358e8f0f4cbe23f72ee60857396b349
Author: Eike Rathke <erack at redhat.com>
Date: Thu Apr 20 22:06:23 2017 +0200
add ICU changeset-39671 fix for CVE-2017-7867 CVE-2017-7868
http://bugs.icu-project.org/trac/changeset/39671
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=213
https://bugzilla.redhat.com/show_bug.cgi?id=1444101
Reviewed-on: https://gerrit.libreoffice.org/36754
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins <ci at libreoffice.org>
(cherry picked from commit c7de8233d15ed0c90fef6c49a54d60cf10119f58)
Backported to older MSVC using the UGLY_SIZEOF_MAPTOUCHARS macro instead
of sizeof(UTF8Buf::mapToUChars).
Reviewed-on: https://gerrit.libreoffice.org/36776
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Conflicts:
external/icu/UnpackedTarball_icu.mk
(cherry picked from commit 2f308fd3ec5d7806a89d3d978f98bbbc7bd18dbe)
Change-Id: I4e776ad4fe63c77057b0c823f8672a2b6703346f
diff --git a/icu/UnpackedTarball_icu.mk b/icu/UnpackedTarball_icu.mk
index 1c46e97db9a0..6fdcaf6f678b 100644
--- a/icu/UnpackedTarball_icu.mk
+++ b/icu/UnpackedTarball_icu.mk
@@ -22,6 +22,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
icu/icu4c-solarisgcc.patch \
icu/icu4c-mkdir.patch \
icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \
+ icu/icu4c-changeset-39671.patch.1 \
))
# vim: set noet sw=4 ts=4:
diff --git a/icu/icu4c-changeset-39671.patch.1 b/icu/icu4c-changeset-39671.patch.1
new file mode 100644
index 000000000000..b8ac1385364e
--- /dev/null
+++ b/icu/icu4c-changeset-39671.patch.1
@@ -0,0 +1,189 @@
+diff -ur icu.org/source/common/utext.cpp icu/source/common/utext.cpp
+--- icu.org/source/common/utext.cpp 2016-06-15 20:58:17.000000000 +0200
++++ icu/source/common/utext.cpp 2017-04-21 16:38:15.993398034 +0200
+@@ -847,9 +847,15 @@
+ //------------------------------------------------------------------------------
+
+ // Chunk size.
+-// Must be less than 85, because of byte mapping from UChar indexes to native indexes.
+-// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes
+-// to two UChars.)
++// Must be less than 42 (256/6), because of byte mapping from UChar indexes to native indexes.
++// Worst case there are six UTF-8 bytes per UChar.
++// obsolete 6 byte form fd + 5 trails maps to fffd
++// obsolete 5 byte form fc + 4 trails maps to fffd
++// non-shortest 4 byte forms maps to fffd
++// normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
++// mapToUChars array size must allow for the worst case, 6.
++// This could be brought down to 4, by treating fd and fc as pure illegal,
++// rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
+ //
+ enum { UTF8_TEXT_CHUNK_SIZE=32 };
+
+@@ -867,6 +873,15 @@
+ // pair. Doing this is simpler than checking for the edge case.
+ //
+
++// erAck: older MSVC used on libreoffice-5-3 and 5-2 bails out with
++// error C2070: 'unknown': illegal sizeof operand
++// for sizeof(UTF8Buf::mapToUChars)
++// so have an ugly workaround:
++// First define a macro of the original size expression, so a follow-up patch
++// on the original code would fail..
++#define UGLY_MAPTOUCHARS_SIZE (UTF8_TEXT_CHUNK_SIZE*6+6)
++#define UGLY_SIZEOF_MAPTOUCHARS (sizeof(uint8_t)*(UGLY_MAPTOUCHARS_SIZE))
++
+ struct UTF8Buf {
+ int32_t bufNativeStart; // Native index of first char in UChar buf
+ int32_t bufNativeLimit; // Native index following last char in buf.
+@@ -889,7 +904,7 @@
+ // Requires two extra slots,
+ // one for a supplementary starting in the last normal position,
+ // and one for an entry for the buffer limit position.
+- uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
++ uint8_t mapToUChars[UGLY_MAPTOUCHARS_SIZE]; // Map native offset from bufNativeStart to
+ // correspoding offset in filled part of buf.
+ int32_t align;
+ };
+@@ -1032,6 +1047,7 @@
+ // Requested index is in this buffer.
+ u8b = (UTF8Buf *)ut->p; // the current buffer
+ mapIndex = ix - u8b->toUCharsMapStart;
++ U_ASSERT(mapIndex < (int32_t)UGLY_SIZEOF_MAPTOUCHARS);
+ ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
+ return TRUE;
+
+@@ -1298,6 +1314,10 @@
+ // Can only do this if the incoming index is somewhere in the interior of the string.
+ // If index is at the end, there is no character there to look at.
+ if (ix != ut->b) {
++ // Note: this function will only move the index back if it is on a trail byte
++ // and there is a preceding lead byte and the sequence from the lead
++ // through this trail could be part of a valid UTF-8 sequence
++ // Otherwise the index remains unchanged.
+ U8_SET_CP_START(s8, 0, ix);
+ }
+
+@@ -1311,7 +1331,10 @@
+ UChar *buf = u8b->buf;
+ uint8_t *mapToNative = u8b->mapToNative;
+ uint8_t *mapToUChars = u8b->mapToUChars;
+- int32_t toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
++ int32_t toUCharsMapStart = ix - UGLY_SIZEOF_MAPTOUCHARS + 1;
++ // Note that toUCharsMapStart can be negative. Happens when the remaining
++ // text from current position to the beginning is less than the buffer size.
++ // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
+ int32_t destIx = UTF8_TEXT_CHUNK_SIZE+2; // Start in the overflow region
+ // at end of buffer to leave room
+ // for a surrogate pair at the
+@@ -1338,6 +1361,7 @@
+ if (c<0x80) {
+ // Special case ASCII range for speed.
+ buf[destIx] = (UChar)c;
++ U_ASSERT(toUCharsMapStart <= srcIx);
+ mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
+ mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
+ } else {
+@@ -1367,6 +1391,7 @@
+ do {
+ mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
+ } while (sIx >= srcIx);
++ U_ASSERT(toUCharsMapStart <= (srcIx+1));
+
+ // Set native indexing limit to be the current position.
+ // We are processing a non-ascii, non-native-indexing char now;
+@@ -1541,6 +1566,7 @@
+ U_ASSERT(index>=ut->chunkNativeStart+ut->nativeIndexingLimit);
+ U_ASSERT(index<=ut->chunkNativeLimit);
+ int32_t mapIndex = index - u8b->toUCharsMapStart;
++ U_ASSERT(mapIndex < (int32_t)UGLY_SIZEOF_MAPTOUCHARS);
+ int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
+ U_ASSERT(offset>=0 && offset<=ut->chunkLength);
+ return offset;
+diff -ur icu.org/source/test/intltest/utxttest.cpp icu/source/test/intltest/utxttest.cpp
+--- icu.org/source/test/intltest/utxttest.cpp 2016-06-15 20:58:17.000000000 +0200
++++ icu/source/test/intltest/utxttest.cpp 2017-04-21 16:14:57.383814739 +0200
+@@ -67,6 +67,8 @@
+ if (exec) Ticket10983(); break;
+ case 7: name = "Ticket12130";
+ if (exec) Ticket12130(); break;
++ case 8: name = "Ticket12888";
++ if (exec) Ticket12888(); break;
+ default: name = ""; break;
+ }
+ }
+@@ -1583,3 +1585,63 @@
+ }
+ utext_close(&ut);
+ }
++
++// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
++// six byte utf-8 forms. Original implementation had an assumption that
++// there would be at most three utf-8 bytes per UTF-16 code unit.
++// The five and six byte sequences map to a single replacement character.
++
++void UTextTest::Ticket12888() {
++ const char *badString =
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
++ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
++
++ UErrorCode status = U_ZERO_ERROR;
++ LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
++ TEST_SUCCESS(status);
++ for (;;) {
++ UChar32 c = utext_next32(ut.getAlias());
++ if (c == U_SENTINEL) {
++ break;
++ }
++ }
++ int32_t endIdx = utext_getNativeIndex(ut.getAlias());
++ if (endIdx != (int32_t)strlen(badString)) {
++ errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
++ return;
++ }
++
++ for (int32_t prevIndex = endIdx; prevIndex>0;) {
++ UChar32 c = utext_previous32(ut.getAlias());
++ int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
++ if (c != 0xfffd) {
++ errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
++ __FILE__, __LINE__, 0xfffd, c, currentIndex);
++ break;
++ }
++ if (currentIndex != prevIndex - 6) {
++ errln("%s:%d: wrong index. Expected, actual = %d, %d",
++ __FILE__, __LINE__, prevIndex - 6, currentIndex);
++ break;
++ }
++ prevIndex = currentIndex;
++ }
++}
+diff -ur icu.org/source/test/intltest/utxttest.h icu/source/test/intltest/utxttest.h
+--- icu.org/source/test/intltest/utxttest.h 2016-06-15 20:58:17.000000000 +0200
++++ icu/source/test/intltest/utxttest.h 2017-04-21 16:14:57.383814739 +0200
+@@ -38,6 +38,7 @@
+ void Ticket10562();
+ void Ticket10983();
+ void Ticket12130();
++ void Ticket12888();
+
+ private:
+ struct m { // Map between native indices & code points.
commit bb9c6309f1bc9e1e2e34467df7a435b97c64036b
Author: Eike Rathke <erack at redhat.com>
Date: Wed Apr 13 22:24:25 2016 +0200
upgrade to ICU 57
This does not apply patches
external/icu/khmerbreakengine.patch
external/icu/khmerdict.dict
anymore, as the khmerbreakengine.patch failed to apply with several
hunks of which one was 16k. Asking the patch contributor to follow-up on
this.
Reviewed-on: https://gerrit.libreoffice.org/24067
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Eike Rathke <erack at redhat.com>
Conflicts:
download.lst
external/icu/UnpackedTarball_icu.mk
Change-Id: I78d4371d04a7b03417d402a222bcd384f02a619e
(cherry picked from commit cebac0399b87546120c3ed88a67f296a352e4966)
diff --git a/configure.ac b/configure.ac
index 02901d27e335..3adb84736052 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8329,7 +8329,7 @@ SYSTEM_GENBRK=
SYSTEM_GENCCODE=
SYSTEM_GENCMN=
-ICU_MAJOR=56
+ICU_MAJOR=57
ICU_MINOR=1
ICU_RECLASSIFIED_CLOSE_PARENTHESIS="YES"
ICU_RECLASSIFIED_PREPEND_SET_EMPTY="YES"
diff --git a/download.lst b/download.lst
index 77eb2d096fbb..ed33f3ca1ef3 100644
--- a/download.lst
+++ b/download.lst
@@ -46,7 +46,7 @@ export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
export HARFBUZZ_TARBALL := c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2
export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
-export ICU_TARBALL := c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz
+export ICU_TARBALL := 976734806026a4ef8bdd17937c8898b9-icu4c-57_1-src.tgz
export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
export JFREEREPORT_FLUTE_TARBALL := d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
export JFREEREPORT_LIBBASE_TARBALL := eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
commit d2ee569c73897b2c161e9a3e5798c37b1b6b0f57
Author: Eike Rathke <erack at redhat.com>
Date: Tue Oct 20 14:19:12 2015 +0200
Upgrade to ICU 56.1
Change-Id: Icc3d66c16fca95aa890aee6c67c84674fef878fc
(cherry picked from commit 1534a3b48ae293d6da12d96d157c53726ba6cafb)
diff --git a/configure.ac b/configure.ac
index 7fbc0595ab17..02901d27e335 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8329,7 +8329,7 @@ SYSTEM_GENBRK=
SYSTEM_GENCCODE=
SYSTEM_GENCMN=
-ICU_MAJOR=54
+ICU_MAJOR=56
ICU_MINOR=1
ICU_RECLASSIFIED_CLOSE_PARENTHESIS="YES"
ICU_RECLASSIFIED_PREPEND_SET_EMPTY="YES"
diff --git a/download.lst b/download.lst
index 31a152dd53c4..77eb2d096fbb 100644
--- a/download.lst
+++ b/download.lst
@@ -46,7 +46,7 @@ export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
export HARFBUZZ_TARBALL := c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2
export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
-export ICU_TARBALL := e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz
+export ICU_TARBALL := c4a2d71ff56aec5ebfab2a3f059be99d-icu4c-56_1-src.tgz
export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
export JFREEREPORT_FLUTE_TARBALL := d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
export JFREEREPORT_LIBBASE_TARBALL := eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index 656224054042..7959be113b3a 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -1549,6 +1549,32 @@ void SubsetMap::InitList()
aAllSubsets.push_back( Subset( 0x118A0, 0x118FF, RID_SUBSETSTR_WARANG_CITI ) );
break;
#endif
+#if U_ICU_VERSION_MAJOR_NUM >= 56
+ /* FIXME: add RID_... to include/svx/ucsubset.hrc and
+ * strings to svx/source/dialog/ucsubset.src and Unicode
+ * block ranges to aAllSubsets, for now this only
+ * compiles.. */
+ case UBLOCK_AHOM:
+ break;
+ case UBLOCK_ANATOLIAN_HIEROGLYPHS:
+ break;
+ case UBLOCK_CHEROKEE_SUPPLEMENT:
+ break;
+ case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E:
+ break;
+ case UBLOCK_EARLY_DYNASTIC_CUNEIFORM:
+ break;
+ case UBLOCK_HATRAN:
+ break;
+ case UBLOCK_MULTANI:
+ break;
+ case UBLOCK_OLD_HUNGARIAN:
+ break;
+ case UBLOCK_SUPPLEMENTAL_SYMBOLS_AND_PICTOGRAPHS:
+ break;
+ case UBLOCK_SUTTON_SIGNWRITING:
+ break;
+#endif
}
commit e0318471429bf6ac37128476b07e03801eeed048
Author: Caolán McNamara <caolanm at redhat.com>
Date: Fri Dec 19 11:04:49 2014 +0000
upgrade to icu 54
Reviewed-on: https://gerrit.libreoffice.org/13547
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
(cherry picked from commit d3e78e256f93d678c048d3d4b337df1997689196)
Change-Id: I4d32ac386ff8b69bee4319e673769917045d9450
diff --git a/configure.ac b/configure.ac
index dd955ad756db..7fbc0595ab17 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8329,7 +8329,7 @@ SYSTEM_GENBRK=
SYSTEM_GENCCODE=
SYSTEM_GENCMN=
-ICU_MAJOR=53
+ICU_MAJOR=54
ICU_MINOR=1
ICU_RECLASSIFIED_CLOSE_PARENTHESIS="YES"
ICU_RECLASSIFIED_PREPEND_SET_EMPTY="YES"
diff --git a/download.lst b/download.lst
index 0abf536181fc..31a152dd53c4 100644
--- a/download.lst
+++ b/download.lst
@@ -46,7 +46,7 @@ export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
export HARFBUZZ_TARBALL := c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2
export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
-export ICU_TARBALL := b73baa6fbdfef197608d1f69300919b9-icu4c-53_1-src.tgz
+export ICU_TARBALL := e844caed8f2ca24c088505b0d6271bc0-icu4c-54_1-src.tgz
export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
export JFREEREPORT_FLUTE_TARBALL := d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
export JFREEREPORT_LIBBASE_TARBALL := eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
index e4dbe63c2d3b..bbb780f87bb7 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -930,6 +930,26 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
sRet = "mwr";
break;
#endif
+#if (U_ICU_VERSION_MAJOR_NUM >= 54)
+ case USCRIPT_AHOM:
+ sRet = "aho";
+ break;
+ case USCRIPT_HATRAN:
+ sRet = "qly-Hatr";
+ break;
+ case USCRIPT_MODI:
+ sRet = "mr-Modi";
+ break;
+ case USCRIPT_MULTANI:
+ sRet = "skr-Mutl";
+ break;
+ case USCRIPT_PAU_CIN_HAU:
+ sRet = "ctd-Pauc";
+ break;
+ case USCRIPT_SIDDHAM:
+ sRet = "sa-Sidd";
+ break;
+#endif
}
return sRet;
}
diff --git a/icu/UnpackedTarball_icu.mk b/icu/UnpackedTarball_icu.mk
index 4ac1fe44fd0e..1c46e97db9a0 100644
--- a/icu/UnpackedTarball_icu.mk
+++ b/icu/UnpackedTarball_icu.mk
@@ -21,7 +21,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
icu/icu4c-macosx.patch \
icu/icu4c-solarisgcc.patch \
icu/icu4c-mkdir.patch \
- icu/icu4c-buffer-overflow.patch \
icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch \
))
diff --git a/icu/icu4c-aix.patch b/icu/icu4c-aix.patch
index 580a8fc8e004..f4a449f9b423 100644
--- a/icu/icu4c-aix.patch
+++ b/icu/icu4c-aix.patch
@@ -114,16 +114,16 @@
## BIR - bind with internal references [so app data and icu data doesn't collide]
--- misc/icu/source/tools/pkgdata/pkgdata.cpp 2013-04-06 20:56:00.935656635 +0100
+++ misc/build/icu/source/tools/pkgdata/pkgdata.cpp 2013-10-31 20:38:10.623984554 +0700
-@@ -888,7 +888,7 @@
+@@ -902,7 +902,7 @@
uprv_strcat(pkgDataFlags[SO_EXT], ".");
uprv_strcat(pkgDataFlags[SO_EXT], pkgDataFlags[A_EXT]);
-#elif U_PLATFORM == U_PF_OS400 || defined(_AIX)
+#elif U_PLATFORM == U_PF_OS400
- sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s.%s",
+ sprintf(libFileNames[LIB_FILE_VERSION_TMP], "%s%s%s",
libFileNames[LIB_FILE],
- pkgDataFlags[SOBJ_EXT]);
-@@ -1302,15 +1302,6 @@
+ FILE_EXTENSION_SEP,
+@@ -1375,15 +1375,6 @@
pkgDataFlags[LDICUDTFLAGS],
targetDir,
libFileNames[LIB_FILE_CYGWIN_VERSION],
@@ -139,4 +139,3 @@
#else
sprintf(cmd, "%s %s -o %s%s %s %s%s %s %s",
pkgDataFlags[GENLIB],
-
diff --git a/icu/icu4c-buffer-overflow.patch b/icu/icu4c-buffer-overflow.patch
deleted file mode 100644
index fb5f8abbaa58..000000000000
--- a/icu/icu4c-buffer-overflow.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-I: Statement might be overflowing a buffer in strncat. Common mistake:
- BAD: strncat(buffer,charptr,sizeof(buffer)) is wrong, it takes the left over size as 3rd argument
- GOOD: strncat(buffer,charptr,sizeof(buffer)-strlen(buffer)-1)
-E: icu bufferoverflowstrncat pkgdata.cpp:299:87
-
----
- source/tools/pkgdata/pkgdata.cpp | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-Index: icu/source/tools/pkgdata/pkgdata.cpp
-===================================================================
---- build/icu.orig/source/tools/pkgdata/pkgdata.cpp
-+++ build/icu/source/tools/pkgdata/pkgdata.cpp
-@@ -2060,12 +2060,12 @@
- const char cmd[] = "icu-config --incpkgdatafile";
-
- /* #1 try the same path where pkgdata was called from. */
-- findDirname(progname, cmdBuf, 1024, &status);
-+ findDirname(progname, cmdBuf, sizeof(cmdBuf), &status);
- if(U_SUCCESS(status)) {
- if (cmdBuf[0] != 0) {
-- uprv_strncat(cmdBuf, U_FILE_SEP_STRING, 1024);
-+ uprv_strncat(cmdBuf, U_FILE_SEP_STRING, sizeof(cmdBuf)-1-strlen(cmdBuf));
- }
-- uprv_strncat(cmdBuf, cmd, 1023);
-+ uprv_strncat(cmdBuf, cmd, sizeof(cmdBuf)-1-strlen(cmdBuf));
-
- if(verbose) {
- fprintf(stdout, "# Calling icu-config: %s\n", cmdBuf);
-
diff --git a/icu/icu4c-build.patch b/icu/icu4c-build.patch
index 109cb1b26c01..238920f016cf 100644
--- a/icu/icu4c-build.patch
+++ b/icu/icu4c-build.patch
@@ -16,31 +16,30 @@
".long ","",HEX_0X
},
+ {"gcc-android-arm",
-+ "\t.arch armv5te\n"
-+ "\t.fpu softvfp\n"
-+ "\t.eabi_attribute 20, 1\n"
-+ "\t.eabi_attribute 21, 1\n"
-+ "\t.eabi_attribute 23, 3\n"
-+ "\t.eabi_attribute 24, 1\n"
-+ "\t.eabi_attribute 25, 1\n"
-+ "\t.eabi_attribute 26, 2\n"
-+ "\t.eabi_attribute 30, 6\n"
-+ "\t.eabi_attribute 18, 4\n"
-+ "\t.file \"%s.s\"\n"
-+ "\t.global %s\n"
-+ "\t.section .rodata\n"
-+ "\t.align 2\n"
-+ "\t.type %s, %%object\n"
-+ "%s:\n",
++ "\t.arch armv5te\n"
++ "\t.fpu softvfp\n"
++ "\t.eabi_attribute 20, 1\n"
++ "\t.eabi_attribute 21, 1\n"
++ "\t.eabi_attribute 23, 3\n"
++ "\t.eabi_attribute 24, 1\n"
++ "\t.eabi_attribute 25, 1\n"
++ "\t.eabi_attribute 26, 2\n"
++ "\t.eabi_attribute 30, 6\n"
++ "\t.eabi_attribute 18, 4\n"
++ "\t.file \"%s.s\"\n"
++ "\t.global %s\n"
++ "\t.section .rodata\n"
++ "\t.align 2\n"
++ "\t.type %s, %%object\n"
++ "%s:\n",
+
-+ "\t.word ",
-+ "\t.section .note.GNU-stack,\"\",%%progbits\n",
-+ HEX_0X
++ "\t.word ",
++ "\t.section .note.GNU-stack,\"\",%%progbits\n",
++ HEX_0X
+ },
- // 16 bytes alignment.
- // http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf
+ /* 16 bytes alignment. */
+ /* http://docs.oracle.com/cd/E19641-01/802-1947/802-1947.pdf */
{"sun",
-
--- misc/icu/source/config/mh-darwin 2010-09-29 20:37:36.000000000 +0200
+++ misc/build/icu/source/config/mh-darwin 2011-03-15 10:56:26.653056004 +0100
@@ -28,11 +28,7 @@
diff --git a/icu/icu4c-mkdir.patch b/icu/icu4c-mkdir.patch
index c9758a306464..094ddd5abca4 100644
--- a/icu/icu4c-mkdir.patch
+++ b/icu/icu4c-mkdir.patch
@@ -1,11 +1,10 @@
--- misc/icu/source/dataMakefile.in.sav 2012-04-05 22:49:20.000000000 +0200
+++ build/icu/source/data/Makefile.in 2012-12-04 14:24:40.548026700 +0100
-@@ -350,6 +350,7 @@
+@@ -363,6 +363,7 @@
ifeq ($(PKGDATA_MODE),dll)
SO_VERSION_DATA = $(OUTTMPDIR)/icudata.res
$(SO_VERSION_DATA) : $(MISCSRCDIR)/icudata.rc
+ mkdir -p $(OUTTMPDIR)
- rc.exe /i$(srcdir)/../common /i$(top_builddir)/common /fo$@ $(CPPFLAGS) $(SOURCE_FILE)
- endif
- endif
-
+ ifeq ($(MSYS_RC_MODE),1)
+ rc.exe -i$(srcdir)/../common -i$(top_builddir)/common -fo$@ $(CPPFLAGS) $<
+ else
diff --git a/include/svx/ucsubset.hrc b/include/svx/ucsubset.hrc
index f41d223fa13e..de34c4c4e7d9 100644
--- a/include/svx/ucsubset.hrc
+++ b/include/svx/ucsubset.hrc
@@ -249,6 +249,38 @@
#define RID_SUBSETSTR_HANUNOO (RID_SUBSET_START + 221)
#define RID_SUBSETSTR_KANBUN (RID_SUBSET_START + 222)
#define RID_SUBSETSTR_BUHID (RID_SUBSET_START + 223)
+#define RID_SUBSETSTR_BASSA_VAH (RID_SUBSET_START + 224)
+#define RID_SUBSETSTR_CAUCASIAN_ALBANIAN (RID_SUBSET_START + 225)
+#define RID_SUBSETSTR_COPTIC_EPACT_NUMBERS (RID_SUBSET_START + 226)
+#define RID_SUBSETSTR_COMBINING_DIACRITICAL_MARKS_EXTENDED (RID_SUBSET_START + 227)
+#define RID_SUBSETSTR_DUPLOYAN (RID_SUBSET_START + 228)
+#define RID_SUBSETSTR_ELBASAN (RID_SUBSET_START + 229)
+#define RID_SUBSETSTR_GEOMETRIC_SHAPES_EXTENDED (RID_SUBSET_START + 230)
+#define RID_SUBSETSTR_GRANTHA (RID_SUBSET_START + 231)
+#define RID_SUBSETSTR_KHOJKI (RID_SUBSET_START + 232)
+#define RID_SUBSETSTR_KHUDAWADI (RID_SUBSET_START + 233)
+#define RID_SUBSETSTR_LATIN_EXTENDED_E (RID_SUBSET_START + 234)
+#define RID_SUBSETSTR_LINEAR_A (RID_SUBSET_START + 235)
+#define RID_SUBSETSTR_MAHAJANI (RID_SUBSET_START + 236)
+#define RID_SUBSETSTR_MANICHAEAN (RID_SUBSET_START + 237)
+#define RID_SUBSETSTR_MENDE_KIKAKUI (RID_SUBSET_START + 238)
+#define RID_SUBSETSTR_MODI (RID_SUBSET_START + 239)
+#define RID_SUBSETSTR_MRO (RID_SUBSET_START + 240)
+#define RID_SUBSETSTR_MYANMAR_EXTENDED_B (RID_SUBSET_START + 241)
+#define RID_SUBSETSTR_NABATAEAN (RID_SUBSET_START + 242)
+#define RID_SUBSETSTR_OLD_NORTH_ARABIAN (RID_SUBSET_START + 243)
+#define RID_SUBSETSTR_OLD_PERMIC (RID_SUBSET_START + 244)
+#define RID_SUBSETSTR_ORNAMENTAL_DINGBATS (RID_SUBSET_START + 245)
+#define RID_SUBSETSTR_PAHAWH_HMONG (RID_SUBSET_START + 246)
+#define RID_SUBSETSTR_PALMYRENE (RID_SUBSET_START + 247)
+#define RID_SUBSETSTR_PAU_CIN_HAU (RID_SUBSET_START + 248)
+#define RID_SUBSETSTR_PSALTER_PAHLAVI (RID_SUBSET_START + 249)
+#define RID_SUBSETSTR_SHORTHAND_FORMAT_CONTROLS (RID_SUBSET_START + 250)
+#define RID_SUBSETSTR_SIDDHAM (RID_SUBSET_START + 251)
+#define RID_SUBSETSTR_SINHALA_ARCHAIC_NUMBERS (RID_SUBSET_START + 252)
+#define RID_SUBSETSTR_SUPPLEMENTAL_ARROWS_C (RID_SUBSET_START + 253)
+#define RID_SUBSETSTR_TIRHUTA (RID_SUBSET_START + 254)
+#define RID_SUBSETSTR_WARANG_CITI (RID_SUBSET_START + 255)
// RID_SUBSET_END (RID_SUBSET_START + 299)
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index 82239d83d52e..656224054042 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -1451,6 +1451,105 @@ void SubsetMap::InitList()
aAllSubsets.push_back( Subset( 0x11680, 0x116CF, RID_SUBSETSTR_TAKRI ) );
break;
#endif
+#if U_ICU_VERSION_MAJOR_NUM >= 53
+ case UBLOCK_BASSA_VAH:
+ aAllSubsets.push_back( Subset( 0x16AD0, 0x16AFF, RID_SUBSETSTR_BASSA_VAH ) );
+ break;
+ case UBLOCK_CAUCASIAN_ALBANIAN:
+ aAllSubsets.push_back( Subset( 0x10530, 0x1056F, RID_SUBSETSTR_CAUCASIAN_ALBANIAN) );
+ break;
+ case UBLOCK_COPTIC_EPACT_NUMBERS:
+ aAllSubsets.push_back( Subset( 0x102E0, 0x102FF, RID_SUBSETSTR_COPTIC_EPACT_NUMBERS ) );
+ break;
+ case UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED:
+ aAllSubsets.push_back( Subset( 0x1AB0, 0x1AFF, RID_SUBSETSTR_COMBINING_DIACRITICAL_MARKS_EXTENDED ) );
+ break;
+ case UBLOCK_DUPLOYAN:
+ aAllSubsets.push_back( Subset( 0x1BC00, 0x1BC9F, RID_SUBSETSTR_DUPLOYAN ) );
+ break;
+ case UBLOCK_ELBASAN:
+ aAllSubsets.push_back( Subset( 0x10500, 0x1052F, RID_SUBSETSTR_ELBASAN ) );
+ break;
+ case UBLOCK_GEOMETRIC_SHAPES_EXTENDED:
+ aAllSubsets.push_back( Subset( 0x1F780, 0x1F7FF, RID_SUBSETSTR_GEOMETRIC_SHAPES_EXTENDED ) );
+ break;
+ case UBLOCK_GRANTHA:
+ aAllSubsets.push_back( Subset( 0x11300, 0x1137F, RID_SUBSETSTR_GRANTHA ) );
+ break;
+ case UBLOCK_KHOJKI:
+ aAllSubsets.push_back( Subset( 0x11200, 0x1124F, RID_SUBSETSTR_KHOJKI ) );
+ break;
+ case UBLOCK_KHUDAWADI:
+ aAllSubsets.push_back( Subset( 0x112B0, 0x112FF, RID_SUBSETSTR_KHUDAWADI ) );
+ break;
+ case UBLOCK_LATIN_EXTENDED_E:
+ aAllSubsets.push_back( Subset( 0xAB30, 0xAB6F, RID_SUBSETSTR_LATIN_EXTENDED_E ) );
+ break;
+ case UBLOCK_LINEAR_A:
+ aAllSubsets.push_back( Subset( 0x10600, 0x1077F, RID_SUBSETSTR_LINEAR_A ) );
+ break;
+ case UBLOCK_MAHAJANI:
+ aAllSubsets.push_back( Subset( 0x11150, 0x1117F, RID_SUBSETSTR_MAHAJANI ) );
+ break;
+ case UBLOCK_MANICHAEAN:
+ aAllSubsets.push_back( Subset( 0x10AC0, 0x10AFF, RID_SUBSETSTR_MANICHAEAN ) );
+ break;
+ case UBLOCK_MENDE_KIKAKUI:
+ aAllSubsets.push_back( Subset( 0x1E800, 0x1E8DF, RID_SUBSETSTR_MENDE_KIKAKUI ) );
+ break;
+ case UBLOCK_MODI:
+ aAllSubsets.push_back( Subset( 0x11600, 0x1165F, RID_SUBSETSTR_MODI ) );
+ break;
+ case UBLOCK_MRO:
+ aAllSubsets.push_back( Subset( 0x16A40, 0x16A6F, RID_SUBSETSTR_MRO ) );
+ break;
+ case UBLOCK_MYANMAR_EXTENDED_B:
+ aAllSubsets.push_back( Subset( 0xA9E0, 0xA9FF, RID_SUBSETSTR_MYANMAR_EXTENDED_B ) );
+ break;
+ case UBLOCK_NABATAEAN:
+ aAllSubsets.push_back( Subset( 0x10880, 0x108AF, RID_SUBSETSTR_NABATAEAN ) );
+ break;
+ case UBLOCK_OLD_NORTH_ARABIAN:
+ aAllSubsets.push_back( Subset( 0x10A80, 0x10A9F, RID_SUBSETSTR_OLD_NORTH_ARABIAN ) );
+ break;
+ case UBLOCK_OLD_PERMIC:
+ aAllSubsets.push_back( Subset( 0x10350, 0x1037F, RID_SUBSETSTR_OLD_PERMIC ) );
+ break;
+ case UBLOCK_ORNAMENTAL_DINGBATS:
+ aAllSubsets.push_back( Subset( 0x1F650, 0x1F67F, RID_SUBSETSTR_ORNAMENTAL_DINGBATS ) );
+ break;
+ case UBLOCK_PAHAWH_HMONG:
+ aAllSubsets.push_back( Subset( 0x16B00, 0x16B8F, RID_SUBSETSTR_PAHAWH_HMONG ) );
+ break;
+ case UBLOCK_PALMYRENE:
+ aAllSubsets.push_back( Subset( 0x10860, 0x1087F, RID_SUBSETSTR_PALMYRENE ) );
+ break;
+ case UBLOCK_PAU_CIN_HAU:
+ aAllSubsets.push_back( Subset( 0x11AC0, 0x11AFF, RID_SUBSETSTR_PAU_CIN_HAU ) );
+ break;
+ case UBLOCK_PSALTER_PAHLAVI:
+ aAllSubsets.push_back( Subset( 0x10B80, 0x10BAF, RID_SUBSETSTR_PSALTER_PAHLAVI ) );
+ break;
+ case UBLOCK_SHORTHAND_FORMAT_CONTROLS:
+ aAllSubsets.push_back( Subset( 0x1BCA0, 0x1BCAF, RID_SUBSETSTR_SHORTHAND_FORMAT_CONTROLS ) );
+ break;
+ case UBLOCK_SIDDHAM:
+ aAllSubsets.push_back( Subset( 0x11580, 0x115FF, RID_SUBSETSTR_SIDDHAM ) );
+ break;
+ case UBLOCK_SINHALA_ARCHAIC_NUMBERS:
+ aAllSubsets.push_back( Subset( 0x111E0, 0x111FF, RID_SUBSETSTR_SINHALA_ARCHAIC_NUMBERS ) );
+ break;
+ case UBLOCK_SUPPLEMENTAL_ARROWS_C:
+ aAllSubsets.push_back( Subset( 0x1F800, 0x1F8FF, RID_SUBSETSTR_SUPPLEMENTAL_ARROWS_C ) );
+ break;
+ case UBLOCK_TIRHUTA:
+ aAllSubsets.push_back( Subset( 0x11480, 0x114DF, RID_SUBSETSTR_TIRHUTA ) );
+ break;
+ case UBLOCK_WARANG_CITI:
+ aAllSubsets.push_back( Subset( 0x118A0, 0x118FF, RID_SUBSETSTR_WARANG_CITI ) );
+ break;
+#endif
+
}
#if OSL_DEBUG_LEVEL > 0
diff --git a/svx/source/dialog/ucsubset.src b/svx/source/dialog/ucsubset.src
index 15b283d1ba18..d9cf59f131fc 100644
--- a/svx/source/dialog/ucsubset.src
+++ b/svx/source/dialog/ucsubset.src
@@ -911,6 +911,134 @@ Resource RID_SUBSETMAP
{
Text [ en-US ] = "Takri";
};
+ String RID_SUBSETSTR_BASSA_VAH
+ {
+ Text [ en-US ] = "Bassa Vah";
+ };
+ String RID_SUBSETSTR_CAUCASIAN_ALBANIAN
+ {
+ Text [ en-US ] = "Caucasian Albanian";
+ };
+ String RID_SUBSETSTR_COPTIC_EPACT_NUMBERS
+ {
+ Text [ en-US ] = "Coptic Epact Numbers";
+ };
+ String RID_SUBSETSTR_COMBINING_DIACRITICAL_MARKS_EXTENDED
+ {
+ Text [ en-US ] = "Combining Diacritical Marks Extended";
+ };
+ String RID_SUBSETSTR_DUPLOYAN
+ {
+ Text [ en-US ] = "Duployan";
+ };
+ String RID_SUBSETSTR_ELBASAN
+ {
+ Text [ en-US ] = "Elbasan";
+ };
+ String RID_SUBSETSTR_GEOMETRIC_SHAPES_EXTENDED
+ {
+ Text [ en-US ] = "Geometric Shapes Extended";
+ };
+ String RID_SUBSETSTR_GRANTHA
+ {
+ Text [ en-US ] = "Grantha";
+ };
+ String RID_SUBSETSTR_KHOJKI
+ {
+ Text [ en-US ] = "Khojki";
+ };
+ String RID_SUBSETSTR_KHUDAWADI
+ {
+ Text [ en-US ] = "Khudawadi";
+ };
+ String RID_SUBSETSTR_LATIN_EXTENDED_E
+ {
+ Text [ en-US ] = "Latin Extended-E";
+ };
+ String RID_SUBSETSTR_LINEAR_A
+ {
+ Text [ en-US ] = "Linear A";
+ };
+ String RID_SUBSETSTR_MAHAJANI
+ {
+ Text [ en-US ] = "Mahajani";
+ };
+ String RID_SUBSETSTR_MANICHAEAN
+ {
+ Text [ en-US ] = "Manichaean";
+ };
+ String RID_SUBSETSTR_MENDE_KIKAKUI
+ {
+ Text [ en-US ] = "Mende Kikakui";
+ };
+ String RID_SUBSETSTR_MODI
+ {
+ Text [ en-US ] = "Modi";
+ };
+ String RID_SUBSETSTR_MRO
+ {
+ Text [ en-US ] = "Mro";
+ };
+ String RID_SUBSETSTR_MYANMAR_EXTENDED_B
+ {
+ Text [ en-US ] = "Myanmar Extended-B";
+ };
+ String RID_SUBSETSTR_NABATAEAN
+ {
+ Text [ en-US ] = "Nabataean";
+ };
+ String RID_SUBSETSTR_OLD_NORTH_ARABIAN
+ {
+ Text [ en-US ] = "Old North Arabian";
+ };
+ String RID_SUBSETSTR_OLD_PERMIC
+ {
+ Text [ en-US ] = "Old Permic";
+ };
+ String RID_SUBSETSTR_ORNAMENTAL_DINGBATS
+ {
+ Text [ en-US ] = "Ornamental Dingbats";
+ };
+ String RID_SUBSETSTR_PAHAWH_HMONG
+ {
+ Text [ en-US ] = "Pahawh Hmong";
+ };
+ String RID_SUBSETSTR_PALMYRENE
+ {
+ Text [ en-US ] = "Palmyrene";
+ };
+ String RID_SUBSETSTR_PAU_CIN_HAU
+ {
+ Text [ en-US ] = "Pau Cin Hau";
+ };
+ String RID_SUBSETSTR_PSALTER_PAHLAVI
+ {
+ Text [ en-US ] = "Psalter Pahlavi";
+ };
+ String RID_SUBSETSTR_SHORTHAND_FORMAT_CONTROLS
+ {
+ Text [ en-US ] = "Shorthand Format Controls";
+ };
+ String RID_SUBSETSTR_SIDDHAM
+ {
+ Text [ en-US ] = "Siddham";
+ };
+ String RID_SUBSETSTR_SINHALA_ARCHAIC_NUMBERS
+ {
+ Text [ en-US ] = "Sinhala Archaic Numbers";
+ };
+ String RID_SUBSETSTR_SUPPLEMENTAL_ARROWS_C
+ {
+ Text [ en-US ] = "Supplemental Arrows-C";
+ };
+ String RID_SUBSETSTR_TIRHUTA
+ {
+ Text [ en-US ] = "Tirhuta";
+ };
+ String RID_SUBSETSTR_WARANG_CITI
+ {
+ Text [ en-US ] = "Warang Citi";
+ };
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 40b35b33e78212a84f570c7678ed838323c07204
Author: Thomas Arnhold <thomas at arnhold.org>
Date: Mon Oct 21 06:10:34 2013 +0200
i18nutil: Add new enumeration values from ICU 52
WaE: enumeration values 'USCRIPT_CAUCASIAN_ALBANIAN' and
'USCRIPT_MAHAJANI' not handled in switch [-Wswitch]
With ICU 4.9 there is no major/minor anymore, it's only ICU 49 or ICU 52.
So adapt the previous check, too.
Change-Id: Id938937b305165d407ced473ea1725e97efe9124
See: http://icu-project.org/apiref/icu4c-latest/uscript_8h.html
Reviewed-on: https://gerrit.libreoffice.org/6365
Tested-by: Caolán McNamara <caolanm at redhat.com>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
(cherry picked from commit 0c6a5d99ff82e4420f9f1c68152f89b7b5511517)
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
index 2c2dd421ca4e..e4dbe63c2d3b 100644
--- a/i18nutil/source/utility/unicode.cxx
+++ b/i18nutil/source/utility/unicode.cxx
@@ -911,7 +911,7 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
sRet = "woe";
break;
#endif
-#if (U_ICU_VERSION_MAJOR_NUM > 4)
+#if (U_ICU_VERSION_MAJOR_NUM >= 49)
case USCRIPT_ANATOLIAN_HIEROGLYPHS:
sRet = "hlu";
break;
@@ -922,6 +922,14 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
sRet = "mai";
break;
#endif
+#if (U_ICU_VERSION_MAJOR_NUM >= 52)
+ case USCRIPT_CAUCASIAN_ALBANIAN:
+ sRet = "xag";
+ break;
+ case USCRIPT_MAHAJANI:
+ sRet = "mwr";
+ break;
+#endif
}
return sRet;
}
commit 374bfef9e000e2ec14b99c4e72d24e791aa86e90
Author: Eike Rathke <erack at redhat.com>
Date: Wed Apr 30 17:51:05 2014 +0100
resolve crashes with ICU 53.1 in locales with collator data, fdo#77071
ICU 53.1 changed API behavior:
https://ssl.icu-project.org/apiref/icu4c/classicu_1_1RuleBasedCollator.html#a2f4c7eeaf020ad68e3bd9722dd272357
isn't correct anymore:
length: size of the image. If negative, the API will try to figure out the
length of the image
NO, IT WILL NOT! It bails out with an error instead.
Introduced a function to obtain the length for each collator data.
base: collator, usually root. The base is required to be present through the
lifetime of the collator. Currently it cannot be NULL.
NOT "usually root"! There's a check now that bails out if
if(base->tailoring != CollationRoot::getRoot(errorCode))
So using an instance created with icu::Locale::getRoot()
(cherry picked from commit a3c627fe38236e82bc6008075d862b3cbfbd9ce3)
Change-Id: Ia9c4e27d5ef4f8083bbe57e4e2f4b3ff63bb42ed
diff --git a/i18npool/source/collator/collator_unicode.cxx b/i18npool/source/collator/collator_unicode.cxx
index 50f4d92614d4..52d9d5f9ba2e 100644
--- a/i18npool/source/collator/collator_unicode.cxx
+++ b/i18npool/source/collator/collator_unicode.cxx
@@ -120,6 +120,7 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
}
if (!collator && OUString::createFromAscii(LOCAL_RULE_LANGS).indexOf(rLocale.Language) >= 0) {
const sal_uInt8* (*func)() = NULL;
+ size_t (*funclen)() = NULL;
#ifndef DISABLE_DYNLOADING
OUStringBuffer aBuf;
@@ -132,11 +133,21 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
aBuf.appendAscii("get_").append(rLocale.Language).appendAscii("_");
if ( rLocale.Language == "zh" ) {
OUString func_base = aBuf.makeStringAndClear();
+ OUString funclen_base = func_base + "_length";
if (OUString("TW HK MO").indexOf(rLocale.Country) >= 0)
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule,
+ {
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule,
OUString(func_base + "TW_" + rAlgorithm).pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(hModule,
+ OUString(funclen_base + "TW_" + rAlgorithm).pData);
+ }
if (!func)
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, OUString(func_base + rAlgorithm).pData);
+ {
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(
+ hModule, OUString(func_base + rAlgorithm).pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(
+ hModule, OUString(funclen_base + rAlgorithm).pData);
+ }
} else {
if ( rLocale.Language == "ja" ) {
// replace algorithm name to implementation name.
@@ -149,71 +160,146 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
} else {
aBuf.append(rAlgorithm);
}
- func=(const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, aBuf.makeStringAndClear().pData);
+ OUString func_base = aBuf.makeStringAndClear();
+ OUString funclen_base = func_base + "_length";
+ func = (const sal_uInt8* (*)()) osl_getFunctionSymbol(hModule, func_base.pData);
+ funclen = (size_t (*)()) osl_getFunctionSymbol(hModule, funclen_base.pData);
}
}
#else
if ( rLocale.Language == "ca" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ca_charset;
+ funclen = get_collator_data_ca_charset_length;
+ }
} else if ( rLocale.Language == "dz" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_dz_charset;
+ funclen = get_collator_data_dz_charset_length;
+ }
} else if ( rLocale.Language == "hu" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_hu_charset;
+ funclen = get_collator_data_hu_charset_length;
+ }
} else if ( rLocale.Language == "ja" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ja_charset;
+ funclen = get_collator_data_ja_charset_length;
+ }
else if ( rAlgorithm == "phonetic (alphanumeric first)" )
+ {
func = get_collator_data_ja_phonetic_alphanumeric_first;
+ funclen = get_collator_data_ja_phonetic_alphanumeric_first_length;
+ }
else if ( rAlgorithm == "phonetic (alphanumeric last)" )
+ {
func = get_collator_data_ja_phonetic_alphanumeric_last;
+ funclen = get_collator_data_ja_phonetic_alphanumeric_last_length;
+ }
#if (U_ICU_VERSION_MAJOR_NUM < 53)
} else if ( rLocale.Language == "ko" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ko_charset;
+ funclen = get_collator_data_ko_charset_length;
+ }
#endif
} else if ( rLocale.Language == "ku" ) {
if ( rAlgorithm == "alphanumeric" )
+ {
func = get_collator_data_ku_alphanumeric;
+ funclen = get_collator_data_ku_alphanumeric_length;
+ }
} else if ( rLocale.Language == "ln" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ln_charset;
+ funclen = get_collator_data_ln_charset_length;
+ }
} else if ( rLocale.Language == "my" ) {
if ( rAlgorithm == "dictionary" )
+ {
func = get_collator_data_my_dictionary;
+ funclen = get_collator_data_my_dictionary_length;
+ }
} else if ( rLocale.Language == "ne" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_ne_charset;
+ funclen = get_collator_data_ne_charset_length;
+ }
} else if ( rLocale.Language == "sid" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_sid_charset;
+ funclen = get_collator_data_sid_charset_length;
+ }
} else if ( rLocale.Language == "zh" && (rLocale.Country == "TW" || rLocale.Country == "HK" || rLocale.Country == "MO") ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_zh_TW_charset;
+ funclen = get_collator_data_zh_TW_charset_length;
+ }
else if ( rAlgorithm == "radical" )
+ {
func = get_collator_data_zh_TW_radical;
+ funclen = get_collator_data_zh_TW_radical_length;
+ }
else if ( rAlgorithm == "stroke" )
+ {
func = get_collator_data_zh_TW_stroke;
+ funclen = get_collator_data_zh_TW_stroke_length;
+ }
} else if ( rLocale.Language == "zh" ) {
if ( rAlgorithm == "charset" )
+ {
func = get_collator_data_zh_charset;
+ funclen = get_collator_data_zh_charset_length;
+ }
else if ( rAlgorithm == "pinyin" )
+ {
func = get_collator_data_zh_pinyin;
+ funclen = get_collator_data_zh_pinyin_length;
+ }
else if ( rAlgorithm == "radical" )
+ {
func = get_collator_data_zh_radical;
+ funclen = get_collator_data_zh_radical_length;
+ }
else if ( rAlgorithm == "stroke" )
+ {
func = get_collator_data_zh_stroke;
+ funclen = get_collator_data_zh_stroke_length;
+ }
else if ( rAlgorithm == "zhuyin" )
+ {
func = get_collator_data_zh_zhuyin;
+ funclen = get_collator_data_zh_zhuyin_length;
+ }
}
-#endif
- if (func) {
+#endif // DISABLE_DYNLOADING
+ if (func && funclen) {
const sal_uInt8* ruleImage=func();
- uca_base = new RuleBasedCollator(static_cast<UChar*>(NULL), status);
+ size_t ruleImageSize = funclen();
+ // Not only changed ICU 53.1 the API behavior that a negative
+ // length (ruleImageSize) now leads to failure, but also that
+ // the base RuleBasedCollator passed as uca_base here needs to
+ // have a base->tailoring == CollationRoot::getRoot() otherwise
+ // the init bails out as well, as it does for the previously
+ // used "empty" RuleBasedCollator.
+ // The default collator of the en-US locale would also fulfill
+ // the requirement. The collator of the actual locale or the
+ // NULL (default) locale does not.
+ uca_base = static_cast<RuleBasedCollator*>(icu::Collator::createInstance(
+ icu::Locale::getRoot(), status));
if (! U_SUCCESS(status)) throw RuntimeException();
- collator = new RuleBasedCollator(reinterpret_cast<const uint8_t*>(ruleImage), -1, uca_base, status);
+ collator = new RuleBasedCollator(
+ reinterpret_cast<const uint8_t*>(ruleImage), ruleImageSize, uca_base, status);
if (! U_SUCCESS(status)) throw RuntimeException();
}
}
diff --git a/i18npool/source/collator/gencoll_rule.cxx b/i18npool/source/collator/gencoll_rule.cxx
index afca09f00d36..258ab5299898 100644
--- a/i18npool/source/collator/gencoll_rule.cxx
+++ b/i18npool/source/collator/gencoll_rule.cxx
@@ -65,8 +65,10 @@ void data_write(char* file, char* name, sal_uInt8 *data, sal_Int32 len)
fprintf(fp, "#ifndef DISABLE_DYNLOADING\n");
fprintf(fp, "SAL_DLLPUBLIC_EXPORT const sal_uInt8* get_%s() { return %s; }\n", name, name);
+ fprintf(fp, "SAL_DLLPUBLIC_EXPORT size_t get_%s_length() { return sizeof(%s); }\n", name, name);
fprintf(fp, "#else\n");
fprintf(fp, "SAL_DLLPUBLIC_EXPORT const sal_uInt8* get_collator_data_%s() { return %s; }\n", name, name);
+ fprintf(fp, "SAL_DLLPUBLIC_EXPORT size_t get_collator_data_%s_length() { return sizeof(%s); }\n", name, name);
fprintf(fp, "#endif\n");
fprintf(fp, "\n");
fprintf (fp, "}\n");
commit ba7fbe6233a837ff3106cad4b649b2bb806d2b91
Author: Michael Stahl <Michael.Stahl at cib.de>
Date: Fri Jul 13 14:58:15 2018 +0200
icu: remove icu/icu4c.9948.mlym-crash.patch
This was fixed upstream in 53 and removed in LO in
1733e4ad1c5bddfef8977e6b8bc738ab15f49490 "Don't build icule library as we no longer use it"
Change-Id: I53cf7fc7c80acd323f687efc91aa98a89cefe843
diff --git a/icu/UnpackedTarball_icu.mk b/icu/UnpackedTarball_icu.mk
index 35c95c498ad2..4ac1fe44fd0e 100644
--- a/icu/UnpackedTarball_icu.mk
+++ b/icu/UnpackedTarball_icu.mk
@@ -12,7 +12,6 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,icu))
$(eval $(call gb_UnpackedTarball_set_tarball,icu,$(ICU_TARBALL)))
$(eval $(call gb_UnpackedTarball_add_patches,icu,\
- icu/icu4c.9948.mlym-crash.patch \
icu/icu4c-build.patch \
icu/icu4c.8198.revert.icu5431.patch \
icu/icu4c.7601.Indic-ccmp.patch \
diff --git a/icu/icu4c.9948.mlym-crash.patch b/icu/icu4c.9948.mlym-crash.patch
deleted file mode 100644
index 2a5d89ccb07b..000000000000
--- a/icu/icu4c.9948.mlym-crash.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- misc/build/icu/source/layout/IndicClassTables.cpp 2013-02-19 16:04:09.919412782 +0000
-+++ misc/icu/source/layout/IndicClassTables.cpp 2013-02-19 16:04:14.519351601 +0000
-@@ -273,7 +273,7 @@
-
- static const IndicClassTable kndaClassTable = {0x0C80, 0x0CEF, 4, KNDA_SCRIPT_FLAGS, kndaCharClasses, kndaSplitTable};
-
--static const IndicClassTable mlymClassTable = {0x0D00, 0x0D6F, 3, MLYM_SCRIPT_FLAGS, mlymCharClasses, mlymSplitTable};
-+static const IndicClassTable mlymClassTable = {0x0D00, 0x0D6F, 4, MLYM_SCRIPT_FLAGS, mlymCharClasses, mlymSplitTable};
-
- static const IndicClassTable sinhClassTable = {0x0D80, 0x0DF4, 4, SINH_SCRIPT_FLAGS, sinhCharClasses, sinhSplitTable};
-
commit 056cb93bdba2da49763e3be08bad484bd3c7f3f6
Author: Eike Rathke <erack at redhat.com>
Date: Tue Apr 29 10:10:38 2014 +0100
upgrade to ICU 53.1, fdo#77071 related
plus further work in i18npool to make that build
adapt i18npool to ICU 53 upgrade, fdo#77071
Korean charset collator can't be built from ko_charset.txt because of
"The runtime code decomposes Hangul syllables on the fly, with recursive
processing but without making the Jamo pieces visible for matching. It
does not work with certain types of contextual mappings."
"While handling a Hangul syllable, contractions starting with Jamo L or
V would not see the following Jamo of that syllable." (this is where we
bail out already with the first syllable of ko_charset.txt)
Another condition to fail is described as "A contraction ending with
Jamo L or L+V would require generating Hangul syllables in
addTailComposites() (588 for a Jamo L), or decomposing a following
Hangul syllable on the fly, during contraction matching."
Excluded the file from the build for ICU >=53 and hope that ICU in the
mean time handles Korean collation correctly.
Additionally, ICU 53 took ages (if it would had finished at all) to
build the collator from zh_TW_charset.txt because of the \u#### escaped
notation. Converted the file's content to characters using
http://www.rishida.net/tools/conversion/
Reviewed-on: https://gerrit.libreoffice.org/9204
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Eike Rathke <erack at redhat.com>
(cherry picked from commit f53107873921df33566ae23ba72a37ea92b75460)
Change-Id: I64213214b4870e7077f72b95fee1ddc9782c2b21
diff --git a/configure.ac b/configure.ac
index 90f55ba1c863..dd955ad756db 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8329,7 +8329,7 @@ SYSTEM_GENBRK=
SYSTEM_GENCCODE=
SYSTEM_GENCMN=
-ICU_MAJOR=52
+ICU_MAJOR=53
ICU_MINOR=1
ICU_RECLASSIFIED_CLOSE_PARENTHESIS="YES"
ICU_RECLASSIFIED_PREPEND_SET_EMPTY="YES"
diff --git a/download.lst b/download.lst
index 2be3789c4998..0abf536181fc 100644
--- a/download.lst
+++ b/download.lst
@@ -46,7 +46,7 @@ export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
export HARFBUZZ_TARBALL := c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2
export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
-export ICU_TARBALL := 9e96ed4c1d99c0d14ac03c140f9f346c-icu4c-52_1-src.tgz
+export ICU_TARBALL := b73baa6fbdfef197608d1f69300919b9-icu4c-53_1-src.tgz
export JFREEREPORT_FLOW_ENGINE_TARBALL := ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
export JFREEREPORT_FLUTE_TARBALL := d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip
export JFREEREPORT_LIBBASE_TARBALL := eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip
diff --git a/i18npool/CustomTarget_collator.mk b/i18npool/CustomTarget_collator.mk
index 04527bb613d7..f09e45ff883e 100644
--- a/i18npool/CustomTarget_collator.mk
+++ b/i18npool/CustomTarget_collator.mk
@@ -17,7 +17,9 @@ i18npool_COTXTS := \
ja_charset.txt \
ja_phonetic_alphanumeric_first.txt \
ja_phonetic_alphanumeric_last.txt \
- ko_charset.txt \
+ $(if $(i18npool_ICULT53), \
+ ko_charset.txt \
+ ) \
ku_alphanumeric.txt \
ln_charset.txt \
my_dictionary.txt \
diff --git a/i18npool/Library_collator_data.mk b/i18npool/Library_collator_data.mk
index f1063dbe8c6f..52741ac610ae 100644
--- a/i18npool/Library_collator_data.mk
+++ b/i18npool/Library_collator_data.mk
@@ -7,6 +7,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
+i18npool_ICULT53 := $(filter 1, $(shell expr $(ICU_MAJOR) \< 53))
+i18npool_LCDALL := $(wildcard $(SRCDIR)/i18npool/source/collator/data/*.txt)
+i18npool_LCDTXTS := $(if $(i18npool_ICULT53), $(i18npool_LCDALL), $(filter-out %/ko_charset.txt, $(i18npool_LCDALL)))
+
$(eval $(call gb_Library_Library,collator_data))
$(eval $(call gb_Library_use_libraries,collator_data,\
@@ -14,7 +18,7 @@ $(eval $(call gb_Library_use_libraries,collator_data,\
))
$(eval $(call gb_Library_add_generated_exception_objects,collator_data,\
- $(foreach txt,$(wildcard $(SRCDIR)/i18npool/source/collator/data/*.txt),\
+ $(foreach txt,$(i18npool_LCDTXTS),\
CustomTarget/i18npool/collator/collator_$(notdir $(basename $(txt)))) \
))
diff --git a/i18npool/source/collator/collator_unicode.cxx b/i18npool/source/collator/collator_unicode.cxx
index bcdef824a9aa..50f4d92614d4 100644
--- a/i18npool/source/collator/collator_unicode.cxx
+++ b/i18npool/source/collator/collator_unicode.cxx
@@ -169,9 +169,11 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang::
func = get_collator_data_ja_phonetic_alphanumeric_first;
else if ( rAlgorithm == "phonetic (alphanumeric last)" )
func = get_collator_data_ja_phonetic_alphanumeric_last;
+#if (U_ICU_VERSION_MAJOR_NUM < 53)
} else if ( rLocale.Language == "ko" ) {
if ( rAlgorithm == "charset" )
func = get_collator_data_ko_charset;
+#endif
} else if ( rLocale.Language == "ku" ) {
if ( rAlgorithm == "alphanumeric" )
func = get_collator_data_ku_alphanumeric;
diff --git a/i18npool/source/collator/data/zh_TW_charset.txt b/i18npool/source/collator/data/zh_TW_charset.txt
index 7cfb325ac24e..c2a81dacb5b6 100644
--- a/i18npool/source/collator/data/zh_TW_charset.txt
+++ b/i18npool/source/collator/data/zh_TW_charset.txt
@@ -19,1332 +19,1332 @@
# Collation rule for Traditional Chinese charset
& [top]
-<\u5159<\u515b<\u515e<\u515d<\u5161<\u5163<\u55e7<\u74e9<\u7cce
-<\u3021<\u3022<\u3023<\u3024<\u3025<\u3026<\u3027<\u3028<\u3029<\u5344
-<\u3105<\u3106<\u3107<\u3108<\u3109<\u310a<\u310b<\u310c<\u310d<\u310e
-<\u310f<\u3110<\u3111<\u3112<\u3113<\u3114<\u3115<\u3116<\u3117<\u3118
-<\u3119<\u311a<\u311b<\u311c<\u311d<\u311e<\u311f<\u3120<\u3121<\u3122
-<\u3123<\u3124<\u3125<\u3126<\u3127<\u3128<\u3129<\u4e00<\u4e59<\u4e01
-<\u4e03<\u4e43<\u4e5d<\u4e86<\u4e8c<\u4eba<\u513f<\u5165<\u516b<\u51e0
-<\u5200<\u5201<\u529b<\u5315<\u5341<\u535c<\u53c8<\u4e09<\u4e0b<\u4e08
-<\u4e0a<\u4e2b<\u4e38<\u51e1<\u4e45<\u4e48<\u4e5f<\u4e5e<\u4e8e<\u4ea1
-<\u5140<\u5203<\u52fa<\u5343<\u53c9<\u53e3<\u571f<\u58eb<\u5915<\u5927
-<\u5973<\u5b50<\u5b51<\u5b53<\u5bf8<\u5c0f<\u5c22<\u5c38<\u5c71<\u5ddd
-<\u5de5<\u5df1<\u5df2<\u5df3<\u5dfe<\u5e72<\u5efe<\u5f0b<\u5f13<\u624d
-<\u4e11<\u4e10<\u4e0d<\u4e2d<\u4e30<\u4e39<\u4e4b<\u5c39<\u4e88<\u4e91
-<\u4e95<\u4e92<\u4e94<\u4ea2<\u4ec1<\u4ec0<\u4ec3<\u4ec6<\u4ec7<\u4ecd
-<\u4eca<\u4ecb<\u4ec4<\u5143<\u5141<\u5167<\u516d<\u516e<\u516c<\u5197
-<\u51f6<\u5206<\u5207<\u5208<\u52fb<\u52fe<\u52ff<\u5316<\u5339<\u5348
-<\u5347<\u5345<\u535e<\u5384<\u53cb<\u53ca<\u53cd<\u58ec<\u5929<\u592b
-<\u592a<\u592d<\u5b54<\u5c11<\u5c24<\u5c3a<\u5c6f<\u5df4<\u5e7b<\u5eff
-<\u5f14<\u5f15<\u5fc3<\u6208<\u6236<\u624b<\u624e<\u652f<\u6587<\u6597
-<\u65a4<\u65b9<\u65e5<\u66f0<\u6708<\u6728<\u6b20<\u6b62<\u6b79<\u6bcb
-<\u6bd4<\u6bdb<\u6c0f<\u6c34<\u706b<\u722a<\u7236<\u723b<\u7247<\u7259
-<\u725b<\u72ac<\u738b<\u4e19<\u4e16<\u4e15<\u4e14<\u4e18<\u4e3b<\u4e4d
-<\u4e4f<\u4e4e<\u4ee5<\u4ed8<\u4ed4<\u4ed5<\u4ed6<\u4ed7<\u4ee3<\u4ee4
-<\u4ed9<\u4ede<\u5145<\u5144<\u5189<\u518a<\u51ac<\u51f9<\u51fa<\u51f8
-<\u520a<\u52a0<\u529f<\u5305<\u5306<\u5317<\u531d<\u4edf<\u534a<\u5349
-<\u5361<\u5360<\u536f<\u536e<\u53bb<\u53ef<\u53e4<\u53f3<\u53ec<\u53ee
-<\u53e9<\u53e8<\u53fc<\u53f8<\u53f5<\u53eb<\u53e6<\u53ea<\u53f2<\u53f1
-<\u53f0<\u53e5<\u53ed<\u53fb<\u56db<\u56da<\u5916<\u592e<\u5931<\u5974
-<\u5976<\u5b55<\u5b83<\u5c3c<\u5de8<\u5de7<\u5de6<\u5e02<\u5e03<\u5e73
-<\u5e7c<\u5f01<\u5f18<\u5f17<\u5fc5<\u620a<\u6253<\u6254<\u6252<\u6251
-<\u65a5<\u65e6<\u672e<\u672c<\u672a<\u672b<\u672d<\u6b63<\u6bcd<\u6c11
-<\u6c10<\u6c38<\u6c41<\u6c40<\u6c3e<\u72af<\u7384<\u7389<\u74dc<\u74e6
-<\u7518<\u751f<\u7528<\u7529<\u7530<\u7531<\u7532<\u7533<\u758b<\u767d
-<\u76ae<\u76bf<\u76ee<\u77db<\u77e2<\u77f3<\u793a<\u79be<\u7a74<\u7acb
-<\u4e1e<\u4e1f<\u4e52<\u4e53<\u4e69<\u4e99<\u4ea4<\u4ea6<\u4ea5<\u4eff
-<\u4f09<\u4f19<\u4f0a<\u4f15<\u4f0d<\u4f10<\u4f11<\u4f0f<\u4ef2<\u4ef6
-<\u4efb<\u4ef0<\u4ef3<\u4efd<\u4f01<\u4f0b<\u5149<\u5147<\u5146<\u5148
-<\u5168<\u5171<\u518d<\u51b0<\u5217<\u5211<\u5212<\u520e<\u5216<\u52a3
-<\u5308<\u5321<\u5320<\u5370<\u5371<\u5409<\u540f<\u540c<\u540a<\u5410
-<\u5401<\u540b<\u5404<\u5411<\u540d<\u5408<\u5403<\u540e<\u5406<\u5412
-<\u56e0<\u56de<\u56dd<\u5733<\u5730<\u5728<\u572d<\u572c<\u572f<\u5729
-<\u5919<\u591a<\u5937<\u5938<\u5984<\u5978<\u5983<\u597d<\u5979<\u5982
-<\u5981<\u5b57<\u5b58<\u5b87<\u5b88<\u5b85<\u5b89<\u5bfa<\u5c16<\u5c79
-<\u5dde<\u5e06<\u5e76<\u5e74<\u5f0f<\u5f1b<\u5fd9<\u5fd6<\u620e<\u620c
-<\u620d<\u6210<\u6263<\u625b<\u6258<\u6536<\u65e9<\u65e8<\u65ec<\u65ed
-<\u66f2<\u66f3<\u6709<\u673d<\u6734<\u6731<\u6735<\u6b21<\u6b64<\u6b7b
-<\u6c16<\u6c5d<\u6c57<\u6c59<\u6c5f<\u6c60<\u6c50<\u6c55<\u6c61<\u6c5b
-<\u6c4d<\u6c4e<\u7070<\u725f<\u725d<\u767e<\u7af9<\u7c73<\u7cf8<\u7f36
-<\u7f8a<\u7fbd<\u8001<\u8003<\u800c<\u8012<\u8033<\u807f<\u8089<\u808b
-<\u808c<\u81e3<\u81ea<\u81f3<\u81fc<\u820c<\u821b<\u821f<\u826e<\u8272
-<\u827e<\u866b<\u8840<\u884c<\u8863<\u897f<\u9621<\u4e32<\u4ea8<\u4f4d
-<\u4f4f<\u4f47<\u4f57<\u4f5e<\u4f34<\u4f5b<\u4f55<\u4f30<\u4f50<\u4f51
-<\u4f3d<\u4f3a<\u4f38<\u4f43<\u4f54<\u4f3c<\u4f46<\u4f63<\u4f5c<\u4f60
-<\u4f2f<\u4f4e<\u4f36<\u4f59<\u4f5d<\u4f48<\u4f5a<\u514c<\u514b<\u514d
-<\u5175<\u51b6<\u51b7<\u5225<\u5224<\u5229<\u522a<\u5228<\u52ab<\u52a9
-<\u52aa<\u52ac<\u5323<\u5373<\u5375<\u541d<\u542d<\u541e<\u543e<\u5426
-<\u544e<\u5427<\u5446<\u5443<\u5433<\u5448<\u5442<\u541b<\u5429<\u544a
-<\u5439<\u543b<\u5438<\u542e<\u5435<\u5436<\u5420<\u543c<\u5440<\u5431
-<\u542b<\u541f<\u542c<\u56ea<\u56f0<\u56e4<\u56eb<\u574a<\u5751<\u5740
-<\u574d<\u5747<\u574e<\u573e<\u5750<\u574f<\u573b<\u58ef<\u593e<\u599d
-<\u5992<\u59a8<\u599e<\u59a3<\u5999<\u5996<\u598d<\u59a4<\u5993<\u598a
-<\u59a5<\u5b5d<\u5b5c<\u5b5a<\u5b5b<\u5b8c<\u5b8b<\u5b8f<\u5c2c<\u5c40
-<\u5c41<\u5c3f<\u5c3e<\u5c90<\u5c91<\u5c94<\u5c8c<\u5deb<\u5e0c<\u5e8f
-<\u5e87<\u5e8a<\u5ef7<\u5f04<\u5f1f<\u5f64<\u5f62<\u5f77<\u5f79<\u5fd8
-<\u5fcc<\u5fd7<\u5fcd<\u5ff1<\u5feb<\u5ff8<\u5fea<\u6212<\u6211<\u6284
-<\u6297<\u6296<\u6280<\u6276<\u6289<\u626d<\u628a<\u627c<\u627e<\u6279
-<\u6273<\u6292<\u626f<\u6298<\u626e<\u6295<\u6293<\u6291<\u6286<\u6539
-<\u653b<\u6538<\u65f1<\u66f4<\u675f<\u674e<\u674f<\u6750<\u6751<\u675c
-<\u6756<\u675e<\u6749<\u6746<\u6760<\u6753<\u6757<\u6b65<\u6bcf<\u6c42
-<\u6c5e<\u6c99<\u6c81<\u6c88<\u6c89<\u6c85<\u6c9b<\u6c6a<\u6c7a<\u6c90
-<\u6c70<\u6c8c<\u6c68<\u6c96<\u6c92<\u6c7d<\u6c83<\u6c72<\u6c7e<\u6c74
-<\u6c86<\u6c76<\u6c8d<\u6c94<\u6c98<\u6c82<\u7076<\u707c<\u707d<\u7078
-<\u7262<\u7261<\u7260<\u72c4<\u72c2<\u7396<\u752c<\u752b<\u7537<\u7538
-<\u7682<\u76ef<\u77e3<\u79c1<\u79c0<\u79bf<\u7a76<\u7cfb<\u7f55<\u8096
-<\u8093<\u809d<\u8098<\u809b<\u809a<\u80b2<\u826f<\u8292<\u828b<\u828d
-<\u898b<\u89d2<\u8a00<\u8c37<\u8c46<\u8c55<\u8c9d<\u8d64<\u8d70<\u8db3
-<\u8eab<\u8eca<\u8f9b<\u8fb0<\u8fc2<\u8fc6<\u8fc5<\u8fc4<\u5de1<\u9091
-<\u90a2<\u90aa<\u90a6<\u90a3<\u9149<\u91c6<\u91cc<\u9632<\u962e<\u9631
-<\u962a<\u962c<\u4e26<\u4e56<\u4e73<\u4e8b<\u4e9b<\u4e9e<\u4eab<\u4eac
-<\u4f6f<\u4f9d<\u4f8d<\u4f73<\u4f7f<\u4f6c<\u4f9b<\u4f8b<\u4f86<\u4f83
-<\u4f70<\u4f75<\u4f88<\u4f69<\u4f7b<\u4f96<\u4f7e<\u4f8f<\u4f91<\u4f7a
-<\u5154<\u5152<\u5155<\u5169<\u5177<\u5176<\u5178<\u51bd<\u51fd<\u523b
-<\u5238<\u5237<\u523a<\u5230<\u522e<\u5236<\u5241<\u52be<\u52bb<\u5352
-<\u5354<\u5353<\u5351<\u5366<\u5377<\u5378<\u5379<\u53d6<\u53d4<\u53d7
-<\u5473<\u5475<\u5496<\u5478<\u5495<\u5480<\u547b<\u5477<\u5484<\u5492
-<\u5486<\u547c<\u5490<\u5471<\u5476<\u548c<\u549a<\u5462<\u5468<\u548b
-<\u547d<\u548e<\u56fa<\u5783<\u5777<\u576a<\u5769<\u5761<\u5766<\u5764
-<\u577c<\u591c<\u5949<\u5947<\u5948<\u5944<\u5954<\u59be<\u59bb<\u59d4
-<\u59b9<\u59ae<\u59d1<\u59c6<\u59d0<\u59cd<\u59cb<\u59d3<\u59ca<\u59af
-<\u59b3<\u59d2<\u59c5<\u5b5f<\u5b64<\u5b63<\u5b97<\u5b9a<\u5b98<\u5b9c
-<\u5b99<\u5b9b<\u5c1a<\u5c48<\u5c45<\u5c46<\u5cb7<\u5ca1<\u5cb8<\u5ca9
-<\u5cab<\u5cb1<\u5cb3<\u5e18<\u5e1a<\u5e16<\u5e15<\u5e1b<\u5e11<\u5e78
-<\u5e9a<\u5e97<\u5e9c<\u5e95<\u5e96<\u5ef6<\u5f26<\u5f27<\u5f29<\u5f80
-<\u5f81<\u5f7f<\u5f7c<\u5fdd<\u5fe0<\u5ffd<\u5ff5<\u5fff<\u600f<\u6014
-<\u602f<\u6035<\u6016<\u602a<\u6015<\u6021<\u6027<\u6029<\u602b<\u601b
-<\u6216<\u6215<\u623f<\u623e<\u6240<\u627f<\u62c9<\u62cc<\u62c4<\u62bf
-<\u62c2<\u62b9<\u62d2<\u62db<\u62ab<\u62d3<\u62d4<\u62cb<\u62c8<\u62a8
-<\u62bd<\u62bc<\u62d0<\u62d9<\u62c7<\u62cd<\u62b5<\u62da<\u62b1<\u62d8
-<\u62d6<\u62d7<\u62c6<\u62ac<\u62ce<\u653e<\u65a7<\u65bc<\u65fa<\u6614
-<\u6613<\u660c<\u6606<\u6602<\u660e<\u6600<\u660f<\u6615<\u660a<\u6607
-<\u670d<\u670b<\u676d<\u678b<\u6795<\u6771<\u679c<\u6773<\u6777<\u6787
-<\u679d<\u6797<\u676f<\u6770<\u677f<\u6789<\u677e<\u6790<\u6775<\u679a
-<\u6793<\u677c<\u676a<\u6772<\u6b23<\u6b66<\u6b67<\u6b7f<\u6c13<\u6c1b
-<\u6ce3<\u6ce8<\u6cf3<\u6cb1<\u6ccc<\u6ce5<\u6cb3<\u6cbd<\u6cbe<\u6cbc
-<\u6ce2<\u6cab<\u6cd5<\u6cd3<\u6cb8<\u6cc4<\u6cb9<\u6cc1<\u6cae<\u6cd7
-<\u6cc5<\u6cf1<\u6cbf<\u6cbb<\u6ce1<\u6cdb<\u6cca<\u6cac<\u6cef<\u6cdc
-<\u6cd6<\u6ce0<\u7095<\u708e<\u7092<\u708a<\u7099<\u722c<\u722d<\u7238
-<\u7248<\u7267<\u7269<\u72c0<\u72ce<\u72d9<\u72d7<\u72d0<\u73a9<\u73a8
-<\u739f<\u73ab<\u73a5<\u753d<\u759d<\u7599<\u759a<\u7684<\u76c2<\u76f2
-<\u76f4<\u77e5<\u77fd<\u793e<\u7940<\u7941<\u79c9<\u79c8<\u7a7a<\u7a79
-<\u7afa<\u7cfe<\u7f54<\u7f8c<\u7f8b<\u8005<\u80ba<\u80a5<\u80a2<\u80b1
-<\u80a1<\u80ab<\u80a9<\u80b4<\u80aa<\u80af<\u81e5<\u81fe<\u820d<\u82b3
-<\u829d<\u8299<\u82ad<\u82bd<\u829f<\u82b9<\u82b1<\u82ac<\u82a5<\u82af
-<\u82b8<\u82a3<\u82b0<\u82be<\u82b7<\u864e<\u8671<\u521d<\u8868<\u8ecb
-<\u8fce<\u8fd4<\u8fd1<\u90b5<\u90b8<\u90b1<\u90b6<\u91c7<\u91d1<\u9577
-<\u9580<\u961c<\u9640<\u963f<\u963b<\u9644<\u9642<\u96b9<\u96e8<\u9752
-<\u975e<\u4e9f<\u4ead<\u4eae<\u4fe1<\u4fb5<\u4faf<\u4fbf<\u4fe0<\u4fd1
-<\u4fcf<\u4fdd<\u4fc3<\u4fb6<\u4fd8<\u4fdf<\u4fca<\u4fd7<\u4fae<\u4fd0
-<\u4fc4<\u4fc2<\u4fda<\u4fce<\u4fde<\u4fb7<\u5157<\u5192<\u5191<\u51a0
-<\u524e<\u5243<\u524a<\u524d<\u524c<\u524b<\u5247<\u52c7<\u52c9<\u52c3
-<\u52c1<\u530d<\u5357<\u537b<\u539a<\u53db<\u54ac<\u54c0<\u54a8<\u54ce
-<\u54c9<\u54b8<\u54a6<\u54b3<\u54c7<\u54c2<\u54bd<\u54aa<\u54c1<\u54c4
-<\u54c8<\u54af<\u54ab<\u54b1<\u54bb<\u54a9<\u54a7<\u54bf<\u56ff<\u5782
-<\u578b<\u57a0<\u57a3<\u57a2<\u57ce<\u57ae<\u5793<\u5955<\u5951<\u594f
-<\u594e<\u5950<\u59dc<\u59d8<\u59ff<\u59e3<\u59e8<\u5a03<\u59e5<\u59ea
-<\u59da<\u59e6<\u5a01<\u59fb<\u5b69<\u5ba3<\u5ba6<\u5ba4<\u5ba2<\u5ba5
-<\u5c01<\u5c4e<\u5c4f<\u5c4d<\u5c4b<\u5cd9<\u5cd2<\u5df7<\u5e1d<\u5e25
-<\u5e1f<\u5e7d<\u5ea0<\u5ea6<\u5efa<\u5f08<\u5f2d<\u5f65<\u5f88<\u5f85
-<\u5f8a<\u5f8b<\u5f87<\u5f8c<\u5f89<\u6012<\u601d<\u6020<\u6025<\u600e
-<\u6028<\u604d<\u6070<\u6068<\u6062<\u6046<\u6043<\u606c<\u606b<\u606a
-<\u6064<\u6241<\u62dc<\u6316<\u6309<\u62fc<\u62ed<\u6301<\u62ee<\u62fd
-<\u6307<\u62f1<\u62f7<\u62ef<\u62ec<\u62fe<\u62f4<\u6311<\u6302<\u653f
-<\u6545<\u65ab<\u65bd<\u65e2<\u6625<\u662d<\u6620<\u6627<\u662f<\u661f
-<\u6628<\u6631<\u6624<\u66f7<\u67ff<\u67d3<\u67f1<\u67d4<\u67d0<\u67ec
-<\u67b6<\u67af<\u67f5<\u67e9<\u67ef<\u67c4<\u67d1<\u67b4<\u67da<\u67e5
-<\u67b8<\u67cf<\u67de<\u67f3<\u67b0<\u67d9<\u67e2<\u67dd<\u67d2<\u6b6a
-<\u6b83<\u6b86<\u6bb5<\u6bd2<\u6bd7<\u6c1f<\u6cc9<\u6d0b<\u6d32<\u6d2a
-<\u6d41<\u6d25<\u6d0c<\u6d31<\u6d1e<\u6d17<\u6d3b<\u6d3d<\u6d3e<\u6d36
-<\u6d1b<\u6cf5<\u6d39<\u6d27<\u6d38<\u6d29<\u6d2e<\u6d35<\u6d0e<\u6d2b
-<\u70ab<\u70ba<\u70b3<\u70ac<\u70af<\u70ad<\u70b8<\u70ae<\u70a4<\u7230
-<\u7272<\u726f<\u7274<\u72e9<\u72e0<\u72e1<\u73b7<\u73ca<\u73bb<\u73b2
-<\u73cd<\u73c0<\u73b3<\u751a<\u752d<\u754f<\u754c<\u754e<\u754b<\u75ab
-<\u75a4<\u75a5<\u75a2<\u75a3<\u7678<\u7686<\u7687<\u7688<\u76c8<\u76c6
-<\u76c3<\u76c5<\u7701<\u76f9<\u76f8<\u7709<\u770b<\u76fe<\u76fc<\u7707
-<\u77dc<\u7802<\u7814<\u780c<\u780d<\u7946<\u7949<\u7948<\u7947<\u79b9
-<\u79ba<\u79d1<\u79d2<\u79cb<\u7a7f<\u7a81<\u7aff<\u7afd<\u7c7d<\u7d02
-<\u7d05<\u7d00<\u7d09<\u7d07<\u7d04<\u7d06<\u7f38<\u7f8e<\u7fbf<\u8004
-<\u8010<\u800d<\u8011<\u8036<\u80d6<\u80e5<\u80da<\u80c3<\u80c4<\u80cc
-<\u80e1<\u80db<\u80ce<\u80de<\u80e4<\u80dd<\u81f4<\u8222<\u82e7<\u8303
-<\u8305<\u82e3<\u82db<\u82e6<\u8304<\u82e5<\u8302<\u8309<\u82d2<\u82d7
-<\u82f1<\u8301<\u82dc<\u82d4<\u82d1<\u82de<\u82d3<\u82df<\u82ef<\u8306
-<\u8650<\u8679<\u867b<\u867a<\u884d<\u886b<\u8981<\u89d4<\u8a08<\u8a02
-<\u8a03<\u8c9e<\u8ca0<\u8d74<\u8d73<\u8db4<\u8ecd<\u8ecc<\u8ff0<\u8fe6
-<\u8fe2<\u8fea<\u8fe5<\u8fed<\u8feb<\u8fe4<\u8fe8<\u90ca<\u90ce<\u90c1
-<\u90c3<\u914b<\u914a<\u91cd<\u9582<\u9650<\u964b<\u964c<\u964d<\u9762
-<\u9769<\u97cb<\u97ed<\u97f3<\u9801<\u98a8<\u98db<\u98df<\u9996<\u9999
-<\u4e58<\u4eb3<\u500c<\u500d<\u5023<\u4fef<\u5026<\u5025<\u4ff8<\u5029
-<\u5016<\u5006<\u503c<\u501f<\u501a<\u5012<\u5011<\u4ffa<\u5000<\u5014
-<\u5028<\u4ff1<\u5021<\u500b<\u5019<\u5018<\u4ff3<\u4fee<\u502d<\u502a
-<\u4ffe<\u502b<\u5009<\u517c<\u51a4<\u51a5<\u51a2<\u51cd<\u51cc<\u51c6
-<\u51cb<\u5256<\u525c<\u5254<\u525b<\u525d<\u532a<\u537f<\u539f<\u539d
-<\u53df<\u54e8<\u5510<\u5501<\u5537<\u54fc<\u54e5<\u54f2<\u5506<\u54fa
-<\u5514<\u54e9<\u54ed<\u54e1<\u5509<\u54ee<\u54ea<\u54e6<\u5527<\u5507
-<\u54fd<\u550f<\u5703<\u5704<\u57c2<\u57d4<\u57cb<\u57c3<\u5809<\u590f
-<\u5957<\u5958<\u595a<\u5a11<\u5a18<\u5a1c<\u5a1f<\u5a1b<\u5a13<\u59ec
-<\u5a20<\u5a23<\u5a29<\u5a25<\u5a0c<\u5a09<\u5b6b<\u5c58<\u5bb0<\u5bb3
-<\u5bb6<\u5bb4<\u5bae<\u5bb5<\u5bb9<\u5bb8<\u5c04<\u5c51<\u5c55<\u5c50
-<\u5ced<\u5cfd<\u5cfb<\u5cea<\u5ce8<\u5cf0<\u5cf6<\u5d01<\u5cf4<\u5dee
-<\u5e2d<\u5e2b<\u5eab<\u5ead<\u5ea7<\u5f31<\u5f92<\u5f91<\u5f90<\u6059
-<\u6063<\u6065<\u6050<\u6055<\u606d<\u6069<\u606f<\u6084<\u609f<\u609a
-<\u608d<\u6094<\u608c<\u6085<\u6096<\u6247<\u62f3<\u6308<\u62ff<\u634e
-<\u633e<\u632f<\u6355<\u6342<\u6346<\u634f<\u6349<\u633a<\u6350<\u633d
-<\u632a<\u632b<\u6328<\u634d<\u634c<\u6548<\u6549<\u6599<\u65c1<\u65c5
-<\u6642<\u6649<\u664f<\u6643<\u6652<\u664c<\u6645<\u6641<\u66f8<\u6714
-<\u6715<\u6717<\u6821<\u6838<\u6848<\u6846<\u6853<\u6839<\u6842<\u6854
-<\u6829<\u68b3<\u6817<\u684c<\u6851<\u683d<\u67f4<\u6850<\u6840<\u683c
-<\u6843<\u682a<\u6845<\u6813<\u6818<\u6841<\u6b8a<\u6b89<\u6bb7<\u6c23
-<\u6c27<\u6c28<\u6c26<\u6c24<\u6cf0<\u6d6a<\u6d95<\u6d88<\u6d87<\u6d66
-<\u6d78<\u6d77<\u6d59<\u6d93<\u6d6c<\u6d89<\u6d6e<\u6d5a<\u6d74<\u6d69
-<\u6d8c<\u6d8a<\u6d79<\u6d85<\u6d65<\u6d94<\u70ca<\u70d8<\u70e4<\u70d9
-<\u70c8<\u70cf<\u7239<\u7279<\u72fc<\u72f9<\u72fd<\u72f8<\u72f7<\u7386
-<\u73ed<\u7409<\u73ee<\u73e0<\u73ea<\u73de<\u7554<\u755d<\u755c<\u755a
-<\u7559<\u75be<\u75c5<\u75c7<\u75b2<\u75b3<\u75bd<\u75bc<\u75b9<\u75c2
-<\u75b8<\u768b<\u76b0<\u76ca<\u76cd<\u76ce<\u7729<\u771f<\u7720<\u7728
-<\u77e9<\u7830<\u7827<\u7838<\u781d<\u7834<\u7837<\u7825<\u782d<\u7820
-<\u781f<\u7832<\u7955<\u7950<\u7960<\u795f<\u7956<\u795e<\u795d<\u7957
-<\u795a<\u79e4<\u79e3<\u79e7<\u79df<\u79e6<\u79e9<\u79d8<\u7a84<\u7a88
-<\u7ad9<\u7b06<\u7b11<\u7c89<\u7d21<\u7d17<\u7d0b<\u7d0a<\u7d20<\u7d22
-<\u7d14<\u7d10<\u7d15<\u7d1a<\u7d1c<\u7d0d<\u7d19<\u7d1b<\u7f3a<\u7f5f
-<\u7f94<\u7fc5<\u7fc1<\u8006<\u8018<\u8015<\u8019<\u8017<\u803d<\u803f
-<\u80f1<\u8102<\u80f0<\u8105<\u80ed<\u80f4<\u8106<\u80f8<\u80f3<\u8108
-<\u80fd<\u810a<\u80fc<\u80ef<\u81ed<\u81ec<\u8200<\u8210<\u822a<\u822b
-<\u8228<\u822c<\u82bb<\u832b<\u8352<\u8354<\u834a<\u8338<\u8350<\u8349
-<\u8335<\u8334<\u834f<\u8332<\u8339<\u8336<\u8317<\u8340<\u8331<\u8328
-<\u8343<\u8654<\u868a<\u86aa<\u8693<\u86a4<\u86a9<\u868c<\u86a3<\u869c
-<\u8870<\u8877<\u8881<\u8882<\u887d<\u8879<\u8a18<\u8a10<\u8a0e<\u8a0c
-<\u8a15<\u8a0a<\u8a17<\u8a13<\u8a16<\u8a0f<\u8a11<\u8c48<\u8c7a<\u8c79
-<\u8ca1<\u8ca2<\u8d77<\u8eac<\u8ed2<\u8ed4<\u8ecf<\u8fb1<\u9001<\u9006
-<\u8ff7<\u9000<\u8ffa<\u8ff4<\u9003<\u8ffd<\u9005<\u8ff8<\u9095<\u90e1
-<\u90dd<\u90e2<\u9152<\u914d<\u914c<\u91d8<\u91dd<\u91d7<\u91dc<\u91d9
-<\u9583<\u9662<\u9663<\u9661<\u965b<\u965d<\u9664<\u9658<\u965e<\u96bb
-<\u98e2<\u99ac<\u9aa8<\u9ad8<\u9b25<\u9b32<\u9b3c<\u4e7e<\u507a<\u507d
-<\u505c<\u5047<\u5043<\u504c<\u505a<\u5049<\u5065<\u5076<\u504e<\u5055
-<\u5075<\u5074<\u5077<\u504f<\u500f<\u506f<\u506d<\u515c<\u5195<\u51f0
-<\u526a<\u526f<\u52d2<\u52d9<\u52d8<\u52d5<\u5310<\u530f<\u5319<\u533f
-<\u5340<\u533e<\u53c3<\u66fc<\u5546<\u556a<\u5566<\u5544<\u555e<\u5561
-<\u5543<\u554a<\u5531<\u5556<\u554f<\u5555<\u552f<\u5564<\u5538<\u552e
-<\u555c<\u552c<\u5563<\u5533<\u5541<\u5557<\u5708<\u570b<\u5709<\u57df
-<\u5805<\u580a<\u5806<\u57e0<\u57e4<\u57fa<\u5802<\u5835<\u57f7<\u57f9
-<\u5920<\u5962<\u5a36<\u5a41<\u5a49<\u5a66<\u5a6a<\u5a40<\u5a3c<\u5a62
-<\u5a5a<\u5a46<\u5a4a<\u5b70<\u5bc7<\u5bc5<\u5bc4<\u5bc2<\u5bbf<\u5bc6
-<\u5c09<\u5c08<\u5c07<\u5c60<\u5c5c<\u5c5d<\u5d07<\u5d06<\u5d0e<\u5d1b
-<\u5d16<\u5d22<\u5d11<\u5d29<\u5d14<\u5d19<\u5d24<\u5d27<\u5d17<\u5de2
-<\u5e38<\u5e36<\u5e33<\u5e37<\u5eb7<\u5eb8<\u5eb6<\u5eb5<\u5ebe<\u5f35
-<\u5f37<\u5f57<\u5f6c<\u5f69<\u5f6b<\u5f97<\u5f99<\u5f9e<\u5f98<\u5fa1
-<\u5fa0<\u5f9c<\u607f<\u60a3<\u6089<\u60a0<\u60a8<\u60cb<\u60b4<\u60e6
-<\u60bd<\u60c5<\u60bb<\u60b5<\u60dc<\u60bc<\u60d8<\u60d5<\u60c6<\u60df
-<\u60b8<\u60da<\u60c7<\u621a<\u621b<\u6248<\u63a0<\u63a7<\u6372<\u6396
-<\u63a2<\u63a5<\u6377<\u6367<\u6398<\u63aa<\u6371<\u63a9<\u6389<\u6383
-<\u639b<\u636b<\u63a8<\u6384<\u6388<\u6399<\u63a1<\u63ac<\u6392<\u638f
-<\u6380<\u637b<\u6369<\u6368<\u637a<\u655d<\u6556<\u6551<\u6559<\u6557
-<\u555f<\u654f<\u6558<\u6555<\u6554<\u659c<\u659b<\u65ac<\u65cf<\u65cb
-<\u65cc<\u65ce<\u665d<\u665a<\u6664<\u6668<\u6666<\u665e<\u66f9<\u52d7
-<\u671b<\u6881<\u68af<\u68a2<\u6893<\u68b5<\u687f<\u6876<\u68b1<\u68a7
-<\u6897<\u68b0<\u6883<\u68c4<\u68ad<\u6886<\u6885<\u6894<\u689d<\u68a8
-<\u689f<\u68a1<\u6882<\u6b32<\u6bba<\u6beb<\u6bec<\u6c2b<\u6d8e<\u6dbc
-<\u6df3<\u6dd9<\u6db2<\u6de1<\u6dcc<\u6de4<\u6dfb<\u6dfa<\u6e05<\u6dc7
-<\u6dcb<\u6daf<\u6dd1<\u6dae<\u6dde<\u6df9<\u6db8<\u6df7<\u6df5<\u6dc5
-<\u6dd2<\u6e1a<\u6db5<\u6dda<\u6deb<\u6dd8<\u6dea<\u6df1<\u6dee<\u6de8
-<\u6dc6<\u6dc4<\u6daa<\u6dec<\u6dbf<\u6de6<\u70f9<\u7109<\u710a<\u70fd
-<\u70ef<\u723d<\u727d<\u7281<\u731c<\u731b<\u7316<\u7313<\u7319<\u7387
-<\u7405<\u740a<\u7403<\u7406<\u73fe<\u740d<\u74e0<\u74f6<\u74f7<\u751c
-<\u7522<\u7565<\u7566<\u7562<\u7570<\u758f<\u75d4<\u75d5<\u75b5<\u75ca
-<\u75cd<\u768e<\u76d4<\u76d2<\u76db<\u7737<\u773e<\u773c<\u7736<\u7738
-<\u773a<\u786b<\u7843<\u784e<\u7965<\u7968<\u796d<\u79fb<\u7a92<\u7a95
-<\u7b20<\u7b28<\u7b1b<\u7b2c<\u7b26<\u7b19<\u7b1e<\u7b2e<\u7c92<\u7c97
-<\u7c95<\u7d46<\u7d43<\u7d71<\u7d2e<\u7d39<\u7d3c<\u7d40<\u7d30<\u7d33
-<\u7d44<\u7d2f<\u7d42<\u7d32<\u7d31<\u7f3d<\u7f9e<\u7f9a<\u7fcc<\u7fce
-<\u7fd2<\u801c<\u804a<\u8046<\u812f<\u8116<\u8123<\u812b<\u8129<\u8130
-<\u8124<\u8202<\u8235<\u8237<\u8236<\u8239<\u838e<\u839e<\u8398<\u8378
-<\u83a2<\u8396<\u83bd<\u83ab<\u8392<\u838a<\u8393<\u8389<\u83a0<\u8377
-<\u837b<\u837c<\u8386<\u83a7<\u8655<\u5f6a<\u86c7<\u86c0<\u86b6<\u86c4
-<\u86b5<\u86c6<\u86cb<\u86b1<\u86af<\u86c9<\u8853<\u889e<\u8888<\u88ab
-<\u8892<\u8896<\u888d<\u888b<\u8993<\u898f<\u8a2a<\u8a1d<\u8a23<\u8a25
-<\u8a31<\u8a2d<\u8a1f<\u8a1b<\u8a22<\u8c49<\u8c5a<\u8ca9<\u8cac<\u8cab
-<\u8ca8<\u8caa<\u8ca7<\u8d67<\u8d66<\u8dbe<\u8dba<\u8edb<\u8edf<\u9019
-<\u900d<\u901a<\u9017<\u9023<\u901f<\u901d<\u9010<\u9015<\u901e<\u9020
-<\u900f<\u9022<\u9016<\u901b<\u9014<\u90e8<\u90ed<\u90fd<\u9157<\u91ce
-<\u91f5<\u91e6<\u91e3<\u91e7<\u91ed<\u91e9<\u9589<\u966a<\u9675<\u9673
-<\u9678<\u9670<\u9674<\u9676<\u9677<\u966c<\u96c0<\u96ea<\u96e9<\u7ae0
-<\u7adf<\u9802<\u9803<\u9b5a<\u9ce5<\u9e75<\u9e7f<\u9ea5<\u9ebb<\u50a2
-<\u508d<\u5085<\u5099<\u5091<\u5080<\u5096<\u5098<\u509a<\u6700<\u51f1
-<\u5272<\u5274<\u5275<\u5269<\u52de<\u52dd<\u52db<\u535a<\u53a5<\u557b
-<\u5580<\u55a7<\u557c<\u558a<\u559d<\u5598<\u5582<\u559c<\u55aa<\u5594
-<\u5587<\u558b<\u5583<\u55b3<\u55ae<\u559f<\u553e<\u55b2<\u559a<\u55bb
-<\u55ac<\u55b1<\u557e<\u5589<\u55ab<\u5599<\u570d<\u582f<\u582a<\u5834
-<\u5824<\u5830<\u5831<\u5821<\u581d<\u5820<\u58f9<\u58fa<\u5960<\u5a77
-<\u5a9a<\u5a7f<\u5a92<\u5a9b<\u5aa7<\u5b73<\u5b71<\u5bd2<\u5bcc<\u5bd3
-<\u5bd0<\u5c0a<\u5c0b<\u5c31<\u5d4c<\u5d50<\u5d34<\u5d47<\u5dfd<\u5e45
-<\u5e3d<\u5e40<\u5e43<\u5e7e<\u5eca<\u5ec1<\u5ec2<\u5ec4<\u5f3c<\u5f6d
-<\u5fa9<\u5faa<\u5fa8<\u60d1<\u60e1<\u60b2<\u60b6<\u60e0<\u611c<\u6123
-<\u60fa<\u6115<\u60f0<\u60fb<\u60f4<\u6168<\u60f1<\u610e<\u60f6<\u6109
-<\u6100<\u6112<\u621f<\u6249<\u63a3<\u638c<\u63cf<\u63c0<\u63e9<\u63c9
-<\u63c6<\u63cd<\u63d2<\u63e3<\u63d0<\u63e1<\u63d6<\u63ed<\u63ee<\u6376
-<\u63f4<\u63ea<\u63db<\u6452<\u63da<\u63f9<\u655e<\u6566<\u6562<\u6563
-<\u6591<\u6590<\u65af<\u666e<\u6670<\u6674<\u6676<\u666f<\u6691<\u667a
-<\u667e<\u6677<\u66fe<\u66ff<\u671f<\u671d<\u68fa<\u68d5<\u68e0<\u68d8
-<\u68d7<\u6905<\u68df<\u68f5<\u68ee<\u68e7<\u68f9<\u68d2<\u68f2<\u68e3
-<\u68cb<\u68cd<\u690d<\u6912<\u690e<\u68c9<\u68da<\u696e<\u68fb<\u6b3e
-<\u6b3a<\u6b3d<\u6b98<\u6b96<\u6bbc<\u6bef<\u6c2e<\u6c2f<\u6c2c<\u6e2f
-<\u6e38<\u6e54<\u6e21<\u6e32<\u6e67<\u6e4a<\u6e20<\u6e25<\u6e23<\u6e1b
-<\u6e5b<\u6e58<\u6e24<\u6e56<\u6e6e<\u6e2d<\u6e26<\u6e6f<\u6e34<\u6e4d
-<\u6e3a<\u6e2c<\u6e43<\u6e1d<\u6e3e<\u6ecb<\u6e89<\u6e19<\u6e4e<\u6e63
-<\u6e44<\u6e72<\u6e69<\u6e5f<\u7119<\u711a<\u7126<\u7130<\u7121<\u7136
-<\u716e<\u711c<\u724c<\u7284<\u7280<\u7336<\u7325<\u7334<\u7329<\u743a
-<\u742a<\u7433<\u7422<\u7425<\u7435<\u7436<\u7434<\u742f<\u741b<\u7426
-<\u7428<\u7525<\u7526<\u756b<\u756a<\u75e2<\u75db<\u75e3<\u75d9<\u75d8
-<\u75de<\u75e0<\u767b<\u767c<\u7696<\u7693<\u76b4<\u76dc<\u774f<\u77ed
-<\u785d<\u786c<\u786f<\u7a0d<\u7a08<\u7a0b<\u7a05<\u7a00<\u7a98<\u7a97
-<\u7a96<\u7ae5<\u7ae3<\u7b49<\u7b56<\u7b46<\u7b50<\u7b52<\u7b54<\u7b4d
-<\u7b4b<\u7b4f<\u7b51<\u7c9f<\u7ca5<\u7d5e<\u7d50<\u7d68<\u7d55<\u7d2b
-<\u7d6e<\u7d72<\u7d61<\u7d66<\u7d62<\u7d70<\u7d73<\u5584<\u7fd4<\u7fd5
-<\u800b<\u8052<\u8085<\u8155<\u8154<\u814b<\u8151<\u814e<\u8139<\u8146
-<\u813e<\u814c<\u8153<\u8174<\u8212<\u821c<\u83e9<\u8403<\u83f8<\u840d
-<\u83e0<\u83c5<\u840b<\u83c1<\u83ef<\u83f1<\u83f4<\u8457<\u840a<\u83f0
-<\u840c<\u83cc<\u83fd<\u83f2<\u83ca<\u8438<\u840e<\u8404<\u83dc<\u8407
-<\u83d4<\u83df<\u865b<\u86df<\u86d9<\u86ed<\u86d4<\u86db<\u86e4<\u86d0
-<\u86de<\u8857<\u88c1<\u88c2<\u88b1<\u8983<\u8996<\u8a3b<\u8a60<\u8a55
-<\u8a5e<\u8a3c<\u8a41<\u8a54<\u8a5b<\u8a50<\u8a46<\u8a34<\u8a3a<\u8a36
-<\u8a56<\u8c61<\u8c82<\u8caf<\u8cbc<\u8cb3<\u8cbd<\u8cc1<\u8cbb<\u8cc0
-<\u8cb4<\u8cb7<\u8cb6<\u8cbf<\u8cb8<\u8d8a<\u8d85<\u8d81<\u8dce<\u8ddd
-<\u8dcb<\u8dda<\u8dd1<\u8dcc<\u8ddb<\u8dc6<\u8efb<\u8ef8<\u8efc<\u8f9c
-<\u902e<\u9035<\u9031<\u9038<\u9032<\u9036<\u9102<\u90f5<\u9109<\u90fe
-<\u9163<\u9165<\u91cf<\u9214<\u9215<\u9223<\u9209<\u921e<\u920d<\u9210
-<\u9207<\u9211<\u9594<\u958f<\u958b<\u9591<\u9593<\u9592<\u958e<\u968a
-<\u968e<\u968b<\u967d<\u9685<\u9686<\u968d<\u9672<\u9684<\u96c1<\u96c5
-<\u96c4<\u96c6<\u96c7<\u96ef<\u96f2<\u97cc<\u9805<\u9806<\u9808<\u98e7
-<\u98ea<\u98ef<\u98e9<\u98f2<\u98ed<\u99ae<\u99ad<\u9ec3<\u9ecd<\u9ed1
-<\u4e82<\u50ad<\u50b5<\u50b2<\u50b3<\u50c5<\u50be<\u50ac<\u50b7<\u50bb
-<\u50af<\u50c7<\u527f<\u5277<\u527d<\u52df<\u52e6<\u52e4<\u52e2<\u52e3
-<\u532f<\u55df<\u55e8<\u55d3<\u55e6<\u55ce<\u55dc<\u55c7<\u55d1<\u55e3
-<\u55e4<\u55ef<\u55da<\u55e1<\u55c5<\u55c6<\u55e5<\u55c9<\u5712<\u5713
-<\u585e<\u5851<\u5858<\u5857<\u585a<\u5854<\u586b<\u584c<\u586d<\u584a
-<\u5862<\u5852<\u584b<\u5967<\u5ac1<\u5ac9<\u5acc<\u5abe<\u5abd<\u5abc
-<\u5ab3<\u5ac2<\u5ab2<\u5d69<\u5d6f<\u5e4c<\u5e79<\u5ec9<\u5ec8<\u5f12
-<\u5f59<\u5fac<\u5fae<\u611a<\u610f<\u6148<\u611f<\u60f3<\u611b<\u60f9
-<\u6101<\u6108<\u614e<\u614c<\u6144<\u614d<\u613e<\u6134<\u6127<\u610d
-<\u6106<\u6137<\u6221<\u6222<\u6413<\u643e<\u641e<\u642a<\u642d<\u643d
-<\u642c<\u640f<\u641c<\u6414<\u640d<\u6436<\u6416<\u6417<\u6406<\u656c
-<\u659f<\u65b0<\u6697<\u6689<\u6687<\u6688<\u6696<\u6684<\u6698<\u668d
-<\u6703<\u6994<\u696d<\u695a<\u6977<\u6960<\u6954<\u6975<\u6930<\u6982
-<\u694a<\u6968<\u696b<\u695e<\u6953<\u6979<\u6986<\u695d<\u6963<\u695b
-<\u6b47<\u6b72<\u6bc0<\u6bbf<\u6bd3<\u6bfd<\u6ea2<\u6eaf<\u6ed3<\u6eb6
-<\u6ec2<\u6e90<\u6e9d<\u6ec7<\u6ec5<\u6ea5<\u6e98<\u6ebc<\u6eba<\u6eab
-<\u6ed1<\u6e96<\u6e9c<\u6ec4<\u6ed4<\u6eaa<\u6ea7<\u6eb4<\u714e<\u7159
-<\u7169<\u7164<\u7149<\u7167<\u715c<\u716c<\u7166<\u714c<\u7165<\u715e
-<\u7146<\u7168<\u7156<\u723a<\u7252<\u7337<\u7345<\u733f<\u733e<\u746f
-<\u745a<\u7455<\u745f<\u745e<\u7441<\u743f<\u7459<\u745b<\u745c<\u7576
-<\u7578<\u7600<\u75f0<\u7601<\u75f2<\u75f1<\u75fa<\u75ff<\u75f4<\u75f3
-<\u76de<\u76df<\u775b<\u776b<\u7766<\u775e<\u7763<\u7779<\u776a<\u776c
-<\u775c<\u7765<\u7768<\u7762<\u77ee<\u788e<\u78b0<\u7897<\u7898<\u788c
-<\u7889<\u787c<\u7891<\u7893<\u787f<\u797a<\u797f<\u7981<\u842c<\u79bd
-<\u7a1c<\u7a1a<\u7a20<\u7a14<\u7a1f<\u7a1e<\u7a9f<\u7aa0<\u7b77<\u7bc0
-<\u7b60<\u7b6e<\u7b67<\u7cb1<\u7cb3<\u7cb5<\u7d93<\u7d79<\u7d91<\u7d81
-<\u7d8f<\u7d5b<\u7f6e<\u7f69<\u7f6a<\u7f72<\u7fa9<\u7fa8<\u7fa4<\u8056
-<\u8058<\u8086<\u8084<\u8171<\u8170<\u8178<\u8165<\u816e<\u8173<\u816b
-<\u8179<\u817a<\u8166<\u8205<\u8247<\u8482<\u8477<\u843d<\u8431<\u8475
-<\u8466<\u846b<\u8449<\u846c<\u845b<\u843c<\u8435<\u8461<\u8463<\u8469
-<\u846d<\u8446<\u865e<\u865c<\u865f<\u86f9<\u8713<\u8708<\u8707<\u8700
-<\u86fe<\u86fb<\u8702<\u8703<\u8706<\u870a<\u8859<\u88df<\u88d4<\u88d9
-<\u88dc<\u88d8<\u88dd<\u88e1<\u88ca<\u88d5<\u88d2<\u899c<\u89e3<\u8a6b
-<\u8a72<\u8a73<\u8a66<\u8a69<\u8a70<\u8a87<\u8a7c<\u8a63<\u8aa0<\u8a71
-<\u8a85<\u8a6d<\u8a62<\u8a6e<\u8a6c<\u8a79<\u8a7b<\u8a3e<\u8a68<\u8c62
-<\u8c8a<\u8c89<\u8cca<\u8cc7<\u8cc8<\u8cc4<\u8cb2<\u8cc3<\u8cc2<\u8cc5
-<\u8de1<\u8ddf<\u8de8<\u8def<\u8df3<\u8dfa<\u8dea<\u8de4<\u8de6<\u8eb2
-<\u8f03<\u8f09<\u8efe<\u8f0a<\u8f9f<\u8fb2<\u904b<\u904a<\u9053<\u9042
-<\u9054<\u903c<\u9055<\u9050<\u9047<\u904f<\u904e<\u904d<\u9051<\u903e
-<\u9041<\u9112<\u9117<\u916c<\u916a<\u9169<\u91c9<\u9237<\u9257<\u9238
-<\u923d<\u9240<\u923e<\u925b<\u924b<\u9264<\u9251<\u9234<\u9249<\u924d
-<\u9245<\u9239<\u923f<\u925a<\u9598<\u9698<\u9694<\u9695<\u96cd<\u96cb
-<\u96c9<\u96ca<\u96f7<\u96fb<\u96f9<\u96f6<\u9756<\u9774<\u9776<\u9810
-<\u9811<\u9813<\u980a<\u9812<\u980c<\u98fc<\u98f4<\u98fd<\u98fe<\u99b3
-<\u99b1<\u99b4<\u9ae1<\u9ce9<\u9e82<\u9f0e<\u9f13<\u9f20<\u50e7<\u50ee
-<\u50e5<\u50d6<\u50ed<\u50da<\u50d5<\u50cf<\u50d1<\u50f1<\u50ce<\u50e9
-<\u5162<\u51f3<\u5283<\u5282<\u5331<\u53ad<\u55fe<\u5600<\u561b<\u5617
-<\u55fd<\u5614<\u5606<\u5609<\u560d<\u560e<\u55f7<\u5616<\u561f<\u5608
-<\u5610<\u55f6<\u5718<\u5716<\u5875<\u587e<\u5883<\u5893<\u588a<\u5879
-<\u5885<\u587d<\u58fd<\u5925<\u5922<\u5924<\u596a<\u5969<\u5ae1<\u5ae6
-<\u5ae9<\u5ad7<\u5ad6<\u5ad8<\u5ae3<\u5b75<\u5bde<\u5be7<\u5be1<\u5be5
-<\u5be6<\u5be8<\u5be2<\u5be4<\u5bdf<\u5c0d<\u5c62<\u5d84<\u5d87<\u5e5b
-<\u5e63<\u5e55<\u5e57<\u5e54<\u5ed3<\u5ed6<\u5f0a<\u5f46<\u5f70<\u5fb9
-<\u6147<\u613f<\u614b<\u6177<\u6162<\u6163<\u615f<\u615a<\u6158<\u6175
-<\u622a<\u6487<\u6458<\u6454<\u64a4<\u6478<\u645f<\u647a<\u6451<\u6467
-<\u6434<\u646d<\u647b<\u6572<\u65a1<\u65d7<\u65d6<\u66a2<\u66a8<\u669d
-<\u699c<\u69a8<\u6995<\u69c1<\u69ae<\u69d3<\u69cb<\u699b<\u69b7<\u69bb
-<\u69ab<\u69b4<\u69d0<\u69cd<\u69ad<\u69cc<\u69a6<\u69c3<\u69a3<\u6b49
-<\u6b4c<\u6c33<\u6f33<\u6f14<\u6efe<\u6f13<\u6ef4<\u6f29<\u6f3e<\u6f20
-<\u6f2c<\u6f0f<\u6f02<\u6f22<\u6eff<\u6eef<\u6f06<\u6f31<\u6f38<\u6f32
-<\u6f23<\u6f15<\u6f2b<\u6f2f<\u6f88<\u6f2a<\u6eec<\u6f01<\u6ef2<\u6ecc
-<\u6ef7<\u7194<\u7199<\u717d<\u718a<\u7184<\u7192<\u723e<\u7292<\u7296
-<\u7344<\u7350<\u7464<\u7463<\u746a<\u7470<\u746d<\u7504<\u7591<\u7627
-<\u760d<\u760b<\u7609<\u7613<\u76e1<\u76e3<\u7784<\u777d<\u777f<\u7761
-<\u78c1<\u789f<\u78a7<\u78b3<\u78a9<\u78a3<\u798e<\u798f<\u798d<\u7a2e
-<\u7a31<\u7aaa<\u7aa9<\u7aed<\u7aef<\u7ba1<\u7b95<\u7b8b<\u7b75<\u7b97
-<\u7b9d<\u7b94<\u7b8f<\u7bb8<\u7b87<\u7b84<\u7cb9<\u7cbd<\u7cbe<\u7dbb
-<\u7db0<\u7d9c<\u7dbd<\u7dbe<\u7da0<\u7dca<\u7db4<\u7db2<\u7db1<\u7dba
-<\u7da2<\u7dbf<\u7db5<\u7db8<\u7dad<\u7dd2<\u7dc7<\u7dac<\u7f70<\u7fe0
-<\u7fe1<\u7fdf<\u805e<\u805a<\u8087<\u8150<\u8180<\u818f<\u8188<\u818a
-<\u817f<\u8182<\u81e7<\u81fa<\u8207<\u8214<\u821e<\u824b<\u84c9<\u84bf
-<\u84c6<\u84c4<\u8499<\u849e<\u84b2<\u849c<\u84cb<\u84b8<\u84c0<\u84d3
-<\u8490<\u84bc<\u84d1<\u84ca<\u873f<\u871c<\u873b<\u8722<\u8725<\u8734
-<\u8718<\u8755<\u8737<\u8729<\u88f3<\u8902<\u88f4<\u88f9<\u88f8<\u88fd
-<\u88e8<\u891a<\u88ef<\u8aa6<\u8a8c<\u8a9e<\u8aa3<\u8a8d<\u8aa1<\u8a93
-<\u8aa4<\u8aaa<\u8aa5<\u8aa8<\u8a98<\u8a91<\u8a9a<\u8aa7<\u8c6a<\u8c8d
-<\u8c8c<\u8cd3<\u8cd1<\u8cd2<\u8d6b<\u8d99<\u8d95<\u8dfc<\u8f14<\u8f12
-<\u8f15<\u8f13<\u8fa3<\u9060<\u9058<\u905c<\u9063<\u9059<\u905e<\u9062
-<\u905d<\u905b<\u9119<\u9118<\u911e<\u9175<\u9178<\u9177<\u9174<\u9278
-<\u9280<\u9285<\u9298<\u9296<\u927b<\u9293<\u929c<\u92a8<\u927c<\u9291
-<\u95a1<\u95a8<\u95a9<\u95a3<\u95a5<\u95a4<\u9699<\u969c<\u969b<\u96cc
-<\u96d2<\u9700<\u977c<\u9785<\u97f6<\u9817<\u9818<\u98af<\u98b1<\u9903
-<\u9905<\u990c<\u9909<\u99c1<\u9aaf<\u9ab0<\u9ae6<\u9b41<\u9b42<\u9cf4
-<\u9cf6<\u9cf3<\u9ebc<\u9f3b<\u9f4a<\u5104<\u5100<\u50fb<\u50f5<\u50f9
-<\u5102<\u5108<\u5109<\u5105<\u51dc<\u5287<\u5288<\u5289<\u528d<\u528a
-<\u52f0<\u53b2<\u562e<\u563b<\u5639<\u5632<\u563f<\u5634<\u5629<\u5653
-<\u564e<\u5657<\u5674<\u5636<\u562f<\u5630<\u5880<\u589f<\u589e<\u58b3
-<\u589c<\u58ae<\u58a9<\u58a6<\u596d<\u5b09<\u5afb<\u5b0b<\u5af5<\u5b0c
-<\u5b08<\u5bee<\u5bec<\u5be9<\u5beb<\u5c64<\u5c65<\u5d9d<\u5d94<\u5e62
-<\u5e5f<\u5e61<\u5ee2<\u5eda<\u5edf<\u5edd<\u5ee3<\u5ee0<\u5f48<\u5f71
-<\u5fb7<\u5fb5<\u6176<\u6167<\u616e<\u615d<\u6155<\u6182<\u617c<\u6170
-<\u616b<\u617e<\u61a7<\u6190<\u61ab<\u618e<\u61ac<\u619a<\u61a4<\u6194
-<\u61ae<\u622e<\u6469<\u646f<\u6479<\u649e<\u64b2<\u6488<\u6490<\u64b0
-<\u64a5<\u6493<\u6495<\u64a9<\u6492<\u64ae<\u64ad<\u64ab<\u649a<\u64ac
-<\u6499<\u64a2<\u64b3<\u6575<\u6577<\u6578<\u66ae<\u66ab<\u66b4<\u66b1
-<\u6a23<\u6a1f<\u69e8<\u6a01<\u6a1e<\u6a19<\u69fd<\u6a21<\u6a13<\u6a0a
-<\u69f3<\u6a02<\u6a05<\u69ed<\u6a11<\u6b50<\u6b4e<\u6ba4<\u6bc5<\u6bc6
-<\u6f3f<\u6f7c<\u6f84<\u6f51<\u6f66<\u6f54<\u6f86<\u6f6d<\u6f5b<\u6f78
-<\u6f6e<\u6f8e<\u6f7a<\u6f70<\u6f64<\u6f97<\u6f58<\u6ed5<\u6f6f<\u6f60
-<\u6f5f<\u719f<\u71ac<\u71b1<\u71a8<\u7256<\u729b<\u734e<\u7357<\u7469
-<\u748b<\u7483<\u747e<\u7480<\u757f<\u7620<\u7629<\u761f<\u7624<\u7626
-<\u7621<\u7622<\u769a<\u76ba<\u76e4<\u778e<\u7787<\u778c<\u7791<\u778b
-<\u78cb<\u78c5<\u78ba<\u78ca<\u78be<\u78d5<\u78bc<\u78d0<\u7a3f<\u7a3c
-<\u7a40<\u7a3d<\u7a37<\u7a3b<\u7aaf<\u7aae<\u7bad<\u7bb1<\u7bc4<\u7bb4
-<\u7bc6<\u7bc7<\u7bc1<\u7ba0<\u7bcc<\u7cca<\u7de0<\u7df4<\u7def<\u7dfb
-<\u7dd8<\u7dec<\u7ddd<\u7de8<\u7de3<\u7dda<\u7dde<\u7de9<\u7d9e<\u7dd9
-<\u7df2<\u7df9<\u7f75<\u7f77<\u7faf<\u7fe9<\u8026<\u819b<\u819c<\u819d
-<\u81a0<\u819a<\u8198<\u8517<\u853d<\u851a<\u84ee<\u852c<\u852d<\u8513
-<\u8511<\u8523<\u8521<\u8514<\u84ec<\u8525<\u84ff<\u8506<\u8782<\u8774
-<\u8776<\u8760<\u8766<\u8778<\u8768<\u8759<\u8757<\u874c<\u8753<\u885b
-<\u885d<\u8910<\u8907<\u8912<\u8913<\u8915<\u890a<\u8abc<\u8ad2<\u8ac7
-<\u8ac4<\u8a95<\u8acb<\u8af8<\u8ab2<\u8ac9<\u8ac2<\u8abf<\u8ab0<\u8ad6
-<\u8acd<\u8ab6<\u8ab9<\u8adb<\u8c4c<\u8c4e<\u8c6c<\u8ce0<\u8cde<\u8ce6
-<\u8ce4<\u8cec<\u8ced<\u8ce2<\u8ce3<\u8cdc<\u8cea<\u8ce1<\u8d6d<\u8d9f
-<\u8da3<\u8e2b<\u8e10<\u8e1d<\u8e22<\u8e0f<\u8e29<\u8e1f<\u8e21<\u8e1e
-<\u8eba<\u8f1d<\u8f1b<\u8f1f<\u8f29<\u8f26<\u8f2a<\u8f1c<\u8f1e<\u8f25
-<\u9069<\u906e<\u9068<\u906d<\u9077<\u9130<\u912d<\u9127<\u9131<\u9187
-<\u9189<\u918b<\u9183<\u92c5<\u92bb<\u92b7<\u92ea<\u92ac<\u92e4<\u92c1
-<\u92b3<\u92bc<\u92d2<\u92c7<\u92f0<\u92b2<\u95ad<\u95b1<\u9704<\u9706
-<\u9707<\u9709<\u9760<\u978d<\u978b<\u978f<\u9821<\u982b<\u981c<\u98b3
-<\u990a<\u9913<\u9912<\u9918<\u99dd<\u99d0<\u99df<\u99db<\u99d1<\u99d5
-<\u99d2<\u99d9<\u9ab7<\u9aee<\u9aef<\u9b27<\u9b45<\u9b44<\u9b77<\u9b6f
-<\u9d06<\u9d09<\u9d03<\u9ea9<\u9ebe<\u9ece<\u58a8<\u9f52<\u5112<\u5118
-<\u5114<\u5110<\u5115<\u5180<\u51aa<\u51dd<\u5291<\u5293<\u52f3<\u5659
-<\u566b<\u5679<\u5669<\u5664<\u5678<\u566a<\u5668<\u5665<\u5671<\u566f
-<\u566c<\u5662<\u5676<\u58c1<\u58be<\u58c7<\u58c5<\u596e<\u5b1d<\u5b34
-<\u5b78<\u5bf0<\u5c0e<\u5f4a<\u61b2<\u6191<\u61a9<\u618a<\u61cd<\u61b6
-<\u61be<\u61ca<\u61c8<\u6230<\u64c5<\u64c1<\u64cb<\u64bb<\u64bc<\u64da
-<\u64c4<\u64c7<\u64c2<\u64cd<\u64bf<\u64d2<\u64d4<\u64be<\u6574<\u66c6
-<\u66c9<\u66b9<\u66c4<\u66c7<\u66b8<\u6a3d<\u6a38<\u6a3a<\u6a59<\u6a6b
-<\u6a58<\u6a39<\u6a44<\u6a62<\u6a61<\u6a4b<\u6a47<\u6a35<\u6a5f<\u6a48
-<\u6b59<\u6b77<\u6c05<\u6fc2<\u6fb1<\u6fa1<\u6fc3<\u6fa4<\u6fc1<\u6fa7
-<\u6fb3<\u6fc0<\u6fb9<\u6fb6<\u6fa6<\u6fa0<\u6fb4<\u71be<\u71c9<\u71d0
-<\u71d2<\u71c8<\u71d5<\u71b9<\u71ce<\u71d9<\u71dc<\u71c3<\u71c4<\u7368
-<\u749c<\u74a3<\u7498<\u749f<\u749e<\u74e2<\u750c<\u750d<\u7634<\u7638
-<\u763a<\u76e7<\u76e5<\u77a0<\u779e<\u779f<\u77a5<\u78e8<\u78da<\u78ec
-<\u78e7<\u79a6<\u7a4d<\u7a4e<\u7a46<\u7a4c<\u7a4b<\u7aba<\u7bd9<\u7c11
-<\u7bc9<\u7be4<\u7bdb<\u7be1<\u7be9<\u7be6<\u7cd5<\u7cd6<\u7e0a<\u7e11
-<\u7e08<\u7e1b<\u7e23<\u7e1e<\u7e1d<\u7e09<\u7e10<\u7f79<\u7fb2<\u7ff0
-<\u7ff1<\u7fee<\u8028<\u81b3<\u81a9<\u81a8<\u81fb<\u8208<\u8258<\u8259
-<\u854a<\u8559<\u8548<\u8568<\u8569<\u8543<\u8549<\u856d<\u856a<\u855e
-<\u8783<\u879f<\u879e<\u87a2<\u878d<\u8861<\u892a<\u8932<\u8925<\u892b
-<\u8921<\u89aa<\u89a6<\u8ae6<\u8afa<\u8aeb<\u8af1<\u8b00<\u8adc<\u8ae7
-<\u8aee<\u8afe<\u8b01<\u8b02<\u8af7<\u8aed<\u8af3<\u8af6<\u8afc<\u8c6b
-<\u8c6d<\u8c93<\u8cf4<\u8e44<\u8e31<\u8e34<\u8e42<\u8e39<\u8e35<\u8f3b
-<\u8f2f<\u8f38<\u8f33<\u8fa8<\u8fa6<\u9075<\u9074<\u9078<\u9072<\u907c
-<\u907a<\u9134<\u9192<\u9320<\u9336<\u92f8<\u9333<\u932f<\u9322<\u92fc
-<\u932b<\u9304<\u931a<\u9310<\u9326<\u9321<\u9315<\u932e<\u9319<\u95bb
-<\u96a7<\u96a8<\u96aa<\u96d5<\u970e<\u9711<\u9716<\u970d<\u9713<\u970f
-<\u975b<\u975c<\u9766<\u9798<\u9830<\u9838<\u983b<\u9837<\u982d<\u9839
-<\u9824<\u9910<\u9928<\u991e<\u991b<\u9921<\u991a<\u99ed<\u99e2<\u99f1
-<\u9ab8<\u9abc<\u9afb<\u9aed<\u9b28<\u9b91<\u9d15<\u9d23<\u9d26<\u9d28
-<\u9d12<\u9d1b<\u9ed8<\u9ed4<\u9f8d<\u9f9c<\u512a<\u511f<\u5121<\u5132
-<\u52f5<\u568e<\u5680<\u5690<\u5685<\u5687<\u568f<\u58d5<\u58d3<\u58d1
-<\u58ce<\u5b30<\u5b2a<\u5b24<\u5b7a<\u5c37<\u5c68<\u5dbc<\u5dba<\u5dbd
-<\u5db8<\u5e6b<\u5f4c<\u5fbd<\u61c9<\u61c2<\u61c7<\u61e6<\u61cb<\u6232
-<\u6234<\u64ce<\u64ca<\u64d8<\u64e0<\u64f0<\u64e6<\u64ec<\u64f1<\u64e2
-<\u64ed<\u6582<\u6583<\u66d9<\u66d6<\u6a80<\u6a94<\u6a84<\u6aa2<\u6a9c
-<\u6adb<\u6aa3<\u6a7e<\u6a97<\u6a90<\u6aa0<\u6b5c<\u6bae<\u6bda<\u6c08
-<\u6fd8<\u6ff1<\u6fdf<\u6fe0<\u6fdb<\u6fe4<\u6feb<\u6fef<\u6f80<\u6fec
-<\u6fe1<\u6fe9<\u6fd5<\u6fee<\u6ff0<\u71e7<\u71df<\u71ee<\u71e6<\u71e5
-<\u71ed<\u71ec<\u71f4<\u71e0<\u7235<\u7246<\u7370<\u7372<\u74a9<\u74b0
-<\u74a6<\u74a8<\u7646<\u7642<\u764c<\u76ea<\u77b3<\u77aa<\u77b0<\u77ac
-<\u77a7<\u77ad<\u77ef<\u78f7<\u78fa<\u78f4<\u78ef<\u7901<\u79a7<\u79aa
-<\u7a57<\u7abf<\u7c07<\u7c0d<\u7bfe<\u7bf7<\u7c0c<\u7be0<\u7ce0<\u7cdc
-<\u7cde<\u7ce2<\u7cdf<\u7cd9<\u7cdd<\u7e2e<\u7e3e<\u7e46<\u7e37<\u7e32
-<\u7e43<\u7e2b<\u7e3d<\u7e31<\u7e45<\u7e41<\u7e34<\u7e39<\u7e48<\u7e35
-<\u7e3f<\u7e2f<\u7f44<\u7ff3<\u7ffc<\u8071<\u8072<\u8070<\u806f<\u8073
-<\u81c6<\u81c3<\u81ba<\u81c2<\u81c0<\u81bf<\u81bd<\u81c9<\u81be<\u81e8
-<\u8209<\u8271<\u85aa<\u8584<\u857e<\u859c<\u8591<\u8594<\u85af<\u859b
-<\u8587<\u85a8<\u858a<\u8667<\u87c0<\u87d1<\u87b3<\u87d2<\u87c6<\u87ab
-<\u87bb<\u87ba<\u87c8<\u87cb<\u893b<\u8936<\u8944<\u8938<\u893d<\u89ac
-<\u8b0e<\u8b17<\u8b19<\u8b1b<\u8b0a<\u8b20<\u8b1d<\u8b04<\u8b10<\u8c41
-<\u8c3f<\u8c73<\u8cfa<\u8cfd<\u8cfc<\u8cf8<\u8cfb<\u8da8<\u8e49<\u8e4b
-<\u8e48<\u8e4a<\u8f44<\u8f3e<\u8f42<\u8f45<\u8f3f<\u907f<\u907d<\u9084
-<\u9081<\u9082<\u9080<\u9139<\u91a3<\u919e<\u919c<\u934d<\u9382<\u9328
-<\u9375<\u934a<\u9365<\u934b<\u9318<\u937e<\u936c<\u935b<\u9370<\u935a
-<\u9354<\u95ca<\u95cb<\u95cc<\u95c8<\u95c6<\u96b1<\u96b8<\u96d6<\u971c
-<\u971e<\u97a0<\u97d3<\u9846<\u98b6<\u9935<\u9a01<\u99ff<\u9bae<\u9bab
-<\u9baa<\u9bad<\u9d3b<\u9d3f<\u9e8b<\u9ecf<\u9ede<\u9edc<\u9edd<\u9edb
-<\u9f3e<\u9f4b<\u53e2<\u5695<\u56ae<\u58d9<\u58d8<\u5b38<\u5f5d<\u61e3
-<\u6233<\u64f4<\u64f2<\u64fe<\u6506<\u64fa<\u64fb<\u64f7<\u65b7<\u66dc
-<\u6726<\u6ab3<\u6aac<\u6ac3<\u6abb<\u6ab8<\u6ac2<\u6aae<\u6aaf<\u6b5f
-<\u6b78<\u6baf<\u7009<\u700b<\u6ffe<\u7006<\u6ffa<\u7011<\u700f<\u71fb
-<\u71fc<\u71fe<\u71f8<\u7377<\u7375<\u74a7<\u74bf<\u7515<\u7656<\u7658
-<\u7652<\u77bd<\u77bf<\u77bb<\u77bc<\u790e<\u79ae<\u7a61<\u7a62<\u7a60
-<\u7ac4<\u7ac5<\u7c2b<\u7c27<\u7c2a<\u7c1e<\u7c23<\u7c21<\u7ce7<\u7e54
-<\u7e55<\u7e5e<\u7e5a<\u7e61<\u7e52<\u7e59<\u7f48<\u7ff9<\u7ffb<\u8077
-<\u8076<\u81cd<\u81cf<\u820a<\u85cf<\u85a9<\u85cd<\u85d0<\u85c9<\u85b0
-<\u85ba<\u85b9<\u85a6<\u87ef<\u87ec<\u87f2<\u87e0<\u8986<\u89b2<\u89f4
-<\u8b28<\u8b39<\u8b2c<\u8b2b<\u8c50<\u8d05<\u8e59<\u8e63<\u8e66<\u8e64
-<\u8e5f<\u8e55<\u8ec0<\u8f49<\u8f4d<\u9087<\u9083<\u9088<\u91ab<\u91ac
-<\u91d0<\u9394<\u938a<\u9396<\u93a2<\u93b3<\u93ae<\u93ac<\u93b0<\u9398
-<\u939a<\u9397<\u95d4<\u95d6<\u95d0<\u95d5<\u96e2<\u96dc<\u96d9<\u96db
-<\u96de<\u9724<\u97a3<\u97a6<\u97ad<\u97f9<\u984d<\u984f<\u984c<\u984e
-<\u9853<\u98ba<\u993e<\u993f<\u993d<\u992e<\u99a5<\u9a0e<\u9ac1<\u9b03
-<\u9b06<\u9b4f<\u9b4e<\u9b4d<\u9bca<\u9bc9<\u9bfd<\u9bc8<\u9bc0<\u9d51
-<\u9d5d<\u9d60<\u9ee0<\u9f15<\u9f2c<\u5133<\u56a5<\u58de<\u58df<\u58e2
-<\u5bf5<\u9f90<\u5eec<\u61f2<\u61f7<\u61f6<\u61f5<\u6500<\u650f<\u66e0
-<\u66dd<\u6ae5<\u6add<\u6ada<\u6ad3<\u701b<\u701f<\u7028<\u701a<\u701d
-<\u7015<\u7018<\u7206<\u720d<\u7258<\u72a2<\u7378<\u737a<\u74bd<\u74ca
-<\u74e3<\u7587<\u7586<\u765f<\u7661<\u77c7<\u7919<\u79b1<\u7a6b<\u7a69
-<\u7c3e<\u7c3f<\u7c38<\u7c3d<\u7c37<\u7c40<\u7e6b<\u7e6d<\u7e79<\u7e69
-<\u7e6a<\u7f85<\u7e73<\u7fb6<\u7fb9<\u7fb8<\u81d8<\u85e9<\u85dd<\u85ea
-<\u85d5<\u85e4<\u85e5<\u85f7<\u87fb<\u8805<\u880d<\u87f9<\u87fe<\u8960
-<\u895f<\u8956<\u895e<\u8b41<\u8b5c<\u8b58<\u8b49<\u8b5a<\u8b4e<\u8b4f
-<\u8b46<\u8b59<\u8d08<\u8d0a<\u8e7c<\u8e72<\u8e87<\u8e76<\u8e6c<\u8e7a
-<\u8e74<\u8f54<\u8f4e<\u8fad<\u908a<\u908b<\u91b1<\u91ae<\u93e1<\u93d1
-<\u93df<\u93c3<\u93c8<\u93dc<\u93dd<\u93d6<\u93e2<\u93cd<\u93d8<\u93e4
-<\u93d7<\u93e8<\u95dc<\u96b4<\u96e3<\u972a<\u9727<\u9761<\u97dc<\u97fb
-<\u985e<\u9858<\u985b<\u98bc<\u9945<\u9949<\u9a16<\u9a19<\u9b0d<\u9be8
-<\u9be7<\u9bd6<\u9bdb<\u9d89<\u9d61<\u9d72<\u9d6a<\u9d6c<\u9e92<\u9e97
-<\u9e93<\u9eb4<\u52f8<\u56a8<\u56b7<\u56b6<\u56b4<\u56bc<\u58e4<\u5b40
-<\u5b43<\u5b7d<\u5bf6<\u5dc9<\u61f8<\u61fa<\u6518<\u6514<\u6519<\u66e6
-<\u6727<\u6aec<\u703e<\u7030<\u7032<\u7210<\u737b<\u74cf<\u7662<\u7665
-<\u7926<\u792a<\u792c<\u792b<\u7ac7<\u7af6<\u7c4c<\u7c43<\u7c4d<\u7cef
-<\u7cf0<\u8fae<\u7e7d<\u7e7c<\u7e82<\u7f4c<\u8000<\u81da<\u8266<\u85fb
-<\u85f9<\u8611<\u85fa<\u8606<\u860b<\u8607<\u860a<\u8814<\u8815<\u8964
-<\u89ba<\u89f8<\u8b70<\u8b6c<\u8b66<\u8b6f<\u8b5f<\u8b6b<\u8d0f<\u8d0d
-<\u8e89<\u8e81<\u8e85<\u8e82<\u91b4<\u91cb<\u9418<\u9403<\u93fd<\u95e1
-<\u9730<\u98c4<\u9952<\u9951<\u99a8<\u9a2b<\u9a30<\u9a37<\u9a35<\u9c13
-<\u9c0d<\u9e79<\u9eb5<\u9ee8<\u9f2f<\u9f5f<\u9f63<\u9f61<\u5137<\u5138
-<\u56c1<\u56c0<\u56c2<\u5914<\u5c6c<\u5dcd<\u61fc<\u61fe<\u651d<\u651c
-<\u6595<\u66e9<\u6afb<\u6b04<\u6afa<\u6bb2<\u704c<\u721b<\u72a7<\u74d6
-<\u74d4<\u7669<\u77d3<\u7c50<\u7e8f<\u7e8c<\u7fbc<\u8617<\u862d<\u861a
-<\u8823<\u8822<\u8821<\u881f<\u896a<\u896c<\u89bd<\u8b74<\u8b77<\u8b7d
-<\u8d13<\u8e8a<\u8e8d<\u8e8b<\u8f5f<\u8faf<\u91ba<\u942e<\u9433<\u9435
-<\u943a<\u9438<\u9432<\u942b<\u95e2<\u9738<\u9739<\u9732<\u97ff<\u9867
-<\u9865<\u9957<\u9a45<\u9a43<\u9a40<\u9a3e<\u9acf<\u9b54<\u9b51<\u9c2d
-<\u9c25<\u9daf<\u9db4<\u9dc2<\u9db8<\u9e9d<\u9eef<\u9f19<\u9f5c<\u9f66
-<\u9f67<\u513c<\u513b<\u56c8<\u56ca<\u56c9<\u5b7f<\u5dd4<\u5dd2<\u5f4e
-<\u61ff<\u6524<\u6b0a<\u6b61<\u7051<\u7058<\u7380<\u74e4<\u758a<\u766e
-<\u766c<\u79b3<\u7c60<\u7c5f<\u807e<\u807d<\u81df<\u8972<\u896f<\u89fc
-<\u8b80<\u8d16<\u8d17<\u8e91<\u8e93<\u8f61<\u9148<\u9444<\u9451<\u9452
-<\u973d<\u973e<\u97c3<\u97c1<\u986b<\u9955<\u9a55<\u9a4d<\u9ad2<\u9b1a
-<\u9c49<\u9c31<\u9c3e<\u9c3b<\u9dd3<\u9dd7<\u9f34<\u9f6c<\u9f6a<\u9f94
-<\u56cc<\u5dd6<\u6200<\u6523<\u652b<\u652a<\u66ec<\u6b10<\u74da<\u7aca
-<\u7c64<\u7c63<\u7c65<\u7e93<\u7e96<\u7e94<\u81e2<\u8638<\u863f<\u8831
-<\u8b8a<\u9090<\u908f<\u9463<\u9460<\u9464<\u9768<\u986f<\u995c<\u9a5a
-<\u9a5b<\u9a57<\u9ad3<\u9ad4<\u9ad1<\u9c54<\u9c57<\u9c56<\u9de5<\u9e9f
-<\u9ef4<\u56d1<\u58e9<\u652c<\u705e<\u7671<\u7672<\u77d7<\u7f50<\u7f88
-<\u8836<\u8839<\u8862<\u8b93<\u8b92<\u8b96<\u8277<\u8d1b<\u91c0<\u946a
-<\u9742<\u9748<\u9744<\u97c6<\u9870<\u9a5f<\u9b22<\u9b58<\u9c5f<\u9df9
-<\u9dfa<\u9e7c<\u9e7d<\u9f07<\u9f77<\u9f72<\u5ef3<\u6b16<\u7063<\u7c6c
-<\u7c6e<\u883b<\u89c0<\u8ea1<\u91c1<\u9472<\u9470<\u9871<\u995e<\u9ad6
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list