texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: Update in-source copy of Text::Unidecode to 1.30


From: Patrice Dumas
Subject: branch master updated: Update in-source copy of Text::Unidecode to 1.30
Date: Sun, 12 Mar 2023 10:32:24 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 361b29683f Update in-source copy of Text::Unidecode to 1.30
361b29683f is described below

commit 361b29683f3c6c6845c451775e563b191d434e83
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Mar 12 15:32:13 2023 +0100

    Update in-source copy of Text::Unidecode to 1.30
    
    * tp/Texinfo/Convert/Unicode.pm (%transliterate_map): add an explicite
    transliterations of characters in the 0080 to 009F range to an empty
    string.  Indeed, in Text::Unicode starting from version 1.25_01, those
    characters (C1 codes) are mapped to Windows-1252 characters.  We still
    consider the Unicode standard to rule and keep on transliterating to
    empty strings.
    
    * tp/t/nodenormalization.t: update test result without Unidecode now
    that the 0085 character has an explicit transliteration.
---
 ChangeLog                                          |  14 +
 tp/Texinfo/Convert/Unicode.pm                      |  37 ++
 tp/maintain/lib/Text-Unidecode/ChangeLog           | 180 +++++-
 tp/maintain/lib/Text-Unidecode/LICENSE             |   8 +
 tp/maintain/lib/Text-Unidecode/MANIFEST            | 108 +++-
 tp/maintain/lib/Text-Unidecode/MANIFEST.SKIP       |  20 +
 tp/maintain/lib/Text-Unidecode/META.json           |  41 ++
 tp/maintain/lib/Text-Unidecode/META.yml            |  22 +
 tp/maintain/lib/Text-Unidecode/Makefile.PL         |  64 +-
 tp/maintain/lib/Text-Unidecode/README              | 180 +++---
 tp/maintain/lib/Text-Unidecode/TODO.txt            |  79 ++-
 .../lib/Text-Unidecode/lib/Text/Unidecode.pm       | 664 +++++++++++++++++----
 .../lib/Text-Unidecode/lib/Text/Unidecode/x00.pm   |  67 ++-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x01.pm   |   6 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x02.pm   |  87 ++-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x03.pm   |  32 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x04.pm   |  10 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x05.pm   |  10 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x06.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x07.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x08.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x09.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0a.pm   |   7 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0b.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0c.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0d.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0e.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x0f.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x10.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x11.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x13.pm   |   8 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x16.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x17.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x18.pm   |   4 +-
 .../lib/Text/Unidecode/{xfa.pm => x19.pm}          |  12 +-
 .../lib/Text/Unidecode/{xfa.pm => x1a.pm}          |  12 +-
 .../lib/Text/Unidecode/{xfa.pm => x1b.pm}          |  12 +-
 .../lib/Text/Unidecode/{xfa.pm => x1c.pm}          |  12 +-
 .../lib/Text/Unidecode/{xfa.pm => x1d.pm}          |  12 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x1e.pm   |  38 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x1f.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x20.pm   |   6 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x21.pm   |  10 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x22.pm   |  34 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x23.pm   |  24 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x24.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x25.pm   |   8 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x26.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x27.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x29.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2a.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2b.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2c.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2d.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2e.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x2f.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x30.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x31.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x32.pm   |   7 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x33.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x34.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x35.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x36.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x37.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x38.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x39.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3a.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3b.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3c.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3d.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3e.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x3f.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x40.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x41.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x42.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x43.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x44.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x45.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x46.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x47.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x48.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x49.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x4a.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x4b.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x4c.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/x4d.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x4e.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/x9f.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa4.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa5.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa6.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa7.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa8.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xa9.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xaa.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xab.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xd7.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/xd8.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xd9.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xda.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xdb.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xdc.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xdd.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xde.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xdf.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe0.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe1.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe2.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe3.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe4.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe5.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe6.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe7.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe8.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xe9.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xea.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xeb.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xec.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xed.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xee.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xef.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf0.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf1.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf2.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf3.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf4.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf5.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf6.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf7.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xf8.pm   |   3 +
 .../lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm   |   4 +-
 .../lib/Text-Unidecode/lib/Text/Unidecode/xfd.pm   |  53 +-
 .../lib/Text-Unidecode/t/00010_hello_world.t       |  18 +
 .../Text-Unidecode/t/00050_assert_perl_version.t   |  35 ++
 tp/maintain/lib/Text-Unidecode/t/00055_can_utf8.t  |  17 +
 .../lib/Text-Unidecode/t/00100_can_binmode.t       |  22 +
 .../lib/Text-Unidecode/t/00200_xbrace_syntax.t     |  21 +
 tp/maintain/lib/Text-Unidecode/t/00300_wideness.t  |  23 +
 .../Text-Unidecode/t/00400_just_load_main_module.t |  26 +
 .../lib/Text-Unidecode/t/00450_table_0x00.t        |  99 +++
 .../lib/Text-Unidecode/t/00500_test_loading.t      | 104 ++++
 .../lib/Text-Unidecode/t/00510_load_many_tables.t  | 113 ++++
 tp/maintain/lib/Text-Unidecode/t/01000_note_incs.t |  30 +
 .../Text-Unidecode/t/01500_generate_no_warnings.t  |  38 ++
 .../Text-Unidecode/t/02000_uniform_table_sizes.t   |  94 +++
 .../lib/Text-Unidecode/t/03000_misc_unihan.t       |  24 +
 .../lib/Text-Unidecode/t/04000_misc_errors_fixed.t |  26 +
 .../lib/Text-Unidecode/t/04010_misc_errors_fixed.t | 143 +++++
 tp/maintain/lib/Text-Unidecode/t/05000_main.t      |  65 ++
 tp/maintain/lib/Text-Unidecode/t/09900_bye.t       |  12 +
 tp/maintain/lib/Text-Unidecode/test.pl             |  96 ---
 tp/t/nodenormalization.t                           |   2 +-
 152 files changed, 2736 insertions(+), 481 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e1c66e9e2c..fc7307d017 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2023-03-12  Patrice Dumas  <pertusus@free.fr>
+
+       Update in-source copy of Text::Unidecode to 1.30
+
+       * tp/Texinfo/Convert/Unicode.pm (%transliterate_map): add an explicite
+       transliterations of characters in the 0080 to 009F range to an empty
+       string.  Indeed, in Text::Unicode starting from version 1.25_01, those
+       characters (C1 codes) are mapped to Windows-1252 characters.  We still
+       consider the Unicode standard to rule and keep on transliterating to
+       empty strings.
+
+       * tp/t/nodenormalization.t: update test result without Unidecode now
+       that the 0085 character has an explicit transliteration.
+
 2023-03-12  Patrice Dumas  <pertusus@free.fr>
 
        Update in-source copy of Unicode::EastAsianWidth to 12.0
diff --git a/tp/Texinfo/Convert/Unicode.pm b/tp/Texinfo/Convert/Unicode.pm
index f458119a3d..c5e902ba41 100644
--- a/tp/Texinfo/Convert/Unicode.pm
+++ b/tp/Texinfo/Convert/Unicode.pm
@@ -589,6 +589,43 @@ foreach my $command (keys(%unicode_map)) {
 
 
 our %transliterate_map = (
+  # Text::Unicode starting from version 1.25_01 maps C1 controls in the
+  # 0080 to 009F range to Windows-1252 characters.  We still consider
+  # the Unicode standard to rule and keep on transliterating to empty
+  # strings
+               '0080'  => '',
+               '0081'  => '',
+               '0082'  => '',
+               '0083'  => '',
+               '0084'  => '',
+               '0085'  => '',
+               '0086'  => '',
+               '0087'  => '',
+               '0088'  => '',
+               '0089'  => '',
+               '008A'  => '',
+               '008B'  => '',
+               '008C'  => '',
+               '008D'  => '',
+               '008E'  => '',
+               '008F'  => '',
+               '0090'  => '',
+               '0091'  => '',
+               '0092'  => '',
+               '0093'  => '',
+               '0094'  => '',
+               '0095'  => '',
+               '0096'  => '',
+               '0097'  => '',
+               '0098'  => '',
+               '0099'  => '',
+               '009A'  => '',
+               '009B'  => '',
+               '009C'  => '',
+               '009D'  => '',
+               '009E'  => '',
+               '009F'  => '',
+               # explicit transliterations
                '00C5'  => 'AA',
                '00E5'  => 'aa',
                '00D8'  => 'O',
diff --git a/tp/maintain/lib/Text-Unidecode/ChangeLog 
b/tp/maintain/lib/Text-Unidecode/ChangeLog
index 2c3a233336..171336fd68 100644
--- a/tp/maintain/lib/Text-Unidecode/ChangeLog
+++ b/tp/maintain/lib/Text-Unidecode/ChangeLog
@@ -1,6 +1,182 @@
-Revision history for Perl module Text::Unidecode
-                                        Time-stamp: "2001-07-14 02:28:13 MDT"
+ -*-coding:utf-8;fill-column:79-*- ············································
+ Last Modified Time-stamp: "2016-11-26 04:40:48 MST"
+#==============================================================================
+(This is the ChangeLog for Text::Unidecode, about me continuing to
+fix bugs, adding features as they cross my mind, spiffing up the docs,
+and doing exciting stuff from TODO.txt...)
 
+Revision history for Perl module Text::Unidecode:
+
+2016-11-26   Sean M. Burke  sburke@cpan.org
+       * Release 1.30
+       * Many many (forty?) tables were missing the final character! Fixed.
+       * Minor stuff:
+        . Added just a few Arabesque things to U+FD__
+        . Renamed t/00400_just_load_module.t
+               to t/00400_just_load_main_module.t
+        . This is the first time non-7bit data appears in any Unidecode/x__.pm
+          files, although it is just in comments.  (In x02.pm, x03.pm, xfd.pm)
+          But this is just THE SHAPE OF THINGS TO COME.
+       * Oh look, I blinked and a year went by.  I've been spending about the
+         past *two* years trying to think of how Unidecode v2-and-later's data
+         tables should work.
+       * TODO: Kill the surrogatey "xD8", "xD9", "xDA", "xDB" blocks,
+         and actually handle surrogates (when properly encoded).
+       * TODO: Inaugurate the (private) Text::Unidecode::Blackbox namespace.
+
+2015-10-21   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.27.  (Stable.)
+       The release, 1.25_01, didn't blow up, so this is just
+       a re-release of it as a normal ("stable") version.
+       * Minor changes to the documentation.  Nothing substantial.
+       * Release 1.26 had a confusing mistake in the ChangeLog.
+       Ignore v1.26.
+
+2015-10-21   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.26.  Mistake.  See above for change notes
+       between v1.25_01 and v1.27.
+
+2015-10-16   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.25_01.
+       * !DEVELOPER RELEASE!, OH GOD HELP US ALL!
+
+       * Here's a new thing that makes me nervous and hesitant, and that I've
+       been talking myself into for weeks:
+
+         **************************************************************
+         *  I've switched to accepting values in the range 0x80-0x9F  *
+         *  as if they are the Windows-1252 ("ANSI") characters.      *
+         **************************************************************
+
+       Previously they had all mapped to emptystring.
+
+       Technically, Unicode specifies those codepoints as control characters
+       that I've never heard of, "C1 Controls"...
+         ...
+         U+0087 ESA - End of Selected Area
+         U+0088 HTS - Character (Horizontal) Tabulation Set
+         U+0089 HTJ - Character (Horizontal) Tabulation with Justification
+         ...
+       ( See "C1" in https://en.wikipedia.org/wiki/C0_and_C1_control_codes )
+
+       And Unidecode mapped all of those to emptystring.  Now they are treated
+       as if you fed the Windows-1252 characters, as that is an extremely
+       common thing to have happen.
+
+       So if you feed character value 0x80 to it, it is taken to mean "€"
+       (which Unidecode then decodes as "EUR", at the moment at least).
+       (This doesn't interfere with the fact that U+20AC is the proper
+       Unicode place for the "€" to be found.)
+
+       And the smartquotes at 0x91 to 0x94, ‘ ’ “ ” turn into ' ' " " so 
yaaaay!
+
+       Note that in theory, according to C1 Controls, 0x85 is "NEL: Next
+       Line", "Equivalent to CR+LF. Used to mark end-of-line on some IBM
+       mainframes."
+       I could map this to \n or \r\n or whatever, but I've never seen 0x85 in
+       use in the wild, and I never heard anyone complain about my not having
+       mapped it to "\n" in all the Unidecode versions since the first, in 
2001.
+       So instead, Unidecode takes 0x85 as its Windows-1252 value, the
+       ellipsis "…" which of course it Unidecodes as "..."
+
+       I'm not thrilled with the idea of going off spec but I think this
+       should be okay, and it has massive DWIM value.
+       Let's hope I'm not dividing Unicode times infinity by zero and then the
+       whole universe will disa
+
+       That's why I'm making this a developer release.  Unless anything
+       besplodes by November 1st, I'll re-issue this as a stable release.
+
+2015-08-28   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.24.  Fixing a little (BIG) bug that David Cusimano is a
+         superstar for having noticed.  Ah, what a difference a ";" vs a ","
+         makes!
+          [https://rt.cpan.org/Public/Bug/Display.html?id=105420]
+
+       * I'M BACK.  After nine months of semi-catastrophic system failures,
+       and after Voyager-style flybys of a dozen project deadlines... and now
+       I can somehow try to get back in the swing of things.
+
+       * ANOTHER superstar is Mistah Brendan Byrd who said that there are
+       [ https://rt.cpan.org/Public/Bug/Display.html?id=102357 ] many ports of
+       Unidecode to other languages and that I should brag about that fact,
+       and he is very extremely correct, so now the Pod in Unidecode.pm indeed
+       does just that.
+
+       * (I got my distro-building back up and running.  WOLVERIIIINES!)
+
+       * I'm thinking of having future Unidecode/*.pm data files contain the
+       canonical Unicode character name for every character as a comment.
+       Obviously, this would make the dist pretty big.  But the
+       lib/Unidecode/*.pm files is somewhere around a meg.  What's a few megs
+       more?... with the benefit of added clarity?  Everyone's a winner!
+       
+2014-12-07   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.23.  Just a bugfix version.
+       * The bug in question: https://rt.cpan.org/Ticket/Display.html?id=97456
+       * Thank you very much to superstar Dagfinn Ilmari Mannsaker for noting
+         it first *and* for providing a patch for a problem that would baffle
+         me completely:
+          "On perls 5.8.8 through 5.12.x, regex matches against UTF-16
+          surrogate characters emits a fatal "Malformed UTF-8 character"
+          warning if warnings are enabled. ExtUtils::MakeMaker prior to 6.78
+          runs the test suite with -w, causing the installation to fail.
+          The attached patch [which I applied -SMB] disables utf8
+          warnings while doing the regex substitution and converting the
+          character number to a character in the test."
+         And thank you very much to Ricardo Signes and Tim Bunce for reminding
+         me to actually release this thang!  I was stupid and forgot... for
+         several MONTHS.
+       * Doc: Adding mention of Tom Christiansen's "Perl Unicode Cookbook":
+            http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html
+       * Doc: Adding a suggestion of "use utf8;" in German example.
+       
+2014-08-15   Sean M. Burke  sburke@cpan.org
+       * RELEASE 1.22.  (The dev release works, so this is a version bump.)
+       * See notes for 2014-07-25, because this is the first public release
+       with significant changes since 2001!
+       
+2014-07-25   Sean M. Burke  sburke@cpan.org
+       * !DEVELOPER RELEASE!
+       * !Release 1.20_01!
+       * Many bugfixes.  Thanks especially to Tomaž Šolc!
+       * Yet more *.t files added for improved sanity checking.
+       * Shuffling around the internals of Unidecode.pm
+       * Putting in some vacuous 0x__.pm files where
+       previously there would just be a load failure
+       
+2014-06-30   Sean M. Burke  sburke@cpan.org
+       * Release 1.01 -- first official Unidecode release since 2001!!!
+       * There are no real changes since the 2014-06-23 developer
+       release.  I'm just making this all official now.
+       
+       
+2014-06-23   Sean M. Burke  sburke@cpan.org
+       * !DEVELOPER RELEASE!
+       * Release 1.00_03
+       * Now asserting that we need at least Perl 5.8.0
+       An automated test system that tried running the t/*.t
+        under a 5.6.2 spewed all kinds of crazy error messages.
+       Hence the bump-up.
+       So, I added assertions for the version.
+       * I added some tests for more basic sanity assertions.
+       
+2014-06-17   Sean M. Burke  sburke@cpan.org
+       v1.00_02 - Not released.  Just internal rearranging.
+       
+       
+2014-06-13   Sean M. Burke  sburke@cpan.org
+       * !DEVELOPER RELEASE!
+       * Release 1.00(_01!)- so many years later, finally we bump up to 1.*!
+
+       * My documentation is now BRILLIANT.
+       * Minor bugfixes.
+       * Some code comments for clarity.
+       * A modern test suite.
+
+       * A proper release will follow in a few days.
+       
+       
 2001-07-14  Sean M. Burke  sburke@cpan.org
        
        * Release 0.04 -- forgot to put TODO.txt in 0.03.  Now including
diff --git a/tp/maintain/lib/Text-Unidecode/LICENSE 
b/tp/maintain/lib/Text-Unidecode/LICENSE
new file mode 100644
index 0000000000..ef9726f5b8
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/LICENSE
@@ -0,0 +1,8 @@
+
+      [Last Modified Time-stamp: "2016-07-24 01:49:14 MDT"]
+
+
+This module, Text::Unidecode (along with its documentation and its
+data tables) is distributed under the same terms as Perl itself.
+
+   -- the author, Sean M. Burke, sburke@cpan.org
diff --git a/tp/maintain/lib/Text-Unidecode/MANIFEST 
b/tp/maintain/lib/Text-Unidecode/MANIFEST
index 737aae39d9..aaaf2d1531 100644
--- a/tp/maintain/lib/Text-Unidecode/MANIFEST
+++ b/tp/maintain/lib/Text-Unidecode/MANIFEST
@@ -1,9 +1,4 @@
 ChangeLog
-MANIFEST
-MANIFEST.SKIP
-Makefile.PL
-README
-TODO.txt
 lib/Text/Unidecode.pm
 lib/Text/Unidecode/x00.pm
 lib/Text/Unidecode/x01.pm
@@ -13,6 +8,7 @@ lib/Text/Unidecode/x04.pm
 lib/Text/Unidecode/x05.pm
 lib/Text/Unidecode/x06.pm
 lib/Text/Unidecode/x07.pm
+lib/Text/Unidecode/x08.pm
 lib/Text/Unidecode/x09.pm
 lib/Text/Unidecode/x0a.pm
 lib/Text/Unidecode/x0b.pm
@@ -29,6 +25,11 @@ lib/Text/Unidecode/x15.pm
 lib/Text/Unidecode/x16.pm
 lib/Text/Unidecode/x17.pm
 lib/Text/Unidecode/x18.pm
+lib/Text/Unidecode/x19.pm
+lib/Text/Unidecode/x1a.pm
+lib/Text/Unidecode/x1b.pm
+lib/Text/Unidecode/x1c.pm
+lib/Text/Unidecode/x1d.pm
 lib/Text/Unidecode/x1e.pm
 lib/Text/Unidecode/x1f.pm
 lib/Text/Unidecode/x20.pm
@@ -40,12 +41,42 @@ lib/Text/Unidecode/x25.pm
 lib/Text/Unidecode/x26.pm
 lib/Text/Unidecode/x27.pm
 lib/Text/Unidecode/x28.pm
+lib/Text/Unidecode/x29.pm
+lib/Text/Unidecode/x2a.pm
+lib/Text/Unidecode/x2b.pm
+lib/Text/Unidecode/x2c.pm
+lib/Text/Unidecode/x2d.pm
 lib/Text/Unidecode/x2e.pm
 lib/Text/Unidecode/x2f.pm
 lib/Text/Unidecode/x30.pm
 lib/Text/Unidecode/x31.pm
 lib/Text/Unidecode/x32.pm
 lib/Text/Unidecode/x33.pm
+lib/Text/Unidecode/x34.pm
+lib/Text/Unidecode/x35.pm
+lib/Text/Unidecode/x36.pm
+lib/Text/Unidecode/x37.pm
+lib/Text/Unidecode/x38.pm
+lib/Text/Unidecode/x39.pm
+lib/Text/Unidecode/x3a.pm
+lib/Text/Unidecode/x3b.pm
+lib/Text/Unidecode/x3c.pm
+lib/Text/Unidecode/x3d.pm
+lib/Text/Unidecode/x3e.pm
+lib/Text/Unidecode/x3f.pm
+lib/Text/Unidecode/x40.pm
+lib/Text/Unidecode/x41.pm
+lib/Text/Unidecode/x42.pm
+lib/Text/Unidecode/x43.pm
+lib/Text/Unidecode/x44.pm
+lib/Text/Unidecode/x45.pm
+lib/Text/Unidecode/x46.pm
+lib/Text/Unidecode/x47.pm
+lib/Text/Unidecode/x48.pm
+lib/Text/Unidecode/x49.pm
+lib/Text/Unidecode/x4a.pm
+lib/Text/Unidecode/x4b.pm
+lib/Text/Unidecode/x4c.pm
 lib/Text/Unidecode/x4d.pm
 lib/Text/Unidecode/x4e.pm
 lib/Text/Unidecode/x4f.pm
@@ -134,6 +165,13 @@ lib/Text/Unidecode/xa1.pm
 lib/Text/Unidecode/xa2.pm
 lib/Text/Unidecode/xa3.pm
 lib/Text/Unidecode/xa4.pm
+lib/Text/Unidecode/xa5.pm
+lib/Text/Unidecode/xa6.pm
+lib/Text/Unidecode/xa7.pm
+lib/Text/Unidecode/xa8.pm
+lib/Text/Unidecode/xa9.pm
+lib/Text/Unidecode/xaa.pm
+lib/Text/Unidecode/xab.pm
 lib/Text/Unidecode/xac.pm
 lib/Text/Unidecode/xad.pm
 lib/Text/Unidecode/xae.pm
@@ -178,6 +216,39 @@ lib/Text/Unidecode/xd4.pm
 lib/Text/Unidecode/xd5.pm
 lib/Text/Unidecode/xd6.pm
 lib/Text/Unidecode/xd7.pm
+lib/Text/Unidecode/xd8.pm
+lib/Text/Unidecode/xd9.pm
+lib/Text/Unidecode/xda.pm
+lib/Text/Unidecode/xdb.pm
+lib/Text/Unidecode/xdc.pm
+lib/Text/Unidecode/xdd.pm
+lib/Text/Unidecode/xde.pm
+lib/Text/Unidecode/xdf.pm
+lib/Text/Unidecode/xe0.pm
+lib/Text/Unidecode/xe1.pm
+lib/Text/Unidecode/xe2.pm
+lib/Text/Unidecode/xe3.pm
+lib/Text/Unidecode/xe4.pm
+lib/Text/Unidecode/xe5.pm
+lib/Text/Unidecode/xe6.pm
+lib/Text/Unidecode/xe7.pm
+lib/Text/Unidecode/xe8.pm
+lib/Text/Unidecode/xe9.pm
+lib/Text/Unidecode/xea.pm
+lib/Text/Unidecode/xeb.pm
+lib/Text/Unidecode/xec.pm
+lib/Text/Unidecode/xed.pm
+lib/Text/Unidecode/xee.pm
+lib/Text/Unidecode/xef.pm
+lib/Text/Unidecode/xf0.pm
+lib/Text/Unidecode/xf1.pm
+lib/Text/Unidecode/xf2.pm
+lib/Text/Unidecode/xf3.pm
+lib/Text/Unidecode/xf4.pm
+lib/Text/Unidecode/xf5.pm
+lib/Text/Unidecode/xf6.pm
+lib/Text/Unidecode/xf7.pm
+lib/Text/Unidecode/xf8.pm
 lib/Text/Unidecode/xf9.pm
 lib/Text/Unidecode/xfa.pm
 lib/Text/Unidecode/xfb.pm
@@ -185,4 +256,29 @@ lib/Text/Unidecode/xfc.pm
 lib/Text/Unidecode/xfd.pm
 lib/Text/Unidecode/xfe.pm
 lib/Text/Unidecode/xff.pm
-test.pl
+LICENSE
+Makefile.PL
+MANIFEST
+MANIFEST.SKIP
+README
+t/00010_hello_world.t
+t/00050_assert_perl_version.t
+t/00055_can_utf8.t
+t/00100_can_binmode.t
+t/00200_xbrace_syntax.t
+t/00300_wideness.t
+t/00400_just_load_main_module.t
+t/00450_table_0x00.t
+t/00500_test_loading.t
+t/00510_load_many_tables.t
+t/01000_note_incs.t
+t/01500_generate_no_warnings.t
+t/02000_uniform_table_sizes.t
+t/03000_misc_unihan.t
+t/04000_misc_errors_fixed.t
+t/04010_misc_errors_fixed.t
+t/05000_main.t
+t/09900_bye.t
+TODO.txt
+META.yml                                 Module YAML meta-data (added by 
MakeMaker)
+META.json                                Module JSON meta-data (added by 
MakeMaker)
diff --git a/tp/maintain/lib/Text-Unidecode/MANIFEST.SKIP 
b/tp/maintain/lib/Text-Unidecode/MANIFEST.SKIP
index 053dc4c62e..48738e76fb 100644
--- a/tp/maintain/lib/Text-Unidecode/MANIFEST.SKIP
+++ b/tp/maintain/lib/Text-Unidecode/MANIFEST.SKIP
@@ -1,3 +1,23 @@
+#
+# Last Modified Time-stamp: "2016-08-07 19:14:34 MDT"
+#
+make_unidecode_dist.*
+make_manifest
+diff_unidecode_dists
+purge_unidecode_temp_dirs.*
+\.bak$
+\.old$
 Makefile$
 ~$
 .tar.gz$
+~
+#
+CACHEDIR.TAG
+_*00_ABOUT_THIS_DIR.txt
+MYMETA.*
+SMB_.*
+/[0-9]{1,3}$
+.*Constants.pm.*
+.*Suavecito.pm.*
+.*_to_unidecode_table_v2.*
+.*Utils.pm.*
diff --git a/tp/maintain/lib/Text-Unidecode/META.json 
b/tp/maintain/lib/Text-Unidecode/META.json
new file mode 100644
index 0000000000..e549508b41
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/META.json
@@ -0,0 +1,41 @@
+{
+   "abstract" : "Provide plain ASCII transliterations of Unicode text",
+   "author" : [
+      "Sean Burke <sburke@cpan.org>"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter 
version 2.120921",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec";,
+      "version" : "2"
+   },
+   "name" : "Text-Unidecode",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "perl" : "5.008"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "version" : "1.30"
+}
diff --git a/tp/maintain/lib/Text-Unidecode/META.yml 
b/tp/maintain/lib/Text-Unidecode/META.yml
new file mode 100644
index 0000000000..10e3050b05
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/META.yml
@@ -0,0 +1,22 @@
+---
+abstract: 'Provide plain ASCII transliterations of Unicode text'
+author:
+  - 'Sean Burke <sburke@cpan.org>'
+build_requires:
+  ExtUtils::MakeMaker: 0
+configure_requires:
+  ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 
2.120921'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Text-Unidecode
+no_index:
+  directory:
+    - t
+    - inc
+requires:
+  perl: 5.008
+version: 1.30
diff --git a/tp/maintain/lib/Text-Unidecode/Makefile.PL 
b/tp/maintain/lib/Text-Unidecode/Makefile.PL
index 509371e5e8..1e6ffefc7a 100644
--- a/tp/maintain/lib/Text-Unidecode/Makefile.PL
+++ b/tp/maintain/lib/Text-Unidecode/Makefile.PL
@@ -1,20 +1,56 @@
-require 5.006;
+# This -*-perl-*- script writes the Makefile for installing this distribution.
+# ( Last Modified Time-stamp: "2014-07-22 16:46:15 MDT sburke@cpan.org" )
+#======================================================================
+#
+# For info on instaling this module and how to control it, see:
+#   perldoc cpan
+#   perldoc cpanp
+#   perldoc perlmodinstall
+#   perldoc ExtUtils::MakeMaker
+#
+#
+#======================================================================
+
+require                   5.008_000;  #   # <==========!!!!!!!!!!
+my $min_perl_version =    5.008_000;  #   # <==========!!!!!!!!!!
+
+# For the module author: see lib/ExtUtils/MakeMaker.pm for details
+#   of how to influence the contents of the Makefile that is written.
+# Incidentally. Perldoc perlfunc says "use " is compile-time, but
+#   "require 5.6" is runtime.
+
 use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
+#if( $ExtUtils::MakeMaker::VERSION < 6.47 ) {
+#  die "I need at least perl version $min_perl_version";
+#}
+
 WriteMakefile(
-    'NAME'     => 'Text::Unidecode',
-    'VERSION_FROM' => 'lib/Text/Unidecode.pm', # finds $VERSION
-    'dist'        => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
-);
+  'NAME'         => 'Text::Unidecode',
+  'ABSTRACT'     => 'Provide plain ASCII transliterations of Unicode text',
 
-package MY;
+  'VERSION_FROM' => 'lib/Text/Unidecode.pm', # finds $VERSION
 
-sub libscan
-{ # Determine things that should *not* be installed
-    my($self, $path) = @_;
-    return '' if $path =~ m/~/;
-    $path;
-}
+  'AUTHOR'       => 'Sean Burke <sburke@cpan.org>',
+  'LICENSE'      => 'perl',
+                   #  "...under the same terms as Perl itself"
+
+  ($ExtUtils::MakeMaker::VERSION >= 6.47
+    ? ('MIN_PERL_VERSION' => $min_perl_version )
+
+    : () # Otherwise we can't express that metadata about this
+         #  whole module suite, and we just have to let the version
+         #  "require" thing up there block this whole Makefile.PL
+         #  from running.
+  ),
+
+  'dist'  => {
+     'COMPRESS' => 'gzip -4f',
+       # from 4 to 6 is where there's a sudden doubling
+       #  of processing time,  So 4 is cool.
+     'SUFFIX'   => 'gz',
+     'TARFLAGS' => 'cfh', # h=follow symlinks when making dist
+  },
+
+);
 
 __END__
diff --git a/tp/maintain/lib/Text-Unidecode/README 
b/tp/maintain/lib/Text-Unidecode/README
index d742034bb5..773f1d6310 100644
--- a/tp/maintain/lib/Text-Unidecode/README
+++ b/tp/maintain/lib/Text-Unidecode/README
@@ -1,98 +1,100 @@
-README for Text::Unidecode
-                                        Time-stamp: "2001-07-14 02:03:33 MDT"
+               # -*- coding:utf-8; mode:Text; fill-column:79 -*-
+               # Time-stamp: "2016-07-24 03:12:31 MDT"
+# (This page is in UTF-8!) |··················································|
 
-                          Text::Unidecode
+Module:  Text::Unidecode-- make ASCII transliterations of Unicode text
 
-NAME
-    Text::Unidecode -- US-ASCII transliterations of Unicode text
+Unidecode makes ASCII transliterations of Unicode text.  Sometimes it's dumb,
+but it's better than looking at "???" or "\15BA\15A0\1610...".
+If you have smarter text-handling subroutines, Unidecode might be useful
+as a fallthrough for them.
 
-SYNOPSIS
-      use utf8;
-      use Text::Unidecode;
-      print unidecode(
-        "\x{5317}\x{4EB0}\n"
-         # those are the Chinese characters for Beijing
-      );
-  
-      # That prints: Bei Jing 
+Example:
+   print unidecode(  "北亰\n" );
+           prints:  Bei Jing
 
-DESCRIPTION
-
-    It often happens that you have non-Roman text data in Unicode, but
-    you can't display it -- usually because you're trying to show it
-    to a user via an application that doesn't support Unicode, or
-    because the fonts you need aren't accessible. You could represent
-    the Unicode characters as "???????" or "\15BA\15A0\1610...", but
-    that's nearly useless to the user who actually wants to read what
-    the text says.
-
-    What Text::Unidecode provides is a function, `unidecode(...)' that
-    takes Unicode data and tries to represent it in US-ASCII
-    characters (i.e., the universally displayable characters between
-    0x00 and 0x7F). The representation is almost always an attempt at
-    *transliteration* -- i.e., conveying, in Roman letters, the
-    pronunciation expressed by the text in some other writing
-    system. (See the example in the synopsis.)
-
-
-See the POD for more information.
+See more examples below.
 
+For full documentation, run:
+    perldoc Unidecode
+Or read:see:
+    http://search.cpan.org/perldoc?Text::Unidecode 
+An article about how Unidecode runs:
+    http://interglacial.com/tpj/22/
 
 REQUIREMENTS
-
-This module requires Perl 5.6.0 or higher.  (Earlier Perls apparently
-lack the "use utf8" pragma that Text::Unidecode needs.)
-I have also observed that 5.6.0's Unicode support is shakey; strongly
-consider upgrading to 5.6.1 at least.
-
-
+This module requires Perl 5.8.0 at the very least.  That's probably not a
+problem for you, since that's from a decade ago!
 
 INSTALLATION
-
-You install Text::Unidecode, as you would install any perl module
-library, by running these commands:
-
-   perl Makefile.PL
-   make
-   make test
-   make install
-
-If you want to install a private copy of Text::Unidecode in your home
-directory, then you should try to produce the initial Makefile with
-something like this command:
-
-  perl Makefile.PL LIB=~/perl
-
-See perldoc perlmodinstall for more information on installing modules.
-
-
-DOCUMENTATION
-
-POD-format documentation is included in Unidecode.pm.  POD is readable
-with the 'perldoc' utility.  See ChangeLog for recent changes.
-
-
-SUPPORT
-
-Questions, bug reports, useful code bits, and suggestions for
-Text::Unidecode should just be sent to me at sburke@cpan.org
-
-
-AVAILABILITY
-
-The latest version of Text::Unidecode is available from the
-Comprehensive Perl Archive Network (CPAN).  Visit
-<http://www.perl.com/CPAN/> to find a CPAN site near you.
-
-
-COPYRIGHT
-
-Copyright 2001, Sean M. Burke <sburke@cpan.org>, all rights reserved.
-
-The programs and documentation in this dist are distributed in the
-hope that they will be useful, but without any warranty; without even
-the implied warranty of merchantability or fitness for a particular
-purpose.
-
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
+* For using the "CPAN Plus" system, read:   perldoc cpanp
+* For old-style "make" interface, read:     perldoc perlmodinstall
+
+~~~ EXAMPLE UNIDECODE INPUT AND OUTPUT ~~~
+(Just two or three lines, from a few languages.)
+
+La décennie voit le début des biotechnologies avec le premier clonage,
+les organismes génétiquement modifiés, le début du séquençage du
+génome humain
+=>  La decennie voit le debut des biotechnologies avec le premier clonage,
+    les organismes genetiquement modifies, le debut du sequencage du
+    genome humain
+
+Wśród nocnej ciszy głos się rozchodzi:
+Wstańcie, pasterze, Bóg się nam rodzi!
+=>  Wsrod nocnej ciszy glos sie rozchodzi: 
+    Wstancie, pasterze, Bog sie nam rodzi! 
+
+Καθαίρονται δ᾽ ἄλλως αἵματι μιαινόμενοι οἷον εἴ τις εἰς πηλὸν ἐμβὰς
+πηλῷ ἀπονίζοντο. μαίνεσθαι δ᾽ ἂν δοκοίη, εἴ τίς μιν ἀνθρώπων
+=>  Kathairontai d' allos aimati miainomenoi oion ei tis eis pelon embas
+    pelo aponizonto. mainesthai d' an dokoie, ei tis min anthropon
+
+На другой день к завтраку подавали очень вкусные пирожки, раков и
+бараньи котлеты; и пока ели, приходил наверх повар Никанор справиться,
+=>  Na drughoi dien' k zavtraku podavali ochien' vkusnyie pirozhki, rakov i
+    baran'i kotliety; i poka ieli, prikhodil navierkh povar Nikanor 
spravit'sia,
+
+Nước trà (hay nước chè) là đồ uống phổ biến thứ hai trên thế giới (sau
+nước uống). Nó làm bằng cách ngâm lá, chồi, hay cành của cây chè
+=>  Nuoc tra (hay nuoc che) la do uong pho bien thu hai tren the gioi (sau
+    nuoc uong). No lam bang cach ngam la, choi, hay canh cua cay che
+
+#### And Then Things Get A Bit Suboptimal
+# But remember the Unidecode motto: "It's better than nothing!"
+
+유자차(柚子茶)는 유자청을 찬물이나 더운 물에 희석하여 마시는 한국의
+전통 차이다. 유자청은 얇게 자른 유자를 꿀이나 설탕과 섞은 뒤 3~4개월
+=>  yujaca(You Zi Cha )neun yujaceongeul canmulina deoun mule hyiseoghayeo 
masineun hangugyi
+    jeontong caida. yujaceongeun yalbge jareun yujareul ggulina seoltanggwa 
seoggeun dwi 3~4gaeweol
+
+* The Gayatri Mantra- Sanskrit
+ॐ भूर्भुवः॒ स्वः ।  तत्स॑वितुर्वरे॑णियं ।
+भ॒र्गो॑ दे॒वस्य॑ धीमहि। ।  धियो॒ यो नः॑ प्रचो॒दया॑त्॥ । 
+=>  AUM bhuurbhuvH' svH  /   tts'viturvre'nniyN  / 
+    bh'rgo' de'vsy' dhiimhi /   /   dhiyo' yo nH' prco'dyaa't //   /  
+
+道可道,非常道。名可名,非常名。無名天地之始;有名萬物之母。故常無欲,
+以觀其妙;常有欲,以觀其徼。此兩者,同出而異名,同謂之玄。玄之又玄,衆
+=>  Dao Ke Dao ,Fei Chang Dao . Ming Ke Ming ,Fei Chang Ming . Wu Ming Tian Di 
Zhi Shi ;You Ming Wan Wu Zhi Mu . Gu Chang Wu Yu ,
+    Yi Guan Qi Miao ;Chang You Yu ,Yi Guan Qi Jiao . Ci Liang Zhe ,Tong Chu Er 
Yi Ming ,Tong Wei Zhi Xuan . Xuan Zhi You Xuan ,Zhong 
+
+#Yiddish. Directionality and ligature might come out wrong in your 
browser/editor:]
+‏טיי איז א געטראנק וואס מען טרינקט איבער דער גארער וועלט. טיי ווערט
+געמאכט דורך ווייקן די געטרוקנטע בלעטער אדער בלומען פון דעם פלאנץ‎
+=>  tyy yz  g`trnq vvs m`n trynqt yb`r d`r gr`r vv`lt. tyy vv`rt
+    g`mkt dvrk vvyyqn dy g`trvqnt` bl`t`r d`r blvm`n pvn d`m plnts
+
+
+#Urdu. Directionality and ligature might come out wrong in your 
browser/editor:]
+‏چائے دنیا کی پسندیدہ مشروب ہے۔ یہ چاۓ کے پودے کی پتیوں کو چند منٹ گرم
+پانی میں ابالنے سے تیار ہوتی ہے۔‎
+=>  chy'y dny khy psndydh mshrwb hy. yh chy' khy pwdy khy ptywN khw chnd mntt 
grm
+    pny myN blny sy tyr hwty hy.
+
+======================================================================
+END OF README
+======================================================================
+{{{
+Generated at Sat Nov 26 05:10:31 2016 (1480162231)
+}}}
diff --git a/tp/maintain/lib/Text-Unidecode/TODO.txt 
b/tp/maintain/lib/Text-Unidecode/TODO.txt
index 052c19ded8..a48e9089df 100644
--- a/tp/maintain/lib/Text-Unidecode/TODO.txt
+++ b/tp/maintain/lib/Text-Unidecode/TODO.txt
@@ -1,10 +1,78 @@
-Text::Unidecode Transliteration Notes -- TODO FILE
+# -*-coding:utf-8;-*- ··················································
+# Last Modified Time-stamp: "2015-10-16 03:34:44 MDT sburke@cpan.org"
+#======================================================================
 
+             ~~  Text::Unidecode TODO file  ~~
 
+TODO: make the table files be built from the Unicode character
+database, transitioning from the values in the current table files.
+I used to have a whole bunch of concise files that compiled to
+the xXX.pm table files.  But they're in a file format I
+haven't dealt with since 2001, so screw it all, I'm starting
+from zero and it will be... well, you'll see.
 
-============================== BLOCK 03 ==============================
+(Presumably the Hangul and the Unihan blocks are outside the
+scope of that whole ruckus of named characters.)
 
-Coptic things I'm unsure of: Khei=kh, Gangia=g, Shima=ch, Dei=ti.
+
+TODO GTD:
+Keep plugging in suggestions from Tomaž Šolc's message
+
+
+TODO:
+Figure out how to courteously declare dependencies in my Makefile.PL
+
+TODO:
+Bundle with a "unidecode" util that calls a routine in Unidecode.pm?
+Or maybe just show it as a one-liner in the POD?
+
+TODO:
+Also show it with an example use with iconv
+
+TODO:
+Plow through more bug reports, applying patches etc,
+especially stuff from that nice Tomaž Šolc man.
+
+TODO:
+
+***DEFINITELY*** Make it handle stuff in Astral Plane (over U+FFFF)
+Take that plunge, or ascend into the plane, or whatever.  DOIT.
+
+TODO:
+
+Currently, all the files are in Unix newline format (LF).
+Maybe CR+LF is technically more universal, and I could switch
+to that.  But so far I've gotten no complaints that I should
+go do that.
+
+TODO:
+
+THEN re-run the thing that reads the Unihan database and generates
+all the Text/Unidecode/__.pm files.
+(Do the hyperspace handling first, because lots of Unihan
+stuff is up there.)
+
+TODO:
+
+Look to see whether I need to deal with the Arabic stuff in
+the U+FBxx etc blocks.  I thought it was always just
+font-internal stuff, but I'm starting to suspect that it may
+be encountered in the real world
+
+TODO:
+
+Of course:
+- Check for new glyphs in existing tables.
+- Look at whole new tables (like the Philippine scripts) in
+normal space (x < U+FFFF)
+- Look at the wild wilderness in hyperspace (x > U+FFFF
+
+
+======================================================================
+======================================================================
+
+########################################################################
+Below here is TODOs from the Unicode version in 2001.  Yes, that long ago.
 
 
 ============================== BLOCK 09 ==============================
@@ -98,6 +166,5 @@ Arabic Presentation Forms-B (FE70-FEFF) -- do I need to
 do these, or are they never actually found in text files?
 
 
-
---
-26 TODOs at Sat Jul 14 00:27:44 2001
+======================================================================
+(end)
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode.pm
index f6b06aeaf0..3680e8cd82 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode.pm
@@ -1,18 +1,24 @@
+;;;;# -*-coding:utf-8;-*-                                               µ ← 
col73
 
-require 5.006;
-package Text::Unidecode;  # Time-stamp: "2001-07-14 02:29:41 MDT"
+require 5;
+use 5.8.0;
+package Text::Unidecode;
+$Last_Modified =' Time-stamp: "2016-11-26 05:01:56 MST"';
 use utf8;
 use strict;
 use integer; # vroom vroom!
-use vars qw($VERSION @ISA @EXPORT @Char $NULLMAP);
-$VERSION = '0.04';
+use vars qw($VERSION @ISA @EXPORT @Char $UNKNOWN $NULLMAP $TABLE_SIZE 
$Last_Modified
+   $Note_Broken_Tables %Broken_Table_Size %Broken_Table_Copy
+);
+$VERSION = '1.30';
 require Exporter;
 @ISA = ('Exporter');
 @EXPORT = ('unidecode');
-
+$Note_Broken_Tables = 0;
 BEGIN { *DEBUG = sub () {0} unless defined &DEBUG }
-
-$NULLMAP = [('[?] ') x 0x100];  # for blocks we can't load
+$UNKNOWN = '[?] ';
+$TABLE_SIZE = 256;
+$NULLMAP = [( $UNKNOWN ) x $TABLE_SIZE];  # for blocks we can't load
 
 #--------------------------------------------------------------------------
 {
@@ -25,23 +31,81 @@ $NULLMAP = [('[?] ') x 0x100];  # for blocks we can't load
 sub unidecode {
   # Destructive in void context -- in other contexts, nondestructive.
 
-  unless(@_) {
-    # Nothing coming in
+  unless(@_) {  # Sanity: Nothing coming in!
     return() if wantarray;
     return '';
   }
-  @_ = map $_, @_ if defined wantarray;
-   # We're in list or scalar context, NOT void context.
-   #  So make @_'s items no longer be aliases.
-   # Otherwise, let @_ be aliases, and alter in-place.
-
-  foreach my $x (@_) {
-    next unless defined $x;    
-    $x =~ s~([^\x00-\x7f])~${$Char[ord($1)>>8]||t($1)}[ord($1)&255]~egs;
-      # Replace character 0xABCD with $Char[0xAB][0xCD], loading
-      #  the table as needed.
+
+  if( defined wantarray ) {
+    # We're in list or scalar context (i.e., just not void context.)
+    #  So make @_'s items no longer be aliases.
+    @_ = map $_, @_;
+  } else {
+    # Otherwise (if we're in void context), then just let @_ stay
+    #  aliases, and alter their elements IN-PLACE!
   }
 
+  foreach my $n (@_) {
+    next unless defined $n;    
+
+    # Shut up potentially fatal warnings about UTF-16 surrogate
+    # characters when running under perl -w
+    # This is per https://rt.cpan.org/Ticket/Display.html?id=97456
+    no warnings 'utf8';
+
+    $n =~ s~([^\x00-\x7f])~${$Char[ord($1)>>8]||t($1)}[ord($1)&255]~egs;
+  }
+  # That means:
+  #   Replace character 0xABCD with $Char[0xAB][0xCD], loading
+  #    the table 0xAB as needed.
+  #
+  #======================================================================
+  #
+  # Yes, that's dense code.  It's the warp core!
+  # Here is an expansion into pseudocode... as best as I can manage it...
+  #
+  #     $character = $1;
+  #     $charnum = ord($character);
+  #     $charnum_lowbits  = $charnum & 255;
+  #     $charnum_highbits = $charnum >> 8;
+  #  
+  #     $table_ref = $Char->[$charnum_highbits];
+  #  
+  #     if($table_ref) {
+  #       # As expected, we got the arrayref for this table.
+  #     } else {
+  #       # Uhoh, we couldn't find the arrayref for this table.
+  #       # So we call t($character).
+  #       #  It loads a table.  Namely, it does:
+  #       Load_Table_For( $charnum_highbits );
+  #        # ...which does magic, and puts something in
+  #        #     $Char->[$charnum_highbits],
+  #        #     so NOW we actually CAN do:
+  #       $table_ref = $Char->[$charnum_highbits];
+  #     }
+  #     
+  #     $for_this_char
+  #       = $table_ref->[ $charnum_lowbits ];
+  #
+  #     # Although the syntax we actually use is the odd
+  #      but COMPLETE EQUIVALENT to this syntax:
+  #  
+  #     $for_this_char
+  #       = ${ $table_ref }[ $charnum_lowbits ];
+  #     
+  #     and $for_this_char is the replacement text for this
+  #      character, in:
+  #      $n =~ s~(char)~replacement~egs
+  #
+  #  (And why did I use s~x~y~ instead of s/x/y/ ?
+  #  It's all the same for Perl: perldoc perlretut says:
+  #       As with the match "m//" operator, "s///" can 
+  #       use other delimiters, such as "s!!!" and "s{}{}", 
+  #  I didn't do it for sake of obscurity. I think it's just to
+  #  keep my editor's syntax highlighter from crashing,
+  #  which was a problem with s/// when the insides are as gory
+  #  as we have here.
+
   return unless defined wantarray; # void context
   return @_ if wantarray;  # normal list context -- return the copies
   # Else normal scalar context:
@@ -49,60 +113,134 @@ sub unidecode {
   return join '', @_;      # rarer fallthru: a list in, but a scalar out.
 }
 
-sub t {
- # load (and return) a char table for this character
- # this should get called only once per table per session.
- my $bank = ord($_[0]) >> 8;
- return $Char[$bank] if $Char[$bank];
+#======================================================================
+
+sub make_placeholder_map {
+  return [( $UNKNOWN ) x $TABLE_SIZE ];
+}
+sub make_placeholder_map_nulls {
+  return [( "" ) x $TABLE_SIZE ];
+}
+
+#======================================================================
+
+sub t {   # "t" is for "t"able.
+  # Load (and return) a char table for this character
+  # this should get called only once per table per session.
+  my $bank = ord($_[0]) >> 8;
+  return $Char[$bank] if $Char[$bank];
  
-        {
-           DEBUG and printf "Loading %s::x%02x\n", __PACKAGE__, $bank;
-           local $SIG{'__DIE__'};
-           eval(sprintf 'require %s::x%02x;', __PACKAGE__, $bank);
-        }
+  load_bank($bank);
         
-        # Now see how that fared...
-        if(ref($Char[$bank] || '') ne 'ARRAY') {
-          DEBUG > 1 and print
-            " Loading failed for bank $bank (err $@).  Using null map.\n";
-          return $Char[$bank] = $NULLMAP;
-        } else {
-          DEBUG > 1 and print " Succeeded.\n";
-          if(DEBUG) {
-            # Sanity-check it:
-            my $cb = $Char[$bank];
-            unless(@$cb == 256) {
-              printf "Block x%02x is of size %d -- chopping to 256\n",
-                  scalar(@$cb);
-              $#$cb = 255;   # pre-extend the array, or chop it to size.
-            }
-            for(my $i = 0; $i < 256; ++$i) {
-              unless(defined $cb->[$i]) {
-                printf "Undef at position %d in block x%02x\n",
-                  $i, $bank;
-                $cb->[$i] = '';
-              }
-            }
-          }
-          return $Char[$bank];
-        }
+  # Now see how that fared...
+
+  if(ref($Char[$bank] || '') ne 'ARRAY') {
+    DEBUG > 1 and print
+      " Loading failed for bank $bank (err $@).  Using null map.\n";
+    return $Char[$bank] = $NULLMAP;
+  }
+
+
+  DEBUG > 1 and print " Loading succeeded.\n";
+  my $cb = $Char[$bank];
+
+  # Sanity-check it:
+  if(@$cb == $TABLE_SIZE) {
+    # As expected.  Fallthru.
+
+  } else {
+    if($Note_Broken_Tables) {
+      $Broken_Table_Size{$bank} = scalar @$cb;
+      $Broken_Table_Copy{$bank} = [ @$cb ];
+    }
+
+    if(@$cb > $TABLE_SIZE) {
+      DEBUG and print "Bank $bank is too large-- it has ", scalar @$cb,
+        " entries in it.  Pruning.\n";
+      splice @$cb, $TABLE_SIZE;
+       # That two-argument form splices everything off into nowhere,
+       #  starting with the first overage character.
+
+    } elsif( @$cb < $TABLE_SIZE) {
+      DEBUG and print "Bank $bank is too small-- it has ", scalar @$cb,
+        " entries in it.  Now padding it.\n";
+      if(@$cb == 0) {
+        DEBUG and print "  (Yes, ZERO entries!)\n";
+      }
+      push @$cb,
+         ( $UNKNOWN )  x  ( $TABLE_SIZE - @$cb)
+         # i.e., however many items, times the deficit
+      ;
+      # And fallthru...
+
+    } else {
+      die "UNREACHABLE CODE HERE (INSANE)";
+    }
+  }
+
+  # Check for undefness in block:
+
+  for(my $i = 0; $i < $TABLE_SIZE; ++$i) {
+    unless(defined $cb->[$i]) {
+      DEBUG and printf "Undef at position %d in block x%02x\n",
+        $i, $bank;
+      $cb->[$i] = '';
+    }
+  }
+
+  return $Char[$bank];
 }
 
-#--------------------------------------------------------------------------
+#-----------------------------------------------------------------------
+
+our $eval_loaded_okay;
+
+sub load_bank {
+
+  # This is in its own sub, for sake of sweeping the scary thing
+  #  (namely, a call to eval) under the rug.
+  # I.e., to paraphrase what Larry Wall once said to me: if
+  #  you're going to do something odd, maybe you should do it
+  #  in private.
+
+  my($banknum) = @_;  # just as an integer value
+
+  DEBUG and printf
+      "# Eval-loading %s::x%02x ...\n";
+
+  $eval_loaded_okay = 0;
+  my $code = 
+      sprintf( "require %s::x%02x; \$eval_loaded_okay = 1;\n",
+               __PACKAGE__,
+              $banknum);
+
+  {
+    local $SIG{'__DIE__'};
+    eval($code);
+  }
+
+  return 1 if $eval_loaded_okay;
+  return 0;
+}
+
+#======================================================================
+
 1;
 __END__
 
+=encoding utf8
+
 =head1 NAME
 
-Text::Unidecode -- US-ASCII transliterations of Unicode text
+Text::Unidecode -- plain ASCII transliterations of Unicode text
 
 =head1 SYNOPSIS
 
   use utf8;
   use Text::Unidecode;
   print unidecode(
-    "\x{5317}\x{4EB0}\n"
-     # those are the Chinese characters for Beijing
+    "北亰\n"
+    # Chinese characters for Beijing (U+5317 U+4EB0)
   );
   
   # That prints: Bei Jing 
@@ -110,7 +248,7 @@ Text::Unidecode -- US-ASCII transliterations of Unicode text
 =head1 DESCRIPTION
 
 It often happens that you have non-Roman text data in Unicode, but
-you can't display it -- usually because you're trying to
+you can't display it-- usually because you're trying to
 show it to a user via an application that doesn't support Unicode,
 or because the fonts you need aren't accessible.  You could
 represent the Unicode characters as "???????" or
@@ -121,19 +259,34 @@ What Text::Unidecode provides is a function, 
C<unidecode(...)> that
 takes Unicode data and tries to represent it in US-ASCII characters
 (i.e., the universally displayable characters between 0x00 and
 0x7F).  The representation is
-almost always an attempt at I<transliteration> -- i.e., conveying,
+almost always an attempt at I<transliteration>-- i.e., conveying,
 in Roman letters, the pronunciation expressed by the text in
 some other writing system.  (See the example in the synopsis.)
 
-Unidecode's ability to transliterate is limited by two factors:
+
+NOTE:
+
+To make sure your perldoc/Pod viewing setup for viewing this page is
+working: The six-letter word "résumé" should look like "resume" with
+an "/" accent on each "e".
+
+For further tests, and help if that doesn't work, see below,
+L</A POD ENCODING TEST>.
+
+
+=head1 DESIGN PHILOSOPHY
+
+Unidecode's ability to transliterate from a given language is limited
+by two factors:
 
 =over
 
-=item * The amount and quality of data in the original
+=item * The amount and quality of data in the written form of the
+original language
 
 So if you have Hebrew data
 that has no vowel points in it, then Unidecode cannot guess what
-vowels should appear in a pronounciation.
+vowels should appear in a pronunciation.
 S f y hv n vwls n th npt, y wn't gt ny vwls
 n th tpt.  (This is a specific application of the general principle
 of "Garbage In, Garbage Out".)
@@ -176,22 +329,22 @@ is exported by default.  It can be used in a variety of 
calling contexts:
 
 =over
 
-=item C<$out = unidecode($in);> # scalar context
+=item C<$out = unidecode( $in );> # scalar context
 
 This returns a copy of $in, transliterated.
 
-=item C<$out = unidecode(@in);> # scalar context
+=item C<$out = unidecode( @in );> # scalar context
 
-This is the same as C<$out = unidecode(join '', @in);>
+This is the same as C<$out = unidecode(join "", @in);>
 
-=item C<@out = unidecode(@in);> # list context
+=item C<@out = unidecode( @in );> # list context
 
 This returns a list consisting of copies of @in, each transliterated.  This
 is the same as C<@out = map scalar(unidecode($_)), @in;>
 
-=item C<unidecode(@items);> # void context
+=item C<unidecode( @items );> # void context
 
-=item C<unidecode(@bar, $foo, @baz);> # void context
+=item C<unidecode( @bar, $foo, @baz );> # void context
 
 Each item on input is replaced with its transliteration.  This
 is the same as C<for(@bar, $foo, @baz) { $_ = unidecode($_) }>
@@ -201,9 +354,10 @@ is the same as C<for(@bar, $foo, @baz) { $_ = 
unidecode($_) }>
 You should make a minimum of assumptions about the output of
 C<unidecode(...)>.  For example, if you assume an all-alphabetic
 (Unicode) string passed to C<unidecode(...)> will return an all-alphabetic
-string, you're wrong -- some alphabetic Unicode characters are
+string, you're wrong-- some alphabetic Unicode characters are
 transliterated as strings containing punctuation (e.g., the
-Armenian letter at 0x0539 currently transliterates as C<T`>.
+Armenian letter "Թ" (U+0539), currently transliterates as "T`"
+(capital-T then a backtick).
 
 However, these are the assumptions you I<can> make:
 
@@ -217,20 +371,20 @@ C<unidecode(...)> is 7-bit pure.
 =item *
 
 The output of C<unidecode(...)> always consists entirely of US-ASCII
-characters -- i.e., characters 0x0000 - 0x007F.
+characters-- i.e., characters 0x0000 - 0x007F.
 
 =item *
 
 All Unicode characters translate to a sequence of (any number of)
 characters that are newline ("\n") or in the range 0x0020-0x007E.  That
-is, no Unicode character translates to "\x01", for example.  (Altho if
+is, no Unicode character translates to "\x01", for example.  (Although if
 you have a "\x01" on input, you'll get a "\x01" in output.)
 
 =item *
 
-Yes, some transliterations produce a "\n" -- but just a few, and only
-with good reason.  Note that the value of newline ("\n") varies
-from platform to platform -- see L<perlport/perlport>.
+Yes, some transliterations produce a "\n" but it's just a few, and
+only with good reason.  Note that the value of newline ("\n") varies
+from platform to platform-- see L<perlport>.
 
 =item *
 
@@ -239,31 +393,42 @@ Some Unicode characters may transliterate to nothing 
(i.e., empty string).
 =item *
 
 Very many Unicode characters transliterate to multi-character sequences.
-E.g., Han character 0x5317 transliterates as the four-character string
+E.g., Unihan character U+5317, "北", transliterates as the four-character string
 "Bei ".
 
 =item *
 
-Within these constraints, I may change the transliteration of characters
+Within these constraints, I<I may change> the transliteration of characters
 in future versions.  For example, if someone convinces me that
-the Armenian letter at 0x0539, currently transliterated as "T`", would
-be better transliterated as "D", I may well make that change.
+that the Armenian letter "Թ", currently transliterated as "T`", would
+be better transliterated as "D", I I<may> well make that change.
+
+=item *
+
+Unfortunately, there are many characters that Unidecode doesn't know a
+transliteration for.  This is generally because the character has been
+added since I last revised the Unidecode data tables.  I'm I<always>
+catching up!
 
 =back
 
 =head1 DESIGN GOALS AND CONSTRAINTS
 
-Text::Unidecode is meant to be a transliterator-of-last resort,
+Text::Unidecode is meant to be a transliterator of last resort,
 to be used once you've decided that you can't just display the
-Unicode data as is, and once you've decided you don't have a
-more clever, language-specific transliterator available.  It
-transliterates context-insensitively -- that is, a given character is
+Unicode data as is, I<and once you've decided you don't have a
+more clever, language-specific transliterator available,> or once
+you've I<already applied> smarter algorithms or mappings that you prefer
+and you now just want Unidecode to do cleanup.
+
+Unidecode
+transliterates context-insensitively-- that is, a given character is
 replaced with the same US-ASCII (7-bit ASCII) character or characters,
-no matter what the surrounding character are.
+no matter what the surrounding characters are.
 
 The main reason I'm making Text::Unidecode work with only
 context-insensitive substitution is that it's fast, dumb, and
-straightforward enough to be feasable.  It doesn't tax my
+straightforward enough to be feasible.  It doesn't tax my
 (quite limited) knowledge of world languages.  It doesn't require
 me writing a hundred lines of code to get the Thai syllabification
 right (and never knowing whether I've gotten it wrong, because I
@@ -275,11 +440,11 @@ moreover, context-insensitive substitution is still 
mostly useful,
 but still clearly couldn't be mistaken for authoritative.
 
 Text::Unidecode is an example of the 80/20 rule in
-action -- you get 80% of the usefulness using just 20% of a
+action-- you get 80% of the usefulness using just 20% of a
 "real" solution.
 
 A "real" approach to transliteration for any given language can
-involve such increasingly tricky contextual factors as these
+involve such increasingly tricky contextual factors as these:
 
 =over
 
@@ -292,7 +457,7 @@ by some diacritic character.
 =item Syllables
 
 A character "X" at end of a syllable could mean something
-different from when it's at the start -- which is especially problematic
+different from when it's at the start-- which is especially problematic
 when the language involved doesn't explicitly mark where one syllable
 stops and the next starts.
 
@@ -332,12 +497,85 @@ Out of a desire to avoid being mired in I<any> of these 
kinds of
 contextual factors, I chose to exclude I<all of them> and just stick
 with context-insensitive replacement.
 
+
+=head1 A POD ENCODING TEST
+
+=over
+
+=item *
+
+"Brontë" is six characters that should look like "Bronte", but
+with double-dots on the "e" character.
+
+=item *
+
+"Résumé" is six characters that should look like "Resume", but
+with /-shaped accents on the "e" characters.
+
+=item *
+
+"læti" should be I<four> letters long-- the second letter should not
+be two letters "ae", but should be a single letter that
+looks like an "a" entirely fused with an "e".
+
+=item *
+
+"χρονος" is six Greek characters that should look kind of like: xpovoc
+
+=item *
+
+"КАК ВАС ЗОВУТ" is three short Russian words that should look a
+lot like: KAK BAC 3OBYT
+
+=item *
+
+"ടധ" is two Malayalam characters that should look like: sw
+
+=item *
+
+"丫二十一" is four Chinese characters that should look like: C<Y=+->
+
+=item *
+
+"Hello" is five characters that should look like: Hello
+
+=back
+
+If all of those come out right, your Pod viewing setup is working
+fine-- welcome to the 2010s!  If those are full of garbage characters,
+consider viewing this page as HTML at
+L<https://metacpan.org/pod/Text::Unidecode>
+or
+L<http://search.cpan.org/perldoc?Text::Unidecode>
+
+
+If things look mostly okay, but the Malayalam and/or the Chinese are
+just question-marks or empty boxes, it's probably just that your
+computer lacks the fonts for those.
+
 =head1 TODO
 
-Things that need tending to are detailed in the TODO.txt file, included
-in this distribution.  Normal installs probably don't leave the TODO.txt
-lying around, but if nothing else, you can see it at
-http://search.cpan.org/search?dist=Text::Unidecode
+Lots:
+
+* Rebuild the Unihan database.  (Talk about hitting a moving target!)
+
+* Add tone-numbers for Mandarin hanzi?  Namely: In Unihan, when tone
+marks are present (like in "kMandarin: dào", should I continue to
+transliterate as just "Dao", or should I put in the tone number:
+"Dao4"?  It would be pretty jarring to have digits appear where
+previously there was just alphabetic stuff-- But tone numbers
+make Chinese more readable.
+(I have a clever idea about doing this, for Unidecode v2 or v3.)
+
+* Start dealing with characters over U+FFFF.  Cuneiform! Emojis! Whatever!
+
+* Fill in all the little characters that have crept into the Misc Symbols
+Etc blocks.
+
+* More things that need tending to are detailed in the TODO.txt file,
+included in this distribution.  Normal installs probably don't leave
+the TODO.txt lying around, but if nothing else, you can see it at
+L<http://search.cpan.org/search?dist=Text::Unidecode>
 
 =head1 MOTTO
 
@@ -345,26 +583,220 @@ The Text::Unidecode motto is:
 
   It's better than nothing!
 
-...in both meanings: 1) seeing the output of C<unidecode(...)> is
+...in I<both> meanings: 1) seeing the output of C<unidecode(...)> is
 better than just having all font-unavailable Unicode characters
 replaced with "?"'s, or rendered as gibberish; and 2) it's the
 worst, i.e., there's nothing that Text::Unidecode's algorithm is
-better than.
+better than.  All sensible transliteration algorithms (like for
+German, see below) are going to be smarter than Unidecode's.
+
+=head1 WHEN YOU DON'T LIKE WHAT UNIDECODE DOES
+
+I will repeat the above, because some people miss it:
+
+Text::Unidecode is meant to be a transliterator of I<last resort,>
+to be used once you've decided that you can't just display the
+Unicode data as is, I<and once you've decided you don't have a
+more clever, language-specific transliterator available>-- or once
+you've I<already applied> a smarter algorithm and now just want Unidecode
+to do cleanup.
+
+In other words, when you don't like what Unidecode does, I<do it
+yourself.>  Really, that's what the above says.  Here's how
+you would do this for German, for example:
+
+In German, there's the typographical convention that an umlaut (the
+double-dots on: ä ö ü) can be written as an "-e", like with "Schön"
+becoming "Schoen".  But Unidecode doesn't do that-- I have Unidecode
+simply drop the umlaut accent and give back "Schon".
+
+(I chose this not because I'm a big meanie, but because
+I<generally> changing "ü" to "ue" is disastrous for all text
+that's I<not in German>.  Finnish "Hyvää päivää" would turn
+into "Hyvaeae paeivaeae".  And I discourage you from being I<yet
+another> German who emails me, trying to impel me to consider
+a typographical nicety of German to be more important than
+I<all other languages>.)
+
+If you know that the text you're handling is probably in German, and
+you want to apply the "umlaut becomes -e" rule, here's how to do it
+for yourself (and then use Unidecode as I<the fallback> afterwards):
+
+  use utf8;  # <-- probably necessary.
+
+  our( %German_Characters ) = qw(
+   Ä AE   ä ae
+   Ö OE   ö oe
+   Ü UE   ü ue
+   ß ss 
+  );
+  
+  use Text::Unidecode qw(unidecode);
+  
+  sub german_to_ascii {
+    my($german_text) = @_;
+    
+    $german_text =~
+      s/([ÄäÖöÜüß])/$German_Characters{$1}/g;
+    
+    # And now, as a *fallthrough*:
+    $german_text = unidecode( $german_text );
+    return $german_text;
+  }
+
+To pick another example, here's something that's not about a
+specific language, but simply having a preference that may or
+may not agree with Unidecode's (i.e., mine).  Consider the "¥"
+symbol.  Unidecode changes that to "Y=".  If you want "¥" as
+"YEN", then...
+
+  use Text::Unidecode qw(unidecode);
+
+  sub my_favorite_unidecode {
+    my($text) = @_;
+    
+    $text =~ s/¥/YEN/g;
+    
+    # ...and anything else you like, such as:
+    $text =~ s/€/Euro/g;
+    
+    # And then, as a fallback,...
+    $text = unidecode($text);
+     
+    return $text;    
+  }
+
+Then if you do:
+
+  print my_favorite_unidecode("You just won ¥250,000 and €40,000!!!");
+
+...you'll get:
+
+  You just won YEN250,000 and Euro40,000!!!
+
+...just as you like it.
+
+(By the way, the reason I<I> don't have Unidecode just turn "¥" into "YEN"
+is that the same symbol also stands for yuan, the Chinese
+currency.  A "Y=" is nicely, I<safely> neutral as to whether
+we're talking about yen or yuan-- Japan, or China.)
+
+Another example: for hanzi/kanji/hanja, I have designed
+Unidecode to transliterate according to the value that that
+character has in Mandarin (otherwise Cantonese,...).  Some
+users have complained that applying Unidecode to Japanese
+produces gibberish.
+
+To make a long story short: transliterating from Japanese is
+I<difficult> and it requires a I<lot> of context-sensitivity.
+If you have text that you're fairly sure is in
+Japanese, you're going to have to use a Japanese-specific
+algorithm to transliterate Japanese into ASCII.  (And then
+you can call Unidecode on the output from that-- it is useful
+for, for example, turning fullwidth characters into
+their normal (ASCII) forms.
+
+(Note, as of August 2016: I have titanic but tentative plans for
+making the value of Unihan characters be something you could set
+parameters for at runtime, in changing the order of "Mandarin else
+Cantonese else..." in the value retrieval.  Currently that preference
+list is hardwired on my end, at module-build time.  Other options I'm
+considering allowing for: whether the Mandarin and Cantonese values
+should have the tone numbers on them; whether every Unihan value
+should have a terminal space; and maybe other clever stuff I haven't
+thought of yet.)
+
 
 =head1 CAVEATS
 
 If you get really implausible nonsense out of C<unidecode(...)>, make
 sure that the input data really is a utf8 string.  See
-L<perlunicode/perlunicode>.
+L<perlunicode> and L<perlunitut>.
+
+I<Unidecode will work disastrously bad on Japanese.> That's because
+Japanese is very very hard.  To extend the Unidecode motto,
+Unidecode is better than nothing, and with Japanese, I<just barely!>
+
+On pure Mandarin, Unidecode will frequently give odd values--
+that's because a single hanzi can have several readings, and Unidecode
+only knows what the Unihan database says is the most common one.
+
 
 =head1 THANKS
 
-Thanks to Harald Tveit Alvestrand,
-Abhijit Menon-Sen, and Mark-Jason Dominus.
+Thanks to (in only the sloppiest of sorta-chronological order): 
+Jordan Lachler, Harald Tveit Alvestrand, Melissa Axelrod,
+Abhijit Menon-Sen, Mark-Jason Dominus, Joe Johnston,
+Conrad Heiney, fileformat.info,
+Philip Newton, 唐鳳, Tomaž Šolc, Mike Doherty, JT Smith and the
+MadMongers, Arden Ogg, Craig Copris,
+David Cusimano, Brendan Byrd, Hex Martin,
+and
+I<many>
+other pals who have helped with the ideas or values for Unidecode's
+transliterations, or whose help has been in the
+secret F5 tornado that constitutes the internals of Unidecode's
+implementation.
+
+And thank you to the many people who have encouraged me to plug away
+at this project.  A decade went by before I had any idea that more
+than about 4 or 5 people were using or getting any value
+out of Unidecode.  I am told that actually
+my figure was missing some zeroes on the end!
+
+
+=head1 PORTS
+
+Some wonderful people have ported Unidecode to other languages!
+
+=over
+
+=item *
+
+Python: L<https://pypi.python.org/pypi/Unidecode>
+
+=item *
+
+PHP: L<https://github.com/silverstripe-labs/silverstripe-unidecode>
+
+=item *
+
+Ruby: L<http://www.rubydoc.info/gems/unidecode/1.0.0/frames>
+
+=item *
+
+JavaScript: L<https://www.npmjs.org/package/unidecode>
+
+=item *
+
+Java: L<https://github.com/xuender/unidecode>
+
+=back
+
+I can't vouch for the details of each port, but these are clever
+people, so I'm sure they did a fine job.
+
 
 =head1 SEE ALSO
 
-Unicode Consortium: http://www.unicode.org/
+An article I wrote for I<The Perl Journal> about
+Unidecode:  L<http://interglacial.com/tpj/22/>
+(B<READ IT!>)
+
+Jukka Korpela's L<http://www.cs.tut.fi/~jkorpela/fui.html8> which is
+brilliantly useful, and its code is brilliant (so, view source!).  I
+was I<kinda> thinking about maybe doing something I<sort of> like that
+for the v2.x versions of Unicode-- but now he's got me convinced that
+I should go right ahead.
+
+Tom Christiansen's
+I<Perl Unicode Cookbook>,
+L<http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html>
+
+Unicode Consortium: L<http://www.unicode.org/>
+
+Searchable Unihan database:
+L<http://www.unicode.org/cgi-bin/GetUnihanData.pl>
 
 Geoffrey Sampson.  1990.  I<Writing Systems: A Linguistic Introduction.>
 ISBN: 0804717567
@@ -378,9 +810,12 @@ Congress.]
 Rupert Snell.  2000.  I<Beginner's Hindi Script (Teach Yourself
 Books).>  ISBN: 0658009109
 
-=head1 COPYRIGHT AND DISCLAIMERS
+=head1 LICENSE
+
+Copyright (c) 2001, 2014, 2015, 2016 Sean M. Burke.
 
-Copyright (c) 2001 Sean M. Burke. All rights reserved.
+Unidecode is distributed under the Perl Artistic License
+( L<perlartistic> ), namely:
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.
@@ -389,12 +824,34 @@ This program is distributed in the hope that it will be 
useful, but
 without any warranty; without even the implied warranty of
 merchantability or fitness for a particular purpose.
 
+=head1 DISCLAIMER
+
 Much of Text::Unidecode's internal data is based on data from The
-Unicode Consortium, with which I am unafiliated.
+Unicode Consortium, with which I am unaffiliated.  A good deal of the
+internal data comes from suggestions that have been contributed by
+people other than myself.
+
+The views and conclusions contained in my software and documentation
+are my own-- they should not be interpreted as representing official
+policies, either expressed or implied, of The Unicode Consortium; nor
+should they be interpreted as necessarily the views or conclusions of
+people who have contributed to this project.
+
+Moreover, I discourage you from inferring that choices that I've made
+in Unidecode reflect political or linguistic prejudices on my
+part.  Just because Unidecode doesn't do great on your language,
+or just because it might seem to do better on some another
+language, please don't think I'm out to get you!
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Your pal, Sean M. Burke C<sburke@cpan.org>
+
+=head1 O HAI!
+
+If you're using Unidecode for anything interesting, be cool and
+email me, I'm always curious what people use this for.  (The
+answers so far have surprised me!)
 
 =cut
 
@@ -429,4 +886,3 @@ The lyrics are:
        and punctuation we adore!
 
 # End.
-
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x00.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x00.pm
index 788ec0c24b..e3f46f6b3c 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x00.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x00.pm
@@ -1,20 +1,77 @@
-# Time-stamp: "Sat Jul 14 00:27:20 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2015-10-15 07:49:48 MDT sburke@cpan.org"
 $Text::Unidecode::Char[0x00] = [
+# BLOCK U+0000
+
 qq{\x00}, qq{\x01}, qq{\x02}, qq{\x03}, qq{\x04}, qq{\x05}, qq{\x06}, 
qq{\x07}, qq{\x08}, qq{\x09}, qq{\x0a}, qq{\x0b}, qq{\x0c}, qq{\x0d}, qq{\x0e}, 
qq{\x0f},
+#^00      ^01       ^02       ^03       ^04       ^05       ^06       ^07      
 ^08       ^09       ^0a       ^0b       ^0c       ^0d       ^0e       ^0f      
 
+
 qq{\x10}, qq{\x11}, qq{\x12}, qq{\x13}, qq{\x14}, qq{\x15}, qq{\x16}, 
qq{\x17}, qq{\x18}, qq{\x19}, qq{\x1a}, qq{\x1b}, qq{\x1c}, qq{\x1d}, qq{\x1e}, 
qq{\x1f},
+#^10      ^11       ^12       ^13       ^14       ^15       ^16       ^17      
 ^18       ^19       ^1a       ^1b       ^1c       ^1d       ^1e       ^1f      
 
+
 ' ', qq{!}, qq{"}, qq{#}, qq{\$}, qq{%}, qq{&}, qq{'}, qq{(}, qq{)}, qq{*}, 
qq{+}, qq{,}, qq{-}, qq{.}, qq{/},
+#^20  ^21    ^22    ^23    ^24     ^25    ^26    ^27    ^28    ^29    ^2a    
^2b    ^2c ^2d  ^2e    ^2f    ^30    
+
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', qq{:}, qq{;}, qq{<}, qq{=}, 
qq{>}, qq{?},
+#^30  ^31  ^32  ^33  ^34  ^35  ^36  ^37  ^38  ^39  ^3a    ^3b    ^3c    ^3d    
^3e    ^3f    
+
 qq{\@}, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 
'O',
-'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', qq{]}, qq{\\}, qq{]}, 
qq{^}, qq{_},
+#^40    ^41  ^42  ^43  ^44  ^45  ^46  ^47  ^48  ^49  ^4a  ^4b  ^4c  ^4d  ^4e  
^4f  
+
+'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', qq{[}, qq{\\}, qq{]}, 
qq{^}, qq{_},
+#^50  ^51  ^52  ^53  ^54  ^55  ^56  ^57  ^58  ^59  ^5a  ^5b    ^5c     ^5d    
^5e    ^5f    
+
 qq{`}, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 
'o',
+#^60   ^61  ^62  ^63  ^64  ^65  ^66  ^67  ^68  ^69  ^6a  ^6b  ^6c  ^6d  ^6e  
^6f  
+
 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', qq{\{}, qq{|}, qq{\}}, 
qq{~}, qq{\x7f},
-"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
-"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+#^70  ^71  ^72  ^73  ^74  ^75  ^76  ^77  ^78  ^79  ^7a  ^7b     ^7c    ^7d     
^7e    ^7f       
+
+#======================================================================
+
+
+# Strictly speaking, these are the Unicode values:
+# "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+# ^80 ^81 ^82 ^83 ^84 ^85 ^86 ^87 ^88 ^89 ^8a ^8b ^8c ^8d ^8e ^8f  
+# "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+# ^90 ^91 ^92 ^93 ^94 ^95 ^96 ^97 ^98 ^99 ^9a ^9b ^9c ^9d ^9e ^9f  
+#
+# But I've decided to tolerate Win-1252 input:
+
+       q{EUR},  '',      q{,},   q{f},
+       q{,,},   q{...},  q{+},   q{++},
+
+       q{^},    q{%0},   q{S},   q{<},
+       q{OE},   '',      q{Z},   '',
+
+       '',      q{'},    q{'},   q{"},
+       q{"},    q{*},    q{-},   q{--},
+
+       q{~},    q{tm},   q{s},   q{>},
+       q{oe},   '',      q{z},   q{Y},
+
+
+# See: https://en.wikipedia.org/wiki/Latin-1_Supplement_%28Unicode_block%29
+
+
+#======================================================================
+# And now, back to Latin-1 = Unicode values...
+
 ' ', qq{!}, qq{C/}, 'PS', qq{\$?}, qq{Y=}, qq{|}, 'SS', qq{"}, qq{(c)}, 'a', 
qq{<<}, qq{!}, "", qq{(r)}, qq{-},
+#^a0  ^a1    ^a2     ^a3   ^a4      ^a5     ^a6    ^a7   ^a8    ^a9      ^aa  
^ab     ^ac   ^ad  ^ae      ^af    
+
 'deg', qq{+-}, '2', '3', qq{'}, 'u', 'P', qq{*}, qq{,}, '1', 'o', qq{>>}, 
qq{1/4}, qq{1/2}, qq{3/4}, qq{?},
+#^b0   ^b1     ^b2  ^b3  ^b4    ^b5  ^b6  ^b7    ^b8 ^b9  ^ba  ^bb  ^bc     
^bd      ^be      ^bf      ^c0    
+
 'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 
'I',
-'D', 'N', 'O', 'O', 'O', 'O', 'O', 'x', 'O', 'U', 'U', 'U', 'U', 'U', 'Th', 
'ss',
+#^c0  ^c1  ^c2  ^c3  ^c4  ^c5  ^c6   ^c7  ^c8  ^c9  ^ca  ^cb  ^cc  ^cd  ^ce  
^cf  
+
+'D', 'N', 'O', 'O', 'O', 'O', 'O', 'x', 'O', 'U', 'U', 'U', 'U', 'Y', 'Th', 
'ss',
+#^d0  ^d1  ^d2  ^d3  ^d4  ^d5  ^d6  ^d7  ^d8  ^d9  ^da  ^db  ^dc  ^dd  ^de   
^df   
+
 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 
'i',
+#^e0  ^e1  ^e2  ^e3  ^e4  ^e5  ^e6   ^e7  ^e8  ^e9  ^ea  ^eb  ^ec  ^ed  ^ee  
^ef  
+
 'd', 'n', 'o', 'o', 'o', 'o', 'o', qq{/}, 'o', 'u', 'u', 'u', 'u', 'y', 'th', 
'y',
+#^f0  ^f1  ^f2  ^f3  ^f4  ^f5  ^f6  ^f7    ^f8  ^f9  ^fa  ^fb  ^fc  ^fd  ^fe   
^ff  
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x01.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x01.pm
index a42b22eee7..98a73c09aa 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x01.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x01.pm
@@ -1,9 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:20 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2014-07-09 03:12:21 MDT sburke@cpan.org"
 $Text::Unidecode::Char[0x01] = [
 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd',
 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g',
 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i',
-'I', 'i', 'IJ', "", 'J', 'j', 'K', 'k', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L',
+'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 
'L',
 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', qq{'n}, 'ng', 'NG', 'O', 'o', 
'O', 'o',
 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 
's',
 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x01] = [
 qq{|}, qq{||}, qq{|=}, qq{!}, 'DZ', 'Dz', 'dz', 'LJ', 'Lj', 'lj', 'NJ', 'Nj', 
'nj', 'A', 'a', 'I',
 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', qq{\@}, 'A', 
'a',
 'A', 'a', 'AE', 'ae', 'G', 'g', 'G', 'g', 'K', 'k', 'O', 'o', 'O', 'o', 'ZH', 
'zh',
-'j', 'DZ', 'D', 'dz', 'G', 'g', 'HV', 'W', 'N', 'n', 'A', 'a', 'AE', 'ae', 
'O', 'o',
+'j', 'DZ', 'Dz', 'dz', 'G', 'g', 'HV', 'W', 'N', 'n', 'A', 'a', 'AE', 'ae', 
'O', 'o',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x02.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x02.pm
index 53ce7e400c..160c269736 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x02.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x02.pm
@@ -1,20 +1,87 @@
-# Time-stamp: "Sat Jul 14 00:27:20 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:13:16 MDT"
 $Text::Unidecode::Char[0x02] = [
 'A', 'a', 'A', 'a', 'E', 'e', 'E', 'e', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o',
 'R', 'r', 'R', 'r', 'U', 'u', 'U', 'u', 'S', 's', 'T', 't', 'Y', 'y', 'H', 'h',
-'[?]', '[?]', 'OU', 'ou', 'Z', 'z', 'A', 'a', 'E', 'e', 'O', 'o', 'O', 'o', 
'O', 'o',
-'O', 'o', 'Y', 'y', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'N', 'd', 'OU', 'ou', 'Z', 'z', 'A', 'a', 'E', 'e', 'O', 'o', 'O', 'o', 'O', 
'o',
+'O', 'o', 'Y', 'y',
+
+'l',    # 0x34
+'n',    # 0x35
+'t',    # 0x36
+'j',    # 0x37
+'db',    # 0x38
+'qp',    # 0x39
+'A',    # 0x3a
+'C',    # 0x3b
+'c',    # 0x3c
+'L',    # 0x3d
+'T',    # 0x3e
+'s',    # 0x3f
+'z',    # 0x40
+
+'[?]', '[?]',
+
+'B',    # 0x43
+'U',    # 0x44
+'^',    # 0x45
+'E',    # 0x46
+'e',    # 0x47
+'J',    # 0x48
+'j',    # 0x49
+'q',    # 0x4a
+'q',    # 0x4b
+'R',    # 0x4c
+'r',    # 0x4d
+'Y',    # 0x4e
+'y',    # 0x4f
+
+
 'a', 'a', 'a', 'b', 'o', 'c', 'd', 'd', 'e', qq{\@}, qq{\@}, 'e', 'e', 'e', 
'e', 'j',
 'g', 'g', 'g', 'g', 'u', 'Y', 'h', 'h', 'i', 'i', 'I', 'l', 'l', 'l', 'lZ', 
'W',
-'W', 'm', 'n', 'n', 'n', 'o', 'OE', 'O', 'F', 'R', 'R', 'R', 'R', 'r', 'r', 
'R',
-'R', 'R', 's', 'S', 'j', 'S', 'S', 't', 't', 'U', 'U', 'v', qq{^}, 'W', 'Y', 
'Y',
+'W', 'm', 'n', 'n', 'n', 'o', 'OE', 'O', 'F', 
+
+'r', 'r', 'r', 'r', 
+'r', 'r', 'r',
+
+'R', 'R', 's', 'S', 'j', 'S', 'S', 't', 't', 'u', 'U', 'v', qq{^}, 'w', 'y', 
'Y',
 'z', 'z', 'Z', 'Z', qq{?}, qq{?}, qq{?}, 'C', qq{\@}, 'B', 'E', 'G', 'H', 'j', 
'k', 'L',
-'q', qq{?}, qq{?}, 'dz', 'dZ', 'dz', 'ts', 'tS', 'tC', 'fN', 'ls', 'lz', 'WW', 
qq{]]}, '[?]', '[?]',
-'k', 'h', 'j', 'r', 'r', 'r', 'r', 'w', 'y', qq{'}, qq{"}, qq{`}, qq{'}, 
qq{`}, qq{`}, qq{'},
+'q', qq{?}, qq{?}, 'dz', 'dZ', 'dz', 'ts', 'tS', 'tC', 'fN', 'ls', 'lz', 'WW', 
qq{]]},
+'h', 'h', 'h',
+'h', 'j', 'r', 'r', 'r', 'r', 'w', 'y', qq{'}, qq{"}, qq{`}, qq{'}, qq{`}, 
qq{`}, qq{'},
 qq{?}, qq{?}, qq{<}, qq{>}, qq{^}, 'V', qq{^}, 'V', qq{'}, qq{-}, qq{/}, 
qq{\\}, qq{,}, qq{_}, qq{\\}, qq{/},
 qq{:}, qq{.}, qq{`}, qq{'}, qq{^}, 'V', qq{+}, qq{-}, 'V', qq{.}, qq{\@}, 
qq{,}, qq{~}, qq{"}, 'R', 'X',
-'G', 'l', 's', 'x', qq{?}, "", "", "", "", "", "", "", 'V', qq{=}, qq{"}, 
'[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'G', 'l', 's', 'x', qq{?},
+
+
+# U+2e5 ...
+# ˥   ˦    ˧    ˨     ˩   ˪    ˫
+"5", "4", "3", "2",  "1", "/", "\\",
+
+ 'V', qq{=}, qq{"},
+
+
+'V',  # ˬ  02EF        MODIFIER LETTER LOW DOWN ARROWHEAD
+
+# ...and also 16 UPA modifiers:
+
+# ˰ ˱ ˲ ˳ ˴ ˵ ˶ ˷ ˸ ˹ ˺ ˻ ˼ ˽ ˾ ˿
+
+"^",   # 02F0  MODIFIER LETTER LOW UP ARROWHEAD
+"<",   # 02F1  MODIFIER LETTER LOW LEFT ARROWHEAD
+">",   # 02F2  MODIFIER LETTER LOW RIGHT ARROWHEAD
+"o",   # 02F3  MODIFIER LETTER LOW RING
+"`",   # 02F4  MODIFIER LETTER MIDDLE GRAVE ACCENT
+"``",  # 02F5  MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
+"//",  # 02F6  MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
+"~",   # 02F7  MODIFIER LETTER LOW TILDE
+":",   # 02F8  MODIFIER LETTER RAISED COLON
+"[-",  # 02F9  MODIFIER LETTER BEGIN HIGH TONE
+"-]",  # 02FA  MODIFIER LETTER END HIGH TONE
+"[_",  # 02FB  MODIFIER LETTER BEGIN LOW TONE
+"_]",  # 02FC  MODIFIER LETTER END LOW TONE
+"_",   # 02FD  MODIFIER LETTER SHELF
+"_",   # 02FE  MODIFIER LETTER OPEN SHELF
+"<",   # 02FF  MODIFIER LETTER LOW LEFT ARROW
+
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x03.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x03.pm
index 37342c6796..2564f7d316 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x03.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x03.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:20 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:21:04 MDT"
 $Text::Unidecode::Char[0x03] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
@@ -6,7 +6,24 @@ $Text::Unidecode::Char[0x03] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-"", "", "", '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+"", "", "", 
+
+#'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]',
+'a',    # 0x63
+'e',    # 0x64
+'i',    # 0x65
+'o',    # 0x66
+'u',    # 0x67
+'c',    # 0x68
+'d',    # 0x69
+'h',    # 0x6a
+'m',    # 0x6b
+'r',    # 0x6c
+'t',    # 0x6d
+'v',    # 0x6e
+'x',    # 0x6f
+
+
 '[?]', '[?]', '[?]', '[?]', qq{'}, qq{,}, '[?]', '[?]', '[?]', '[?]', "", 
'[?]', '[?]', '[?]', qq{?}, '[?]',
 '[?]', '[?]', '[?]', '[?]', "", "", 'A', qq{;}, 'E', 'E', 'I', '[?]', 'O', 
'[?]', 'U', 'O',
 'I', 'A', 'B', 'G', 'D', 'E', 'Z', 'E', 'Th', 'I', 'K', 'L', 'M', 'N', 'Ks', 
'O',
@@ -15,6 +32,15 @@ $Text::Unidecode::Char[0x03] = [
 'p', 'r', 's', 's', 't', 'u', 'ph', 'kh', 'ps', 'o', 'i', 'u', 'o', 'u', 'o', 
'[?]',
 'b', 'th', 'U', 'U', 'U', 'ph', 'p', qq{&}, '[?]', '[?]', 'St', 'st', 'W', 
'w', 'Q', 'q',
 'Sp', 'sp', 'Sh', 'sh', 'F', 'f', 'Kh', 'kh', 'H', 'h', 'G', 'g', 'CH', 'ch', 
'Ti', 'ti',
-'k', 'r', 'c', 'j', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
+
+#03F0:
+ # ϰ ϱ ϲ ϳ  
+ 'k', 'r', 'c', 'j',
+ # ϴ ϵ ϶ Ϸ 
+ 'TH', 'e', 'e', 'Sh',
+ # ϸ Ϲ Ϻ ϻ
+ 'sh', 's', '[?]', '[?]',
+ # ϼ Ͻ Ͼ Ͽ
+ 'r/', 'S', 'S.', 'S.',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x04.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x04.pm
index 190b7821f7..39d841e475 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x04.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x04.pm
@@ -1,9 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:24:41 MDT"
 $Text::Unidecode::Char[0x04] = [
-'Ie', 'Io', 'Dj', 'Gj', 'Ie', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 
'I', 'U', 'Dzh',
-'A', 'B', 'V', 'G', 'D', 'Ie', 'Zh', 'Z', 'I', 'I', 'K', 'L', 'M', 'N', 'O', 
'P',
+'Ie', 'Io', 'Dj', 'Gj', 'E', 'Dz', 'I', 'Yi', 'J', 'Lj', 'Nj', 'Tsh', 'Kj', 
'I', 'U', 'Dzh',
+'A', 'B', 'V', 'G', 'D', 'E', 'Zh', 'Z', 'I', 'I', 'K', 'L', 'M', 'N', 'O', 
'P',
 'R', 'S', 'T', 'U', 'F', 'Kh', 'Ts', 'Ch', 'Sh', 'Shch', "", 'Y', qq{'}, 'E', 
'Iu', 'Ia',
-'a', 'b', 'v', 'gh', 'd', 'ie', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 
'p',
+'a', 'b', 'v', 'g', 'd', 'e', 'zh', 'z', 'i', 'i', 'k', 'l', 'm', 'n', 'o', 
'p',
 'r', 's', 't', 'u', 'f', 'kh', 'ts', 'ch', 'sh', 'shch', "", 'y', qq{'}, 'e', 
'iu', 'ia',
 'ie', 'io', 'dj', 'gj', 'ie', 'dz', 'i', 'yi', 'j', 'lj', 'nj', 'tsh', 'kj', 
'i', 'u', 'dzh',
 'O', 'o', 'E', 'e', 'Ie', 'ie', 'E', 'e', 'Ie', 'ie', 'O', 'o', 'Io', 'io', 
'Ks', 'ks',
@@ -15,6 +15,6 @@ qq{U'}, qq{u'}, qq{Kh'}, qq{kh'}, 'Tts', 'tts', qq{Ch'}, 
qq{ch'}, qq{Ch'}, qq{ch
 qq{`}, 'Zh', 'zh', qq{K'}, qq{k'}, '[?]', '[?]', qq{N'}, qq{n'}, '[?]', '[?]', 
'Ch', 'ch', '[?]', '[?]', '[?]',
 'a', 'a', 'A', 'a', 'Ae', 'ae', 'Ie', 'ie', qq{\@}, qq{\@}, qq{\@}, qq{\@}, 
'Zh', 'zh', 'Z', 'z',
 'Dz', 'dz', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'O', 'o', 'E', 'e', 'U', 
'u',
-'U', 'u', 'U', 'u', 'Ch', 'ch', '[?]', '[?]', 'Y', 'y', '[?]', '[?]', '[?]', 
'[?]', '[?]',
+'U', 'u', 'U', 'u', 'Ch', 'ch', '[?]', '[?]', 'Y', 'y', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x05.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x05.pm
index 3df929f7c0..7a5bd688bf 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x05.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x05.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:23:07 MDT"
 $Text::Unidecode::Char[0x05] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -12,9 +12,13 @@ $Text::Unidecode::Char[0x05] = [
 '[?]', "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", '[?]', "", "", "", "", "", "", "", "", "", "", "", "", "",
 qq{\@}, 'e', 'a', 'o', 'i', 'e', 'e', 'a', 'a', 'o', '[?]', 'u', qq{'}, "", 
"", "",
-"", "", "", qq{:}, "", '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
+
+# u+05c0:
+"|", "", "", qq{:}, "", '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+
+
 "", 'b', 'g', 'd', 'h', 'v', 'z', 'kh', 't', 'y', 'k', 'k', 'l', 'm', 'm', 'n',
 'n', 's', qq{`}, 'p', 'p', 'ts', 'ts', 'q', 'r', 'sh', 't', '[?]', '[?]', 
'[?]', '[?]', '[?]',
-'V', 'oy', 'i', qq{'}, qq{"}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
+'V', 'oy', 'i', qq{'}, qq{"}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x06.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x06.pm
index 5ef47875bc..6eff829dcb 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x06.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x06.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:26:30 MDT"
 $Text::Unidecode::Char[0x06] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', qq{,}, '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
qq{;}, '[?]', '[?]', '[?]', qq{?},
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x06] = [
 'hy', 'h', 'H', qq{\@}, 'W', 'oe', 'oe', 'u', 'yu', 'yu', 'W', 'v', 'y', 'Y', 
'Y', 'W',
 "", "", 'y', qq{y'}, qq{.}, 'ae', "", "", "", "", "", "", "", qq{\@}, qq{#}, 
"",
 "", "", "", "", "", "", "", "", "", qq{^}, "", "", "", "", '[?]', '[?]',
-'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Sh', 'D', 'Gh', qq{&}, 
qq{+m},
+'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Sh', 'D', 'Gh', qq{&}, 
qq{+m}, qq{h},
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x07.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x07.pm
index c35c4a69cc..7be0d6c8a1 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x07.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x07.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:27:18 MDT"
 $Text::Unidecode::Char[0x07] = [
 qq{//}, qq{/}, qq{,}, qq{!}, qq{!}, qq{-}, qq{,}, qq{,}, qq{;}, qq{?}, qq{~}, 
qq{\{}, qq{\}}, qq{*}, '[?]', "",
 qq{'}, "", 'b', 'g', 'g', 'd', 'd', 'h', 'w', 'z', 'H', 't', 't', 'y', 'yh', 
'k',
@@ -15,6 +15,6 @@ qq{'}, "", 'b', 'g', 'g', 'd', 'd', 'h', 'w', 'z', 'H', 't', 
't', 'y', 'yh', 'k'
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x08.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x08.pm
new file mode 100644
index 0000000000..f12bcf4759
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x08.pm
@@ -0,0 +1,3 @@
+# Time-stamp: "2014-07-22 05:02:31 MDT sburke@cpan.org"
+$Text::Unidecode::Char[  0x08 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x09.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x09.pm
index 50b38c0756..30affe0bb6 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x09.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x09.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:29:33 MDT"
 $Text::Unidecode::Char[0x09] = [
 '[?]', 'N', 'N', 'H', '[?]', 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', 'eN', 
'e', 'e',
 'ai', 'oN', 'o', 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 
'ny', 'tt',
@@ -15,6 +15,6 @@ qq{.}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?
 'ii', 'u', 'uu', 'R', 'RR', '[?]', '[?]', 'e', 'ai', '[?]', '[?]', 'o', 'au', 
"", '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', qq{+}, '[?]', '[?]', '[?]', 
'[?]', 'rr', 'rh', '[?]', 'yy',
 'RR', 'LL', 'L', 'LL', '[?]', '[?]', '0', '1', '2', '3', '4', '5', '6', '7', 
'8', '9',
-qq{r'}, qq{r`}, 'Rs', 'Rs', qq{1/}, qq{2/}, qq{3/}, qq{4/}, qq{ 1 - 1/}, 
qq{/16}, "", '[?]', '[?]', '[?]', '[?]',
+qq{r'}, qq{r`}, 'Rs', 'Rs', qq{1/}, qq{2/}, qq{3/}, qq{4/}, qq{ 1 - 1/}, 
qq{/16}, "", '[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0a.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0a.pm
index a7fd429091..4c2d1259b8 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0a.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0a.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:34:57 MDT"
 $Text::Unidecode::Char[0x0a] = [
 '[?]', '[?]', 'N', '[?]', '[?]', 'a', 'aa', 'i', 'ii', 'u', 'uu', '[?]', 
'[?]', '[?]', '[?]', 'ee',
 'ai', '[?]', '[?]', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 
'jh', 'ny', 'tt',
@@ -15,6 +15,9 @@ $Text::Unidecode::Char[0x0a] = [
 'ii', 'u', 'uu', 'R', 'RR', 'eN', '[?]', 'e', 'ai', 'oN', '[?]', 'o', 'au', 
"", '[?]', '[?]',
 'AUM', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 'RR', '[?]', '[?]', '[?]', '[?]', '[?]', '0', '1', '2', '3', '4', '5', '6', 
'7', '8', '9',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'.',   'R',   '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]',
+'[?]', 'zh', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0b.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0b.pm
index 1c14cdd819..0a982bca91 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0b.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0b.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:38:25 MDT"
 $Text::Unidecode::Char[0x0b] = [
 '[?]', 'N', 'N', 'H', '[?]', 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', '[?]', 
'[?]', 'e',
 'ai', '[?]', '[?]', 'o', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 
'jh', 'ny', 'tt',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x0b] = [
 'ii', 'u', 'uu', '[?]', '[?]', '[?]', 'e', 'ee', 'ai', '[?]', 'o', 'oo', 'au', 
"", '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', qq{+}, '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '0', '1', '2', '3', '4', '5', '6', 
'7', '8', '9',
-qq{+10+}, qq{+100+}, qq{+1000+}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
+qq{+10+}, qq{+100+}, qq{+1000+}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0c.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0c.pm
index 24e3f0b4a5..b4307ce4e2 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0c.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0c.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:39:01 MDT"
 $Text::Unidecode::Char[0x0c] = [
 '[?]', 'N', 'N', 'H', '[?]', 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', '[?]', 
'e', 'ee',
 'ai', '[?]', 'o', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 
'jh', 'ny', 'tt',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x0c] = [
 'ii', 'u', 'uu', 'R', 'RR', '[?]', 'e', 'ee', 'ai', '[?]', 'o', 'oo', 'au', 
"", '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', qq{+}, qq{+}, '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', 'lll', '[?]',
 'RR', 'LL', '[?]', '[?]', '[?]', '[?]', '0', '1', '2', '3', '4', '5', '6', 
'7', '8', '9',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0d.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0d.pm
index 659507c619..a0c310fbe9 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0d.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0d.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:40:04 MDT"
 $Text::Unidecode::Char[0x0d] = [
 '[?]', '[?]', 'N', 'H', '[?]', 'a', 'aa', 'i', 'ii', 'u', 'uu', 'R', 'L', 
'[?]', 'e', 'ee',
 'ai', '[?]', 'o', 'oo', 'au', 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 
'jh', 'ny', 'tt',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x0d] = [
 'v', 'sh', 'ss', 's', 'h', 'll', 'f', '[?]', '[?]', '[?]', "", '[?]', '[?]', 
'[?]', '[?]', 'aa',
 'ae', 'aae', 'i', 'ii', 'u', '[?]', 'uu', '[?]', 'R', 'e', 'ee', 'ai', 'o', 
'oo', 'au', 'L',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', 'RR', 'LL', qq{ . }, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', 'RR', 'LL', qq{ . }, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0e.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0e.pm
index edb4a7f87a..0828c1e2ac 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0e.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0e.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:40:50 MDT"
 $Text::Unidecode::Char[0x0e] = [
 '[?]', 'k', 'kh', 'kh', 'kh', 'kh', 'kh', 'ng', 'cch', 'ch', 'ch', 'ch', 'ch', 
'y', 'd', 't',
 'th', 'th', 'th', 'n', 'd', 't', 'th', 'th', 'th', 'n', 'b', 'p', 'ph', 'f', 
'ph', 'f',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x0e] = [
 'e', 'ei', 'o', 'ay', 'ai', '[?]', qq{+}, '[?]', "", "", "", "", "", 'M', 
'[?]', '[?]',
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '[?]', '[?]', 'hn', 'hm', 
'[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0f.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0f.pm
index 4619fa26aa..31ac03c00d 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0f.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x0f.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:41:36 MDT"
 $Text::Unidecode::Char[0x0f] = [
 'AUM', "", "", "", "", "", "", "", qq{ // }, qq{ * }, "", qq{-}, qq{ / }, qq{ 
/ }, qq{ // }, qq{ -/ },
 qq{ +/ }, qq{ X/ }, qq{ /XX/ }, qq{ /X/ }, qq{, }, "", "", "", "", "", "", "", 
"", "", "", "",
@@ -15,6 +15,6 @@ qq{'}, 'y', 'r', 'l', 'sh', 'ss', 's', 'h', 'a', 'kss', 'w', 
'y', 'r', '[?]', 'X
 qq{ /O/ }, qq{ /o/ }, qq{ \\o\\ }, qq{ (O) }, "", "", "", "", "", "", "", "", 
"", '[?]', '[?]', "",
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x10.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x10.pm
index 85a7e9b17f..c9d00a88ad 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x10.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x10.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:42:32 MDT"
 $Text::Unidecode::Char[0x10] = [
 'k', 'kh', 'g', 'gh', 'ng', 'c', 'ch', 'j', 'jh', 'ny', 'nny', 'tt', 'tth', 
'dd', 'ddh', 'nn',
 'tt', 'th', 'd', 'dh', 'n', 'p', 'ph', 'b', 'bh', 'm', 'y', 'r', 'l', 'w', 
's', 'h',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x10] = [
 'H', 'E', 'Y', 'W', 'Xh', 'OE', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 'a', 'b', 'g', 'd', 'e', 'v', 'z', qq{t`}, 'i', 'k', 'l', 'm', 'n', 'o', 'p', 
'zh',
 'r', 's', 't', 'u', qq{p`}, qq{k`}, qq{g'}, 'q', 'sh', qq{ch`}, qq{c`}, 
qq{z'}, 'c', 'ch', 'x', 'j',
-'h', 'e', 'y', 'w', 'xh', 'oe', 'f', '[?]', '[?]', '[?]', '[?]', qq{ // }, 
'[?]', '[?]', '[?]',
+'h', 'e', 'y', 'w', 'xh', 'oe', 'f', '[?]', '[?]', '[?]', '[?]', qq{ // }, 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x11.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x11.pm
index 446ebc6fca..3fdf5424a8 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x11.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x11.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:21 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:46:54 MDT"
 $Text::Unidecode::Char[0x11] = [
 'g', 'gg', 'n', 'd', 'dd', 'r', 'm', 'b', 'bb', 's', 'ss', "", 'j', 'jj', 'c', 
'k',
 't', 'p', 'h', 'ng', 'nn', 'nd', 'nb', 'dg', 'rn', 'rr', 'rh', 'rN', 'mb', 
'mN', 'bg', 'bn',
@@ -15,6 +15,6 @@ qq{U-u}, qq{U-i}, 'UU', '[?]', '[?]', '[?]', '[?]', '[?]', 
'g', 'gg', 'gs', 'n',
 't', 'p', 'h', 'gl', 'gsg', 'ng', 'nd', 'ns', 'nZ', 'nt', 'dg', 'tl', 'lgs', 
'ln', 'ld', 'lth',
 'll', 'lmg', 'lms', 'lbs', 'lbh', 'rNp', 'lss', 'lZ', 'lk', 'lQ', 'mg', 'ml', 
'mb', 'ms', 'mss', 'mZ',
 'mc', 'mh', 'mN', 'bl', 'bp', 'ph', 'pN', 'sg', 'sd', 'sl', 'sb', 'Z', 'g', 
'ss', "", 'kh',
-'N', 'Ns', 'NZ', 'pb', 'pN', 'hn', 'hl', 'hm', 'hb', 'Q', '[?]', '[?]', '[?]', 
'[?]', '[?]',
+'N', 'Ns', 'NZ', 'pb', 'pN', 'hn', 'hl', 'hm', 'hb', 'Q', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x13.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x13.pm
index 694f610a65..f4c0fd9a8b 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x13.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x13.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:52:21 MDT"
 $Text::Unidecode::Char[0x13] = [
 'ja', 'ju', 'ji', 'jaa', 'jee', 'je', 'jo', 'jwa', 'ga', 'gu', 'gi', 'gaa', 
'gee', 'ge', 'go', '[?]',
 'gwa', '[?]', 'gwi', 'gwaa', 'gwee', 'gwe', '[?]', '[?]', 'gga', 'ggu', 'ggi', 
'ggaa', 'ggee', 'gge', 'ggo', '[?]',
@@ -15,6 +15,10 @@ $Text::Unidecode::Char[0x13] = [
 'nah', 'ne', 'ni', 'no', 'nu', 'nv', 'qua', 'que', 'qui', 'quo', 'quu', 'quv', 
'sa', 's', 'se', 'si',
 'so', 'su', 'sv', 'da', 'ta', 'de', 'te', 'di', 'ti', 'do', 'du', 'dv', 'dla', 
'tla', 'tle', 'tli',
 'tlo', 'tlu', 'tlv', 'tsa', 'tse', 'tsi', 'tso', 'tsu', 'tsv', 'wa', 'we', 
'wi', 'wo', 'wu', 'wv', 'ya',
-'ye', 'yi', 'yo', 'yu', 'yv', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
+
+'ye', 'yi', 'yo', 'yu',
+'yv', 'MV', '[?]', '[?]',
+'ye', 'yi', 'yo', 'yu',
+'yv', 'mv', '[?]', '[?]', 
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x16.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x16.pm
index 0810fc24b6..9ecc7596ff 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x16.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x16.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:54:35 MDT"
 $Text::Unidecode::Char[0x16] = [
 'kka', 'kk', 'nu', 'no', 'ne', 'nee', 'ni', 'na', 'mu', 'mo', 'me', 'mee', 
'mi', 'ma', 'yu', 'yo',
 'ye', 'yee', 'yi', 'ya', 'ju', 'ju', 'jo', 'je', 'jee', 'ji', 'ji', 'ja', 
'jju', 'jjo', 'jje', 'jjee',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x16] = [
 'n', 'i', 'e', 'j', 'g', 'ae', 'a', 'eo', 'p', 'z', 's', 's', 's', 'c', 'z', 
't',
 't', 'd', 'b', 'b', 'p', 'p', 'e', 'm', 'm', 'm', 'l', 'l', 'ng', 'ng', 'd', 
'o',
 'ear', 'ior', 'qu', 'qu', 'qu', 's', 'yr', 'yr', 'yr', 'q', 'x', qq{.}, qq{:}, 
qq{+}, '17', '18',
-'19', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'19', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x17.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x17.pm
index 46681fab39..56a740ad4d 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x17.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x17.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:55:25 MDT"
 $Text::Unidecode::Char[0x17] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x17] = [
 'ie', 'e', 'ae', 'ai', 'oo', 'au', 'M', 'H', qq{a`}, "", "", "", 'r', "", 
qq{!}, "",
 "", "", "", "", qq{.}, qq{ // }, qq{:}, qq{+}, qq{++}, qq{ * }, qq{ /// }, 
'KR', qq{'}, '[?]', '[?]', '[?]',
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x18.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x18.pm
index 9a96a18c6b..6cb7494f6e 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x18.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x18.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:55:53 MDT"
 $Text::Unidecode::Char[0x18] = [
 qq{ \@ }, qq{ ... }, qq{, }, qq{. }, qq{: }, qq{ // }, "", qq{-}, qq{, }, qq{. 
}, "", "", "", "", "", '[?]',
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]',
@@ -15,6 +15,6 @@ qq{ \@ }, qq{ ... }, qq{, }, qq{. }, qq{: }, qq{ // }, "", 
qq{-}, qq{, }, qq{. }
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x19.pm
similarity index 71%
copy from tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
copy to tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x19.pm
index 59e48f28f6..adc6cc0950 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x19.pm
@@ -1,8 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
-$Text::Unidecode::Char[0xfa] = [
-'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
-'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
-'Hagi ', qq{[?] }, 'Zhu ', qq{[?] }, qq{[?] }, 'Yi ', 'Du ', qq{[?] }, qq{[?] 
}, qq{[?] }, 'Fan ', 'Si ', 'Guan ', '[?]', '[?]', '[?]',
+# Time-stamp: "2014-07-09 04:45:32 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x19 ] = [
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +16,5 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1a.pm
similarity index 71%
copy from tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
copy to tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1a.pm
index 59e48f28f6..24fa5f531e 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1a.pm
@@ -1,8 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
-$Text::Unidecode::Char[0xfa] = [
-'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
-'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
-'Hagi ', qq{[?] }, 'Zhu ', qq{[?] }, qq{[?] }, 'Yi ', 'Du ', qq{[?] }, qq{[?] 
}, qq{[?] }, 'Fan ', 'Si ', 'Guan ', '[?]', '[?]', '[?]',
+# Time-stamp: "2014-07-09 04:45:01 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x1a ] = [
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +16,5 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1b.pm
similarity index 71%
copy from tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
copy to tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1b.pm
index 59e48f28f6..369b041dd4 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1b.pm
@@ -1,8 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
-$Text::Unidecode::Char[0xfa] = [
-'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
-'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
-'Hagi ', qq{[?] }, 'Zhu ', qq{[?] }, qq{[?] }, 'Yi ', 'Du ', qq{[?] }, qq{[?] 
}, qq{[?] }, 'Fan ', 'Si ', 'Guan ', '[?]', '[?]', '[?]',
+# Time-stamp: "2014-07-09 04:45:07 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x1b ] = [
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +16,5 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1c.pm
similarity index 71%
copy from tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
copy to tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1c.pm
index 59e48f28f6..f21b00d4d5 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1c.pm
@@ -1,8 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
-$Text::Unidecode::Char[0xfa] = [
-'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
-'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
-'Hagi ', qq{[?] }, 'Zhu ', qq{[?] }, qq{[?] }, 'Yi ', 'Du ', qq{[?] }, qq{[?] 
}, qq{[?] }, 'Fan ', 'Si ', 'Guan ', '[?]', '[?]', '[?]',
+# Time-stamp: "2014-07-09 04:44:34 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x1c ] = [
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +16,5 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1d.pm
similarity index 71%
copy from tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
copy to tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1d.pm
index 59e48f28f6..dce2c64973 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1d.pm
@@ -1,8 +1,9 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
-$Text::Unidecode::Char[0xfa] = [
-'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
-'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
-'Hagi ', qq{[?] }, 'Zhu ', qq{[?] }, qq{[?] }, 'Yi ', 'Du ', qq{[?] }, qq{[?] 
}, qq{[?] }, 'Fan ', 'Si ', 'Guan ', '[?]', '[?]', '[?]',
+# Time-stamp: "2014-07-09 04:44:20 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x1d ] = [
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +16,5 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1e.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1e.pm
index 527cddb951..b7848fbd2e 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1e.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1e.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:36:46 MDT"
 $Text::Unidecode::Char[0x1e] = [
 'A', 'a', 'B', 'b', 'B', 'b', 'B', 'b', 'C', 'c', 'D', 'd', 'D', 'd', 'D', 'd',
 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'F', 'f',
@@ -9,12 +9,44 @@ $Text::Unidecode::Char[0x1e] = [
 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't',
 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'V', 'v', 'V', 'v',
 'W', 'w', 'W', 'w', 'W', 'w', 'W', 'w', 'W', 'w', 'X', 'x', 'X', 'x', 'Y', 'y',
-'Z', 'z', 'Z', 'z', 'Z', 'z', 'h', 't', 'w', 'y', 'a', 'S', '[?]', '[?]', 
'[?]', '[?]',
+'Z', 'z', 'Z', 'z', 'Z', 'z', 'h', 't', 'w', 'y', 'a', 's', 's', 's', 'Ss', 
'd',
 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a',
 'A', 'a', 'A', 'a', 'A', 'a', 'A', 'a', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e',
 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o',
 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o', 'O', 'o',
 'O', 'o', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u',
-'U', 'u', 'Y', 'y', 'Y', 'y', 'Y', 'y', 'Y', 'y', '[?]', '[?]', '[?]', '[?]', 
'[?]',
+
+# 0x1EF_:
+
+'U',   #1EF0   LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+       #       : 01AF 0323
+'u',   #1EF1   LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+       #       : 01B0 0323
+       #@              Latin general extensions
+'Y',   #1EF2   LATIN CAPITAL LETTER Y WITH GRAVE
+       #       : 0059 0300
+'y',   #1EF3   LATIN SMALL LETTER Y WITH GRAVE
+       #       * Welsh
+       #       : 0079 0300
+'Y',   #1EF4   LATIN CAPITAL LETTER Y WITH DOT BELOW
+       #       : 0059 0323
+'y',   #1EF5   LATIN SMALL LETTER Y WITH DOT BELOW
+       #       : 0079 0323
+'Y',   #1EF6   LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+       #       : 0059 0309
+'y',   #1EF7   LATIN SMALL LETTER Y WITH HOOK ABOVE
+       #       : 0079 0309
+'Y',   #1EF8   LATIN CAPITAL LETTER Y WITH TILDE
+       #       : 0059 0303
+'y',   #1EF9   LATIN SMALL LETTER Y WITH TILDE
+       #       : 0079 0303
+       #@              Medievalist additions
+"LL",  #1EFA   LATIN CAPITAL LETTER MIDDLE-WELSH LL
+"ll",  #1EFB   LATIN SMALL LETTER MIDDLE-WELSH LL
+"V",   #1EFC   LATIN CAPITAL LETTER MIDDLE-WELSH V
+"v",   #1EFD   LATIN SMALL LETTER MIDDLE-WELSH V
+"Y",   #1EFE   LATIN CAPITAL LETTER Y WITH LOOP
+"y",   #1EFF   LATIN SMALL LETTER Y WITH LOOP
+
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1f.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1f.pm
index e4e00a2064..c4ffa0d572 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1f.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x1f.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:57:09 MDT"
 $Text::Unidecode::Char[0x1f] = [
 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
 'e', 'e', 'e', 'e', 'e', 'e', '[?]', '[?]', 'E', 'E', 'E', 'E', 'E', 'E', 
'[?]', '[?]',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x1f] = [
 qq{~}, qq{"~}, 'e', 'e', 'e', '[?]', 'e', 'e', 'E', 'E', 'E', 'E', 'E', 
qq{'`}, qq{''}, qq{'~},
 'i', 'i', 'i', 'i', '[?]', '[?]', 'i', 'i', 'I', 'I', 'I', 'I', '[?]', qq{`'}, 
qq{`'}, qq{`~},
 'u', 'u', 'u', 'u', 'R', 'R', 'u', 'u', 'U', 'U', 'U', 'U', 'R', qq{"`}, 
qq{"'}, qq{`},
-'[?]', '[?]', 'o', 'o', 'o', '[?]', 'o', 'o', 'O', 'O', 'O', 'O', 'O', qq{'}, 
qq{`},
+'[?]', '[?]', 'o', 'o', 'o', '[?]', 'o', 'o', 'O', 'O', 'O', 'O', 'O', qq{'}, 
qq{`}, '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x20.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x20.pm
index 720d9c27d9..f7cfdf211d 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x20.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x20.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:57:55 MDT"
 $Text::Unidecode::Char[0x20] = [
 ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "", "", "", "",
 qq{-}, qq{-}, qq{-}, qq{-}, qq{--}, qq{--}, qq{||}, qq{_}, qq{'}, qq{'}, 
qq{,}, qq{'}, qq{"}, qq{"}, qq{,,}, qq{"},
@@ -10,11 +10,11 @@ qq{-}, qq{^}, qq{***}, qq{--}, qq{/}, qq{-[}, qq{]-}, 
'[?]', qq{?!}, qq{!?}, '7'
 '0', "", "", "", '4', '5', '6', '7', '8', '9', qq{+}, qq{-}, qq{=}, qq{(}, 
qq{)}, 'n',
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', qq{+}, qq{-}, qq{=}, qq{(}, 
qq{)}, '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'ECU', 'CL', 'Cr', 'FF', 'L', 'mil', 'N', 'Pts', 'Rs', 'W', 'NS', 'D', 'EU', 
'K', 'T', 'Dr',
+'ECU', 'CL', 'Cr', 'FF', 'L', 'mil', 'N', 'Pts', 'Rs', 'W', 'NS', 'D', 'EUR', 
'K', 'T', 'Dr',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x21.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x21.pm
index 13f5039469..b9f620e1ca 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x21.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x21.pm
@@ -1,20 +1,24 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 06:58:45 MDT"
 $Text::Unidecode::Char[0x21] = [
+
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+"", "", "tm", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
-"", "", "", "", "", "", "", "", "", "", "", '[?]', '[?]', '[?]', '[?]', '[?]',
+
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', qq{ 1/3 }, qq{ 2/3 }, qq{ 1/5 }, qq{ 2/5 }, qq{ 3/5 }, 
qq{ 4/5 }, qq{ 1/6 }, qq{ 5/6 }, qq{ 1/8 }, qq{ 3/8 }, qq{ 5/8 }, qq{ 7/8 }, 
qq{ 1/},
 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'L', 
'C', 'D', 'M',
 'i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix', 'x', 'xi', 'xii', 'l', 
'c', 'd', 'm',
+
 qq{(D}, qq{D)}, qq{((|))}, qq{)}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
 qq{-}, qq{|}, qq{-}, qq{|}, qq{-}, qq{|}, qq{\\}, qq{/}, qq{\\}, qq{/}, qq{-}, 
qq{-}, qq{~}, qq{~}, qq{-}, qq{|},
 qq{-}, qq{|}, qq{-}, qq{-}, qq{-}, qq{|}, qq{-}, qq{|}, qq{|}, qq{-}, qq{-}, 
qq{-}, qq{-}, qq{-}, qq{-}, qq{|},
 qq{|}, qq{|}, qq{|}, qq{|}, qq{|}, qq{|}, qq{^}, 'V', qq{\\}, qq{=}, 'V', 
qq{^}, qq{-}, qq{-}, qq{|}, qq{|},
+
 qq{-}, qq{-}, qq{|}, qq{|}, qq{=}, qq{|}, qq{=}, qq{=}, qq{|}, qq{=}, qq{|}, 
qq{=}, qq{=}, qq{=}, qq{=}, qq{=},
 qq{=}, qq{|}, qq{=}, qq{|}, qq{=}, qq{|}, qq{\\}, qq{/}, qq{\\}, qq{/}, qq{=}, 
qq{=}, qq{~}, qq{~}, qq{|}, qq{|},
 qq{-}, qq{|}, qq{-}, qq{|}, qq{-}, qq{-}, qq{-}, qq{|}, qq{-}, qq{|}, qq{|}, 
qq{|}, qq{|}, qq{|}, qq{|}, qq{|},
-qq{-}, qq{\\}, qq{\\}, qq{|}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+qq{-}, qq{\\}, qq{\\}, qq{|}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x22.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x22.pm
index e78626462c..0fbe7988a1 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x22.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x22.pm
@@ -1,20 +1,20 @@
-# Time-stamp: "Sat Jul 14 00:27:22 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:00:32 MDT"
 $Text::Unidecode::Char[0x22] = [
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x23.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x23.pm
index 5a086a0349..ecd6aa097b 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x23.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x23.pm
@@ -1,20 +1,20 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:00:48 MDT"
 $Text::Unidecode::Char[0x23] = [
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, '[?]', qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]},
-qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, qq{[?]}, 
qq{[?]}, qq{[?]}, qq{[?]}, '[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x24.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x24.pm
index 339a38e494..44f1de2788 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x24.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x24.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:01:27 MDT"
 $Text::Unidecode::Char[0x24] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x24] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", '[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x25.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x25.pm
index 798e51f71a..40e5e8f7e3 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x25.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x25.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:04:30 MDT"
 $Text::Unidecode::Char[0x25] = [
 qq{-}, qq{-}, qq{|}, qq{|}, qq{-}, qq{-}, qq{|}, qq{|}, qq{-}, qq{-}, qq{|}, 
qq{|}, qq{+}, qq{+}, qq{+}, qq{+},
 qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, qq{+}, 
qq{+}, qq{+}, qq{+}, qq{+}, qq{+},
@@ -15,6 +15,10 @@ qq{#}, qq{#}, qq{^}, qq{^}, qq{^}, qq{^}, qq{>}, qq{>}, 
qq{>}, qq{>}, qq{>}, qq{
 qq{<}, qq{<}, qq{<}, qq{<}, qq{<}, qq{<}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, 
qq{*}, qq{*}, qq{*}, qq{*}, qq{*},
 qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, 
qq{*}, qq{*}, qq{*}, qq{*}, qq{*},
 qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{*}, qq{#}, qq{#}, qq{#}, qq{#}, 
qq{#}, qq{^}, qq{^}, qq{^}, 'O',
-qq{#}, qq{#}, qq{#}, qq{#}, qq{#}, qq{#}, qq{#}, qq{#}, '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+
+qq{#}, qq{#}, qq{#}, qq{#},
+qq{O}, qq{O}, qq{O}, qq{O},
+'/', '\\', '\\', '#',
+'#', '#', '#', '/',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x26.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x26.pm
index ddc776153b..890bd2a7cf 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x26.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x26.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:04:55 MDT"
 $Text::Unidecode::Char[0x26] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", '[?]', '[?]', '[?]', '[?]', '[?]', "", "", "", "", "", "", "",
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x26] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x27.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x27.pm
index e67eb60c24..b62e21105a 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x27.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x27.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:05:14 MDT"
 $Text::Unidecode::Char[0x27] = [
 '[?]', "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x27] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x29.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x29.pm
new file mode 100644
index 0000000000..0f835a4b12
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x29.pm
@@ -0,0 +1,3 @@
+# Time-stamp: "2014-07-22 05:03:09 MDT sburke@cpan.org"
+$Text::Unidecode::Char[  0x29 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2a.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2a.pm
new file mode 100644
index 0000000000..980c1baabd
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2a.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x2a ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2b.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2b.pm
new file mode 100644
index 0000000000..799079d2dc
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2b.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x2b ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2c.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2c.pm
new file mode 100644
index 0000000000..db412228f5
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2c.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x2c ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2d.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2d.pm
new file mode 100644
index 0000000000..e717018eee
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2d.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x2d ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2e.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2e.pm
index e57949f4fe..12cad1423c 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2e.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2e.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:23 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:06:16 MDT"
 $Text::Unidecode::Char[0x2e] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
@@ -15,6 +15,6 @@ qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, 
qq{[?] }, qq{[?] },
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
-qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
+qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2f.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2f.pm
index 67cd4cee82..e398598047 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2f.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x2f.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:24 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:06:31 MDT"
 $Text::Unidecode::Char[0x2f] = [
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
@@ -15,6 +15,6 @@ qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, 
qq{[?] }, qq{[?] },
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, '[?]', '[?]', '[?]',
+qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x30.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x30.pm
index dd0d37e471..def2c6b151 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x30.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x30.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:24 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:08:09 MDT"
 $Text::Unidecode::Char[0x30] = [
 ' ', qq{, }, qq{. }, qq{"}, qq{[JIS]}, qq{"}, qq{/}, '0', qq{<}, qq{> }, 
qq{<<}, qq{>> }, qq{[}, qq{] }, qq{\{}, qq{\} },
 qq{[(}, qq{)] }, qq{\@}, 'X ', qq{[}, qq{] }, qq{[[}, qq{]] }, qq{((}, qq{)) 
}, qq{[[}, qq{]] }, qq{~ }, qq{``}, qq{''}, qq{,,},
@@ -15,6 +15,6 @@ qq{~}, qq{+}, qq{+}, qq{+}, qq{+}, "", qq{\@}, qq{ // }, 
qq{+10+}, qq{+20+}, qq{
 'da', 'ti', 'di', 'tu', 'tu', 'du', 'te', 'de', 'to', 'do', 'na', 'ni', 'nu', 
'ne', 'no', 'ha',
 'ba', 'pa', 'hi', 'bi', 'pi', 'hu', 'bu', 'pu', 'he', 'be', 'pe', 'ho', 'bo', 
'po', 'ma', 'mi',
 'mu', 'me', 'mo', 'ya', 'ya', 'yu', 'yu', 'yo', 'yo', 'ra', 'ri', 'ru', 're', 
'ro', 'wa', 'wa',
-'wi', 'we', 'wo', 'n', 'vu', 'ka', 'ke', 'va', 'vi', 've', 'vo', "", "", 
qq{"}, qq{"},
+'wi', 'we', 'wo', 'n', 'vu', 'ka', 'ke', 'va', 'vi', 've', 'vo', "", "", 
qq{"}, qq{"}, 'koto',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x31.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x31.pm
index 670b8b9b29..54ad71955c 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x31.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x31.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:24 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:09:14 MDT"
 $Text::Unidecode::Char[0x31] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', 'B', 'P', 'M', 'F', 'D', 'T', 'N', 'L', 
'G', 'K', 'H',
 'J', 'Q', 'X', 'ZH', 'CH', 'SH', 'R', 'Z', 'C', 'S', 'A', 'O', 'E', 'EH', 
'AI', 'EI',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x31] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x32.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x32.pm
index 44a92af427..a91b2e51a3 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x32.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x32.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:24 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:10:43 MDT"
 $Text::Unidecode::Char[0x32] = [
 qq{(g)}, qq{(n)}, qq{(d)}, qq{(r)}, qq{(m)}, qq{(b)}, qq{(s)}, qq{()}, 
qq{(j)}, qq{(c)}, qq{(k)}, qq{(t)}, qq{(p)}, qq{(h)}, qq{(ga)}, qq{(na)},
 qq{(da)}, qq{(ra)}, qq{(ma)}, qq{(ba)}, qq{(sa)}, qq{(a)}, qq{(ja)}, qq{(ca)}, 
qq{(ka)}, qq{(ta)}, qq{(pa)}, qq{(ha)}, qq{(ju)}, '[?]', '[?]', '[?]',
@@ -15,6 +15,9 @@ qq{(Ye) }, '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]',
 '1M', '2M', '3M', '4M', '5M', '6M', '7M', '8M', '9M', '10M', '11M', '12M', 
'[?]', '[?]', '[?]', '[?]',
 'a', 'i', 'u', 'u', 'o', 'ka', 'ki', 'ku', 'ke', 'ko', 'sa', 'si', 'su', 'se', 
'so', 'ta',
 'ti', 'tu', 'te', 'to', 'na', 'ni', 'nu', 'ne', 'no', 'ha', 'hi', 'hu', 'he', 
'ho', 'ma', 'mi',
-'mu', 'me', 'mo', 'ya', 'yu', 'yo', 'ra', 'ri', 'ru', 're', 'ro', 'wa', 'wi', 
'we', 'wo',
+'mu', 'me', 'mo', 'ya',
+'yu', 'yo', 'ra', 'ri',
+'ru', 're', 'ro', 'wa',
+'wi', 'we', 'wo', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x33.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x33.pm
index c1d0fa152a..824acb5cef 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x33.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x33.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:24 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:11:15 MDT"
 $Text::Unidecode::Char[0x33] = [
 'apartment', 'alpha', 'ampere', 'are', 'inning', 'inch', 'won', 'escudo', 
'acre', 'ounce', 'ohm', qq{kai-ri}, 'carat', 'calorie', 'gallon', 'gamma',
 'giga', 'guinea', 'curie', 'guilder', 'kilo', 'kilogram', 'kilometer', 
'kilowatt', 'gram', 'gram ton', 'cruzeiro', 'krone', 'case', 'koruna', 
qq{co-op}, 'cycle',
@@ -15,6 +15,6 @@ qq{cm^2}, qq{m^2}, qq{km^2}, qq{mm^4}, qq{cm^3}, qq{m^3}, 
qq{km^3}, qq{m/s}, qq{
 'kOhm', 'MOhm', qq{a.m.}, 'Bq', 'cc', 'cd', qq{C/kg}, qq{Co.}, 'dB', 'Gy', 
'ha', 'HP', 'in', qq{K.K.}, 'KM', 'kt',
 'lm', 'ln', 'log', 'lx', 'mb', 'mil', 'mol', 'pH', qq{p.m.}, 'PPM', 'PR', 
'sr', 'Sv', 'Wb', '[?]', '[?]',
 '1d', '2d', '3d', '4d', '5d', '6d', '7d', '8d', '9d', '10d', '11d', '12d', 
'13d', '14d', '15d', '16d',
-'17d', '18d', '19d', '20d', '21d', '22d', '23d', '24d', '25d', '26d', '27d', 
'28d', '29d', '30d', '31d',
+'17d', '18d', '19d', '20d', '21d', '22d', '23d', '24d', '25d', '26d', '27d', 
'28d', '29d', '30d', '31d', 'gal',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x34.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x34.pm
new file mode 100644
index 0000000000..08e81d62e2
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x34.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x34 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x35.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x35.pm
new file mode 100644
index 0000000000..fd357f6593
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x35.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x35 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x36.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x36.pm
new file mode 100644
index 0000000000..3d1965ce6c
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x36.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x36 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x37.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x37.pm
new file mode 100644
index 0000000000..194a93c687
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x37.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x37 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x38.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x38.pm
new file mode 100644
index 0000000000..9bfc1a77dc
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x38.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x38 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x39.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x39.pm
new file mode 100644
index 0000000000..47c0a43f9d
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x39.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x39 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3a.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3a.pm
new file mode 100644
index 0000000000..0589a1260d
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3a.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3a ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3b.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3b.pm
new file mode 100644
index 0000000000..384dfa1490
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3b.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3b ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3c.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3c.pm
new file mode 100644
index 0000000000..1a5ba4dcb5
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3c.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3c ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3d.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3d.pm
new file mode 100644
index 0000000000..1cc223d5f3
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3d.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3d ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3e.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3e.pm
new file mode 100644
index 0000000000..28cbbcd576
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3e.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3e ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3f.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3f.pm
new file mode 100644
index 0000000000..7380e77deb
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x3f.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x3f ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x40.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x40.pm
new file mode 100644
index 0000000000..0b8d37cf19
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x40.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x40 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x41.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x41.pm
new file mode 100644
index 0000000000..44447baa89
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x41.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x41 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x42.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x42.pm
new file mode 100644
index 0000000000..ff915fc003
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x42.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x42 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x43.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x43.pm
new file mode 100644
index 0000000000..4fe2f2dac2
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x43.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x43 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x44.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x44.pm
new file mode 100644
index 0000000000..4bb59f6dd0
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x44.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x44 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x45.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x45.pm
new file mode 100644
index 0000000000..178a54394d
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x45.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x45 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x46.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x46.pm
new file mode 100644
index 0000000000..136859817d
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x46.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x46 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x47.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x47.pm
new file mode 100644
index 0000000000..9eaa0ba440
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x47.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x47 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x48.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x48.pm
new file mode 100644
index 0000000000..0c08d00975
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x48.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x48 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x49.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x49.pm
new file mode 100644
index 0000000000..9afa40735e
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x49.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x49 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4a.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4a.pm
new file mode 100644
index 0000000000..0f65e9a110
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4a.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x4a ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4b.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4b.pm
new file mode 100644
index 0000000000..cfb42187b6
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4b.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x4b ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4c.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4c.pm
new file mode 100644
index 0000000000..51e70ccc20
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4c.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0x4c ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4d.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4d.pm
index 1fec329f31..1bec85e0ab 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4d.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4d.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:30 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:12:04 MDT"
 $Text::Unidecode::Char[0x4d] = [
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
 qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
}, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] 
},
@@ -15,6 +15,6 @@ qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, qq{[?] }, 
'[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4e.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4e.pm
index 458c11ba51..96e587258a 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4e.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x4e.pm
@@ -1,6 +1,6 @@
-# Time-stamp: "Sat Jul 14 00:27:30 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2014-01-24 23:59:56 MST sburke@cpan.org"
 $Text::Unidecode::Char[0x4e] = [
-qq{[?] }, 'Ding ', 'Kao ', 'Qi ', 'Shang ', 'Xia ', qq{[?] }, 'Mo ', 'Zhang ', 
'San ', 'Shang ', 'Xia ', 'Ji ', 'Bu ', 'Yu ', 'Mian ',
+'Yi ', 'Ding ', 'Kao ', 'Qi ', 'Shang ', 'Xia ', qq{[?] }, 'Mo ', 'Zhang ', 
'San ', 'Shang ', 'Xia ', 'Ji ', 'Bu ', 'Yu ', 'Mian ',
 'Gai ', 'Chou ', 'Chou ', 'Zhuan ', 'Qie ', 'Pi ', 'Shi ', 'Shi ', 'Qiu ', 
'Bing ', 'Ye ', 'Cong ', 'Dong ', 'Si ', 'Cheng ', 'Diu ',
 'Qiu ', 'Liang ', 'Diu ', 'You ', 'Liang ', 'Yan ', 'Bing ', 'Sang ', 'Gun ', 
'Jiu ', 'Ge ', 'Ya ', 'Qiang ', 'Zhong ', 'Ji ', 'Jie ',
 'Feng ', 'Guan ', 'Chuan ', 'Chan ', 'Lin ', 'Zhuo ', 'Zhu ', 'Ha ', 'Wan ', 
'Dan ', 'Wei ', 'Zhu ', 'Jing ', 'Li ', 'Ju ', 'Pie ',
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x9f.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x9f.pm
index d34c281fa2..b603d49a53 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x9f.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/x9f.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:36 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:12:47 MDT"
 $Text::Unidecode::Char[0x9f] = [
 'Cu ', 'Qu ', 'Chao ', 'Wa ', 'Zhu ', 'Zhi ', 'Mang ', 'Ao ', 'Bie ', 'Tuo ', 
'Bi ', 'Yuan ', 'Chao ', 'Tuo ', 'Ding ', 'Mi ',
 'Nai ', 'Ding ', 'Zi ', 'Gu ', 'Gu ', 'Dong ', 'Fen ', 'Tao ', 'Yuan ', 'Pi ', 
'Chang ', 'Gao ', 'Qi ', 'Yuan ', 'Tang ', 'Teng ',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0x9f] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa4.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa4.pm
index 11624b1cbd..076dc1576e 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa4.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa4.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:37 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:13:29 MDT"
 $Text::Unidecode::Char[0xa4] = [
 'qiet', 'qiex', 'qie', 'qiep', 'quot', 'quox', 'quo', 'quop', 'qot', 'qox', 
'qo', 'qop', 'qut', 'qux', 'qu', 'qup',
 'qurx', 'qur', 'qyt', 'qyx', 'qy', 'qyp', 'qyrx', 'qyr', 'jjit', 'jjix', 
'jji', 'jjip', 'jjiet', 'jjiex', 'jjie', 'jjiep',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0xa4] = [
 'Shat', '[?]', 'Shop', 'Che', 'Zziet', '[?]', 'Ke', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa5.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa5.pm
new file mode 100644
index 0000000000..c0622383fc
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa5.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xa5 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa6.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa6.pm
new file mode 100644
index 0000000000..22f5396ac7
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa6.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xa6 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa7.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa7.pm
new file mode 100644
index 0000000000..8481725ec0
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa7.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xa7 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa8.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa8.pm
new file mode 100644
index 0000000000..774f50daad
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa8.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xa8 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa9.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa9.pm
new file mode 100644
index 0000000000..ae51467614
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xa9.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xa9 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xaa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xaa.pm
new file mode 100644
index 0000000000..f57d58e707
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xaa.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xaa ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xab.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xab.pm
new file mode 100644
index 0000000000..bc35419532
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xab.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xab ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd7.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd7.pm
index bfbd1666cd..b52c036825 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd7.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd7.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:13:56 MDT"
 $Text::Unidecode::Char[0xd7] = [
 'hwen', 'hwenj', 'hwenh', 'hwed', 'hwel', 'hwelg', 'hwelm', 'hwelb', 'hwels', 
'hwelt', 'hwelp', 'hwelh', 'hwem', 'hweb', 'hwebs', 'hwes',
 'hwess', 'hweng', 'hwej', 'hwec', 'hwek', 'hwet', 'hwep', 'hweh', 'hwi', 
'hwig', 'hwigg', 'hwigs', 'hwin', 'hwinj', 'hwinh', 'hwid',
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0xd7] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd8.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd8.pm
new file mode 100644
index 0000000000..90521de7ab
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd8.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xd8 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd9.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd9.pm
new file mode 100644
index 0000000000..2b1ab013e8
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xd9.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xd9 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xda.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xda.pm
new file mode 100644
index 0000000000..e4babf6b6e
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xda.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xda ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdb.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdb.pm
new file mode 100644
index 0000000000..a748b18c5b
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdb.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xdb ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdc.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdc.pm
new file mode 100644
index 0000000000..c96f694d72
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdc.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xdc ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdd.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdd.pm
new file mode 100644
index 0000000000..58e5a872c6
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdd.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xdd ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xde.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xde.pm
new file mode 100644
index 0000000000..b7a1d3dd6a
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xde.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xde ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdf.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdf.pm
new file mode 100644
index 0000000000..a7bc1e0613
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xdf.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xdf ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe0.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe0.pm
new file mode 100644
index 0000000000..67e2899924
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe0.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe0 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe1.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe1.pm
new file mode 100644
index 0000000000..0cd7abea18
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe1.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe1 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe2.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe2.pm
new file mode 100644
index 0000000000..8122fc5a91
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe2.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe2 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe3.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe3.pm
new file mode 100644
index 0000000000..8755c4eaa2
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe3.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe3 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe4.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe4.pm
new file mode 100644
index 0000000000..c1f532279d
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe4.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe4 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe5.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe5.pm
new file mode 100644
index 0000000000..1808455399
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe5.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe5 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe6.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe6.pm
new file mode 100644
index 0000000000..93d1dc8587
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe6.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe6 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe7.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe7.pm
new file mode 100644
index 0000000000..089a8e8612
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe7.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe7 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe8.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe8.pm
new file mode 100644
index 0000000000..7c52c6dc4f
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe8.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe8 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe9.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe9.pm
new file mode 100644
index 0000000000..3571ac855c
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xe9.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xe9 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xea.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xea.pm
new file mode 100644
index 0000000000..cf185ed9d1
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xea.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xea ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xeb.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xeb.pm
new file mode 100644
index 0000000000..9b905a8207
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xeb.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xeb ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xec.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xec.pm
new file mode 100644
index 0000000000..a1b76fc2ab
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xec.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xec ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xed.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xed.pm
new file mode 100644
index 0000000000..45946d058f
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xed.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xed ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xee.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xee.pm
new file mode 100644
index 0000000000..7b9656542a
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xee.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xee ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xef.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xef.pm
new file mode 100644
index 0000000000..3ea30bee86
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xef.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xef ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf0.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf0.pm
new file mode 100644
index 0000000000..6262391282
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf0.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf0 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf1.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf1.pm
new file mode 100644
index 0000000000..407e51fcc8
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf1.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf1 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf2.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf2.pm
new file mode 100644
index 0000000000..5228576b9a
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf2.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf2 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf3.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf3.pm
new file mode 100644
index 0000000000..adba38f4ad
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf3.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf3 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf4.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf4.pm
new file mode 100644
index 0000000000..7d01872854
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf4.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf4 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf5.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf5.pm
new file mode 100644
index 0000000000..c72b8468e3
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf5.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf5 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf6.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf6.pm
new file mode 100644
index 0000000000..368ab7d8b8
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf6.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf6 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf7.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf7.pm
new file mode 100644
index 0000000000..d111afd75b
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf7.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf7 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf8.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf8.pm
new file mode 100644
index 0000000000..16dbd6e516
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xf8.pm
@@ -0,0 +1,3 @@
+#  Time-stamp: "2014-07-22 05:15:15 MDT sburke@cpan.org"
+$Text::Unidecode::Char[ 0xf8 ] = Text::Unidecode::make_placeholder_map();
+1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
index 59e48f28f6..ebe49c1f2a 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfa.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-07-25 07:14:29 MDT"
 $Text::Unidecode::Char[0xfa] = [
 'Chey ', 'Thak ', 'Thak ', 'Thang ', 'Thayk ', 'Thong ', 'Pho ', 'Phok ', 
'Hang ', 'Hang ', 'Hyen ', 'Hwak ', 'Wu ', 'Huo ', qq{[?] }, qq{[?] },
 'Zhong ', qq{[?] }, 'Qing ', qq{[?] }, qq{[?] }, 'Xi ', 'Zhu ', 'Yi ', 'Li ', 
'Shen ', 'Xiang ', 'Fu ', 'Jing ', 'Jing ', 'Yu ', qq{[?] },
@@ -15,6 +15,6 @@ $Text::Unidecode::Char[0xfa] = [
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]',
+'[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfd.pm 
b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfd.pm
index e0d0c01ba0..4f949db245 100644
--- a/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfd.pm
+++ b/tp/maintain/lib/Text-Unidecode/lib/Text/Unidecode/xfd.pm
@@ -1,4 +1,4 @@
-# Time-stamp: "Sat Jul 14 00:27:43 2001 by Automatic Bizooty (__blocks2pm.plx)"
+# Time-stamp: "2016-08-06 22:03:39 MDT"
 $Text::Unidecode::Char[0xfd] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
@@ -13,8 +13,57 @@ $Text::Unidecode::Char[0xfd] = [
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
 "", "", "", "", "", "", "", "", '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]',
+
+#======================================================================
+# FFD0 to FFEF = "Not A Character..."
+#FDD0
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
+#FDE0
 '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', '[?]', 
'[?]', '[?]', '[?]', '[?]', '[?]',
-"", "", "", "", "", "", "", "", "", "", "", "", '[?]', '[?]', '[?]',
+#======================================================================
+
+
+#======================================================================
+#perl -CO -e 'for( 0xFDF0 .. 0xFDFD) { printf "\"\",   # %04X p%cq\n", $_, $_; 
}'
+
+"{Salla}",     # FDF0 pﷰq
+       #  FDF0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+"{Qala}",      # FDF1 pﷱq
+       #  FDF1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+"Allah",       # FDF2 pﷲq
+       #  FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
+"Akbar",       # FDF3 pﷳq
+       #  FDF3 ARABIC LIGATURE AKBAR ISOLATED FORM
+"Mohammed",    # FDF4 pﷴq
+       #  FDF4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+"SL`M",        # FDF5 pﷵq
+       #  FDF5 ARABIC LIGATURE SALAM ISOLATED FORM
+"Rasul",       # FDF6 pﷶq
+       #  FDF6 ARABIC LIGATURE RASOUL ISOLATED FORM
+"{Alayhi}",    # FDF7 pﷷq
+       #  FDF7 ARABIC LIGATURE ALAYHE ISOLATED FORM
+"{WaSallam}",  # FDF8 pﷸq
+       #  FDF8 ARABIC LIGATURE WASALLAM ISOLATED FORM
+"{Salla}",     # FDF9 pﷹq
+       #  FDF9 ARABIC LIGATURE SALLA ISOLATED FORM
+"{Salla Llahu Alayhi WaSallam}",       # FDFA pﷺq
+       #  FDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+
+"{Jalla Jalalahu}",    # FDFB pﷻq
+       #  FDFB ARABIC LIGATURE JALLAJALALOUHOU
+
+
+
+"Rial ",       # FDFC p﷼q
+       #  FDFC RIAL SIGN
+
+"{Bismillah Ar-Rahman Ar-Rahimi}",     # FDFD p﷽q
+       #  FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+
+
+# And unassigned:
+"[?]", #FDFE
+"[?]", #FDFF
+
 ];
 1;
diff --git a/tp/maintain/lib/Text-Unidecode/t/00010_hello_world.t 
b/tp/maintain/lib/Text-Unidecode/t/00010_hello_world.t
new file mode 100644
index 0000000000..794670a116
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00010_hello_world.t
@@ -0,0 +1,18 @@
+# -*- coding:utf-8; mode:CPerl -*-
+require 5;
+  # Note that "require [ver]" is RUNTIME, but "use [ver]" is compile-time.
+BEGIN {
+print "1..2\n";
+print '# Last Modified Time-stamp: "2014-06-17 23:12:03 MDT sburke@cpan.org"', 
"\n";
+print "# I'm testing absolute bare minimum sanity of our test harness.\n";
+print "#   Current time GMT: ",   scalar(   gmtime()), "\n";
+print "#   Current time local: ", scalar(localtime()), "\n";
+print "#   Current perl version: $]\n";
+print "# Hello:\n";
+print "ok 1\n";
+}
+
+print "# Bye:\n";
+print "ok 2\n";
+# And that's that.
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/00050_assert_perl_version.t 
b/tp/maintain/lib/Text-Unidecode/t/00050_assert_perl_version.t
new file mode 100644
index 0000000000..999eeefc6a
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00050_assert_perl_version.t
@@ -0,0 +1,35 @@
+# -*- coding:utf-8; mode:CPerl -*-
+require 5;
+# This file is for asserting Perl version, and basic sanity.
+
+use warnings; use strict;
+use Test;
+BEGIN {plan tests => 4;}
+BEGIN {ok 1;
+ my $modtime = q[ timestamp Time-stamp: "2014-06-17 06:18:08 MDT 
sburke@cpan.org" ];
+ print "# So far, we're at line ", __LINE__, " of file ", __FILE__, "\n";
+ print "#  with$modtime\n#\n# I'm running under Perl v$]\n";
+}
+
+# And now:
+
+print "# Requiring version:\n";
+ok 1;
+
+
+
+require     5.8.0;  # <================== THE VERSION.
+
+
+
+# ("require" is done at runtime)
+
+ok 1;
+
+print "#\n# Phrased better, I'm under Perl version $^V\n";
+
+print "# And that's that.\n";
+
+ok 1;
+
+# End
diff --git a/tp/maintain/lib/Text-Unidecode/t/00055_can_utf8.t 
b/tp/maintain/lib/Text-Unidecode/t/00055_can_utf8.t
new file mode 100644
index 0000000000..d5e183f815
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00055_can_utf8.t
@@ -0,0 +1,17 @@
+# -*- coding:utf-8; mode:CPerl -*-
+require 5;
+use warnings; use strict; use Test;
+BEGIN {plan tests => 3;}
+BEGIN {ok 1;
+ print '# Time-stamp: "2014-06-17 23:33:34 MDT sburke@cpan.org"', "\n";
+ print "# Checking that we can do: use utf8\n";
+}
+
+use utf8;
+ok 1;
+
+print "# And that's that.\n";
+
+ok 1;
+
+# End
diff --git a/tp/maintain/lib/Text-Unidecode/t/00100_can_binmode.t 
b/tp/maintain/lib/Text-Unidecode/t/00100_can_binmode.t
new file mode 100644
index 0000000000..1d2cf6ae6b
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00100_can_binmode.t
@@ -0,0 +1,22 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use strict; use warnings; use Test; 
+print q[# //Time-stamp: "2014-06-17 23:16:40 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests => 5;}
+
+print "# Hello:\n";
+ok 1;
+
+print "# Testing: binmode(*STDOUT, ':utf8') ...\n";
+ok                binmode(*STDOUT, ':utf8');
+
+print "# Testing: binmode(*STDERR, ':utf8') ...\n";
+ok                binmode(*STDERR, ':utf8');
+
+print "# Testing: binmode(*STDIN,  ':utf8') ...\n";
+ok                binmode(*STDIN,  ':utf8');
+
+
+print "# Bye:\n";
+ok 1;
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/00200_xbrace_syntax.t 
b/tp/maintain/lib/Text-Unidecode/t/00200_xbrace_syntax.t
new file mode 100644
index 0000000000..1d8ebf7524
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00200_xbrace_syntax.t
@@ -0,0 +1,21 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;  use strict; use warnings; use Test; 
+print q[# //Time-stamp: "2014-06-17 18:27:46 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests => 5};
+ok 1;
+
+# We don't need "use utf8" here.  We'll check that in other versions.
+
+
+print "# Checking  that xXX and x{XXXX} syntaxes work in this Perl...\n";
+
+# No actual manipulation of the xXXXX or anything here.
+# This file is just so we'll error out if we're in some ancient pre-\x{XXXX} 
Perl.
+
+ok  "\xE1"; 
+ok  "\x{E1}";
+ok  "\x{9053}";
+
+print "# Bye:\n";
+ok 1;
diff --git a/tp/maintain/lib/Text-Unidecode/t/00300_wideness.t 
b/tp/maintain/lib/Text-Unidecode/t/00300_wideness.t
new file mode 100644
index 0000000000..2839c8a679
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00300_wideness.t
@@ -0,0 +1,23 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;  use warnings; use strict;
+use Test;
+BEGIN {plan tests => 8;}
+print q[# // Time-stamp: "2014-06-23 03:42:54 MDT sburke@cpan.org"], "\n";
+
+print "# Checking basic operations with Unicode characters...\n";
+      
+use utf8;
+
+ok( binmode($_, ':utf8') ) foreach ( *STDERR, *STDIN, *STDOUT );
+
+ok length( "\x{9053}\x{5fb7}\x{7d93}" ), 3;
+ok length( "道德經"                    ), 3;
+
+ok "道德經", "\x{9053}\x{5fb7}\x{7d93}" ;
+
+ok "道德經", join( '', chr(0x9053), chr(0x5fb7), chr(0x7d93) );
+
+print "# Bye:\n";
+ok 1;
+
+# End
diff --git a/tp/maintain/lib/Text-Unidecode/t/00400_just_load_main_module.t 
b/tp/maintain/lib/Text-Unidecode/t/00400_just_load_main_module.t
new file mode 100644
index 0000000000..7d4f2e88f0
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00400_just_load_main_module.t
@@ -0,0 +1,26 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings; use Test; use utf8;
+print q[# //Time-stamp: "2016-11-10 23:42:30 MST"], "\n";
+ # (this used to be called "00400_just_load_module.t"
+
+BEGIN {plan tests => 3;}
+
+
+print "# Let's just see if a bare 'use Text::Unidecode' works:\n";
+
+ok 1;
+
+use Text::Unidecode;
+
+print "# We just loaded Unidecode version: ",
+  $Text::Unidecode::VERSION || "?", "\n";
+
+print "# It was last modified ",
+   $Text::Unidecode::Last_Modified || die(),
+   "\n",
+;
+
+ok "a", unidecode("a"); # sanity
+
+print "# Bye:\n";
+ok 1;
diff --git a/tp/maintain/lib/Text-Unidecode/t/00450_table_0x00.t 
b/tp/maintain/lib/Text-Unidecode/t/00450_table_0x00.t
new file mode 100644
index 0000000000..00f1dfb7ef
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00450_table_0x00.t
@@ -0,0 +1,99 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings; use Test; use utf8;
+print q[# //Time-stamp: "2015-08-28 16:36:36 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests =>  44  ;}
+
+print "# Let's test tolerating some Win-1252 characters:\n";
+
+ok 1;
+
+use Text::Unidecode;
+
+print "# We just loaded Unidecode version: ",
+  $Text::Unidecode::VERSION || "?", "\n";
+
+
+ok binmode(*STDOUT, ":utf8"); print "# ^-- Testing binmode on STDOUT\n";
+ok binmode(*STDERR, ":utf8"); print "# ^-- Testing binmode on STDERR\n";
+
+print "# Some basic sanity stuff...\n";
+ok "a", unidecode("a"); # sanity
+ok "e", unidecode("e");
+ok "ae", unidecode("æ");
+
+
+my $f1 = "# ^-- About {{%s}}\n";
+my $f2 = "# ^-- About {{%s}} and %s\n";
+my $f3 = "# ^-- About {{%s}}( U+%04x ) and %s\n";
+our($n,$m);
+
+$n = "æ"; ok q{ae},  unidecode($n);  printf $f1, $n;
+$n = "é"; ok q{e},   unidecode($n);  printf $f1, $n;
+$n = "ÿ"; ok q{y},   unidecode($n);  printf $f1, $n;
+
+$n = "\xe6"; ok q{ae},  unidecode($n);  printf $f1, $n;
+$n = "\xe9"; ok q{e},   unidecode($n);  printf $f1, $n;
+$n = "\xff"; ok q{y},   unidecode($n);  printf $f1, $n;
+
+print "##############\n#\n# Now about 1252 support...\n";
+
+# I'm constructing the Win-1252 characters only using \xXX,
+# never as character literals!
+
+$n = "\x91"; ok q{'},  unidecode($n);  printf $f1, $n;
+$n = "\x92"; ok q{'},  unidecode($n);  printf $f1, $n;
+$n = "\x93"; ok q{"},  unidecode($n);  printf $f1, $n;
+$n = "\x94"; ok q{"},  unidecode($n);  printf $f1, $n;
+
+print "#\n#\n# Now let's actually just do the whole 0x80-0x9F table!\n";
+
+sub pr2 (@) {
+  my($format,$n,$m) = @_;
+  printf $f3, $n, ord($n), $m;
+  return;
+}
+
+# Testing the equivalency of the Win-1252 value and the proper Unicode value
+($n,$m)=("\x80", q{€} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+#($n,$m)=("\x81",
+($n,$m)=("\x82", q{‚} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x83", q{ƒ} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x84", q{„} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x85", q{…} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x86", q{†} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x87", q{‡} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+
+($n,$m)=("\x88", q{ˆ} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x89", q{‰} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x8a", q{Š} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x8b", q{‹} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x8c", q{Œ} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+#($n,$m)=("\x8d"
+($n,$m)=("\x8e", q{Ž} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+#($n,$m)=("\x8f"
+
+#($n,$m)=("\x90"
+($n,$m)=("\x91", q{‘} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x92", q{’} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x93", q{“} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x94", q{”} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x95", q{•} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x96", q{–} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x97", q{—} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+
+($n,$m)=("\x98", q{˜} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x99", q{™} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x9a", q{š} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x9b", q{›} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x9c", q{œ} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+#($n,$m)=("\x9d"
+($n,$m)=("\x9e", q{ž} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+($n,$m)=("\x9f", q{Ÿ} ); ok unidecode($m), unidecode($n); pr2 $f2,$n,$m;
+
+
+
+#======================================================================
+print "# Bye:\n";
+ok 1;
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/00500_test_loading.t 
b/tp/maintain/lib/Text-Unidecode/t/00500_test_loading.t
new file mode 100644
index 0000000000..509267efd0
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00500_test_loading.t
@@ -0,0 +1,104 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings; use Test;
+BEGIN {plan tests => 12};
+print q[# // Time-stamp: "2014-07-04 02:16:00 MDT sburke@cpan.org"], "\n";
+
+# Summary of, well, things.
+ok 1;
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+ok "a", unidecode("a");
+
+{
+  my($i, $n);
+  my $f = "# ^-- \"%s\" (U+%04x)\n";
+  print "# These cause loading of those modules...\n";
+  $n = unidecode( chr($i=0x0100) ); ok $n; printf $f, $n, $i;
+  $n = unidecode( chr($i=0x0400) ); ok $n; printf $f, $n, $i;
+  $n = unidecode( chr($i=0x0f00) ); ok $n; printf $f, $n, $i;
+  $n = unidecode( chr($i=0xff00) ); ok $n; printf $f, $n, $i;
+}
+
+ok 1;
+print "#\n# Now that we've loaded Text::Unidecode, let's see what else is\n",
+      "#  in \%INC by now...\n";
+{
+  my @out;
+  push @out,
+    "\n\nPerl v",
+    defined($^V) ? sprintf('%vd', $^V) : $],
+    " under $^O ",
+    (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber())
+      ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (),
+    (defined $MacPerl::Version)
+      ? ("(MacPerl version $MacPerl::Version)") : (),
+    "\n"
+  ;
+
+  # Ugly code to walk the symbol tables:
+  my %v;
+  my @stack = ('');  # start out in %::
+  my $this;
+  my $count = 0;
+  my $pref;
+  while(@stack) {
+    $this = shift @stack;
+    die "Too many packages?" if ++$count > 1000;
+    next if exists $v{$this};
+    next if $this eq 'main'; # %main:: is %::
+
+    #print "Peeking at $this => ${$this . '::VERSION'}\n";
+    no strict 'refs';
+    if(defined ${$this . '::VERSION'} ) {
+      $v{$this} = ${$this . '::VERSION'}
+    } elsif(
+       defined *{$this . '::ISA'} or defined &{$this . '::import'}
+       or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"})
+       # If it has an ISA, an import, or any subs...
+    ) {
+      # It's a class/module with no version.
+      $v{$this} = undef;
+    } else {
+      # It's probably an unpopulated package.
+      ## $v{$this} = '...';
+    }
+    
+    $pref = length($this) ? "$this\::" : '';
+    push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'};
+    #print "Stack: @stack\n";
+  }
+  push @out, " Modules in memory:\n";
+  delete @v{'', '[none]'};
+  foreach my $p (sort {lc($a) cmp lc($b)} keys %v) {
+    my $indent = ' ' x (2 + ($p =~ tr/:/:/));
+    push @out,  '  ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n";
+  }
+  push @out, sprintf "[at %s (local) / %s (GMT)]\n",
+    scalar(gmtime), scalar(localtime);
+  my $x = join '', @out;
+  $x =~ s/^/#/mg;
+  print $x;
+
+}
+ok 1;
+
+print "# Running",
+  (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n",
+  "#\n",
+;
+ok 1;
+
+print "# \@INC:\n", map("#   [$_]\n", @INC), "#\n#\n";
+ok 1;
+
+print "# \%INC:\n";
+foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) {
+  print "#   [$x] = [", $INC{$x} || '', "]\n";
+}
+
+ok 1;
+
+print "#\n#\n# Bye:\n";
+ok 1;
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/00510_load_many_tables.t 
b/tp/maintain/lib/Text-Unidecode/t/00510_load_many_tables.t
new file mode 100644
index 0000000000..88ff48aa25
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/00510_load_many_tables.t
@@ -0,0 +1,113 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings;
+my $Time_Stamp = q[Time-stamp: "2016-11-26 04:43:48 MST"];
+
+my @Tables;
+BEGIN {
+  @Tables = (
+    0x00 .. 0xD7,
+
+    # D8-to-DB = high surrogates
+    # DC-to-DF =  low surrogates
+
+    0xE0 .. 0xEF, # Private Use Area.
+    0xF0 .. 0xF8, # Private Use Area.
+
+    0xF9 .. 0xFF, # various things
+
+    # TODO: instead pull from Text::Unidecode::Blackbox::..."Banklist" or 
something?
+  );
+}
+
+use Test;
+BEGIN { plan tests => scalar(@Tables) };
+print qq[# // $Time_Stamp\n];
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+print "#\n# About to load these ", scalar(@Tables), " tables:\n";
+{
+  use Text::Wrap;
+  my $string_of_tables =
+    join(" ",
+      map( sprintf("%02x", $_), @Tables )
+    )
+  ;
+  
+  print "#\n", wrap(
+    "#  ", # first tab
+    "#  ", # subsequent tab
+    $string_of_tables,
+  ), "\n#\n#\n";
+}
+
+
+my $nullmap = $Text::Unidecode::NULLMAP;
+
+print "# About to compare things to nullmap ($nullmap) and check 
uniqueness.\n";
+print "# Tables to consider: \n";
+
+
+
+my %Seen;
+Table:
+foreach my $table_number (@Tables) {
+  printf "# Loading table 0x%02x...\n", $table_number;
+
+  my $charnum = 0xFF + $table_number * 0x0100;
+
+  my($throw_away_value) = unidecode( chr( $charnum  ) );
+                          # ^--- is just to force
+                         # the loading of that table.
+
+  my $table_for_this = $Text::Unidecode::Char[$table_number];
+  my $string_for_table_for_this = "" . $table_for_this;
+  my $hex_for_this_table_number =
+    sprintf( "%02x", $table_number );
+
+  
+  my $seen_before_list = 
+   (  $Seen{ $string_for_table_for_this } ||= []  );
+
+  push @{ $seen_before_list },
+    $hex_for_this_table_number;
+
+  if($table_for_this eq $nullmap) {
+    print "# Table 0x$hex_for_this_table_number is ",
+        "$string_for_table_for_this",
+        " which is NULLTABLE.\n";
+    ok 0; # loading that bank just got us a null table
+    print "#\n";
+    next Table;
+  }
+
+
+  if( @$seen_before_list  > 1 ) {
+    print "# Table 0x$hex_for_this_table_number is ",
+      "$string_for_table_for_this",
+      " which is NOT UNIQUE--\n";
+    print "#  I've already seen it for: ",
+      join(" ", @$seen_before_list), "\n",
+    ;
+    ok 0; # We've already seen this table before.
+    print "#\n";
+    next Table;
+  }
+
+  die "WHAT" unless @$seen_before_list == 1;
+
+  #So, it's just us, just now:
+  print "# Table 0x$hex_for_this_table_number is ",
+    "$string_for_table_for_this= unique.\n";
+  ok 1; # This table is unique (so far)
+  print "#\n";
+
+}
+
+print "#\n# \%INC:\n";
+foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) {
+  print "#   [$x] = [", $INC{$x} || '', "]\n";
+}
+
+print "# End.\n";
diff --git a/tp/maintain/lib/Text-Unidecode/t/01000_note_incs.t 
b/tp/maintain/lib/Text-Unidecode/t/01000_note_incs.t
new file mode 100644
index 0000000000..8a9ef8bbac
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/01000_note_incs.t
@@ -0,0 +1,30 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use Test; use strict; use warnings; use utf8;
+print q[# //Time-stamp: "2014-07-04 02:16:17 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests => 7};
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+ok "a", unidecode("\xE1");
+ok "\x{e1}", "\xE1"; # check sanity
+ok "a", unidecode("\x{e1}");
+
+# Now, probably provoke the loading of Unidecode/01.pm...
+ok "oe", unidecode( "\x{153}" );
+
+ok "a", unidecode( "\x{FF41}" );
+
+{
+  print "#Now notes about \%INC ...\n";
+  my @incs;
+  for(sort grep m/unidec/i, keys %INC) {
+    push @incs, "# Package $_ from file: ", $INC{$_} || "?", "\n";
+  }
+  ok scalar(@incs);
+  print @incs;
+}
+
+ok 1;
+#End
diff --git a/tp/maintain/lib/Text-Unidecode/t/01500_generate_no_warnings.t 
b/tp/maintain/lib/Text-Unidecode/t/01500_generate_no_warnings.t
new file mode 100644
index 0000000000..afedee305e
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/01500_generate_no_warnings.t
@@ -0,0 +1,38 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;
+use Test; use strict; use warnings;
+BEGIN { plan tests => 11 };
+print q[# // Time-stamp: "2014-07-04 02:16:23 MDT sburke@cpan.org"], "\n";
+
+# Summary of, well, things.
+ok 1; print "# ^-- Hello\n";
+
+use utf8;
+
+ok binmode(*STDOUT, ":utf8"); print "# ^-- Testing binmode on STDOUT\n";
+ok binmode(*STDERR, ":utf8"); print "# ^-- Testing binmode on STDERR\n";
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+ok "a", unidecode("a"); print "# ^-- sanity\n";
+
+{
+  my($i, $n, $s);
+  my $f = "# ^-- Testing: \"%s\" (U+%04x) returns true.  (\"%s\")\n";
+  #print "# Format: $f\n";
+
+  # Remember, when we call "ok" here, we're just testing for *truth*
+  # The test would fail iif Unidecode returns an undef or "" (or "0")
+  $n = unidecode( $s=chr($i= 0x0100 ) ); ok $n; printf $f => $s, $i, $n;
+  $n = unidecode( $s=chr($i= 0x0400 ) ); ok $n; printf $f => $s, $i, $n;
+  $n = unidecode( $s=chr($i= 0x0f00 ) ); ok $n; printf $f => $s, $i, $n;
+  $n = unidecode( $s=chr($i= 0x01ff ) ); ok $n; printf $f => $s, $i, $n;
+  $n = unidecode( $s=chr($i= 0x04ff ) ); ok $n; printf $f => $s, $i, $n;
+  $n = unidecode( $s=chr($i= 0x0fff ) ); ok $n; printf $f => $s, $i, $n;
+
+  #$n = unidecode( $s=chr($i=0x10000) ); ok $n; printf $f, $n, $s, $i;
+}
+
+print "# Bye:\n";
+ok 1;
diff --git a/tp/maintain/lib/Text-Unidecode/t/02000_uniform_table_sizes.t 
b/tp/maintain/lib/Text-Unidecode/t/02000_uniform_table_sizes.t
new file mode 100644
index 0000000000..e26cdc0777
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/02000_uniform_table_sizes.t
@@ -0,0 +1,94 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;
+use Test; use strict; use warnings;
+our $lastmod = q[Time-stamp: "2016-11-26 04:19:16 MST"];
+
+my @Bank_Numbers;
+BEGIN { @Bank_Numbers = (0 .. 0xFF); }
+BEGIN {plan tests =>  2  +  4 * @Bank_Numbers};
+
+ok 1; print "# ...just saying hello.\n";
+
+print "# ($lastmod)\n";
+print "#\n# LOADING ALL MODULES... and checking fullness of each table.\n";
+
+our $Bank_Length_Should_Be = 256;
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+$| = 1;
+
+print "#\n", map "#\t$_\n",
+  '  For each iteration:',
+  '   1:  It\'s true that "defined unidecode $char"',
+  '   2:  We\'ve got a value',
+  '   3:  It\'s an arrayref',
+  '   4:  The arrayref is the right size',
+;
+
+#
+#  TODO: instead have @Bank_Numbers, above, use contents of 
Text::Unidecode::BankList instead of (1 .. 0xff);
+#  NOTE: And it WILL have to change once we support surrogates
+
+$Text::Unidecode::Note_Broken_Tables = 1;
+
+use Text::Unidecode::x00 ();
+
+Bank:
+foreach my $banknum ( @Bank_Numbers ) {
+  my $charnum = $banknum << 8;
+
+  # Shut up warnings about UTF-16 surrogate characters
+  # This is per https://rt.cpan.org/Ticket/Display.html?id=97456
+  my $char = do { no warnings 'utf8'; chr( $charnum ) };
+
+  printf "##\n# About to test the size of banknum 0x%02x via charnum 
U+%04x\:\n",
+    $banknum, $charnum
+  ;
+
+  if(ok( defined( unidecode($char) ))) {  # ==================== OK1
+    # yay
+  } else {
+    print "# Somehow couldn't get a defined value from unidecode for 
#$charnum\n";
+    skip(1);
+    skip(1);
+    skip(1);
+    next Bank;
+  }
+
+  my $bank_arrayref =
+        $Text::Unidecode::Broken_Table_Copy{$banknum}
+    ||  $Text::Unidecode::Char[$banknum]
+    ||  undef
+  ;
+
+  if(ok( defined($bank_arrayref) )) {   # ==================== OK2
+    # yay
+  } else {
+    print "# No \$Text::Unidecode::Char[$banknum] in memory?!\n";
+    skip(1);
+    skip(1);
+    next Bank;
+  }
+
+  if(ok( ref($bank_arrayref), 'ARRAY' )) {   # ==================== OK3
+    # yay
+  } else {
+    print "# \$Text::Unidecode::Char[$banknum] isn't an arrayref?!\n",
+      "# It's: \"", $bank_arrayref, "\" - ", ref($bank_arrayref) || "not a 
ref", "\n";
+    skip(1);
+    next Bank;
+  }
+
+  my $bank_name = sprintf "Bank_0x%02x", $banknum;
+  if( ok( scalar(@{ $bank_arrayref  }), $Bank_Length_Should_Be, " Length of 
$bank_name" )) { #  ==================== OK4
+    next Bank;
+  }
+
+}
+
+#print map "$_ : $INC{$_}\n", sort keys %INC;
+
+print "# Bye:\n";
+ok 1;  #Byebye.
diff --git a/tp/maintain/lib/Text-Unidecode/t/03000_misc_unihan.t 
b/tp/maintain/lib/Text-Unidecode/t/03000_misc_unihan.t
new file mode 100644
index 0000000000..8e873a50c2
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/03000_misc_unihan.t
@@ -0,0 +1,24 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;
+use strict; use warnings; use Test; use utf8;
+print q[# //Time-stamp: "2014-07-04 02:17:29 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan
+                tests =>   4
+;}
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+print "# Checking basic operations with Unicode characters...\n";
+
+ok 1;
+binmode($_, ":utf8") for (*STDOUT, *STDIN, *STDERR);
+
+ok( "\x{4e00}", "一" );
+ok( unidecode("\x{4e00}"), "Yi " );
+
+ok 1;
+
+# End
+
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/04000_misc_errors_fixed.t 
b/tp/maintain/lib/Text-Unidecode/t/04000_misc_errors_fixed.t
new file mode 100644
index 0000000000..56b2fc8152
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/04000_misc_errors_fixed.t
@@ -0,0 +1,26 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings; use Test; use utf8;
+print q[# //Time-stamp: "2014-07-04 02:21:51 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests => 4;}
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+print "# Checking various errors to be fixed...\n";
+
+ok 1;
+binmode($_, ":utf8") for (*STDOUT, *STDIN, *STDERR);
+
+
+
+ok( "\x{02b0}", "ʰ" );
+ok( unidecode( "ʰ" ), "h" );
+
+
+
+ok 1;
+
+# End
+
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/04010_misc_errors_fixed.t 
b/tp/maintain/lib/Text-Unidecode/t/04010_misc_errors_fixed.t
new file mode 100644
index 0000000000..a89e8a37e5
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/04010_misc_errors_fixed.t
@@ -0,0 +1,143 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0; use strict; use warnings; use Test; use utf8;
+print q[# //Time-stamp: "2014-07-22 05:40:49 MDT sburke@cpan.org"], "\n";
+
+BEGIN {plan tests => 75;}
+
+use Text::Unidecode;
+print "# Text::Unidecode version $Text::Unidecode::VERSION\n";
+
+print "# Checking various errors to be fixed...\n";
+
+ok 1;
+binmode($_, ":utf8") for (*STDOUT, *STDIN, *STDERR);
+
+# Thank you very much to 
+
+ok( unidecode( "Ý" ), "Y" ); # https://rt.cpan.org/Ticket/Display.html?id=96889
+
+
+#From Tomaž Šolc superstar!
+
+
+ok( unidecode( "ij"  ), "ij") ;
+ok( unidecode( "Dz"  ), "Dz") ;
+ok( unidecode( "Ƞ"  ), "N") ;
+ok( unidecode( "ȡ"  ), "d") ;
+
+print "# Block 02: 'Latin; IPA; spacing accents', U+02xx\n";
+ok( unidecode( "ȴ"  ), 'l') ;    # U+0234
+ok( unidecode( "ȵ"  ), 'n') ;    # U+0235
+ok( unidecode( "ȶ"  ), 't') ;    # U+0236
+ok( unidecode( "ȷ"  ), 'j') ;    # U+0237
+ok( unidecode( "ȸ"  ), 'db') ;   # U+0238
+ok( unidecode( "ȹ"  ), 'qp') ;   # U+0239
+ok( unidecode( "Ⱥ"  ), 'A') ;    # U+023a
+ok( unidecode( "Ȼ"  ), 'C') ;    # U+023b
+ok( unidecode( "ȼ"  ), 'c') ;    # U+023c
+ok( unidecode( "Ƚ"  ), 'L') ;    # U+023d
+ok( unidecode( "Ⱦ"  ), 'T') ;    # U+023e
+ok( unidecode( "ȿ"  ), 's') ;    # U+023f
+ok( unidecode( "ɀ"  ), 'z') ;    # U+0240
+
+
+ok( unidecode( "Ƀ"  ),'B') ;   #U+0243
+ok( unidecode( "Ʉ"  ),'U') ;   #U+0244
+ok( unidecode( "Ʌ"  ),'^') ;   #U+0245
+ok( unidecode( "Ɇ"  ),'E') ;   #U+0246
+ok( unidecode( "ɇ"  ),'e') ;   #U+0247
+ok( unidecode( "Ɉ"  ),'J') ;   #U+0248
+ok( unidecode( "ɉ"  ),'j') ;   #U+0249
+ok( unidecode( "Ɋ"  ),'q') ;   #U+024a
+ok( unidecode( "ɋ"  ),'q') ;   #U+024b
+ok( unidecode( "Ɍ"  ),'R') ;   #U+024c
+ok( unidecode( "ɍ"  ),'r') ;   #U+024d
+ok( unidecode( "Ɏ"  ),'Y') ;   #U+024e
+ok( unidecode( "ɏ"  ),'y') ;   #U+024f
+
+ok( unidecode( "ɐ"  ),'a') ;   #U+0250
+
+
+ok( unidecode( "ɸ"  ), 'F') ;    # \x{0278}
+
+ok( unidecode( "ɹ"  ), 'r') ;    # \x{0279}
+ok( unidecode( "ɺ"  ), 'r') ;    # \x{027a}
+ok( unidecode( "ɻ"  ), 'r') ;    # \x{027b}
+ok( unidecode( "ɼ"  ), 'r') ;    # \x{027c}
+ok( unidecode( "ɽ"  ), 'r') ;    # \x{027d}
+ok( unidecode( "ɾ"  ), 'r') ;    # \x{027e}
+ok( unidecode( "ɿ"  ), 'r') ;    # \x{027f}
+ok( unidecode( "ʀ"  ), 'R') ;    # \x{0280}
+ok( unidecode( "ʁ"  ), 'R') ;    # \x{0281}
+
+
+
+ok( unidecode( "ʉ"  ), 'u') ;    # \x{0289}
+
+
+# ok( unidecode( ""  ), '') ;    # \x{02__}
+
+ok( unidecode( "ʌ"  ), '^') ;    # \x{028c}
+ok( unidecode( "ʍ"  ), 'w') ;    # \x{028d}
+ok( unidecode( "ʎ"  ), 'y') ;    # \x{028e}
+ok( unidecode( "ʏ"  ), 'Y') ;    # \x{028f}
+
+ok( unidecode( "ʮ"  ), 'h') ;    # \x{02ae}
+ok( unidecode( "ʯ"  ), 'h') ;    # \x{02af}
+ok( unidecode( "ʰ"  ), 'h') ;    # \x{02b0}
+
+# Rejecting TS's suggested mapping of "ʰ" to "k".  I see what he
+# means, but it's too much of a stretch
+
+#======================================================================
+
+
+
+#ok( unidecode( ""  ), '') ;    # \x{02__}
+
+print "# Combining Latin letters, U+03xx\n";
+
+ok( unidecode( "ͣ" ), 'a');
+ok( unidecode( "ͤ" ), 'e');
+ok( unidecode( "ͥ" ), 'i');
+ok( unidecode( "ͦ" ), 'o');
+ok( unidecode( "ͧ" ), 'u');
+ok( unidecode( "ͨ" ), 'c');
+ok( unidecode( "ͩ" ), 'd');
+ok( unidecode( "ͪ" ), 'h');
+ok( unidecode( "ͫ" ), 'm');
+ok( unidecode( "ͬ" ), 'r');
+ok( unidecode( "ͭ" ), 't');
+ok( unidecode( "ͮ" ), 'v');
+ok( unidecode( "ͯ" ), 'x');
+
+print "# Russian things\n";
+ok( unidecode( "Е" ), 'E');
+ok( unidecode( "г" ), 'g');
+ok( unidecode( "е" ), 'e');
+
+
+print "# Stuff...\n";
+ok( unidecode( "։" ), '.');
+ # U+0589 | Armenian full stop
+
+ok( unidecode( "\x{05c0}" ), '|');
+ # U+05C0 | Hebrew punctuation paseq
+
+
+
+ok( unidecode( "ẛ" ), 's');
+ok( unidecode( "ẜ" ), 's');
+ok( unidecode( "ẝ" ), 's');
+ok( unidecode( "ẞ" ), 'Ss');
+ok( unidecode( "ẟ" ), 'd');
+
+# That's all of Tomaž's stuff before 0x20
+
+#======================================================================
+
+ok 1;
+
+# End
+
+
diff --git a/tp/maintain/lib/Text-Unidecode/t/05000_main.t 
b/tp/maintain/lib/Text-Unidecode/t/05000_main.t
new file mode 100644
index 0000000000..b1c252ef47
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/05000_main.t
@@ -0,0 +1,65 @@
+# -*- coding:utf-8; mode:CPerl -*-
+use 5.8.0;
+use strict; use warnings; use Test;
+print q[# //Time-stamp: "2014-06-17 18:52:58 MDT sburke@cpan.org"], "\n";
+
+BEGIN { plan tests => 20; }
+use utf8;
+use Text::Unidecode;
+
+ok 1; print "# ^-- Hello\n";
+
+print "# Text::Unidecode v$Text::Unidecode::VERSION\n",
+      "# Perl $^V\n",
+      "# I am test file " . __FILE__ . "\n",
+      "# Starting tests...\n";
+
+ok binmode(*STDOUT, ":utf8"); print "# ^-- Testing binmode on STDOUT\n";
+ok binmode(*STDERR, ":utf8"); print "# ^-- Testing binmode on STDERR\n";
+
+# Be super-sure that our universe is sane
+print "# Testing string literals...\n";
+ok  "ගඎ", "ගඎ",   "Failure in comparing identity!?!?";
+ok  "ගඎ" => 'ගඎ',   "quoting operator brokenness!?";
+ok  "ගඎ" => q[ගඎ],   "quoting operator brokenness!?";
+ok  "ගඎ" => qq[ගඎ],   "quoting operator brokenness!?";
+ok  "ගඎ" => "\x{0d9c}\x{0d8e}", "quoting operator brokenness!?";
+
+
+# Syntactic sugar for our calls to "ok"...
+my $from;
+my $be = sub { return unidecode($from); };
+
+print "# Latin-1...\n";
+ok $be, "AEneid", ($from= "Æneid");
+ok $be, "etude", ($from= "étude");
+
+print "# Chinese...\n";
+ok $be, "Bei Jing ", ($from="北亰");
+
+print "# Canadian syllabics...\n";
+ok $be, "shanana", ($from= "ᔕᓇᓇ");
+
+print "# Cherokee...\n";
+ok $be, "taliqua", ($from="ᏔᎵᏆ");
+
+print "# Syriac...\n";
+ok $be, "ptu'i", ($from= "ܦܛܽܐܺ");
+
+print "# Devanagari...\n";
+ok $be, "abhijiit", ($from= "अभिजीत");
+
+print "# Bengali...\n";
+ok $be, "abhijiit", ($from= "অভিজীত");
+
+print "# Malayalaam...\n";
+ok $be, "abhijiit", ($from= "അഭിജീത");
+ok $be, "mlyaalm", ($from= "മലയാലമ്");
+ # the Malayaalam word for "Malayaalam"
+ # Yes, if we were doing it right, that'd be "malayaalam", not "mlyaalm"
+
+print "# Japanese, astonishingly unmangled...\n";
+ok $be, "genmaiCha ", ($from="げんまい茶");   # 
+
+print "# Bye:\n";
+ok 1;
diff --git a/tp/maintain/lib/Text-Unidecode/t/09900_bye.t 
b/tp/maintain/lib/Text-Unidecode/t/09900_bye.t
new file mode 100644
index 0000000000..18c408ee53
--- /dev/null
+++ b/tp/maintain/lib/Text-Unidecode/t/09900_bye.t
@@ -0,0 +1,12 @@
+# -*- coding:utf-8; mode:CPerl -*-
+print "1..2\n";
+print '# Time-stamp: "2014-06-17 18:53:17 MDT sburke@cpan.org"', "\n";
+require 5;
+
+print "ok 1\n";
+
+print "# Bye from ", __FILE__, "\n";
+
+print "ok 2\n";
+
+#End
diff --git a/tp/maintain/lib/Text-Unidecode/test.pl 
b/tp/maintain/lib/Text-Unidecode/test.pl
deleted file mode 100644
index 51d5d667bd..0000000000
--- a/tp/maintain/lib/Text-Unidecode/test.pl
+++ /dev/null
@@ -1,96 +0,0 @@
-
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl test.pl'
-
-######################### We start with some black magic to print on failure.
- # Time-stamp: "2001-07-14 01:48:48 MDT"
-
-require 5.006;
- # This is a Perl program.
-use strict;
-use utf8;
-use Test;
-
-BEGIN { plan tests => 17 }
-
-use Text::Unidecode;
-
-ok 1;
-print "# Text::Unidecode v$Text::Unidecode::VERSION\n",
-      "# Perl v$]\n",
-      "# Starting tests...\n";
-
-my $in = "\x{0d9c}\x{0d8e}!\n";
-my($was, $should, $is);
-foreach my $line (
-
-#"# 7-bit purity tests: all chars 00 to 7F\n",
-#map(\ord($_), 0x00 .. 0x7f),
-
-"# Basic string tests\n",
-\(
-  "",
-  1/10,
-  "I like pie.",
-  "\n",
-  "\cm\cj",
-  "I like pie.\n",
-),
-
-"#\n",
-"# COMPLEX TESTS\n",
-
-split(m/\n/, <<"EOTESTS"),
-<\x{C6}neid> <AEneid>
-<\x{E9}tude> <etude>
-<\x{5317}\x{4EB0}> <Bei Jing >
- ; Chinese
-<\x{1515}\x{14c7}\x{14c7}> <shanana>
- ; Canadian syllabics
-<\x{13d4}\x{13b5}\x{13c6}> <taliqua>
- ; Cherokee
-<\x{0726}\x{071b}\x{073d}\x{0710}\x{073a}> <ptu'i>
- ; Syriac
-<\x{0905}\x{092d}\x{093f}\x{091c}\x{0940}\x{0924}> <abhijiit>
- ; Devanagari
-<\x{0985}\x{09ad}\x{09bf}\x{099c}\x{09c0}\x{09a4}> <abhijiit>
- ; Bengali
-<\x{0d05}\x{0d2d}\x{0d3f}\x{0d1c}\x{0d40}\x{0d24}> <abhijiit>
- ; Malayalaam
-<\x{0d2e}\x{0d32}\x{0d2f}\x{0d3e}\x{0d32}\x{0d2e}\x{0d4d}> <mlyaalm>
- ; the Malayaalam word for "Malayaalam"
- ; Yes, if we were doing it right, that'd be "malayaalam", not "mlyaalm"
-
-<\x{3052}\x{3093}\x{307e}\x{3044}\x{8336}> <genmaiCha >
- ; Japanese, astonishingly unmangled.
-
-EOTESTS
-
-# TODO: more tests, I guess.
-
-"# End of test data\n",
-) {
-  if(ref $line) { # it should pass thru untouched
-    #print ref($line), "\n";
-    $was = $should = $$line;
-  } else {
-    if($line =~ m/<(.*?)>\s*<(.*?)>/ or $line =~ m/\[(.*?)\]\s*\[(.*?)\]/ ){
-      ($was, $should) = ($1,$2);
-    } else {
-      print $line if $line =~ m/^\s*#/s;
-      next;
-    }
-  }
-  $is = unidecode($was);
-  if($should eq $is) {
-    ok 1;
-    for($should, $is, $was) { s/\n/\\n/g; s/\cm/\\cm/g; s/\cj/\\cj/g; }
-    print "  # <$was> -> <$is> (ok)\n";
-  } else {
-    ok 0;
-    for($should, $is, $was) { s/\n/\\n/g }
-    print "  # <$was> -> <$is>, but should be <$should>\n";
-  }
-}
-print "# Byebye\n";
-
diff --git a/tp/t/nodenormalization.t b/tp/t/nodenormalization.t
index 7fbc9c5886..cd59e589ae 100644
--- a/tp/t/nodenormalization.t
+++ b/tp/t/nodenormalization.t
@@ -171,7 +171,7 @@ SKIP: {
   'transliterated complex line');
   my $transliterated_line_no_unidecode = 
normalize_transliterate_texinfo($line_tree, 1);
   is ($transliterated_line_no_unidecode,
-'-A-sc-accents-i-i-_1e14-l-_1e08-n-r-i-y-i-j-C-E-a-a-a-characters-l-_00a1-aa-oe-_002c-error_002d_002d_003e-_2026-_002e_002e_002e-no-brace-commands-_0040-_002e-_007d-signs-_002d_002d-_002d_002d_002d-_0060_0060-_0027_0027-_0021_005f_0022_0023_0024_0025_0026_0027_0028_0029_002a_002b_002d_002e-_002f_003b_003c_003d_003e_003f_005b_005c_005d_005e_005f_0060_007c_007e-spaces-_00a0_2003_2002_0085_180e-',
+'-A-sc-accents-i-i-_1e14-l-_1e08-n-r-i-y-i-j-C-E-a-a-a-characters-l-_00a1-aa-oe-_002c-error_002d_002d_003e-_2026-_002e_002e_002e-no-brace-commands-_0040-_002e-_007d-signs-_002d_002d-_002d_002d_002d-_0060_0060-_0027_0027-_0021_005f_0022_0023_0024_0025_0026_0027_0028_0029_002a_002b_002d_002e-_002f_003b_003c_003d_003e_003f_005b_005c_005d_005e_005f_0060_007c_007e-spaces-_00a0_2003_2002_180e-',
   'transliterated complex line no unidecode');
 }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]