summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-11-04 21:11:41 +0000
committerUlrich Drepper <drepper@redhat.com>2003-11-04 21:11:41 +0000
commit9378784537d0a4cd4e630aa360d0ae838dfcf500 (patch)
treee1607d2c9565d13cc916214f1c4c9a603a0202d3
parent1c15327821aee947476284374a96c7ebb64dc0d6 (diff)
downloadglibc-9378784537d0a4cd4e630aa360d0ae838dfcf500.tar.gz
glibc-9378784537d0a4cd4e630aa360d0ae838dfcf500.tar.xz
glibc-9378784537d0a4cd4e630aa360d0ae838dfcf500.zip
Update.
2003-11-04  Jakub Jelinek  <jakub@redhat.com>

	* io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns
	non-zero.
	* io/Makefile (tests): Add bug-ftw4.
	* io/bug-ftw4.c: New test.
-rw-r--r--ChangeLog7
-rw-r--r--io/Makefile2
-rw-r--r--io/bug-ftw4.c124
-rw-r--r--io/ftw.c22
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/signals.c15
-rw-r--r--localedata/CHECKSUMS670
7 files changed, 575 insertions, 270 deletions
diff --git a/ChangeLog b/ChangeLog
index 0013f05bfc..d9d6b555b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2003-11-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns
+	non-zero.
+	* io/Makefile (tests): Add bug-ftw4.
+	* io/bug-ftw4.c: New test.
+
 2003-10-27  Daniel Jacobowitz  <drow@mvista.com>
 
 	* libio/libioP.h [_IO_USE_OLD_IO_FILE]
diff --git a/io/Makefile b/io/Makefile
index 14358ec93f..906d1e3301 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -57,7 +57,7 @@ static-only-routines = stat fstat lstat mknod stat64 fstat64 lstat64
 others		:= pwd
 test-srcs	:= ftwtest
 tests		:= test-utime test-stat test-stat2 test-lfs tst-getcwd \
-		   tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 tst-statvfs
+		   tst-fcntl bug-ftw1 bug-ftw2 bug-ftw3 bug-ftw4 tst-statvfs
 
 distribute	:= ftwtest-sh
 
diff --git a/io/bug-ftw4.c b/io/bug-ftw4.c
new file mode 100644
index 0000000000..0a652d3531
--- /dev/null
+++ b/io/bug-ftw4.c
@@ -0,0 +1,124 @@
+/* Test if ftw function doesn't leak fds.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <fcntl.h>
+#include <ftw.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+static int cb_called;
+
+static int
+cb (const char *name, const struct stat64 *st, int type)
+{
+  return cb_called++ & 1;
+}
+
+int
+main (void)
+{
+  char name[32] = "/tmp/ftwXXXXXX", *p;
+  int ret, i, result = 0, fd, fd1, fd2;
+
+  if (mkdtemp (name) == NULL)
+    {
+      printf ("Couldn't make temporary directory: %m\n");
+      exit (EXIT_FAILURE);
+    }
+  p = strchr (name, '\0');
+  strcpy (p, "/1");
+  if (mkdir (name, 0755) < 0)
+    {
+      printf ("Couldn't make temporary subdirectory: %m\n");
+      exit (EXIT_FAILURE);
+    }
+  *p = '\0';
+
+  ret = ftw64 (name, cb, 20);
+  if (ret != 1)
+    {
+      printf ("ftw64 returned %d instead of 1", ret);
+      result = 1;
+    }
+
+  fd = open (name, O_RDONLY);
+  if (fd < 0)
+    {
+      printf ("open failed: %m\n");
+      result = 1;
+    }
+  fd1 = open (name, O_RDONLY);
+  if (fd1 < 0)
+    {
+      printf ("open failed: %m\n");
+      result = 1;
+    }
+  else
+    close (fd1);
+  if (fd >= 0)
+    close (fd);
+
+  for (i = 0; i < 128; ++i)
+    {
+      ret = ftw64 (name, cb, 20);
+      if (ret != 1)
+	{
+	  printf ("ftw64 returned %d instead of 1", ret);
+	  result = 1;
+	}
+    }
+
+  fd = open (name, O_RDONLY);
+  if (fd < 0)
+    {
+      printf ("open failed: %m\n");
+      result = 1;
+    }
+  fd2 = open (name, O_RDONLY);
+  if (fd2 < 0)
+    {
+      printf ("open failed: %m\n");
+      result = 1;
+    }
+  else
+    close (fd2);
+  if (fd >= 0)
+    close (fd);
+
+  if (fd2 >= fd1 + 128)
+    {
+      printf ("ftw64 leaking fds: %d -> %d\n", fd1, fd2);
+      result = 1;
+    }
+
+  if (cb_called != 129 * 2)
+    {
+      printf ("callback called %d times\n", cb_called);
+      result = 1;
+    }
+
+  strcpy (p, "/1");
+  rmdir (name);
+  *p = '\0';
+  rmdir (name);
+  return result;
+}
diff --git a/io/ftw.c b/io/ftw.c
index c7c2038c06..6d5cedf63e 100644
--- a/io/ftw.c
+++ b/io/ftw.c
@@ -476,23 +476,27 @@ ftw_dir (struct ftw_data *data, struct STAT *st)
     {
       result = (*data->func) (data->dirbuf, st, FTW_D, &data->ftw);
       if (result != 0)
-	return result;
-    }
-
-  /* If necessary, change to this directory.  */
-  if (data->flags & FTW_CHDIR)
-    {
-      if (__fchdir (dirfd (dir.stream)) < 0)
 	{
-	  int save_err = errno;
+	  int save_err;
+fail:
+	  save_err = errno;
 	  __closedir (dir.stream);
 	  __set_errno (save_err);
 
 	  if (data->actdir-- == 0)
 	    data->actdir = data->maxdir - 1;
 	  data->dirstreams[data->actdir] = NULL;
+	  return result;
+	}
+    }
 
-	  return -1;
+  /* If necessary, change to this directory.  */
+  if (data->flags & FTW_CHDIR)
+    {
+      if (__fchdir (dirfd (dir.stream)) < 0)
+	{
+	  result = -1;
+	  goto fail;
 	}
     }
 
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 3102111eff..8f74133fce 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+2003-11-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* signals.c (__pthread_sigaction): Set __sighandler[sig].old before
+	__libc_sigaction if it has been one of the special values before.
+
 2003-10-06  Carlos O'Donell <carlos@baldric.uwo.ca>
 
 	* pthread.c (__pthread_self_stack): _STACK_GROWS_UP case added.
diff --git a/linuxthreads/signals.c b/linuxthreads/signals.c
index e1f67ab0e8..667754aa37 100644
--- a/linuxthreads/signals.c
+++ b/linuxthreads/signals.c
@@ -78,6 +78,7 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
 {
   struct sigaction newact;
   struct sigaction *newactp;
+  __sighandler_t old = SIG_DFL;
 
   if (sig == __pthread_sig_restart ||
       sig == __pthread_sig_cancel ||
@@ -86,6 +87,8 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
       __set_errno (EINVAL);
       return -1;
     }
+  if (sig > 0 && sig < NSIG)
+    old = (__sighandler_t) __sighandler[sig].old;
   if (act)
     {
       newact = *act;
@@ -96,21 +99,27 @@ int __pthread_sigaction(int sig, const struct sigaction * act,
 	    newact.sa_handler = (__sighandler_t) __pthread_sighandler_rt;
 	  else
 	    newact.sa_handler = (__sighandler_t) __pthread_sighandler;
+	  if (old == SIG_IGN || old == SIG_DFL || old == SIG_ERR)
+	    __sighandler[sig].old = (arch_sighandler_t) act->sa_handler;
 	}
       newactp = &newact;
     }
   else
     newactp = NULL;
   if (__libc_sigaction(sig, newactp, oact) == -1)
-    return -1;
+    {
+      if (act)
+	__sighandler[sig].old = (arch_sighandler_t) old;
+      return -1;
+    }
   if (sig > 0 && sig < NSIG)
     {
       if (oact != NULL
 	  /* We may have inherited SIG_IGN from the parent, so return the
 	     kernel's idea of the signal handler the first time
 	     through.  */
-	  && (__sighandler_t) __sighandler[sig].old != SIG_ERR)
-	oact->sa_handler = (__sighandler_t) __sighandler[sig].old;
+	  && old != SIG_ERR)
+	oact->sa_handler = old;
       if (act)
 	/* For the assignment it does not matter whether it's a normal
 	   or real-time signal.  */
diff --git a/localedata/CHECKSUMS b/localedata/CHECKSUMS
index 4478a291c5..c0914ebc98 100644
--- a/localedata/CHECKSUMS
+++ b/localedata/CHECKSUMS
@@ -1,268 +1,424 @@
-97ec3e0e5a02ba50bf034cfcdea6469d  locales/POSIX
-2ac9c8dab200035ab30329e025ae29be  locales/af_ZA
-dc560d0dd71ca1cf4b3a3f422fe03b14  locales/ca_ES
-e2b2c79ac083d3c7151e9ede9360f6c0  locales/cs_CZ
-6ed0464590918f9b59731ea8b762900d  locales/da_DK
-3c1e78eeb968fa5ef49b2672fe3da756  locales/de_AT
-6ee0be7a3b0033b35719419a9d84b27f  locales/de_BE
-89ff8fb9bb9d2ea2fbfd409baccd7f59  locales/de_CH
-693b60488445f63d15207cd407884345  locales/de_DE
-969062eb7dd2196ae96c26b837f77591  locales/de_LU
-9a10c3ac70ab2d0d26ea2e8921199665  locales/el_GR
-1df05f9450263138fd5d4ee513642310  locales/en_AU
-0271ab37e58ddb29733ab3f89789f10c  locales/en_BW
-bafe0469ff4621636a90e72acebb6f93  locales/en_CA
-688ec6a92b152ec3dfad2c52d7fd61ea  locales/en_CA,2.5
-172ca6f82d8dfb3edd86ddf51e157a1e  locales/en_DK
-94cd32fd51aa57d42255b9aa8ab7cee3  locales/en_DK.com
-8f322dd28903682c6a80a4a96861dc59  locales/en_GB
-aee81bf8761ef1e38f6adc39e5846b17  locales/en_IE
-e6accbc3458eba9e23156e99ce700439  locales/en_NZ
-e7e3223904043d185087bbb13bbc6e97  locales/en_US
-21fd1816ee6f32b6777d90222d660be3  locales/en_ZA
-d82de853fcd448dfd1a7e5d2bb114daf  locales/en_ZW
-b2f02bb97de06de5a14bb4cc11877ad7  locales/es_AR
-41630e6e8f5a164fa90e10b202cc3eaf  locales/es_BO
-b21ac1fea9726a62d7306d63e646c990  locales/es_CL
-8e3752256da403c9a9d66680deed45c8  locales/es_CO
-915aa3b6b7c73ffa00ceda87b8589495  locales/es_DO
-01175f59670c47e8bb62553c62d480ee  locales/es_EC
-c9df76a675c75ab0000057ffcf826aee  locales/es_ES
-0085a8fee4c77cfa02e5b2a700fa30d4  locales/es_GT
-de8e51deed4c7bf897cf886fea7772d6  locales/es_HN
-e07278e9fb181fd32e1a89f2025a43b7  locales/es_MX
-0f4c8e46eb4790f598137678ace1887c  locales/es_PA
-15decb57c2ce997e76e6c5c217c44d1d  locales/es_PE
-1e7d8a5c9f0abb506e3b7128a3f28980  locales/es_PY
-69dd105d588ef12726c51735d94e2d59  locales/es_SV
-97c3c0374bdd90fba624e0aa46bdb745  locales/es_US
-e24d7f66ec0f5fbbca742be937d680b5  locales/es_UY
-05d4a96a70ccaecd3472a1e9b40db513  locales/es_VE
-55b992cdb4b9adf72df968881a55045c  locales/et_EE
-4d85ff4728e48450e1ae4f371c1fd12e  locales/eu_ES
-b921bf84d560d5ab06111807981748e9  locales/fa_IR
-7fc821e07d7e228535dcc2b6c4fce8f1  locales/fi_FI
-35d631cc21c7cc9d1ce2933e1d94d81a  locales/fo_FO
-419d0507292b954a0cee5be020771b00  locales/fr_BE
-d9e85f9c1dc5d2d9396afac293f0553c  locales/fr_CA
-c1836dfa41f6eb43dc90900d2cd9b341  locales/fr_CA,2.13
-47b866d8e108070ebc393f18e5a11618  locales/fr_CH
-1d63fde6acfdc6c0dc03b36098a9f5ab  locales/fr_FR
-8c17257001e3d33e8ab8c5dc9fae87a7  locales/fr_LU
-fe6ba034da4ce416f480a11a0b1f7356  locales/ga_IE
-37dc43894af12d76a399af38ec3b848e  locales/gl_ES
-e5730342b747e9445b6448792d39d121  locales/he_IL
-8264c2cdffbead098d797ea1d861753f  locales/hr_HR
-70ea8a47c5e1ea1af40fe059795108f6  locales/hu_HU
-0d145a65dfa353f93f78090719cb086d  locales/id_ID
-d1089f83e82d9ea9256a82cd4b883a72  locales/in_ID
-c96cc2c4f753f6641d2744eb762dc4e3  locales/is_IS
-48252394b6e3f50cfcf00510eacd3683  locales/it_CH
-69b619bf7fad926c3c04349f1a316d0d  locales/it_IT
-e5730342b747e9445b6448792d39d121  locales/iw_IL
-934faede9009fc486fc7453c16084aba  locales/ja_JP
-2f97cb36f71528ce4dda636ddb96d0c5  locales/kl_GL
-880237172b8700c9645dd0cee6ad3a59  locales/ko_KR
-c7e3b3446446aa0e9fcc6dd1bdee6a5d  locales/lt_LT
-b93e2cb7a11c1fbd22d0427aab4922d0  locales/lv_LV
-5be9df64a7bf8669701f0f9983dc1004  locales/nl_BE
-4d58de18535a2e1f98e6985d4fa5b671  locales/nl_NL
-ed41a02e1c2aec4eddc42fe7b5702bf4  locales/no_NO
-83bf7b71dd5b09e267d9e69d37bc8883  locales/pl_PL
-7e40f55558927e1754744a5b705d5089  locales/pt_BR
-3ed6e5080462030ceb847ef241ee1352  locales/pt_PT
-33324d57567944135cadec56b4b1e77d  locales/ro_RO
-b4e8ac2dea2a3c736befb854c4edf45b  locales/ru_RU
-2be354a9d753a14159067f4e98437bb4  locales/ru_UA
-e138da41f8586445c277a761ca2fc7df  locales/sk_SK
-18408da663b6c4498c06d844ef14ae1b  locales/sl_SI
-d1aefa7d8bb6354743b0e386fcbb0652  locales/sr_YU
-2c1087e408f00e70320ca5e4efd80617  locales/sv_FI
-c4e59d821962d68097175242220427ea  locales/sv_SE
-669ade381cccccd0a3fac10bec9a2917  locales/th_TH
-f9ac3ea566e659cdcbc6dde43d7655fd  locales/tr_TR
-d10211b77b9c19fd04080e9df5b03bf5  locales/uk_UA
-d3d797491b67d7207ea1bf00204515d2  locales/zh_CN
-0e7fdb8285e9ca6113454ce247d3863c  charmaps/ANSI_X3.110-1983
-a586da90c49cd6875b8238a8878a7591  charmaps/ANSI_X3.4-1968
-5f18526bbba0326cf6af1861bcac141f  charmaps/ASMO_449
-a9f7051d90b3cd83bc0ad8bd7bae0b02  charmaps/BALTIC
-8e1e15a295bd169737f22dc53f08ab0b  charmaps/BS_4730
-93f30925bb39086d37e66e4d185ec84b  charmaps/BS_VIEWDATA
-5c1b91f005c3c2c0ccc73aaf707fc998  charmaps/CP1125
-a907a00ba93ea9f46154cf3a80818e70  charmaps/CP1250
-2a92a00cd906127843d519aa937bf0c9  charmaps/CP1251
-10e2330202c5b24766d4d04ec46a56c1  charmaps/CP1252
-e26ab9843d95b3d200d94cf76981d09d  charmaps/CP1253
-c31e2cbcee34f148786ca38c0a5570d2  charmaps/CP1254
-0c8a06d02ed67967129d6f7496d24b15  charmaps/CP1255
-f861218a23625c411f6e736e9ae7a6fa  charmaps/CP1256
-bb9b52bfe2d51434c2d02755153ad215  charmaps/CP1257
-a6497ae372e62cc7b92c3cfd33efd5a0  charmaps/CP1258
-de28dafcea25942068f985ed626f2dc8  charmaps/CSA_Z243.4-1985-1
-052ef075f60624efa6e802e91410b47e  charmaps/CSA_Z243.4-1985-2
-06e1bab71c5bb639445d86075cf7cef4  charmaps/CSA_Z243.4-1985-GR
-bfcceac1c7d2315b982cdf02e2870c39  charmaps/CSN_369103
-18eaa1c7aae3a6cb1609564c2df17c97  charmaps/CWI
-e3940ad883b5d632284be02e9e5fe0e6  charmaps/DEC-MCS
-5b2f992418cd91c2fd8f4404798d7ec3  charmaps/DIN_66003
-49813249f796b430323b39f5ac214c52  charmaps/DS_2089
-c4d27a4c8b3d1dab456c18e19b9cb581  charmaps/EBCDIC-AT-DE
-b6ee12056031057046fe9ac512f37eeb  charmaps/EBCDIC-AT-DE-A
-f80c64718816f3bb3ed6d19f2d7b80dd  charmaps/EBCDIC-CA-FR
-6e87df8f2e888deaa9f3470d57f59a15  charmaps/EBCDIC-DK-NO
-5732dfa3c6c28fff5da1471b0e56a05c  charmaps/EBCDIC-DK-NO-A
-f259d26266edee351f070320a014e7eb  charmaps/EBCDIC-ES
-12232db40f6339d548f8ed37eb6463f9  charmaps/EBCDIC-ES-A
-0408b369c135709d2994fff8a1f7dac4  charmaps/EBCDIC-ES-S
-1a3e377a76556eb17de9a269933943b1  charmaps/EBCDIC-FI-SE
-759dc0c6c3d6354fa61c1b04b59d709c  charmaps/EBCDIC-FI-SE-A
-c98d95a6890fc7e5a8819e16d8f808e7  charmaps/EBCDIC-FR
-e3c41b832d7645e9190a86ddde244011  charmaps/EBCDIC-IS-FRISS
-05582f7a3153f505859710b0829faa12  charmaps/EBCDIC-IT
-24dd8e158b408851dffaeed975ea57e0  charmaps/EBCDIC-PT
-8e2215ef304cf77b7fdaceb76bfd27fd  charmaps/EBCDIC-UK
-b2f02a121a48a3ac110bd6ee5263fd9b  charmaps/EBCDIC-US
-ac706419ebd1e3a649fb681312ac8ce5  charmaps/ECMA-CYRILLIC
-7dddc0b7992cd333434b8a02959c50a0  charmaps/ES
-4c0b61e790c2d2470516111e1d2aa319  charmaps/ES2
-d0eb42459f3bfa8a576579d74f10f3fd  charmaps/EUC-JP
-729b91a542fbf5f30a2e16258f21ceaf  charmaps/EUC-KR
-20bb289e25334344a0662470db3e9a8c  charmaps/GB2312
-a135f498373b1305167f1a6c699949a2  charmaps/GB_1988-80
-1e1e94ad8d1c12e9f10f7d6e1d870a68  charmaps/GOST_19768-74
-69a174dec8822dedba8b8aad36ba44df  charmaps/GREEK-CCITT
-7963e4f78b3e7da2904db267b51ffdad  charmaps/GREEK7
-98867deff09f3b96d80967768cef2860  charmaps/GREEK7-OLD
-a20e92ee764a1021470f63ddf2b4ac26  charmaps/HP-ROMAN8
-d2bb7b6934925cd3c48339932683d738  charmaps/IBM037
-75372e1aa9e87d8f21029beea062ebfa  charmaps/IBM038
-00135b9fe204f67ffb3ca606c6e90e65  charmaps/IBM1004
-06a3321eb8e21e60ef061e547af5004d  charmaps/IBM1026
-d6db928eeb35033d1ab07a61874afcc8  charmaps/IBM1047
-612e20c98d575f4926417557d59653a4  charmaps/IBM256
-5f610ea0f1199d48a60b735815e441ac  charmaps/IBM273
-1918b8b2947201cf1abd09fde2a270f5  charmaps/IBM274
-f0ba496e0bb3928385bf8746e362aaea  charmaps/IBM275
-d5e68a6b5e6e4a5673bd488e4754cbb1  charmaps/IBM277
-70c7fc622ca4d613c0d8bd160517e7b6  charmaps/IBM278
-8d75b9799cc7857f31779b68cd326deb  charmaps/IBM280
-80d9bb633ddf8118a16a3c13c02e2775  charmaps/IBM281
-ace7a1f04f6ea723fc23de14ee07a686  charmaps/IBM284
-aa42a6d193da334341f83f5783e88346  charmaps/IBM285
-7d71d7200be8bfbc3b132813a1fa79de  charmaps/IBM290
-04e570ddbb122b2fc06503d3f74573cb  charmaps/IBM297
-6f33fae170d1d8f2e8805598a5d9faec  charmaps/IBM420
-8b156f73e652c2d61b7ccd6a87f9a8ed  charmaps/IBM423
-66042b458fb9ab18f17b10c8f28f6e36  charmaps/IBM424
-b7dbbe944c14f37b99c88589ce23f4f6  charmaps/IBM437
-fbfeade12b636f330ae301c8c4889066  charmaps/IBM500
-14624459eeab649848449d0e3f83acc1  charmaps/IBM850
-c758668ec74757819130a3fe0dc0c360  charmaps/IBM851
-c1788b0d0c362ad15d23ebe5aaeb035c  charmaps/IBM852
-381e89c44f3563c165cad5649818f7e2  charmaps/IBM855
-9b8ee5f11d59b7ceb3714eb1448d9793  charmaps/IBM857
-32c16fd20b3fb11b92bb12e14de90825  charmaps/IBM860
-bc2e6b784e155a42c3329cb7b23cd653  charmaps/IBM861
-759ef63f459acb00c54fafed06b52fa3  charmaps/IBM862
-d663303a0f58dab4a6eb28a66a64b94e  charmaps/IBM863
-754b798ba5e75bc05fd2171f425261ed  charmaps/IBM864
-b6a61bfb10e0e97b6e6acfa85b974e54  charmaps/IBM865
-a97d1ae5b7e1042e9fd64b25ed471f40  charmaps/IBM866
+de03b81861a80e9fef5c1133360843bb  charmaps/ANSI_X3.110-1983
+9cdbf98f2ef33457957ebcaf6a1f8cf4  charmaps/ANSI_X3.4-1968
+951fd6220705423baf0b8a5a102e3352  charmaps/ARMSCII-8
+c2316daf6629c132ba4e6fdadb0e6503  charmaps/ASMO_449
+33f96ca46035ae74ef4b231c5e42acd8  charmaps/BIG5
+56da6c91734e160c7931d268c37438fc  charmaps/BIG5-HKSCS
+798dd6b57c3d0c122211aab2fab5736e  charmaps/BS_4730
+09f7a9187907a3f3fcfaae8906b01579  charmaps/BS_VIEWDATA
+11013c76150d062df1a5fe899a614cf0  charmaps/CP10007
+284549ebab7699ddde23d273641751b9  charmaps/CP1125
+592572e42aa242f2f30f227bccc5afb0  charmaps/CP1250
+ad9dd6c3f4eaa95fe949fae0a5c1745d  charmaps/CP1251
+b24132834355a7d7841a82aed7a83cda  charmaps/CP1252
+2f2053bf482cdac273277a292653bdf6  charmaps/CP1253
+d859cd8d447aedcdf7c09c299a6469bf  charmaps/CP1254
+c8ed5f1b2cfc26a3370697450be33943  charmaps/CP1255
+9b8e16bde8b9449f8f72bfa7fc7eb772  charmaps/CP1256
+c2d246cb44be36163085e5c6f04a31bc  charmaps/CP1257
+1cdd6799992c1d9e238e78bb386876fe  charmaps/CP1258
+a4ca07fac87e0c813e77f0cf95daecdb  charmaps/CP737
+039969caf1003a6e91cb039df41c2fa0  charmaps/CP775
+d512d19a02da69dafd98ab0f7a27d0df  charmaps/CP949
+2467367588810aa21ea1010d09b34d6b  charmaps/CSA_Z243.4-1985-1
+02d1072b7e20d5d0d70dede9f51b9a9d  charmaps/CSA_Z243.4-1985-2
+f2154153876719004abd05bd3a49c310  charmaps/CSA_Z243.4-1985-GR
+f12d99e29832227d3d659446c3bd1efe  charmaps/CSN_369103
+4745e4c913944bb3a842eda1ab84f463  charmaps/CWI
+02795f59b18fd5e0a38a75983ee5f9b1  charmaps/DEC-MCS
+81954d04e26499ce6ebe34674ccb71e1  charmaps/DIN_66003
+8cdcc842a730c5febcda9074c5a9e20f  charmaps/DS_2089
+2d23e4b626f5cfa5d40c344d9cdef29a  charmaps/EBCDIC-AT-DE
+a3afba3b3742c929cf8228061eff9bce  charmaps/EBCDIC-AT-DE-A
+51747fc3a0be01a8864c4ac463e47134  charmaps/EBCDIC-CA-FR
+da9f0a660776bf0a8d787a5512efa30f  charmaps/EBCDIC-DK-NO
+4ab022770a9e8e685c9696fd2bb3e5d6  charmaps/EBCDIC-DK-NO-A
+554a94a84c21d7dfe35d2378967901ab  charmaps/EBCDIC-ES
+75508c60b07ada5ed9d5511422fdee36  charmaps/EBCDIC-ES-A
+071618eb679d75c272e6f252fc34ef6f  charmaps/EBCDIC-ES-S
+eeb2eb499bc7d7e023a49545258cd4c8  charmaps/EBCDIC-FI-SE
+4510fd482c6bf286ab144d2023896992  charmaps/EBCDIC-FI-SE-A
+31c70716871e13e55e3c4d2e409c1f6a  charmaps/EBCDIC-FR
+0ccf405badf73924e43f7381015c5e7f  charmaps/EBCDIC-IS-FRISS
+e7e3235e426d5484ff681e1e21f76de7  charmaps/EBCDIC-IT
+7ea01bd248ab4f9cf149d5462084a1e9  charmaps/EBCDIC-PT
+06f67e85e3edfaaba2844a11227d4b8e  charmaps/EBCDIC-UK
+ab8146d876f7cea2fd79202141a56bf0  charmaps/EBCDIC-US
+4d59ebf5245387e6e48bc28e8ff3f683  charmaps/ECMA-CYRILLIC
+c8aa077828897c01f539f6728867827e  charmaps/ES
+56d96f732da26b9c9687cade2559414e  charmaps/ES2
+ca3364fd7f65248864973b25b951906c  charmaps/EUC-JISX0213
+f33e30fe7a2b9e410a402ba1b8f2d6ab  charmaps/EUC-JP
+00f24f0b8b34ec055a8bddf01f059329  charmaps/EUC-JP-MS
+fa30ad5600f0c999abb104f9a64cdf40  charmaps/EUC-KR
+838393203b84e028f76622920458a526  charmaps/EUC-TW
+f5856ca72c25cbbab09b25bd62077df7  charmaps/GB18030
+3ac7955343a281d44278036e69045bc4  charmaps/GB_1988-80
+f49f85a7390e23e7bf9af220b87e98fc  charmaps/GB2312
+0469fc4833a4c4d78d9a2429ab7af816  charmaps/GBK
+731aa4c53f5f8a083ab361e6f4f30ad1  charmaps/GEORGIAN-ACADEMY
+145fac3915354997f3ddaa3d8250a229  charmaps/GEORGIAN-PS
+a78b5d94e07ed0290118ed0dc174e43c  charmaps/GOST_19768-74
+830992d6e3db2d47c1704b933a823e95  charmaps/GREEK7
+6347508e7de055cbd671b13268aeac23  charmaps/GREEK7-OLD
+3f1bc260f3aa97f5e6cce8f833692e6f  charmaps/GREEK-CCITT
+c992fd7297c822d5f8bd25684cbe68b6  charmaps/HP-ROMAN8
+795478f3edc5de4e4ecc9517d9c10258  charmaps/IBM037
+04c69d8a16cda189f3b6ec82e82c85bf  charmaps/IBM038
+fcb4591ac80ea22a2c03ce8b4ba6e916  charmaps/IBM1004
+7397fcf22867b7ec839c92c9f6309708  charmaps/IBM1026
+bb438d8c996392cff5ee96001ab8d5ba  charmaps/IBM1047
+53d2b26c2688e9cf5991a7c678cc5400  charmaps/IBM1124
+8fd05661e39ba8e2aefe753b44fcb47a  charmaps/IBM1129
+f7c54fdfaf67cc97ac2b7db70d042e7a  charmaps/IBM1132
+1ec982a6a1e44b504190e0c20ca383b6  charmaps/IBM1133
+cae180a3a7a98e7ca267fd0593e8d4d2  charmaps/IBM1160
+7ff59e7d51c14135ee55cb5b670b7ec9  charmaps/IBM1161
+0d897fe64ee1177bb3efa2e091698a67  charmaps/IBM1162
+0b8a87c4acaeb8b80aa53b02aa74ace7  charmaps/IBM1163
+1bb671b575ce2d5903730a3095a1e9f9  charmaps/IBM1164
+67a6575425a0cd2b1eee477ba3825a79  charmaps/IBM256
+7f4bf7665c80ebb374d340ff9dc6c2d4  charmaps/IBM273
+e833c32c6bc4532f339b073dec83c748  charmaps/IBM274
+b3f81aa5f3eafc70f8681272dfcf3278  charmaps/IBM275
+6d844171463960c44a4389f8733dece1  charmaps/IBM277
+7ab572bda6426937997bc0e793174333  charmaps/IBM278
+b50429e0d3f1d35cd96fbc28b84153a8  charmaps/IBM280
+f8290cb02a3abfedb892d0c8f3234c99  charmaps/IBM281
+455810c2183613b5802711787a895927  charmaps/IBM284
+e6ce68850339e3e7137b26cbaad47a87  charmaps/IBM285
+0fcfa6f27b21b49c5554079f9b5601e3  charmaps/IBM290
+478b0e853b8582b32163c3b923a08217  charmaps/IBM297
+25f4bb6afd2f89e4e765f4be2b111d28  charmaps/IBM420
+4e50f102de50eff1045bf9da4168d8fb  charmaps/IBM423
+42332e3613dd030d4ba571cf4a92ca45  charmaps/IBM424
+1fbc46c1d1191bc52b222c306b81c73f  charmaps/IBM437
+cd7c5a1ef8d643113e3b4793f3122c8a  charmaps/IBM500
+2bd16747d13d214d657ea66342306ddc  charmaps/IBM850
+1cdaf2970b6e2ec03ffefdd22a9d447f  charmaps/IBM851
+5591da3bdf04653cc68f31b4c2ba3df7  charmaps/IBM852
+e88d449343c4a6f16fd437a5868b3fb0  charmaps/IBM855
+94960aeda652856c46774a9e03cbf808  charmaps/IBM856
+c3256856786484d090c1e938329807bc  charmaps/IBM857
+898810c91e5567f2aed5edc47946dc23  charmaps/IBM860
+343745daadaf451e84b71ca9e58048fb  charmaps/IBM861
+52c70d49960d46164e4e49acc47826e3  charmaps/IBM862
+6f04d0e070db520338f0d4a68b24cbb3  charmaps/IBM863
+df59b4d4de6059a4064ce31ba931cc8d  charmaps/IBM864
+e2edcee690cf123113ed191e466b47a6  charmaps/IBM865
+2e21a8811f9d218ebdb6b3744eef04d3  charmaps/IBM866
 ed3787887442af7cc8e03cb440bd22e3  charmaps/IBM866NAV
-3c687466bbe8924d247de33aefc3b39c  charmaps/IBM868
-25a012edcc641079a92e48b7daaefb6c  charmaps/IBM869
-f06c133a6a95e36ed4bfd25def526769  charmaps/IBM870
-3484dd8f95b187e5875dc73278485dd5  charmaps/IBM871
-549df48822f4d8c00e36ecd8ac12dad2  charmaps/IBM874
-2ac060b9d24b0627a69edaf9c8f9b20f  charmaps/IBM875
-526e51ad0ce04ad9700b6444e83d4331  charmaps/IBM880
-d594cb73e9deddfbacf403223a39415e  charmaps/IBM891
-13fd16925cebadb6a90fd4739ab128f8  charmaps/IBM903
-38bc42b9ccbe74fd83c17fe7035d378f  charmaps/IBM904
-dafb03bc5ff222d549f49526aad39f14  charmaps/IBM905
-2f05e3ef0b85315493c1367db075f89f  charmaps/IBM918
-b620d1383e848c22e993d83c929d4e2c  charmaps/IEC_P27-1
-9cc72469de529887ae06cc49eba811b9  charmaps/INIS
-698eb5f931a6378ec100988b2e7080f8  charmaps/INIS-8
-3355267d5b626e15335bc3d9e9ceecec  charmaps/INIS-CYRILLIC
-82997b03c60b1c75db7c684369afa784  charmaps/INVARIANT
-f73101f88ab99ae54aab390a39e37bd2  charmaps/ISIRI-3342
-00278485a2b71756393bdaff1d475f09  charmaps/ISO-8859-1
-97daa5d07db924785235076958fd0cf4  charmaps/ISO-8859-10
-65b513f374f59ab6c3065f6cabac073a  charmaps/ISO-8859-13
-7a53d1853f07c116e8ceaac4b42c10f4  charmaps/ISO-8859-14
-291de15c8b16692c49cd7cbacf88c47a  charmaps/ISO-8859-15
-b5aeeb41514765d0c6d59e209e34b489  charmaps/ISO-8859-16
-eb0956b77262e50119b476b8a7266ee7  charmaps/ISO-8859-2
-5f4b7f0d6d3123a5928f83d13b15b8ef  charmaps/ISO-8859-3
-43a6fbbc2c730598a4c9924a4caf1a5a  charmaps/ISO-8859-4
-cf08296dd3226cb37c14faf45e7bf7e0  charmaps/ISO-8859-5
-2aa504f779ecaa9b1ed1bd2095f9b690  charmaps/ISO-8859-6
-7aaf7cf69626b0db87314ec8b6f9a2c9  charmaps/ISO-8859-7
-e8820ebb915620714fe103155cd5429c  charmaps/ISO-8859-8
-172863abae066ff434fdde13bfcbdf74  charmaps/ISO-8859-9
-7f859ae24e0921d1ed24e9415865c20f  charmaps/ISO-IR-197
-35a007ff10462707262fddeaaed09a79  charmaps/ISO-IR-90
-29e4042157fbde4ecf3e36d82c976c62  charmaps/ISO_10367-BOX
+4f28c084eabcfe12bde019374129a161  charmaps/IBM868
+6ac7b3009a8bb910ceaecf75911275a6  charmaps/IBM869
+e1379d157c60f93c6df7fbdc2d565c8f  charmaps/IBM870
+c8d9b36f2e44f24f58e5f081db30ff63  charmaps/IBM871
+b6e1d473e843432345c2c0f25284a153  charmaps/IBM874
+3b16722f23d9915bc90a85e8061e9d34  charmaps/IBM875
+c90729a71c9431cbb979a57a697cf83f  charmaps/IBM880
+bf9dfd44b19373f7156ed4a082cd2cb3  charmaps/IBM891
+9b408f55af89f8aba5df1e13a676db97  charmaps/IBM903
+70fd65da56a106659a6febcd1fb38643  charmaps/IBM904
+53083d727fa2d49438b8f1fbab617448  charmaps/IBM905
+121bfefb46142b2ddd6e1560aefbd964  charmaps/IBM918
+6ef218728e9ff68b69ab256ba76f5417  charmaps/IBM922
+2a171f0031a60aa49418428df4a7b2dd  charmaps/IEC_P27-1
+856d2be4bb0573c19887cbc420580dd8  charmaps/INIS
+a4275626c05a72c6e9305fefd8015863  charmaps/INIS-8
+7b69918d8cd14725a1ccc965808dd39e  charmaps/INIS-CYRILLIC
+56896a7ea4bdd08c817be2062e7d16f5  charmaps/INVARIANT
+1f66bdc760ca0a90ec8dd75d9c104d7d  charmaps/ISIRI-3342
+6601310ca85ba289b5ce2e1c68df8c03  charmaps/ISO_10367-BOX
 a2fae2a1c29554eaa27fc44b6f2448b7  charmaps/ISO_10646
-2eb96001d9520c322ec37b9a9893431b  charmaps/ISO_2033-1983
-cdd74ad87b62bebded4d4f09e4b70d95  charmaps/ISO_5427
-9a0245eaeaa3542e4792462dc4167a3b  charmaps/ISO_5427-EXT
-99fbd7b049392e2eeec98725b69d2dab  charmaps/ISO_5428
-a5ab527ece9076cd01834ef48c8106e4  charmaps/ISO_646.BASIC
-fea79ae8fd70fd216df26613ad5d293f  charmaps/ISO_646.IRV
-55b56e442762700cf94e449c7325a5ee  charmaps/ISO_6937
-87ffdcd2cc8b976bfd692e810e45a428  charmaps/ISO_6937-2-25
-4a587336167d35c53a053fb8f1ffdc74  charmaps/ISO_6937-2-ADD
+f176d328d9a123a02f8736cb77fcfd23  charmaps/ISO_2033-1983
+63d3483ec057bbe25aeab1e12fbd8304  charmaps/ISO_5427
+3e4677b9ffb7bafe85956568d6fce732  charmaps/ISO_5427-EXT
+14f0ee818d06e319a2b24916403250c5  charmaps/ISO_5428
+58298af322e5edc30ce9aa764b095419  charmaps/ISO_646.BASIC
+9931d68b8b4d1d0db5b81d507ce4565e  charmaps/ISO_646.IRV
+b738e3b159b9263930b92f19b101e1db  charmaps/ISO_6937
+3019d94851ff22768f89ceb055a3470b  charmaps/ISO_6937-2-25
+9a3258e87d321373a376839f5ce33bd0  charmaps/ISO_6937-2-ADD
+f7e1941df5107a4da74f0f800eb15e35  charmaps/ISO-8859-1
+af94e14d910651594b816af93bf9475a  charmaps/ISO-8859-10
+e16960f25fe12d23dc8b2a44e0440baa  charmaps/ISO-8859-11
+e91281017b3d6eab9c2e3e022c28b5b5  charmaps/ISO-8859-13
+1d5e0b232c7c00485a8dd1c5ae036723  charmaps/ISO-8859-14
+f7cf2b0c55b5bb7a34faeca71a08759e  charmaps/ISO-8859-15
+d4a91a4bc27e1c681c4c0d7923775801  charmaps/ISO-8859-16
 8106c88f663bad113164494c1c11118d  charmaps/ISO_8859-1,GL
-d745d787e036ed217810e9af07e05962  charmaps/ISO_8859-SUPP
-ce480b4ebe5d70f6eb769ba74b770a6b  charmaps/IT
+eaee6554170275d650e77034b44a1f86  charmaps/ISO-8859-2
+aad5c3f7f6e0917e82a544782b6fce67  charmaps/ISO-8859-3
+ec512181fb8e766c544d8de815126336  charmaps/ISO-8859-4
+38c1fb70059ee456ed1332107504b00c  charmaps/ISO-8859-5
+a8b1087b3179f4318c63bb673b4c7819  charmaps/ISO-8859-6
+3d235e1f1680f23719c98893adf025c9  charmaps/ISO-8859-7
+30f7840f335a536db8d44df7dcf5a048  charmaps/ISO-8859-8
+c920792113cc26d6df988ba81defa022  charmaps/ISO-8859-9
+e784440dbd319ccec8860cbc675f15da  charmaps/ISO_8859-SUPP
+ad27186058e7fc2f479d5917ffc33d83  charmaps/ISO-IR-197
+ee62f653713d184ab9b5645c13067aa9  charmaps/ISO-IR-209
+309b5745e52f0c6861a40dce0b20e1af  charmaps/ISO-IR-90
+069dbeda500ef8539977fdeaace0fb8d  charmaps/IT
 0e8eeddeaf18ff2ea878694a2739463f  charmaps/JIS_C6220-1969-JP
-889594dcd1e032e70e44b286616fc12d  charmaps/JIS_C6220-1969-RO
+126abc61c9a99e94208bcfa038a4d8ef  charmaps/JIS_C6220-1969-RO
 1b0ed357f33c83769d60f871c9ca5f9a  charmaps/JIS_C6229-1984-A
-c3fedbfd1213028ec7a9072dc3efe2fe  charmaps/JIS_C6229-1984-B
+2fcf260bc119cf342134a8fd85a1e49a  charmaps/JIS_C6229-1984-B
 127a7f4f39cb025219a5415dadc6601a  charmaps/JIS_C6229-1984-B-ADD
 f97432b25a4838f338fb97632d5a1e68  charmaps/JIS_C6229-1984-HAND
 eeb2032e4e26972c0ea298b4add26f1a  charmaps/JIS_C6229-1984-HAND-ADD
 f6635f62933ca73d099f7f0deabf98e2  charmaps/JIS_C6229-1984-KANA
-1eacfba9e5ea66fcba5e899fb1e0d5b0  charmaps/JIS_X0201
-58db9089f3a64d68e4d8ccae52477658  charmaps/JUS_I.B1.002
-0ef24ee22fe2db7c269f391fcf318a25  charmaps/JUS_I.B1.003-MAC
-d9f90201c1cf81ea3e1d168720bffc83  charmaps/JUS_I.B1.003-SERB
-67d61886ea42a4f7860ac7c4e02788d3  charmaps/KOI-8
-7762b0e55445ff057d6d12b9d4b58858  charmaps/KOI8-R
-7e4c814f2e2237f50a8e9cb16cf972af  charmaps/KOI8-U
-740a29c47cc9a64027b11dfa25c40db0  charmaps/KSC5636
-58cd9bffdffb8acea02431bc05e1cffb  charmaps/KSX1001
-c4a4025dccd0b37119b9382d9f741736  charmaps/LATIN-GREEK
-5fb2c89721a7ac283154db22d6d2dce3  charmaps/LATIN-GREEK-1
-6680017c5cda54ba6b7191e9bbbbd521  charmaps/MAC-IS
-b4dd3b580ed4c12a00db6a92bfe704a4  charmaps/MAC-UK
-4d605d9319f35bca76db2f3adc37b186  charmaps/MACINTOSH
-447109f8043eed245396b8dfb0c5b024  charmaps/MSZ_7795.3
-1d20c917abdd4beeeba248c57e315cfa  charmaps/NATS-DANO
+813d074d5cd729ac82c12abec04ef408  charmaps/JIS_X0201
+52c4609d8314f19801e57d00e951fd34  charmaps/JOHAB
+8542d92fd55e8cf99af4b68227b25c3c  charmaps/JUS_I.B1.002
+b9a4e70db506f9944225fe5f9ed34597  charmaps/JUS_I.B1.003-MAC
+cc533ff46e14e2b8a03d56cc8f981a14  charmaps/JUS_I.B1.003-SERB
+dabd840e798145212d505a5e2c7c546a  charmaps/KOI-8
+7010dc2605d2a8cc38503ae59a50329f  charmaps/KOI8-R
+a986f5cae08665f176673ae7ab9149d6  charmaps/KOI8-T
+d24b8e4b73610606debbf3cd15175029  charmaps/KOI8-U
+e5f7b48895785f3c0a30c2b65e3b905e  charmaps/KSC5636
+b4a5adcc8e08dfe44c69a2e85abc69da  charmaps/LATIN-GREEK
+b87ff4cbc01d181c973c0ee4123e39e8  charmaps/LATIN-GREEK-1
+315486ff388e4195d1a9c4ea783bd9dd  charmaps/MAC-CYRILLIC
+0564b198c18a53106aa4ec03203d01e6  charmaps/MACINTOSH
+ebccfbf3bc244c3c40695d8ee457a151  charmaps/MAC-IS
+2bf87a60b752d9e78a9bdc1e1e017421  charmaps/MAC-SAMI
+fe01d972c30c0eb99d68c12e8206828e  charmaps/MAC-UK
+0ec89aa18809cce916665c7170eafff3  charmaps/MSZ_7795.3
+b88c7e31d530dcfe1088458bc2cd63e6  charmaps/NATS-DANO
 b3bbdc3f120f8953a4f6aa642427fe15  charmaps/NATS-DANO-ADD
-6ecc9d568a7816ec1c36e671397bc62e  charmaps/NATS-SEFI
+d513a9143cb5d41c140840f990297ad8  charmaps/NATS-SEFI
 10d8bd8b95e840b9158f429ad5b9365a  charmaps/NATS-SEFI-ADD
-0ecf1f5d1f3013682c36740c70a401b7  charmaps/NC_NC00-10
-3d0fe48348b6bc87a8b51bc14e7095f1  charmaps/NEXTSTEP
-27d205fe2bdb212ff487149378a8fb13  charmaps/NF_Z_62-010
-3b41e78b72c9e6ae388372250a4c2aa1  charmaps/NF_Z_62-010_1973
-f337a4af933e8cf76ce0cbe0c3220385  charmaps/NS_4551-1
-249ccbf125a7f3ba65f981c713315518  charmaps/NS_4551-2
-c31d1e195aa38a135db258ffe9819686  charmaps/PT
-15be55c497423c88f935bc5cb0b8a8a3  charmaps/PT2
-4350bd8c8fe1e5af0c7ce81ca1cede69  charmaps/SAMI
-a32a61d30e9a82987d46c6519ba4fa1b  charmaps/SAMI-WS2
-0749422e24fc635059683aab8e5cec7c  charmaps/SEN_850200_B
-ba143c0073ddafb215cb977c352c51a0  charmaps/SEN_850200_C
-9785b30026d616bbda77eaf8e6153787  charmaps/T.101-G2
-1f46111983da2e6089c96fe82dac584a  charmaps/T.61-7BIT
-c9cddee81fc56afc565103f0595512d8  charmaps/T.61-8BIT
-f326985c547ec318a5f898b6515b575e  charmaps/TIS-620
-866ff501227eb0be777ab0311f9caadf  charmaps/UTF8
-ef3bf5ae895d02eaef728a6cad19f389  charmaps/VIDEOTEX-SUPPL
-d8b499f15cb60ae79eb30a5fddc46826  repertoiremaps/charids.894
-471cbc9b5fc329e2de0439c53bf15632  repertoiremaps/mnemonic.ds
-fb66d6b898b399e9a3ba9dc37d77e167  repertoiremaps/mnemonic.ja
+5f27e26b7da7764626373fe2a1dcba13  charmaps/NC_NC00-10
+a73be75e967e651a46dda5161259a074  charmaps/NEXTSTEP
+7c0d92699fef4f7cd04b8227656ac007  charmaps/NF_Z_62-010
+aaa5948bb876595c0caa07a5321c06fa  charmaps/NF_Z_62-010_1973
+b26ac54d4b66d418284362f9d2bfaf34  charmaps/NS_4551-1
+ca8617473b167f0ddd74a8d4c5eeafab  charmaps/NS_4551-2
+f3e6dfcd92af17588d92bb74a00cedc5  charmaps/PT
+3ca88f7f2ceb8e0a34f99faa2fc08b9d  charmaps/PT2
+8b6072951526b7ff9d5fbf87b12d21c0  charmaps/SAMI
+fa0a7a36c57f096caefef7e279406379  charmaps/SAMI-WS2
+fc41ad3d839b73901e570a03d444b151  charmaps/SEN_850200_B
+655d147aa9930cc0f4a4f65d85baa28f  charmaps/SEN_850200_C
+2d3fed5eab85625db611d698626b869b  charmaps/SHIFT_JIS
+d48e132620d65ad9c036f78c81adfde8  charmaps/SHIFT_JISX0213
+e04ceed36f922c7cb08cc0d9ec1214e1  charmaps/T.101-G2
+994af9e3143e52f81a35a3bdbfc09fdd  charmaps/T.61-7BIT
+69d66b016c2402128fe490ae7720ecf1  charmaps/T.61-8BIT
+05ed91b9ffe615448ea35dc783d14f50  charmaps/TCVN5712-1
+f42dab98605fd2aa47a6013ee9c187dc  charmaps/TIS-620
+e848a5839dffb64ce93f1c7b1f41d939  charmaps/TSCII
+4efdcd39c789eba06c9a1e734cf0fa8c  charmaps/UTF-8
+03e4b6c635f3a7e17be55196da899c2e  charmaps/VIDEOTEX-SUPPL
+7eae0c62a98fd1da82b0553675cf99d0  charmaps/VISCII
+b04e38295a41a71d3fab0aaaf9edeba2  charmaps/WINDOWS-31J
+9ff9ac74474b20c587ba6f77a387a900  locales/aa_DJ
+8a2e947b19fcae224347c7354f05dd03  locales/aa_ER
+6bbd61e487754a53b60b964daa0efde5  locales/aa_ER@saaho
+ba23148ad4dd3a20e9f8678cd3a7318d  locales/aa_ET
+457ee847dd7a116f2f32dc42c4d2e618  locales/af_ZA
+112ef7390f725bbf458148bb1579f0f3  locales/am_ET
+97483db07a72333f6220eb1068bb9774  locales/an_ES
+fec3397642d45c5208fa70d956172626  locales/ar_AE
+64cd23d98b1cb5430d8170ea8ae7cd01  locales/ar_BH
+bec775783856166f021ba99784a3e45d  locales/ar_DZ
+7843c84c076edc1b40aa299742e2db62  locales/ar_EG
+36ca1f53ee3459dc8b7625147d6dc9c1  locales/ar_IN
+7f1418fb9cb8fca35dc39f4956e2c542  locales/ar_IQ
+3de70d3d4e2734885cc037b931dc20df  locales/ar_JO
+5675e747cde2c3b5fcb9fb137b93e57b  locales/ar_KW
+f2f4c3c8d936c6b81665f32b7855466c  locales/ar_LB
+ed14bac539f84e457679acd2d30f946f  locales/ar_LY
+b8a696a52bae6257fa9568f184ed08d0  locales/ar_MA
+cfb021ac947cc63c38cfad98030b4511  locales/ar_OM
+4c453c63b94b75dcef3afb394b7e09d9  locales/ar_QA
+4a6ccc5c573e36016f9606ca2ec998e2  locales/ar_SA
+d97cc1e38ef6e864ace03970e9f3e5d1  locales/ar_SD
+1c6f4fdfcf1646d19d929c5b888cdc74  locales/ar_SY
+5bf7bc4fec4bb6cca16fdcfb333e7fa7  locales/ar_TN
+8876594529e9dad27cde50df1314b638  locales/ar_YE
+4950332376ac7f49bde921607bf8b3b5  locales/az_AZ
+a7b1e75e62bd39e8c8201f22eee8d09c  locales/be_BY
+4ab284f0079d9b20c3b3aa86e0927077  locales/bg_BG
+58a08f84cc830d1c980d02934b9ef1db  locales/bn_BD
+0d0f6402010da4cb1bde6088e0a3163e  locales/bn_IN
+f29ed6d548c24c2915c5739860b22b70  locales/br_FR
+08a8c7b978907ed61b3c9619274b322a  locales/br_FR@euro
+70c92650a64296d270824bd348377cc2  locales/bs_BA
+ff62b390c9f7bdb928842cd0cd505b6d  locales/byn_ER
+62b50002731b4242088c94428d8b1695  locales/ca_ES
+3b6ff441ee0b875d04892afc4b2bad63  locales/ca_ES@euro
+6dc1d5ffa23e21feadcf81366d972907  locales/cs_CZ
+a738a1d84e58ced722161a0c63109b21  locales/cy_GB
+999c6345303d86fdcac50bfeedd486d7  locales/da_DK
+d2725690a2288b9a25eae4f591ab337b  locales/de_AT
+a1990ce5780d1218cf6f74450900903a  locales/de_AT@euro
+4e9abd22096b32897075bc0e2b7784c6  locales/de_BE
+f69f03f7e1949a9fc3821ed4895dce4a  locales/de_BE@euro
+493b4c54ac3a8ef6adbec7927fa9a2e3  locales/de_CH
+b27aaab25e031e4bc2e23981842fbb23  locales/de_DE
+fbe2dd1a46614a618b49218d1a3ccaf3  locales/de_DE@euro
+7302e7d47b28997842adac2c0f33e696  locales/de_LU
+bfcf25ca5a25fc6c306597338a4b2ed3  locales/de_LU@euro
+6bb5552e181f4923304b009a1e918c5d  locales/el_GR
+2d5da0c3b8eade0a394c65b2c416c728  locales/el_GR@euro
+69cae8537c340f9b715657b56c2fdc8e  locales/en_AU
+d43afbe5ba7e63d53d91d43ba81f1186  locales/en_BW
+9342fe09a131f1132b28e7e5fe14f9de  locales/en_CA
+a1207363c4095e0b673bcc1b49e83aa5  locales/en_DK
+a0c4f8032f09bbbc642cb72c3fb24b23  locales/en_GB
+c339d79ffb50a5a4f5cbc1b0c3440805  locales/en_HK
+24c117ee23313635ac5992a3d23f3583  locales/en_IE
+c643822f5581e98602da2226b1c9c9bb  locales/en_IE@euro
+2fbd7f240fdb5df2ef8930a226c65b4f  locales/en_IN
+155f110e81b60919aafc4c19cca69844  locales/en_NZ
+26705f63153dc885cd3ed689950b732a  locales/en_PH
+3c0345df097adb223a8b0a3452525d9b  locales/en_SG
+92e303b805f4764fc4673c6b91dcc727  locales/en_US
+fa5a491dc297f7238f80874ee496e9c2  locales/en_ZA
+7ad745cfd65235a822a8df609fbde6be  locales/en_ZW
+2b8b723bacd503d19c954c114892c6b7  locales/es_AR
+c6a229ca597b87d76f4dab984b81269a  locales/es_BO
+82d08d10a6b495642d29e10881db125e  locales/es_CL
+d5c0e6d7a7cf3b78c10d01488e56bac6  locales/es_CO
+43c977fb2e8c5cf8ebc22e540394c9c5  locales/es_CR
+e8e40390b325bda7745c35dcf21ed85b  locales/es_DO
+4fb0673c208ab98a2e2730d5d276b4ca  locales/es_EC
+8b594f3f54feee58b532fd79bc5cb3c4  locales/es_ES
+a22a41f2de517348cda30ae1abf5c9c8  locales/es_ES@euro
+2b48ad6a533e2be0e276309e8d850176  locales/es_GT
+2b93a8311856003ac1a8d99c953384fe  locales/es_HN
+8c4dac544d27d7e13be46f41a7faffc1  locales/es_MX
+05a1608d55defa7b3365675fcf877447  locales/es_NI
+52cf11d5a1177f0559184b2c9809a646  locales/es_PA
+7676d6ef45b605dc41ca263a0281e104  locales/es_PE
+8b71100af8e3368b72adb5245ca09ea4  locales/es_PR
+8b018e757da1484cb871b57232d541b6  locales/es_PY
+a127d052ef4296077cf471e74f512ea3  locales/es_SV
+fd0e34704a9924e5c5fa4d8c036ea2cb  locales/es_US
+11cf1cc98949dfdd46a809132567708d  locales/es_UY
+23d39b096e723bc42bacf47f178fcd8f  locales/es_VE
+0cacce3d2ea3cdf629199fa9860cdbc7  locales/et_EE
+9c061ce2fa1ed4840a188f4d6571c467  locales/eu_ES
+425dea94a607159ca347683ad54bd01c  locales/eu_ES@euro
+b4d6364a3ded4f5d755ce06ff4113813  locales/fa_IR
+01dd74acb0f9f223b8f10cee4d84a27a  locales/fi_FI
+e7788148a070838b2a955f8581b85ecc  locales/fi_FI@euro
+72dce48480391d4511ea5652addb7a7f  locales/fo_FO
+b20965c23b512815e89d19968943f79f  locales/fr_BE
+9d903d1619eee84f9d6f2548a244f16b  locales/fr_BE@euro
+27350ff5edcbad23a3cbaf51e5ce9516  locales/fr_CA
+85cfedbae2635ff3cc6c020e4fedae77  locales/fr_CH
+3d1778f0b391280e0f8e659ffd6540c3  locales/fr_FR
+05926a63352664481996d6fc88e89652  locales/fr_FR@euro
+f9a73089ca808e23a1f3baa21bed2d16  locales/fr_LU
+1197cac6a722879b5bb6be9542849126  locales/fr_LU@euro
+f3c44dd40253222ad0e679843129ff93  locales/ga_IE
+d2d4dc4afca993cc23ca3f5b8bd14086  locales/ga_IE@euro
+371b5a1fbfe1c2f85702e73cc422144f  locales/gd_GB
+e9a09a754980c57d164542f8836ca7f2  locales/gez_ER
+578aad298eab4b7417f63e84def24b70  locales/gez_ER@abegede
+1c3588c1649830a853a8b3fb6551f216  locales/gez_ET
+5baf61b1452b869a7ef68fb0bc104c93  locales/gez_ET@abegede
+932688c021d50c8c006c69e5dd400916  locales/gl_ES
+96442bb448710d3bb8b8312aa3aeb1bf  locales/gl_ES@euro
+843a63c023de548c5bd68a6501b6111f  locales/gv_GB
+b224f30f6caeb5b4224055b8dffa4e6e  locales/he_IL
+50316cb01e3d71ad62ece1d1d3c07dee  locales/hi_IN
+076594c8fca0d8cba6025bc84c632955  locales/hr_HR
+a32f724ac52a0b7b93e4f16634434aa6  locales/hu_HU
+fbbbf45334e1e194ab1a97c86021a0de  locales/hy_AM
+d4e0ac1becf81c3d8ee2015149217bec  locales/i18n
+ce85601a76ae2614f8bda0f32dffdc1c  locales/id_ID
+b4289c043013ae5eea11d3aecb358def  locales/is_IS
+41285017b3e92ce96f58b0893693fdd0  locales/iso14651_t1
+3eb074e32f7c47e55b7fc87f4f95ed1f  locales/it_CH
+9782bbb990596391294615db31ed354b  locales/it_IT
+ca5c8db6da01632a55e456a1b9c5d06a  locales/it_IT@euro
+87ec0865bc168f8eb1ccc34f39af3c54  locales/iw_IL
+670e8aa17ac05f3d87e02b7b30d821dc  locales/ja_JP
+91e1303b1a2178d1d65fc1680aeeee73  locales/ka_GE
+be1c55fb66abca09de958efda88a2fd2  locales/kl_GL
+7c2b56c107bd690d5f1a02b483251108  locales/ko_KR
+18606681228f2b3657000b540156d26c  locales/kw_GB
+8626f9f367ccb8e53ff9134d10e0d3bc  locales/lo_LA
+b167f637994d4e0dc63278afead20e70  locales/lt_LT
+ff1ff54d5c81200f10443d38d4ffe5d9  locales/lug_UG
+afc1712af84f72d2ef7df4017d032d0a  locales/lv_LV
+736f907d676339c1491ef9b05fd72d43  locales/mi_NZ
+e5ea9d27b7a744398b7172d217e0fcf4  locales/mk_MK
+fd8a499f99ce938a2248a3f15c3734a9  locales/ml_IN
+2e8b7bae428155446d7576b0cb30922c  locales/mn_MN
+b84eb46c82ab6b9d62a2488bdcc20424  locales/mr_IN
+cacea2dc23f73bbcb41315b54efa2497  locales/ms_MY
+22032e413b237e3065e45ec826cf4f33  locales/mt_MT
+e0a1935babff9d11ec1a351f32139b66  locales/nb_NO
+f5c3f7b9407b830f81f6fa436025cf8b  locales/nl_BE
+b8fe92bcb67bd9ce8881245265bc0921  locales/nl_BE@euro
+398ed78337e7e54b70c326de73419acc  locales/nl_NL
+582e91119b249216632792ccc3a4b39c  locales/nl_NL@euro
+e0c8f075f207f0eeae0126a828e7b002  locales/nn_NO
+e08b57d42540a5f6b9583cf0b307e16d  locales/oc_FR
+291d4f7f52f2de6a12e20a6a772bfa08  locales/om_ET
+aff6f78433e871e621625a9d01cce9b0  locales/om_KE
+5d76d187628194194670c66b6ed087a4  locales/pl_PL
+75a57c202a85a70e526df48b76020fe9  locales/POSIX
+00018d0456c949f1e4e6039667a3ce18  locales/pt_BR
+71504211f33a2912b4883f4fcebc8e49  locales/pt_PT
+ee436677e91daca539d79043c3445cee  locales/pt_PT@euro
+7f22da8067aae183e4b9f8f2c4c50bb0  locales/ro_RO
+87030de9292c9b3f11d4947e3ae39389  locales/ru_RU
+b12d40e940af0a7475981a88a7c2efe8  locales/ru_UA
+ded75eac13f8497dbbede7e8c0ea23f2  locales/se_NO
+9ee09dd75dae654dc0cb5a51e3269a8e  locales/sid_ET
+b90424a5fa153de8b87d0ea50ddf4b88  locales/sk_SK
+fcc825d97cd9c9c28cc9dcdb9b1765c7  locales/sl_SI
+fe867afa6e46165623fd32d60cb9d10e  locales/so_DJ
+bae8167739a8f22df3f11418019a4155  locales/so_ET
+b7aa5b5b6a2bbf7252c4b0addac2a022  locales/so_KE
+ffbdf559e7ce632ef015484de36693a1  locales/so_SO
+62791e8307a9d3752a84e57af6e6a8e2  locales/sq_AL
+4a5f61c9afd6c9a7043eefe61ccfa369  locales/sr_YU
+d0b1a64f76a9362bd3b9cb8640b3f619  locales/sr_YU@cyrillic
+81a23b384860a2f3bbd8589e7093d7de  locales/st_ZA
+4ef891cdce4c0a55cfcda7e6af47a1e2  locales/sv_FI
+3bbf9a4b501088ecc575ae72df849afc  locales/sv_FI@euro
+79597e3058759603fd29b8a6330264ad  locales/sv_SE
+20dfa47f8fcc69a25b409360e21d1e06  locales/ta_IN
+d2bd445b112ea8e998eea01a10b48b97  locales/te_IN
+9c6e97d831e4c5d0007c953608941699  locales/tg_TJ
+dfb05377acb07e76b2894d81d0f4a45b  locales/th_TH
+3e68cfdf175a1e2b9d2be63c111dc054  locales/ti_ER
+a91c0d9a6c063ae3cf840581517002fe  locales/ti_ET
+ca60e4038ea4d4014469963d1d5c34ec  locales/tig_ER
+f536f6552f808199a79f8c0e17e965df  locales/tl_PH
+75671aeaff9a0e7bb749c03b60ed4d4e  locales/translit_circle
+6ecb21da3b802c875d99f4af1864baa8  locales/translit_cjk_compat
+1974543ca5f2d3ade1381476d43aeb30  locales/translit_cjk_variants
+380e21746526f66ecec28f973c608088  locales/translit_combining
+4c15e69cdfd3f3ee604348663f21983a  locales/translit_compat
+a7bf06733aa33711c79b1884ebc1d16b  locales/translit_et
+7a9587b2b0a14472ed945d23d99e2479  locales/translit_font
+2c1e80f58ae24a9239da80dab21cfdea  locales/translit_fraction
+e51778b0210e1f5bd9538cd108031e98  locales/translit_hangul
+eaa2e353f38bcde0779dc915b45596cd  locales/translit_narrow
+355db6a426662caf6cc5a711a42ac18d  locales/translit_neutral
+dd772f49ea41f9528569ec1e999e53a3  locales/translit_small
+7f2820edbc0323952e3b9043df95630a  locales/translit_wide
+277e145e97d3ae10da1e9f6e6fb24faf  locales/tr_TR
+ec6144a5d6bfdcda3f1df77d10e5352f  locales/tt_RU
+899c3baab6ceb6525f16107319b6fba1  locales/uk_UA
+a3116f5e4244b9413244e7efd951f18f  locales/ur_PK
+10e979f6e29034b3b87478ed532faf8b  locales/uz_UZ
+f53b5b9bdc0ece4ba5bbc6851181ddea  locales/uz_UZ@cyrillic
+e01a1f876fe923b192f5d8475a24e70c  locales/vi_VN
+d32625e7bbdef12e210855d2ed7a1fd9  locales/wa_BE
+5593017a2088448a06a0dededc590ebf  locales/wa_BE@euro
+6d741c89481f57554d4803e4810a9e93  locales/xh_ZA
+43e6de668e54a9d5f95dbacd561daed7  locales/yi_US
+e582e3d3526610821f7151d404b6d9f3  locales/zh_CN
+75d7f18534abad8f90d5ee9b09287cce  locales/zh_HK
+683fdb012a69950961dd9ff92f67d928  locales/zh_SG
+6342a0bd67a627fc94b9755f0c21e199  locales/zh_TW
+062e7d6c0ddee5bb0b1cbf934f656fe2  locales/zu_ZA