chiark / gitweb /
Merge remote-tracking branch 'origin/branch-5.0'
authorRichard Kettlewell <rjk@terraraq.org.uk>
Sun, 31 Jul 2011 16:16:46 +0000 (17:16 +0100)
committerRichard Kettlewell <rjk@terraraq.org.uk>
Sun, 31 Jul 2011 16:16:46 +0000 (17:16 +0100)
Conflicts:
CHANGES.html

101 files changed:
.gitignore [moved from .bzrignore with 94% similarity]
CHANGES.html
Makefile.am
README
README.developers
README.upgrades [deleted file]
README.upgrades.html [new file with mode: 0644]
acinclude.m4
cgi/Makefile.am
cgi/actions.c
clients/Makefile.am
clients/disorder.c
clients/playrtp.c
configure.ac
debian/Makefile.am
debian/changelog
debian/conffiles.disorder-server
debian/control
debian/disorder.daily [new file with mode: 0755]
debian/rules
disobedience/Makefile.am
disobedience/choose-search.c
disobedience/disobedience.c
disobedience/disobedience.h
disobedience/globals.c [new file with mode: 0644]
disobedience/log.c
disobedience/login.c
disobedience/manual/properties.html
disobedience/manual/window.html
disobedience/menu.c
disobedience/playlists.c
disobedience/rtp.c
doc/disorder-dump.8.in
doc/disorder_config.5.in
doc/disorder_preferences.5.in
doc/disorder_protocol.5.in
docs.css [new file with mode: 0644]
lib/Makefile.am
lib/asprintf.c
lib/authhash.c
lib/authhash.h
lib/cgi.c
lib/charset.h
lib/charsetf.c [new file with mode: 0644]
lib/client-common.c
lib/client.c
lib/configuration.c
lib/configuration.h
lib/eclient.c
lib/eclient.h
lib/fprintf.c
lib/hreader.c [new file with mode: 0644]
lib/hreader.h [new file with mode: 0644]
lib/kvp.c
lib/kvp.h
lib/mime.c
lib/queue.c
lib/queue.h
lib/sendmail.c
lib/trackdb.c
lib/trackdb.h
lib/uaudio-rtp.c
lib/unidata.c
lib/user.c
lib/vector.c
lib/vector.h
lib/wav.c
lib/wav.h
libtests/Makefile.am
libtests/t-hash.c
libtests/t-hex.c
libtests/t-timeval.c [new file with mode: 0644]
libtests/t-unicode.c
libtests/test.h
plugins/Makefile.am
plugins/exec.c
plugins/tracklength-flac.c [new file with mode: 0644]
plugins/tracklength-mp3.c [new file with mode: 0644]
plugins/tracklength-ogg.c [new file with mode: 0644]
plugins/tracklength-wav.c [new file with mode: 0644]
plugins/tracklength.c
plugins/tracklength.h [new file with mode: 0644]
scripts/dist
scripts/make-unidata
scripts/make-version-string
server/Makefile.am
server/decode-flac.c [new file with mode: 0644]
server/decode-mp3.c [new file with mode: 0644]
server/decode-ogg.c [new file with mode: 0644]
server/decode-wav.c [new file with mode: 0644]
server/decode.c
server/decode.h [new file with mode: 0644]
server/disorder-server.h
server/disorderd.c
server/dump.c
server/mount.c [new file with mode: 0644]
server/play.c
server/rescan.c
server/schedule.c
server/server.c
server/speaker.c

similarity index 94%
rename from .bzrignore
rename to .gitignore
index 150c85c8e411e76136edf02898f010129caa1bc6..2e8cf69ab7e924870fe2623b811aa0832a162fb3 100644 (file)
@@ -1,11 +1,11 @@
 Makefile.in
-./build
-./configure
-./config.h.in
-./COPYING
-./INSTALL
-./aclocal.m4
-./autom4te.cache
+/build
+/configure
+/config.h.in
+/COPYING
+/INSTALL
+/aclocal.m4
+/autom4te.cache
 config.aux/config.guess
 config.aux/config.sub
 config.aux/depcomp
@@ -14,19 +14,18 @@ config.aux/ltmain.sh
 config.aux/missing
 config.aux/py-compile
 ,*
-ChangeLog.d/bzr-changelog
 *.la
 *.lo
 .deps
 .libs
-./Makefile
-./TAGS
-./config.cache
-./config.h
-./config.log
-./config.status
-./libtool
-./stamp-h1
+/Makefile
+/TAGS
+/config.cache
+/config.h
+/config.log
+/config.status
+/libtool
+/stamp-h1
 clients/Makefile
 clients/disorder
 clients/disorderfm
@@ -82,7 +81,6 @@ server/disorderd
 server/trackname
 sounds/Makefile
 templates/Makefile
-.bzr.backup
 doc/disorder-speaker.8.html
 .gdb_history
 core
@@ -205,3 +203,7 @@ clients/rtpmon
 libtests/t-resample
 clients/resample
 disobedience/manual/Makefile
+/m4
+libtests/t-timeval
+*.[oa]
+*~
index 008cc8757806d62a9d756d37ce2be0aa6ee5eb19..75a9ef48d3d2dd6f0beac5ea0269820ddf0dfc47 100644 (file)
@@ -1,65 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
 <html>
 <head>
 <title>DisOrder Change History</title>
-<style type="text/css">
-body {
-  color: black;
-  background-color: white;
-  font-family: times,serif;
-  font-weight: normal;
-  font-size: 12pt;
-  font-variant: normal
-}
-
-div.section {
-  margin-left:1em
-}
-
-h1 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h2 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h3 {
-  background-color: #f0f0f0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h4 {
-  font-family: helvetica,sans-serif
-}
-
-table.bugs {
-  width: 100%;
-  font-size: 12pt;
-  border-collapse: collapse;
-  border:1px
-}
-
-table.bugs th {
-  text-align: left;
-  border: 1px solid black;
-  background-color: black;
-  color: white
-}
-
-table.bugs td {
-  border: 1px solid
-}
-
-span.command {
-  font-family: monospace
-}
-</style>
+<link rel=StyleSheet type="text/css" href="docs.css">
 </head>
 
 <body>
@@ -68,6 +11,69 @@ span.command {
 <p>This file documents recent user-visible changes to <a
  href="http://www.greenend.org.uk/rjk/disorder/">DisOrder</a>.</p>
 
+<p><b>IMPORTANT</b>: you should read <a
+href="README.upgrades.html">README.upgrades</a> before upgrading.</p>
+
+<h2>Changes up to version 5.1</h2>
+
+<div class=section>
+
+  <h3>Removable Device Support</h3>
+
+  <div class=section>
+
+    <p>The server will now automatically initiate a rescan when a filesystem is
+    mounted or unmounted.  (Use the <tt>mount_rescan</tt> option if you want to
+    suppress this behavior.)</p>
+
+    <p>The server takes care not to hold audio files open unnecessarily, so
+    that devices can be unmounted even if tracks from them are currently being
+    buffered.</p>
+
+  </div>
+
+  <h3>Disobedience</h3>
+
+  <div class=section>
+
+    <p>You can now edit the <tt>required-tags</tt> and <tt>prohibited-tags</tt>
+    global preferences in Disobedience
+    (<a href="http://code.google.com/p/disorder/issues/detail?id=29">issue
+    #29</a>).</p>
+
+  </div>
+
+  <h3>Backups</h3>
+
+  <div class=section>
+
+    <p>The Debian package now includes a cronjob that backs up the database
+    daily.  See <tt>/etc/cron.d/disorder</tt>.  You can put settings
+    in <tt>/etc/default/disorder</tt> to turn this off or to control how long
+    the backups are kept for.</p>
+
+    <p>The <tt>disorder-dump -r</tt> option was broken.</p>
+
+    <p><tt>disorder-dump</tt> now gets permissions right automatically (<a
+    href="http://code.google.com/p/disorder/issues/detail?id=56">issue
+    #56</a>).</p>
+
+  </div>
+
+  <h3>General</h3>
+
+  <div class=section>
+
+    <p>Unicode support has been upgraded to <a
+    href="http://www.unicode.org/versions/Unicode6.0.0/">Unicode
+    6.0.0</a>.</p>
+    
+    <p>Various minor bug fixes.</p>
+
+  </div>
+
+</div>
+
 <h2>Changes up to version 5.0.3</h2>
 
 <div class=section>
@@ -158,7 +164,7 @@ unless they are properly authorized.</p>
 
       <p>Confirmation URLs should be cleaner (and in particular not end
       with punctuation).  (Please see <a
-      href="README.upgrades">README.upgrades</a> for more about this.)</p>
+      href="README.upgrades.html">README.upgrades</a> for more about this.)</p>
 
     </div>
       
@@ -214,67 +220,67 @@ unless they are properly authorized.</p>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=30">#30</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=30">#30</a></td>
           <td>mini disobedience interface</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=32">#32</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=32">#32</a></td>
           <td>Excessively verbose log chatter on shutdown</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></td>
           <td>(Some) plugins need -lm.</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=39">#39</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=39">#39</a></td>
           <td>Double bind() non-multicast AF_INET</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=40">#40</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=40">#40</a></td>
           <td>Missing stub function</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=41">#41</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=41">#41</a></td>
           <td>Missing includes for timeval</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=42">#42</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=42">#42</a></td>
           <td>syntax error in empeg_host section</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=43">#43</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=43">#43</a></td>
           <td>decoder segfault with FLAC 1.2.1</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=44">#44</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=44">#44</a></td>
           <td>gcc 4.3.2-1ubuntu12 SUYB patch</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=45">#45</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=45">#45</a></td>
           <td>disobedience doesn't configure its back end</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=46">#46</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=46">#46</a></td>
           <td>Sort search results in web interface</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=48">#48</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=48">#48</a></td>
           <td>build-time dependency on <tt>oggdec</tt> removed</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=49">#49</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=49">#49</a></td>
           <td>Disobedience's 'When' column gets out of date</td>
         </tr>
 
@@ -682,7 +688,7 @@ unless they are properly authorized.</p>
 <div class=section>
   
   <p><b>Important</b>!  See <a
-  href="README.upgrades">README.upgrades</a> when upgrading.</p>
+  href="README.upgrades.html">README.upgrades</a> when upgrading.</p>
   
   <h3>Platforms And Installation</h3>
   
index b41014f52b6b97dc04fb1b567632208878d5b588..4f98902a588c5e9a7eca3d54684db4ba2500907a 100644 (file)
 #
 
 EXTRA_DIST=CHANGES.html README.streams BUGS \
-README.upgrades README.client README.raw README.vhost README.developers
+README.upgrades.html README.client README.raw README.vhost README.developers \
+docs.css
 SUBDIRS=@subdirs@
 
 DISTCHECK_CONFIGURE_FLAGS:=httpdir=$(distdir)/_inst/httpdir cgiexecdir=$(shell pwd)/$(distdir)/_inst/cgiexecdir
 
+ACLOCAL_AMFLAGS=-I m4
+
 check-report: before-check check make-coverage-reports
 before-check:
        rm -f */*.gcda */*.gcov
diff --git a/README b/README
index b1ddc92a5bdfe902bbdc1a281745080bb0e308d8..9df61faf5024f609f856b9b570890954f33e2534 100644 (file)
--- a/README
+++ b/README
@@ -13,8 +13,8 @@ DisOrder is a multi-user software jukebox.
      GTK+ interface that runs on Linux and Mac systems.
    * Playing tracks can be paused or cancelled ("scratched").
 
-See CHANGES.html for details of recent changes to DisOrder and README.upgrades
-for upgrade instructions.
+See CHANGES.html for details of recent changes to DisOrder and
+README.upgrades.html for upgrade instructions.
 
 Platform support:
   Linux            Well tested on Debian
@@ -67,7 +67,8 @@ Installation
    "This place'd be a paradise tomorrow, if every department had a supervisor
    with a machine-gun"
 
-IMPORTANT: If you are upgrading from an earlier version, see README.upgrades.
+IMPORTANT: If you are upgrading from an earlier version, see
+README.upgrades.html.
 
 Debian/Ubuntu: steps 1 to 6 are dealt with automatically if you use the .deb
 files.
index 5c71b07bbdc75f26fb2e6e3e1592c07bdb2fbc9e..20cd7d9b6adecc0fc059697581753291a9b9c657 100644 (file)
@@ -4,7 +4,7 @@ Dependencies:
      Automake         1.10           1.7 is no good; 1.8/9 might work
      Autoconf         2.61           Slightly older might work too
      Libtool          1.5.22         1.4 is no good
-     Bazaar (bzr)                    You might be able to manage without
+     git                             You might be able to manage without
      Python           2.5.2          2.4 won't work
 
    * On Debian and derivatives this should work:
@@ -30,7 +30,7 @@ Dependencies:
 
 Building:
 
-   * Compiled versions of configure and the makefiles are not included in bzr,
+   * Compiled versions of configure and the makefiles are not included in git,
      so if you didn't use a source tarball, you must start as follows:
 
         bash ./autogen.sh
@@ -183,7 +183,7 @@ Code And Patches:
      structure initializers are used; the configure script asks for -std=gnu99
      by default.  Some supported platforms are still on GCC 4.0.
 
-   * Please submit patches either using 'diff -u', or by publishing a bzr
+   * Please submit patches either using 'diff -u', or by publishing a git
      branch somewhere I can get at it.
 
    * Please make it clear that your changes can be distributed under DisOrder's
diff --git a/README.upgrades b/README.upgrades
deleted file mode 100644 (file)
index 1cb6aba..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-* Upgrading DisOrder
-
-The general procedure is:
-
- * stop the old daemon:  /etc/init.d/disorder stop
- * back up your database directory (example below)
- * build and install the new version as described in the README.  Remember to
-   install the new version of the web interface too.
- * update the configuration files (see below)
- * start the new daemon, e.g. with
-     /etc/init.d/disorder start
-
-The rest of this file describes things you must pay attention to when
-upgrading between particular versions.  Minor versions are not
-explicitly mentioned; a version number like 1.1 implicitly includes
-all 1.1.x versions.
-
-If you install from .deb files then much of this work is automated.
-
-* 4.x -> 5.0
-
-** Web Confirmation Strings
-
-The syntax of confirmation strings for online registrations has changed and old
-ones no longer work.  This only affects users who registered before the upgrade
-but have not yet confirmed their login.  You can delete such half-created users
-with 'disorder deluser USERNAME' (as an administrative user, for instance as
-root on the server) and they can start the registration process again.
-
-** Handling Of Configuration Changes
-
-There is a new mechanism to ensure that the search database and aliases are
-reconstructed if any options that affect them change.  Unfortunately this means
-that the reconstruction step always takes place on upgrade from 4.3 or earlier,
-as those versions don't record sufficient information for the server to tell
-whether it needs to reconstruct or not.
-
-The result will be a log message of the form:
-
-new database parameter string dbparams-0-sha256:61609f3e6395ec8dee317ee216fe2848d70c249d347dd03c6a219441a13dd456 - removing old data
-
-...and a slower rescan on startup.  Subsequent restarts should not have this
-problem (unless of course you change a relevant option).
-
-** Deprecation Notices
-
-The player --wait-for-device option is deprecated and will be removed in a
-future version.
-
-The 'lock' option no longer does anything.  You must delete it from any
-configuration files that contain it.  The full set of deprecated options is:
-  allow
-  gap
-  lock
-  prefsync
-  restrict
-  trust
-
-* 3.0 -> 4.x
-
-If you customized any of the templates, you will pretty much have to start from
-scratch as the web interface has been rewritten.  See disorder.cgi(8) for a
-starting point.
-
-The 'gap' directive will no longer work.  You must delete it from any
-configuration files that contain it.
-
-You may prefer to remove any 'smtp_server' directive you have, as the web
-interface will now use the local sendmail executable if available.
-
-If you want to be able to do use management over non-local connections (thereby
-potentially exposing passwords!) you must set 'remote_userman' to 'yes'.
-
-* 2.0 -> 3.0
-
-** Authentication
-
-Users are now stored in the database rather than in 'allow' directives in a
-private configuration file.  'allow' is still understood in this version, but
-is only used to populate the database on startup.  After the first (successful)
-run of the server the remaining 'allow' directives should be deleted.
-
-'restrict' and 'trust' are replaced by a system of per-user rights.  The
-default user rights are based on the 'restrict' setting, and the rights of
-users created frow 'allow' directives preserve the meaning of 'trust', but
-after the first run you should remove these directives and (optionally) add a
-'default_rights' directive.
-
-'allow', 'restrict' and 'trust' will stop working entirely in a future version
-but for now they will generate harmless error messages.  Remove them and the
-error messages will go away.
-
-See README for new setup instructions for the web interface.
-
-** Other Server Configuration
-
-Sensible defaults for 'stopword', 'player' and 'tracklength' are now built into
-the server.  If you haven't modified the values from the example or Debian
-configuration files then you can remove them.
-
-'gap' now defaults to 0 seconds instead of 2.
-
-The sound output API is now configured with the 'api' command although
-'speaker_backend' still works.  If you use 'api alsa' then you may need to
-change your 'mixer' and 'channel' settings.
-
-** Web Interface
-
-The web interface no longer uses HTTP basic authentication and the web server
-configuration imposing access control on it should be removed.  Users now log
-in using their main DisOrder password and the one in the htpassed file is now
-obsolete.  You should revisit the web interface setup instructions in README
-from scratch.
-
-As part of this, the DisOrder URL has changed from (e.g.)
-
-    http://yourserver/cgi-bin/disorder/disorder
-
-to just
-
-    http://yourserver/cgi-bin/disorder
-
-** Checklist
-
-   * delete default 'stopword', 'player' and 'tracklength' directives
-   * set 'gap' if you want a non-0 inter-track gap
-   * set 'api' and maybe 'mixer' and 'channel'
-   * perhaps add 'default_rights' directive
-   * delete 'allow', 'restrict' and 'trust' directives after first run
-   * follow new web interface setup in README
-
-* 1.4/1.5 -> 2.0
-
-** 'transform' and 'namepart' directives
-
-'transform' has moved from the web options to the main configuration file, so
-that they can be used by other interfaces.  The syntax and semantics are
-unchanged.
-
-More importantly however both 'transform' and 'namepart' are now optional, with
-sensible defaults being built in.  So if you were already using the default
-values you can just delete all instances of both.
-
-See disorder_config(5) for the default values.  Hopefuly they will be suitable
-for many configurations.  Please do send feedback.
-
-** 'enabled' and 'random_enabled' directives
-
-These have been removed.  Instead the state persists from one run of the server
-to the next.  If they appear in your configuration file they must be removed;
-the server will not start if they are present.
-
-** Database upgrade
-
-It is strongly recommended that you back up your database before performing the
-upgrade.  For example, as root, with the server STOPPED:
-  cd /var/disorder
-  mkdir BACKUP
-  cp -p * BACKUP
-
-To restore, again as root:
-  cd /var/disorder
-  rm *
-  cp -p BACKUP/* .
-
-The first thing the server does when upgrading from 1.5 is run the
-disorder-dbupgrade program.  This is necessary to modify any non-ASCII track
-names to meet the latest version's stricter normalization practices.  The
-upgrade should succeed automatically; if not it should leave an error message
-in syslog.
-
-* 1.3 -> 1.4
-
-** Raw Format Decoders
-
-You will probably want reconfigure your install to use the new facilities
-(although the old way works fine).  See the example configuration file and
-README.raw for more details.
-
-Depending on how your system is configured you may need to link the disorder
-libao driver into the right directory:
-
-   ln -s /usr/local/lib/ao/plugins-2/libdisorder.so /usr/lib/ao/plugins-2/.
-
-* 1.2 -> 1.3
-
-** Server Environment
-
-It is important that $sbindir is on the server's path.  The example init script
-guarantees this.  You may need to modify the installed one.  You will get
-"deadlock manager unexpectedly terminated" if you get this wrong.
-
-** namepart directives
-
-These have changed in three ways.
-
-Firstly they have changed to substitute in a more convenient way.  Instead of
-matches for the regexp being substituted back into the original track name, the
-replacement string now completely replaces it.  Given the usual uses of
-namepart, this is much more convenient.  If you've stuck with the defaults no
-changes should be needed for this.
-
-Secondly they are matched against the track name with the collection root
-stripped off.
-
-Finally you will need to add an extra line to your config file as follows for
-the new track aliasing mechanisms to work properly:
-
-namepart        ext     "(\\.[a-zA-Z0-9]+)$"                   "$1"    *
-
-* 1.1 -> 1.2
-
-** Web Interface Changes
-
-The web interface now includes static content as well as templates.
-The static content must be given a name visible to HTTP clients which
-maps to its location in the real filesystem.
-
-The README suggests using a rule in httpd.conf to make /static in the
-HTTP namespace point to /usr/local/share/disorder/static, which is
-where DisOrder installs its static content (by default).
-Alternatively you can set the url.static label to the base URL of the
-static content.
-
-** Configuration File Changes
-
-The trackname-part web interface directive has now gone, and the
-options.trackname file with it.
-
-It is replaced by a new namepart directive in the main configuration
-file.  This has exactly the same syntax as trackname-part, only the
-name and location have changed.
-
-The reason for the change is to allow track name parsing to be
-centrally configured, rather than every interface to DisOrder having
-to implement it locally.
-
-If you do not install new namepart directives into the main
-configuration file then track titles will show up blank.
-
-If you do not remove the trackname-part directives from the web
-interface configuration then you will get error messages in the web
-server's error log.
-
-Local Variables:
-mode:outline
-fill-column:79
-End:
diff --git a/README.upgrades.html b/README.upgrades.html
new file mode 100644 (file)
index 0000000..842cf40
--- /dev/null
@@ -0,0 +1,343 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+  <head>
+    <title>Upgrading DisOrder</title>
+    <link rel=StyleSheet type="text/css" href="docs.css">
+  </head>
+  <body>
+    <h1>Upgrading DisOrder</h1>
+
+    <ul>
+      <li><a href="#deb">.deb Installs</a></li>
+      <li><a href="#source">Source Installs</a></li>
+      <li><a href="#ver">Version-Specific Details</a></li>
+    </ul>
+
+    <h2><a name="deb">.deb Installs</a></h2>
+
+    <h3>Take A Backup</h3>
+    
+    <p>You should make a backup of DisOrder's databases before proceeding with
+    any upgrade.  You can generate a backup as follows:</p>
+
+    <pre># disorder-dump --dump <i>PATH</i></pre>
+
+    <p>where <i>PATH</i> is the filename to write the backup to.</p>
+
+    <p>As of version 5.1, the Debian version of the server will take a daily
+    backup of its databases to <tt>/var/lib/disorder/backups</tt>, so it should
+    not be a disaster if you neglect this step in <i>subsequent</i>
+    upgrades.</p>
+
+    <h3>Install The New Packages</h3>
+
+    <pre># dpkg -i *.deb</pre>
+
+    <h3>Upgrade Databases</h3>
+
+    <p>If you have changed version of <tt>libdb</tt> then the new one may not
+    be compatible with the old one's file format.  In this case the server will
+    not start, causing the upgrade to fail.  Remove the database files and
+    restore from the backup you took above.</p>
+
+    <pre># rm /var/lib/disorder/*
+# disorder-dump --restore PATH
+# dpkg --configure -a</pre>
+
+    <h2><a name=source>Source Installs</a></h2>
+
+    <h3>Take A Backup</h3>
+
+    <p>You should make a backup of DisOrder's databases before proceeding with
+    any upgrade.  You can generate a backup as follows:</p>
+
+    <pre># disorder-dump --dump PATH</pre>
+
+    <p>where PATH is the filename to write the backup to.</p>
+
+    <h3>Stop The Server</h3>
+
+    <p>Linux:</p>
+
+    <pre># /etc/init.d/disorder stop</pre>
+
+    <p>Mac:</p>
+
+    <pre># launchctl stop uk.org.greenend.rjk.disorder
+# launchctl unload /Library/LaunchDaemons/uk.org.greenend.rjk.disorder.plist</pre>
+
+    <p>If you are feeling cautious you can also make an exact copy of the
+    database files at this point (they are in
+    <tt>/usr/local/var/disorder</tt>).</p>
+
+    <h3>Build And Install The New Version</h3>
+
+    <p>See the top-level <a href="README">README</a>.</p>
+
+    <h3>Update Configuration Files</h3>
+
+    <p>See version-specific information below.</p>
+
+    <h3>Upgrade Databases</h3>
+
+    <p>If you have changed version of <tt>libdb</tt> you may need to remove the
+    database files and restore from the backup you took above.</p>
+
+    <pre># rm /usr/local/var/disorder/*
+# disorder-dump --restore PATH</pre>
+
+    <h3>Restart The Server</h3>
+
+    <p>Linux:</p>
+
+    <pre># /etc/init.d/disorder start</pre>
+
+    <p>Mac:</p>
+
+    <pre># cp examples/uk.org.greenend.rjk.disorder.plist /Library/LaunchDaemons/.
+# launchctl load /Library/LaunchDaemons
+# launchctl start uk.org.greenend.rjk.disorder</pre>
+
+    <h1><a name=ver>Version-Specific Details</a></h1>
+
+    <h2>4.x -> 5.0</h2>
+
+    <h3>Web Confirmation Strings</h3>
+
+    <p>The syntax of confirmation strings for online registrations has changed
+    and old ones no longer work.  This only affects users who registered before
+    the upgrade but have not yet confirmed their login.  You can delete such
+    half-created users with 'disorder deluser USERNAME' (as an administrative
+    user, for instance as root on the server) and they can start the
+    registration process again.</p>
+
+    <h3>Handling Of Configuration Changes</h3>
+
+    <p>There is a new mechanism to ensure that the search database and aliases
+    are reconstructed if any options that affect them change.  Unfortunately
+    this means that the reconstruction step always takes place on upgrade from
+    4.3 or earlier, as those versions don't record sufficient information for
+    the server to tell whether it needs to reconstruct or not.</p>
+
+    <p>The result will be a log message of the form:</p>
+
+    <pre>new database parameter string dbparams-0-sha256:61609f3e6395ec8dee317ee216fe2848d70c249d347dd03c6a219441a13dd456 - removing old data</pre>
+
+    <p>...and a slower rescan on startup.  Subsequent restarts should not have
+    this problem (unless of course you change a relevant option).</p>
+
+    <h3>Deprecation Notices</h3>
+
+    <p>The player <tt>--wait-for-device</tt> option is deprecated and will be
+    removed in a future version.</p>
+
+    <p>The 'lock' option no longer does anything.  You must delete it from any
+    configuration files that contain it.  The full set of deprecated options
+    is:</p>
+
+    <ul>
+    <li>allow</li>
+    <li>gap</li>
+    <li>lock</li>
+    <li>prefsync</li>
+    <li>restrict</li>
+    <li>trust</li>
+        </ul>
+
+    <h2>3.0 -> 4.x</h2>
+
+    <p>If you customized any of the templates, you will pretty much have to
+    start from scratch as the web interface has been rewritten.  See
+    disorder.cgi(8) for a starting point.</p>
+
+    <p>The 'gap' directive will no longer work.  You must delete it from any
+    configuration files that contain it.</p>
+
+    <p>You may prefer to remove any 'smtp_server' directive you have, as the
+    web interface will now use the local sendmail executable if available.</p>
+
+    <p>If you want to be able to do use management over non-local connections
+    (thereby potentially exposing passwords!) you must set 'remote_userman' to
+    'yes'.</p>
+
+    <h2>2.0 -> 3.0</h2>
+
+    <h3>Authentication</h3>
+
+    <p>Users are now stored in the database rather than in 'allow' directives
+    in a private configuration file.  'allow' is still understood in this
+    version, but is only used to populate the database on startup.  After the
+    first (successful) run of the server the remaining 'allow' directives
+    should be deleted.</p>
+
+    <p>'restrict' and 'trust' are replaced by a system of per-user rights.  The
+    default user rights are based on the 'restrict' setting, and the rights of
+    users created frow 'allow' directives preserve the meaning of 'trust', but
+    after the first run you should remove these directives and (optionally) add
+    a 'default_rights' directive.</p>
+
+    <p>'allow', 'restrict' and 'trust' will stop working entirely in a future
+    version but for now they will generate harmless error messages.  Remove
+    them and the error messages will go away.</p>
+
+    <p>See README for new setup instructions for the web interface.</p>
+
+    <h3>Other Server Configuration</h3>
+
+    <p>Sensible defaults for 'stopword', 'player' and 'tracklength' are now
+    built into the server.  If you haven't modified the values from the example
+    or Debian configuration files then you can remove them.</p>
+
+    <p>'gap' now defaults to 0 seconds instead of 2.</p>
+
+    <p>The sound output API is now configured with the 'api' command although
+    'speaker_backend' still works.  If you use 'api alsa' then you may need to
+    change your 'mixer' and 'channel' settings.</p>
+
+    <h3>Web Interface</h3>
+
+    <p>The web interface no longer uses HTTP basic authentication and the web
+    server configuration imposing access control on it should be removed.
+    Users now log in using their main DisOrder password and the one in the
+    htpassed file is now obsolete.  You should revisit the web interface setup
+    instructions in README from scratch.</p>
+
+    <p>As part of this, the DisOrder URL has changed from (e.g.)</p>
+
+    <pre>http://yourserver/cgi-bin/disorder/disorder</pre>
+
+    <p>to just</p>
+
+    <pre>http://yourserver/cgi-bin/disorder</pre>
+
+    <h3>Checklist</h3>
+
+    <ul>
+    <li>delete default 'stopword', 'player' and 'tracklength' directives</li>
+    <li>set 'gap' if you want a non-0 inter-track gap</li>
+    <li>set 'api' and maybe 'mixer' and 'channel'</li>
+    <li>perhaps add 'default_rights' directive</li>
+    <li>delete 'allow', 'restrict' and 'trust' directives after first run</li>
+    <li>follow new web interface setup in README</li>
+        </ul>
+
+    <h2>1.4/1.5 -> 2.0</h2>
+
+    <h3>'transform' and 'namepart' directives</h3>
+
+    <p>'transform' has moved from the web options to the main configuration
+    file, so that they can be used by other interfaces.  The syntax and
+    semantics are unchanged.</p>
+
+    <p>More importantly however both 'transform' and 'namepart' are now
+    optional, with sensible defaults being built in.  So if you were already
+    using the default values you can just delete all instances of both.</p>
+
+    <p>See disorder_config(5) for the default values.  Hopefuly they will be
+    suitable for many configurations.  Please do send feedback.</p>
+
+    <h3>'enabled' and 'random_enabled' directives</h3>
+
+    <p>These have been removed.  Instead the state persists from one run of the
+    server to the next.  If they appear in your configuration file they must be
+    removed; the server will not start if they are present.</p>
+
+    <h3>Database upgrade</h3>
+
+    <p>It is strongly recommended that you back up your database before
+    performing the upgrade.  For example, as root, with the server STOPPED:</p>
+
+    <pre># cd /var/disorder
+# mkdir BACKUP
+# cp -p * BACKUP</pre>
+
+    <p>To restore, again as root:</p>
+    <pre># cd /var/disorder
+# rm *
+# cp -p BACKUP/* .</pre>
+
+    <p>The first thing the server does when upgrading from 1.5 is run the
+    disorder-dbupgrade program.  This is necessary to modify any non-ASCII
+    track names to meet the latest version's stricter normalization practices.
+    The upgrade should succeed automtically; if not it should leave an error
+    message in syslog.</p>
+
+    <h2>1.3 -> 1.4</h2>
+
+    <h3>Raw Format Decoders</h3>
+
+    <p>You will probably want reconfigure your install to use the new
+    facilities (although the old way works fine).  See the example
+    configuration file and README.raw for more details.</p>
+
+    <p>Depending on how your system is configured you may need to link the
+    disorder libao driver into the right directory:</p>
+
+    <pre># ln -s /usr/local/lib/ao/plugins-2/libdisorder.so /usr/lib/ao/plugins-2/.</pre>
+
+    <h2>1.2 -> 1.3</h2>
+
+    <h3>Server Environment</h3>
+
+    <p>It is important that $sbindir is on the server's path.  The example init
+    script guarantees this.  You may need to modify the installed one.  You
+    will get "deadlock manager unexpectedly terminated" if you get this
+    wrong.</p>
+
+    <h3>namepart directives</h3>
+
+    <p>These have changed in three ways.</p>
+
+    <p>Firstly they have changed to substitute in a more convenient way.
+    Instead of matches for the regexp being substituted back into the original
+    track name, the replacement string now completely replaces it.  Given the
+    usual uses of namepart, this is much more convenient.  If you've stuck with
+    the defaults no changes should be needed for this.</p>
+
+    <p>Secondly they are matched against the track name with the collection
+    root stripped off.</p>
+
+    <p>Finally you will need to add an extra line to your config file as
+    follows for the new track aliasing mechanisms to work properly:</p>
+
+    <pre>namepart        ext     "(\\.[a-zA-Z0-9]+)$"                   "$1"    *</pre>
+
+    <h2>1.1 -> 1.2</h2>
+
+    <h3>Web Interface Changes</h3>
+
+    <p>The web interface now includes static content as well as templates.  The
+    static content must be given a name visible to HTTP clients which maps to
+    its location in the real filesystem.</p>
+
+    <p>The README suggests using a rule in httpd.conf to make /static in the
+    HTTP namespace point to /usr/local/share/disorder/static, which is where
+    DisOrder installs its static content (by default).  Alternatively you can
+    set the url.static label to the base URL of the static content.</p>
+
+    <h3>Configuration File Changes</h3>
+
+    <p>The trackname-part web interface directive has now gone, and the
+    options.trackname file with it.</p>
+
+    <p>It is replaced by a new namepart directive in the main configuration
+    file.  This has exactly the same syntax as trackname-part, only the name
+    and location have changed.</p>
+
+    <p>The reason for the change is to allow track name parsing to be centrally
+    configured, rather than every interface to DisOrder having to implement it
+    locally.</p>
+
+    <p>If you do not install new namepart directives into the main
+    configuration file then track titles will show up blank.</p>
+
+    <p>If you do not remove the trackname-part directives from the web
+    interface configuration then you will get error messages in the web
+    server's error log.</p>
+
+  </body>
+</html>
+
+<!-- Local Variables: -->
+<!-- fill-column:79 -->
+<!-- End: -->
index 6df1aa39b4048130b4dacf642f1547e45939a760..5ab86727bf3fc512afe005b2c8847ec5d3c67f90 100644 (file)
@@ -17,9 +17,9 @@
 
 AC_DEFUN([RJK_FIND_GC_H],[
   AC_CACHE_CHECK([looking for <gc.h>],[rjk_cv_gc_h],[
-    AC_PREPROC_IFELSE([
+    AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                       #include <gc.h>
-                     ],
+                     ],[])],
                      [rjk_cv_gc_h="on default include path"],[
       oldCPPFLAGS="${CPPFLAGS}"
       for dir in /usr/include/gc /usr/local/include/gc; do
@@ -28,9 +28,9 @@ AC_DEFUN([RJK_FIND_GC_H],[
        else
          CPPFLAGS="${oldCPPFLAGS} -I$dir"
        fi
-       AC_PREPROC_IFELSE([
+       AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                           #include <gc.h>
-                         ],
+                         ],[])],
                          [rjk_cv_gc_h=$dir;break],[rjk_cv_gc_h="not found"])
       done
       CPPFLAGS="${oldCPPFLAGS}"
index 88cb24d4f2886ea422bca6fcc5d4e248e3395ad6..e762b718ff909c135b65ec967483feced904ede0 100644 (file)
@@ -27,7 +27,4 @@ disorder_LDADD=../lib/libdisorder.a \
 disorder_LDFLAGS=-export-dynamic
 disorder_DEPENDENCIES=../lib/libdisorder.a
 
-install-exec-hook:
-       $(LIBTOOL) --mode=finish $(DESTDIR)$(cgiexecdir)
-
 CLEANFILES=*.gcda *.gcov *.gcno *.c.html index.html
index fae533a7b3f45ee37c4ab6e2ed5838ef71c4a0e4..f6755b0317ad2ca080c1d28098e3902df38cb559 100644 (file)
@@ -612,7 +612,7 @@ static int process_prefs(int numfile) {
     byte_xasprintf((char **)&name, "trackname_%s_%s", context, part);
     disorder_set(dcgi_client, file, name, value);
   }
-  if((value = numbered_arg("random", numfile)))
+  if(numbered_arg("random", numfile))
     disorder_unset(dcgi_client, file, "pick_at_random");
   else
     disorder_set(dcgi_client, file, "pick_at_random", "0");
index 91afc1c4f06ed604840741ce985fa49b6baaaf27..197d09c5f0623db79f493b027d243a9d38886e00 100644 (file)
@@ -47,9 +47,6 @@ filename_bytes_SOURCES=filename-bytes.c
 resample_SOURCES=resample.c
 resample_LDADD=$(LIBOBJS) ../lib/libdisorder.a $(LIBSAMPLERATE)
 
-install-exec-hook:
-       $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir)
-
 check: check-help check-completions
 
 # check everything has working --help and --version
index 1d55b8db6a7f14eedba2f555e69a5e13872dfb88..53fce74c778c0b5aaf6c24d634f291b5f24ed731 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -98,7 +98,9 @@ static void cf_version(char attribute((unused)) **argv) {
   char *v;
 
   if(disorder_version(getclient(), &v)) exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(v)));
+  v = nullcheck(utf82mb_f(v));
+  xprintf("%s\n", v);
+  xfree(v);
 }
 
 static void print_queue_entry(const struct queue_entry *q) {
@@ -173,13 +175,12 @@ static void cf_rescan(char attribute((unused)) **argv) {
 
 static void cf_somequeue(int (*fn)(disorder_client *c,
                                   struct queue_entry **qp)) {
-  struct queue_entry *q;
+  struct queue_entry *q, *qbase;
 
-  if(fn(getclient(), &q)) exit(EXIT_FAILURE);
-  while(q) {
+  if(fn(getclient(), &qbase)) exit(EXIT_FAILURE);
+  for(q = qbase; q; q = q->next)
     print_queue_entry(q);
-    q = q->next;
-  }
+  queue_free(qbase, 1);
 }
 
 static void cf_recent(char attribute((unused)) **argv) {
@@ -225,16 +226,17 @@ static void cf_somelist(char **argv,
                        int (*fn)(disorder_client *c,
                                  const char *arg, const char *re,
                                  char ***vecp, int *nvecp)) {
-  char **vec;
+  char **vec, **base;
   const char *re;
 
   if(argv[1])
     re = xstrdup(argv[1] + 1);
   else
     re = 0;
-  if(fn(getclient(), argv[0], re, &vec, 0)) exit(EXIT_FAILURE);
-  while(*vec)
-    xprintf("%s\n", nullcheck(utf82mb(*vec++)));
+  if(fn(getclient(), argv[0], re, &base, 0)) exit(EXIT_FAILURE);
+  for(vec = base; *vec; ++vec)
+    xprintf("%s\n", nullcheck(utf82mb_f(*vec)));
+  xfree(base);
 }
 
 static int isarg_regexp(const char *s) {
@@ -257,7 +259,7 @@ static void cf_get(char **argv) {
   char *value;
 
   if(disorder_get(getclient(), argv[0], argv[1], &value)) exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(value)));
+  xprintf("%s\n", nullcheck(utf82mb_f(value)));
 }
 
 static void cf_length(char **argv) {
@@ -276,12 +278,13 @@ static void cf_unset(char **argv) {
 }
 
 static void cf_prefs(char **argv) {
-  struct kvp *k;
+  struct kvp *k, *base;
 
-  if(disorder_prefs(getclient(), argv[0], &k)) exit(EXIT_FAILURE);
-  for(; k; k = k->next)
+  if(disorder_prefs(getclient(), argv[0], &base)) exit(EXIT_FAILURE);
+  for(k = base; k; k = k->next)
     xprintf("%s = %s\n",
            nullcheck(utf82mb(k->name)), nullcheck(utf82mb(k->value)));
+  kvp_free(base);
 }
 
 static void cf_search(char **argv) {
@@ -291,6 +294,7 @@ static void cf_search(char **argv) {
   if(disorder_search(getclient(), *argv, &results, &nresults)) exit(EXIT_FAILURE);
   for(n = 0; n < nresults; ++n)
     xprintf("%s\n", nullcheck(utf82mb(results[n])));
+  free_strings(nresults, results);
 }
 
 static void cf_random_disable(char attribute((unused)) **argv) {
@@ -303,10 +307,12 @@ static void cf_random_enable(char attribute((unused)) **argv) {
 
 static void cf_stats(char attribute((unused)) **argv) {
   char **vec;
+  int nvec;
 
-  if(disorder_stats(getclient(), &vec, 0)) exit(EXIT_FAILURE);
-  while(*vec)
-      xprintf("%s\n", nullcheck(utf82mb(*vec++)));
+  if(disorder_stats(getclient(), &vec, &nvec)) exit(EXIT_FAILURE);
+  for(int n = 0; n < nvec; ++n)
+    xprintf("%s\n", nullcheck(utf82mb(vec[n])));
+  free_strings(nvec, vec);
 }
 
 static void cf_get_volume(char attribute((unused)) **argv) {
@@ -339,7 +345,7 @@ static void cf_part(char **argv) {
   char *s;
 
   if(disorder_part(getclient(), &s, argv[0], argv[1], argv[2])) exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(s)));
+  xprintf("%s\n", nullcheck(utf82mb_f(s)));
 }
 
 static int isarg_filename(const char *s) {
@@ -354,7 +360,7 @@ static void cf_resolve(char **argv) {
   char *track;
 
   if(disorder_resolve(getclient(), &track, argv[0])) exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(track)));
+  xprintf("%s\n", nullcheck(utf82mb_f(track)));
 }
 
 static void cf_pause(char attribute((unused)) **argv) {
@@ -385,7 +391,7 @@ static void cf_get_global(char **argv) {
   char *value;
 
   if(disorder_get_global(getclient(), argv[0], &value)) exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(value)));
+  xprintf("%s\n", nullcheck(utf82mb_f(value)));
 }
 
 static void cf_set_global(char **argv) {
@@ -446,7 +452,7 @@ static void cf_userinfo(char **argv) {
 
   if(disorder_userinfo(getclient(), argv[0], argv[1], &s))
     exit(EXIT_FAILURE);
-  xprintf("%s\n", nullcheck(utf82mb(s)));
+  xprintf("%s\n", nullcheck(utf82mb_f(s)));
 }
 
 static int isarg_option(const char *arg) {
@@ -609,11 +615,13 @@ static void cf_adopt(char **argv) {
 
 static void cf_playlists(char attribute((unused)) **argv) {
   char **vec;
+  int nvec;
 
-  if(disorder_playlists(getclient(), &vec, 0))
+  if(disorder_playlists(getclient(), &vec, &nvec))
     exit(EXIT_FAILURE);
-  while(*vec)
-    xprintf("%s\n", nullcheck(utf82mb(*vec++)));
+  for(int n = 0; n < nvec; ++n)
+    xprintf("%s\n", nullcheck(utf82mb(vec[n])));
+  free_strings(nvec, vec);
 }
 
 static void cf_playlist_del(char **argv) {
@@ -623,11 +631,13 @@ static void cf_playlist_del(char **argv) {
 
 static void cf_playlist_get(char **argv) {
   char **vec;
+  int nvec;
 
-  if(disorder_playlist_get(getclient(), argv[0], &vec, 0))
+  if(disorder_playlist_get(getclient(), argv[0], &vec, &nvec))
     exit(EXIT_FAILURE);
-  while(*vec)
-    xprintf("%s\n", nullcheck(utf82mb(*vec++)));
+  for(int n = 0; n < nvec; ++n)
+    xprintf("%s\n", nullcheck(utf82mb(vec[n])));
+  free_strings(nvec, vec);
 }
 
 static void cf_playlist_set(char **argv) {
@@ -864,11 +874,14 @@ int main(int argc, char **argv) {
   }
   if(config_read(0, NULL)) disorder_fatal(0, "cannot read configuration");
   if(user) {
-    config->username = user;
+    xfree(config->username);
+    config->username = xstrdup(user);
     config->password = 0;
   }
-  if(password)
-    config->password = password;
+  if(password) {
+    xfree(config->password);
+    config->password = xstrdup(password);
+  }
   if(local)
     config->connect.af = -1;
   if(wfr)
@@ -889,7 +902,7 @@ int main(int argc, char **argv) {
     vector_init(&args);
     /* Include the command name in the args, but at element -1, for
      * the benefit of subcommand getopt calls */
-    vector_append(&args, argv[n]);
+    vector_append(&args, xstrdup(argv[n]));
     n++;
     for(j = 0; j < commands[i].min; ++j)
       vector_append(&args, nullcheck(mb2utf8(argv[n + j])));
@@ -899,10 +912,13 @@ int main(int argc, char **argv) {
       vector_append(&args, nullcheck(mb2utf8(argv[n + j])));
     vector_terminate(&args);
     commands[i].fn(args.vec + 1);
+    vector_clear(&args);
     n += j;
   }
   if(client && disorder_close(client)) exit(EXIT_FAILURE);
   if(fclose(stdout) < 0) disorder_fatal(errno, "error closing stdout");
+  config_free(config);
+  xfree(client);
   return status;
 }
 
index 2ab67906ba5ffff9ab44cee412bb397b7092a6fb..2bd2452321a36e23d8564e5cbaece6b72dafe644 100644 (file)
@@ -678,6 +678,12 @@ int main(int argc, char **argv) {
     }
   }
   if(config_read(0, NULL)) disorder_fatal(0, "cannot read configuration");
+  if(backend == &uaudio_rtp) {
+    /* This means that you have NO local sound output.  This can happen if you
+     * use a non-Apple GCC on a Mac (because it doesn't know how to compile
+     * CoreAudio/AudioHardware.h). */
+    disorder_fatal(0, "cannot play RTP through RTP");
+  }
   if(!maxbuffer)
     maxbuffer = 2 * minbuffer;
   argc -= optind;
index b0290c98c4d450e473da709db6c8e01e64f20a94..ee96f219e1d4ed9da707564c349dd433b6e273b4 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-AC_INIT([disorder], [5.0], [richard+disorder@sfere.greenend.org.uk])
+AC_INIT([disorder], [5.0.DEV], [richard+disorder@sfere.greenend.org.uk])
 AC_CONFIG_AUX_DIR([config.aux])
-AM_INIT_AUTOMAKE(disorder, [5.0])
+AM_INIT_AUTOMAKE(disorder, [5.0.DEV])
 AC_CONFIG_SRCDIR([server/disorderd.c])
 AM_CONFIG_HEADER([config.h])
+AC_CONFIG_MACRO_DIR([m4])
 
 # Find host type
 AC_CANONICAL_HOST
@@ -107,6 +108,7 @@ case "$host" in
  ;;
 *linux* | *Linux* )
   AC_MSG_RESULT([Linux])
+  AC_DEFINE_UNQUOTED([PATH_PROC_MOUNTS],["/proc/mounts"],[path to kernel mount list])
   ;;
 *-apple-darwin* )
   AC_MSG_RESULT([Mac OS X])
@@ -156,7 +158,7 @@ case "$host" in
   # Look for a suitable version of libdb among the versions found in FreeBSD 7.0
   AC_CACHE_CHECK([looking for a libdb install],[rjk_cv_libdb],[
     rjk_cv_libdb="none"
-    for db in db43 db44 db45 db46; do
+    for db in db43 db44 db45 db47; do
       if test -e /usr/local/lib/$db; then
         rjk_cv_libdb=$db
         break
@@ -522,7 +524,6 @@ if test $want_server = yes; then
   AC_CHECK_HEADERS([db.h],[:],[
     missing_headers="$missing_headers $ac_header"
   ])
-  AC_CHECK_HEADERS([FLAC/file_decoder.h])
 fi
 AC_CHECK_HEADERS([dlfcn.h gcrypt.h \
                 getopt.h iconv.h langinfo.h \
@@ -547,6 +548,18 @@ AC_C_BIGENDIAN
 AC_CHECK_TYPES([struct sockaddr_in6],,,[AC_INCLUDES_DEFAULT
 #include <netinet/in.h>])
 
+# Figure out how we'll check for devices being mounted and unmounted
+AC_CACHE_CHECK([for list of mounted filesystems],[rjk_cv_mtab],[
+  if test -e /etc/mtab; then
+    rjk_cv_mtab=/etc/mtab
+  else
+    rjk_cv_mtab=none
+  fi
+])
+if test $rjk_cv_mtab != none; then
+  AC_DEFINE_UNQUOTED([PATH_MTAB],["$rjk_cv_mtab"],[path to file containing mount list])
+fi
+
 # enable -Werror when we check for certain characteristics:
 
 old_CFLAGS="${CFLAGS}"
@@ -639,12 +652,12 @@ if test ! -z "$missing_functions"; then
 fi
 
 # Functions we can take or leave
-AC_CHECK_FUNCS([fls])
+AC_CHECK_FUNCS([fls getfsstat])
 
 if test $want_server = yes; then
   # <db.h> had better be version 3 or later
   AC_CACHE_CHECK([db.h version],[rjk_cv_db_version],[
-    AC_PREPROC_IFELSE([
+    AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                       #include <db.h>
                       #ifndef DB_VERSION_MAJOR
                       # error cannot determine db version
@@ -655,16 +668,16 @@ if test $want_server = yes; then
                       #if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR <= 2
                       # error inadequate db version
                       #endif
-                     ],
+                     ],[])],
                      [rjk_cv_db_version=ok],
                      [rjk_cv_db_version=inadequate])
     if test $rjk_cv_db_version = ok; then
-      AC_PREPROC_IFELSE([
+      AC_PREPROC_IFELSE([AC_LANG_PROGRAM([
                          #include <db.h>
                          #if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 6
                          # error http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=510270
                          #endif
-                        ],
+                        ],[])],
                         [rjk_cv_db_version=ok],
                         [rjk_cv_db_version=toxic])
     fi
@@ -716,13 +729,13 @@ if test "x$GCC" = xyes; then
     if test $GCC = yes; then
       CC="$CC -Wall -Werror"
     fi
-    AC_COMPILE_IFELSE([
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
       static int x(char *f) {
        return *f;
       }
       int z(const char *g) {
        return x((char *)g);
-      }],
+      }])],
       [rjk_cv_pr29478=no],
       [rjk_cv_pr29478=yes]
     )
@@ -738,11 +751,11 @@ if test "x$GCC" = xyes; then
     if test $GCC = yes; then
       CC="$CC -Wreturn-type -Werror"
     fi
-    AC_COMPILE_IFELSE([
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[
       static void *threadfn(void) {
         for(;;)
           ;
-      }],
+      }],[])],
       [rjk_cv_gcc44_stupidity=no],
       [rjk_cv_gcc44_stupidity=yes])
     CC="$old_CC"
@@ -752,7 +765,7 @@ if test "x$GCC" = xyes; then
   fi
 
   # a reasonable default set of warnings
-  CC="${CC} -Wall -W -Wpointer-arith -Wbad-function-cast \
+  CC="${CC} -Wall -W -Wpointer-arith \
        -Wwrite-strings -Wmissing-prototypes \
        -Wmissing-declarations -Wnested-externs"
 
index 293df227d41714d591915ab9a40f68565bd34263..4868419bdb01b85cb1301e69180e1ce8ac297428 100644 (file)
@@ -25,4 +25,5 @@ EXTRA_DIST=README.Debian config.disorder-server control \
           postrm.disorder-server overrides.disorder-server \
           templates.disorder-server conffiles.disorder-server \
           rules changelog usr.share.menu.disobedience \
+          disorder.daily \
           postinst.disobedience disobedience-manual
index e76e763f350116678903c405d19c5d3320db0c0d..52be205907609ad4ec73cfe6038542012b5afd5c 100644 (file)
@@ -1,3 +1,9 @@
+disorder (5.0.DEV) unstable; urgency=low
+
+  * Development version.
+
+ -- Richard Kettlewell <rjk@greenend.org.uk>  Sat, 12 Feb 2011 15:44:33 +0000
+
 disorder (5.0) unstable; urgency=low
 
   * DisOrder 5.0
index 5d44ee4b2f1c2291e5eb21c97239a28c3c7fa9d3..9e1f9541536dbaf6d1aa2e5945bf1be6c72bed73 100644 (file)
@@ -2,3 +2,4 @@
 /etc/disorder/options
 /etc/disorder/options.user
 /etc/init.d/disorder
+/etc/cron.daily/disorder
index 332927871f33b98e568ecfa0d10853438ab36ac0..0c183d31ca3f684b16e541a58233ff5e2ffb3fe2 100644 (file)
@@ -3,8 +3,8 @@ Maintainer: Richard Kettlewell <rjk@greenend.org.uk>
 Section: sound
 Priority: optional
 Standards-Version: 3.8.1.0
-Build-Depends: libgc6-dev | libgc-dev, libgcrypt-dev, libdb4.8-dev, libpcre3-dev, libvorbis-dev, libmad0-dev, libasound2-dev, libao-dev, python, libflac-dev, libgtk2.0-dev (>= 2.12.12)
-Vcs-Bzr: http://www.greenend.org.uk/rjk/bzr/disorder.dev/
+Build-Depends: libgc6-dev | libgc-dev, libgcrypt-dev, libdb4.3-dev | libdb4.5-dev | libdb4.7-dev | libdb4.8-dev, libpcre3-dev, libvorbis-dev, libmad0-dev, libasound2-dev, libao-dev, python, libflac-dev, libgtk2.0-dev (>= 2.12.12)
+Vcs-Git: https://code.google.com/p/disorder/
 Homepage: http://www.greenend.org.uk/rjk/disorder/
 
 Package: disorder
@@ -28,7 +28,7 @@ Package: disorder-server
 Architecture: any
 Section: sound
 Priority: extra
-Depends: disorder,httpd-cgi,sox,debconf,${shlibs:Depends},exim4|mail-transport-agent,adduser
+Depends: disorder,httpd-cgi,sox,debconf,${shlibs:Depends},exim4|mail-transport-agent,adduser,findutils
 Suggests: disorder-playrtp,disobedience
 Description: Play random or selected digital audio files continuously
  DisOrder is a software jukebox.  It can play OGG, MP3, WAV and FLAC files,
diff --git a/debian/disorder.daily b/debian/disorder.daily
new file mode 100755 (executable)
index 0000000..18f4bed
--- /dev/null
@@ -0,0 +1,30 @@
+#! /bin/sh
+set -e
+
+# Maximum backup age
+MAXAGE=7
+
+# Enable backups
+BACKUP=true
+
+# Enable pruning
+PRUNE=true
+
+# All operator to override settings
+if test -e /etc/default/disorder; then
+  . /etc/default/disorder
+fi
+
+if ${BACKUP}; then
+  # Ensure the backup directory exists
+  mkdir -m 0700 -p /var/lib/disorder/backups
+
+  # Take a backup
+  disorder-dump --dump /var/lib/disorder/backups/$(date +%F)
+fi
+
+if ${PRUNE}; then
+  # Delete old backups
+  find /var/lib/disorder/backups -type f -ctime +${MAXAGE} -print0 \
+  | xargs -r0 rm -f
+fi
index 1861c139e96d8ed71d8d73679fb45e5b7812d8ee..481b2aefd9497f0ab438af77e0e059ae5d0c7ab8 100755 (executable)
@@ -123,7 +123,7 @@ pkg-disorder: build
        dpkg-shlibdeps -Tdebian/substvars.disorder \
                debian/disorder/usr/bin/*
        $(INSTALL_DATA) CHANGES.html README debian/README.Debian \
-               BUGS README.* \
+               BUGS README.* docs.css \
                debian/disorder/usr/share/doc/disorder/.
        gzip -9f debian/disorder/usr/share/doc/disorder/README \
                 debian/disorder/usr/share/doc/disorder/README.* \
@@ -186,6 +186,7 @@ pkg-disorder-server: build
        $(MKDIR) debian/disorder-server/etc/init.d
        $(MKDIR) debian/disorder-server${cgiexecdir}
        $(MKDIR) debian/disorder-server/var/lib/disorder
+       $(MKDIR) debian/disorder-server/etc/cron.daily
        $(INSTALL_SCRIPT) examples/disorder.init \
                debian/disorder-server/etc/init.d/disorder
        $(INSTALL_DATA) debian/etc.disorder.config \
@@ -194,6 +195,7 @@ pkg-disorder-server: build
                debian/disorder-server/etc/disorder/options
        $(INSTALL_DATA) debian/etc.disorder.options.user \
                debian/disorder-server/etc/disorder/options.user
+       $(INSTALL_SCRIPT) debian/disorder.daily debian/disorder-server/etc/cron.daily/disorder
        $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) cgi/disorder \
                $(shell pwd)/debian/disorder-server${cgiexecdir}/disorder
        gzip -9f debian/disorder-server/usr/share/man/man*/*
@@ -323,7 +325,7 @@ binary-arch: pkg-disorder pkg-disorder-server pkg-disorder-playrtp \
 binary-indep: 
 
 clean:
-       test -f Makefile && $(MAKE) distclean
+       if test -f Makefile; then $(MAKE) distclean; fi
        rm -f config.cache
        rm -f debian/files
        rm -f debian/substvars.*
index 7b823c262d9bf6860b58aeaeaf2f91572d862a91..bf5ea40c4dcf4b40970ae2d455dccce90cb69983 100644 (file)
@@ -28,14 +28,11 @@ disobedience_SOURCES=disobedience.h disobedience.c client.c queue.c \
        control.c properties.c menu.c log.c progress.c login.c rtp.c    \
        help.c ../lib/memgc.c settings.c users.c lookup.c choose.h      \
        popup.h playlists.c multidrag.c multidrag.h autoscroll.c        \
-       autoscroll.h
+       autoscroll.h globals.c
 disobedience_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBGC) $(LIBGCRYPT) \
        $(LIBASOUND) $(COREAUDIO) $(LIBDB) $(LIBICONV)
 disobedience_LDFLAGS=$(GTK_LIBS)
 
-install-exec-hook:
-       $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir)
-
 check: check-help
 
 misc.o: ../images/images.h
index acfddfa8d536c6b735d59585472d86748f51a1fb..60df2ec095b9c6d92e8ae2012f7151d320df3323 100644 (file)
@@ -441,6 +441,7 @@ static gboolean choose_get_visible_range(GtkTreeView *tree_view,
  * @param direction -1 for prev, +1 for next
  */
 static void choose_move(int direction) {
+  assert(direction);                    /* placate analyzer */
   /* Refocus the main view so typahead find continues to work */
   gtk_widget_grab_focus(choose_view);
   /* If there's no results we have nothing to do */
index 639eb73c2e74efba3e67a618177ba8740cb2ef52..0b6e099d0145f9517f4d9478ab0644df13172574 100644 (file)
@@ -569,6 +569,7 @@ int main(int argc, char **argv) {
   event_register("log-connected", check_rtp_address, 0);
   suppress_actions = 0;
   playlists_init();
+  globals_init();
   /* If no password is set yet pop up a login box */
   if(!config->password)
     login_box();
index 719eea40dc98931e603f22c27c483e00cb42ec38..0ff76d32c570f5854050c15a142bf0d5ea8ec50c 100644 (file)
@@ -237,6 +237,11 @@ void manage_users(void);
 
 void popup_help(const char *what);
 
+/* Filtering */
+
+void popup_globals(void);
+void globals_init(void);
+
 /* RTP */
 
 int rtp_running(void);
diff --git a/disobedience/globals.c b/disobedience/globals.c
new file mode 100644 (file)
index 0000000..2734c32
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2011 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file disobedience/globals.c
+ * @brief Track global preferences
+ */
+
+#include "disobedience.h"
+
+static GtkWidget *globals_window;
+
+struct globals_row;
+
+/** @brief Handler for the presentation form of a global preference */
+struct global_handler {
+  /** @brief Initialize */
+  void (*init)(struct globals_row *row);
+
+  /** @brief Convert presentation form to string */
+  const char *(*get)(struct globals_row *row);
+
+  /** @brief Convert string to presentation form */
+  void (*set)(struct globals_row *row, const char *value);
+};
+
+/** @brief Definition of a global preference */
+struct globals_row {
+  const char *label;
+  const char *pref;
+  GtkWidget *widget;
+  const struct global_handler *handler;
+  int initialized;
+};
+
+static void globals_close(GtkButton attribute((unused)) *button,
+                        gpointer attribute((unused)) userdata);
+static void globals_row_changed(struct globals_row *row);
+
+/** @brief Called when the user changes the contents of a string entry */
+static void global_string_entry_changed(GtkEditable attribute((unused)) *editable,
+                                       gpointer user_data) {
+  struct globals_row *row = user_data;
+  globals_row_changed(row);
+}
+
+/** @brief Initialize a global presented as a string */
+static void global_string_init(struct globals_row *row) {
+  row->widget = gtk_entry_new();
+  g_signal_connect(row->widget, "changed",
+                  G_CALLBACK(global_string_entry_changed), row);
+}
+
+static const char *global_string_get(struct globals_row *row) {
+  return gtk_entry_get_text(GTK_ENTRY(row->widget));
+}
+
+static void global_string_set(struct globals_row *row, const char *value) {
+  /* Identify unset and empty lists */
+  if(!value)
+    value = "";
+  /* Skip trivial updates (we'll see one as a consequence of each
+   * update we make...) */
+  if(strcmp(gtk_entry_get_text(GTK_ENTRY(row->widget)), value))
+    gtk_entry_set_text(GTK_ENTRY(row->widget), value);
+}
+
+/** @brief String global preference */
+static const struct global_handler global_string = {
+  global_string_init,
+  global_string_get,
+  global_string_set,
+};
+
+/** @brief Called when the user changes the contents of a string entry */
+static void global_boolean_toggled(GtkToggleButton attribute((unused)) *button,
+                                  gpointer user_data) {
+  struct globals_row *row = user_data;
+  globals_row_changed(row);
+}
+
+static void global_boolean_init(struct globals_row *row) {
+  row->widget = gtk_check_button_new();
+  g_signal_connect(row->widget, "toggled",
+                  G_CALLBACK(global_boolean_toggled), row);
+}
+
+static const char *global_boolean_get(struct globals_row *row) {
+  return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->widget)) ? "yes" : "no";
+}
+
+static void global_boolean_set(struct globals_row *row, const char *value) {
+  gboolean new_state = !(value && strcmp(value, "yes"));
+  if(new_state != gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->widget)))
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->widget), new_state);
+}
+
+/** @brief Boolean global preference */
+static const struct global_handler global_boolean = {
+  global_boolean_init,
+  global_boolean_get,
+  global_boolean_set,
+};
+
+/** @brief Table of global preferences */
+static struct globals_row globals_rows[] = {
+  { "Required tags", "required-tags", NULL, &global_string, 0 },
+  { "Prohibited tags", "prohibited-tags", NULL, &global_string, 0 },
+  { "Playing", "playing", NULL, &global_boolean, 0 },
+  { "Random play", "random-play", NULL, &global_boolean, 0 },
+};
+#define NGLOBALS (sizeof globals_rows / sizeof *globals_rows)
+
+/** @brief Buttons for globals popup */
+static struct button globals_buttons[] = {
+  {
+    .stock = GTK_STOCK_CLOSE,
+    .clicked = globals_close,
+    .tip = "Close window",
+    .pack = gtk_box_pack_end,
+  },
+};
+#define NGLOBALS_BUTTONS (sizeof globals_buttons / sizeof *globals_buttons)
+
+static void globals_close(GtkButton attribute((unused)) *button,
+                        gpointer attribute((unused)) userdata) {
+  gtk_widget_destroy(globals_window);
+}
+
+/** @brief Called with the latest setting for a row */
+static void globals_get_completed(void *v, const char *err,
+                                const char *value) {
+  if(err)
+    popup_protocol_error(0, err);
+  else if(globals_window) {
+    struct globals_row *row = v;
+    row->handler->set(row, value);
+    row->initialized = 1;
+  }
+}
+
+/** @brief Retrieve the latest setting for @p row */
+static void globals_get(struct globals_row *row) {
+  disorder_eclient_get_global(client, globals_get_completed, row->pref, row);
+}
+
+static void globals_row_changed(struct globals_row *row) {
+  if(row->initialized) {
+    const char *new_value = row->handler->get(row);
+    if(new_value)
+      disorder_eclient_set_global(client, NULL, row->pref, new_value, row);
+    else
+      disorder_eclient_unset_global(client, NULL, row->pref, row);
+  }
+}
+
+/** @brief Display the globals window */
+void popup_globals(void) {
+  GtkWidget *label, *table, *hbox;
+  /* Pop up the window if it already exists */
+  if(globals_window) {
+    gtk_window_present(GTK_WINDOW(globals_window));
+    return;
+  }
+  /* Create the window */
+  /* TODO loads of this is very similar to (copied from!) users.c - can we
+   * de-dupe? */
+  globals_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+  gtk_widget_set_style(globals_window, tool_style);
+  gtk_window_set_title(GTK_WINDOW(globals_window), "Globals");
+  g_signal_connect(globals_window, "destroy",
+                  G_CALLBACK(gtk_widget_destroyed), &globals_window);
+  table = gtk_table_new(NGLOBALS + 1/*rows*/, 2/*cols*/, FALSE/*homogeneous*/);
+  gtk_widget_set_style(table, tool_style);\
+
+  for(size_t n = 0; n < NGLOBALS; ++n) {
+    globals_rows[n].initialized = 0;
+    label = gtk_label_new(globals_rows[n].label);
+    gtk_widget_set_style(label, tool_style);
+    gtk_misc_set_alignment(GTK_MISC(label), 1/*right*/, 0/*bottom*/);
+    gtk_table_attach(GTK_TABLE(table), label,
+                    0, 1,                /* left/right_attach */
+                    n, n+1,              /* top/bottom_attach */
+                    GTK_FILL, 0,         /* x/yoptions */
+                    1, 1);               /* x/ypadding */
+    globals_rows[n].handler->init(&globals_rows[n]);
+    gtk_widget_set_style(globals_rows[n].widget, tool_style);
+    gtk_table_attach(GTK_TABLE(table), globals_rows[n].widget,
+                    1, 2,                /* left/right_attach */
+                    n, n+1,              /* top/bottom_attach */
+                    GTK_FILL, 0,         /* x/yoptions */
+                    1, 1);               /* x/ypadding */
+    globals_get(&globals_rows[n]);
+  }
+  hbox = create_buttons_box(globals_buttons,
+                           NGLOBALS_BUTTONS,
+                           gtk_hbox_new(FALSE, 1));
+  gtk_table_attach_defaults(GTK_TABLE(table), hbox,
+                           0, 2,                /* left/right_attach */
+                           NGLOBALS, NGLOBALS+1); /* top/bottom_attach */
+
+  gtk_container_add(GTK_CONTAINER(globals_window), frame_widget(table, NULL));
+  gtk_widget_show_all(globals_window);
+}
+
+/** @brief Called when any global pref changes */
+static void globals_pref_changed(const char *event,
+                                void *eventdata,
+                                void *callbackdata) {
+  const char *pref = eventdata;
+  if(!globals_window)
+    return;                    /* not paying attention */
+  for(size_t n = 0; n < NGLOBALS; ++n) {
+    if(!strcmp(pref, globals_rows[n].pref))
+      globals_get(&globals_rows[n]);
+  }
+}
+
+/** @brief Initialize globals infrastructure */
+void globals_init() {
+  event_register("global-pref", globals_pref_changed, NULL);
+}
index 71d2af04bf32c006e91a4dff7642a251be0d1265..2fd04a10c339acf2aeedabff2aef8295e12a2907 100644 (file)
@@ -48,6 +48,8 @@ static void log_playlist_modified(void *v,
                                   const char *playlist, const char *sharing);
 static void log_playlist_deleted(void *v,
                                  const char *playlist);
+static void log_global_pref(void *v,
+                            const char *name, const char *value);
 
 /** @brief Callbacks for server state monitoring */
 const disorder_eclient_log_callbacks log_callbacks = {
@@ -69,6 +71,7 @@ const disorder_eclient_log_callbacks log_callbacks = {
   .playlist_created = log_playlist_created,
   .playlist_modified = log_playlist_modified,
   .playlist_deleted = log_playlist_deleted,
+  .global_pref = log_global_pref,
 };
 
 /** @brief Update everything */
@@ -238,6 +241,12 @@ static void log_playlist_deleted(void attribute((unused)) *v,
   event_raise("playlist-deleted", (void *)playlist);
 }
 
+static void log_global_pref(void attribute((unused)) *v,
+                            const char *name,
+                            const char attribute((unused)) *value) {
+  event_raise("global-pref", (void *)name);
+}
+
 /*
 Local Variables:
 c-basic-offset:2
index a02c1c6e698188013c2a5e80051a5083ab8d92ed..0c6e7d74dd44756d10f123f6bbaba055aafc59e3 100644 (file)
@@ -120,11 +120,13 @@ static void set_service(struct config *c, const char *s) {
 }
 
 static void set_username(struct config *c, const char *s) {
-  c->username = s;
+  xfree(c->username);
+  c->username = xstrdup(s);
 }
 
 static void set_password(struct config *c, const char *s) {
-  c->password = s;
+  xfree(c->password);
+  c->password = xstrdup(s);
 }
 
 /** @brief Table used to generate the form */
index 34d215fc06df150f798f3868b304a3b0e8dce00c..bce107dcea3a8c61a9bb422d408ad59cd3e534b9 100644 (file)
@@ -31,7 +31,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
    <p class=image><img src="track-properties.png"></p>
 
    <p>This window can be invoked from any of the four tabs by
-   selecting one or more tracks and then either selected <b>Edit >
+   selecting one or more tracks and then either selecting <b>Edit >
    Track Properties</b> or via the right-click pop-up menu.</p>
 
    <h2><a name=names>4.1 Track Name Parts</a></h2>
@@ -66,13 +66,22 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    <p>Each track has an associated collection of tags.  These can used
    when searching for tracks in the <b>Choose</b> tab or to control
-   which tracks are picked at random (although this functionality is
-   not readily available in current versions of Disobedience).</p>
+   which tracks are picked at random.</p>
 
    <p>To add tags to a track enter the tags you want to apply to it in
    the <b>Tags</b> field, separated by commas.  Tags cannot contain
    commas and are compared without regard to whitespace.</p>
 
+   <p>To search by tag, prefix it with <tt>tag:</tt> in the search box.</p>
+
+   <p>To control how tracks are picked at random, select <b>Control >
+   Global Preferences</b>.  If <b>Required Tags</b> contains a
+   comma-separated list of tags then only tracks with at least one of
+   the listed tags will be picked at random.  Similarly
+   if <b>Prohibited Tags</b> contains a comma-separated list of tags
+   then no track with any of the listed tags will be picked at
+   random.</p>
+
    <h2><a name=weight>4.3 Track Weight</a></h2>
 
    <p>Every track has an associated weight.  A higher weight makes the
index 72fe5f77ffb2ef3669aefcba061807a511f527a3..a4c1642e53db237a52fc974db785c068ef6f98a8 100644 (file)
@@ -144,10 +144,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
    <p class=image><img src="menu-control.png"></p>
 
    <p>The <b>Control</b> menu options are mostly equivalent to the
-   buttons described above.  The exceptions is <b>Activate
-   Playlist</b> which allows you to play
-   a <A href="playlists.html">playlist</a>, and <b>Compact Mode</b>
-   which switches Disobedience's window to a smaller format.</p>
+   buttons described above.  The exceptions are:</p>
+
+   <ul>
+     <li><b>Compact Mode</b> which switches Disobedience's window to a smaller format.</li>
+     <li><b>Global Preferences</b> which allows global server settings to be modified.</li>
+     <li><b>Activate Playlist</b> which allows you to play a <A href="playlists.html">playlist</a>.</li>
+   </ul>
 
    <p class=image><img src="menu-help.png"></p>
 
index bae0f00d7f0471c018efd2816afbef91af59f79b..435aeb4175d252a158da46696000db17b8a2f84d 100644 (file)
@@ -182,7 +182,7 @@ static void about_popup_got_version(void attribute((unused)) *v,
                      FALSE/*fill*/,
                      1/*padding*/);
   gtk_box_pack_start(GTK_BOX(vbox),
-                     gtk_label_new("\xC2\xA9 2004-2009 Richard Kettlewell"),
+                     gtk_label_new("\xC2\xA9 2003-2011 Richard Kettlewell et al"),
                      FALSE/*expand*/,
                      FALSE/*fill*/,
                      1/*padding*/);
@@ -360,6 +360,14 @@ GtkWidget *menubar(GtkWidget *w) {
       (char *)"<CheckItem>",            /* item_type */
       0                                 /* extra_data */
     },
+    {
+      (char *)"/Control/Global Preferences", /* path */
+      (char *)"<CTRL>G",                /* accelerator */
+      popup_globals,                    /* callback */
+      0,                                /* callback_action */
+      0,                                /* item_type */
+      0                                 /* extra_data */
+    },
     {
       (char *)"/Control/Activate playlist", /* path */
       0,                                /* accelerator */
index 4d4194ea76a0e3c5361ed03f2d794ac52920d384..c95db438433edb744c04448e2310b5d0941a8e54 100644 (file)
@@ -601,7 +601,7 @@ static void playlist_new_details(char **namep,
   if(privatep) *privatep = private;
   if(namep) *namep = name;
   if(fullnamep) {
-    if(*sharedp) *fullnamep = *namep;
+    if(shared) *fullnamep = name;
     else byte_xasprintf(fullnamep, "%s.%s", config->username, name);
   }
 }
index cbedb18aaf8eb4f07b0675f64a6f22df31cf39b9..46931736b42665a205229aafd0289da15d7ef26f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of Disobedience
- * Copyright (C) 2007 Richard Kettlewell
+ * Copyright (C) 2007-2010 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -108,7 +108,7 @@ void start_rtp(void) {
   if(!(pid = xfork())) {
     if(setsid() < 0)
       disorder_fatal(errno, "error calling setsid");
-    if(!(pid = xfork())) {
+    if(!xfork()) {
       /* grandchild */
       exitfn = _exit;
       /* log errors and output somewhere reasonably sane.  rtp_running()
index 3f0b6f0c941fa655a627f322177211eb22d56021..d29562f94ad722011eeba46d341006011b75bfc3 100644 (file)
@@ -60,6 +60,9 @@ Set the configuration file.
 The default is
 .IR /etc/disorder/config .
 .TP
+.B \-\-no\-setuid
+Do not change UID.
+.TP
 .B \-\-debug\fR
 Enable debugging.
 .TP
@@ -99,7 +102,11 @@ No other process should be accessing the database at the time.
 DisOrder does not currently support catastrophic recovery.
 .PP
 This program requires write access to DisOrder's databases.
-Ideally therefore it should be run as the same user as the server or as root.
+Therefore it should be run as the same user as the server or as root.
+.PP
+If a restore is done as root then it will automatically change to the
+server user, so that the new files end up with the right ownership.
+This can be suppressed with the \fB\-\-no\-setuid\fR option.
 .SH FILES
 .TP
 .I pkgconfdir/config
index a5b55ba6f14f878a2e9285b48b4e3ef05af8ef10..e16e762984b7314612eadab5d34366ef52a8b185 100644 (file)
@@ -54,7 +54,7 @@ DisOrder distinguishes between multiple users.
 This is for access control and reporting, not to provide different
 views of the world: i.e. preferences and so on are global.
 .PP
-Each user has an associated set of rights which contorl which commands they may
+Each user has an associated set of rights which control which commands they may
 execute.
 Normally you would give all users most rights, and expect them to
 cooperate (they are after all presumed to be in a shared sound environment).
@@ -325,7 +325,6 @@ For \fBapi oss\fR the possible values are:
 .RS
 .TP 8
 .B pcm
-
 Output level for the audio device.
 This is probably what you want and is the default.
 .TP
@@ -457,6 +456,10 @@ The default is 0.
 .IP
 For \fBapi coreaudio\fR, volume setting is not currently supported.
 .TP
+.B mount_rescan yes\fR|\fBno
+Determines whether mounts and unmounts will cause an automatic rescan.
+The default is \fByes\fR.
+.TP
 .B multicast_loop yes\fR|\fBno
 Determines whether multicast packets are loop backed to the sending host.
 The default is \fByes\fR.
index 9fbe6fbc8f8729a74cbd795598751280b2e8930f..3ce67d9bfff2ecd0c581e3c1967e3560ff649ae5 100644 (file)
@@ -92,12 +92,10 @@ the listed tags.
 .B playing
 If unset or \fByes\fR then play is enabled.
 Otherwise it is disabled.
-Use \fBdisable\fR rather than setting it directly.
 .TP
 .B random\-play
 If unset or \fByes\fR then random play is enabled.
 Otherwise it is disabled.
-Use \fBdisable\fR rather than setting it directly.
 .PP
 Global preferences starting '_' are read-only (in the sense that you cannot
 modify them; the server may modify them as part of its normal operation).
index bb95ff01e584ebaa68b842e23e1f26769ae28263..b9ed984ed2518bc5b0fe655282c0c2c7baeb8e56 100644 (file)
@@ -646,6 +646,9 @@ Completed playing \fITRACK\fR
 .B failed \fITRACK\fR \fIERROR\fR
 Completed playing \fITRACK\fR with an error status
 .TP
+.B global_pref \fIPREF\fR [\fIVALUE\fR]
+A global preference was set or unset.
+.TP
 .B moved \fIUSERNAME\fR
 User \fIUSERNAME\fR moved some track(s).
 Further details aren't included any more.
diff --git a/docs.css b/docs.css
new file mode 100644 (file)
index 0000000..9a7f354
--- /dev/null
+++ b/docs.css
@@ -0,0 +1,56 @@
+body {
+  color: black;
+  background-color: white;
+  font-family: times,serif;
+  font-weight: normal;
+  font-size: 12pt;
+  font-variant: normal
+}
+
+div.section {
+  margin-left:1em
+}
+
+h1 {
+  background-color: #e0ffe0;
+  font-family: helvetica,sans-serif;
+  padding: 0.2em
+}
+
+h2 {
+  background-color: #e0ffe0;
+  font-family: helvetica,sans-serif;
+  padding: 0.2em
+}
+
+h3 {
+  background-color: #f0f0f0;
+  font-family: helvetica,sans-serif;
+  padding: 0.2em
+}
+
+h4 {
+  font-family: helvetica,sans-serif
+}
+
+table.bugs {
+  width: 100%;
+  font-size: 12pt;
+  border-collapse: collapse;
+  border:1px
+}
+
+table.bugs th {
+  text-align: left;
+  border: 1px solid black;
+  background-color: black;
+  color: white
+}
+
+table.bugs td {
+  border: 1px solid
+}
+
+span.command {
+  font-family: monospace
+}
index be12f1c2680efcbe7337a42f67f8fef735c5939f..eea622032829866a1af95a9ed135fd8d5d140d74 100644 (file)
@@ -25,7 +25,7 @@ else
 TRACKDB=trackdb-stub.c
 endif
 
-libdisorder_a_SOURCES=charset.c charset.h              \
+libdisorder_a_SOURCES=charset.c charsetf.c charset.h   \
        addr.c addr.h                                   \
        arcfour.c arcfour.h                             \
        authhash.c authhash.h                           \
@@ -52,6 +52,7 @@ libdisorder_a_SOURCES=charset.c charset.h             \
        heap.h                                          \
        hex.c hex.h                                     \
        hostname.c hostname.h                           \
+       hreader.c hreader.h                             \
        ifreq.c ifreq.h                                 \
        inputline.c inputline.h                         \
        kvp.c kvp.h                                     \
index da37319012c19f5f6a85a9c8f0f7a5577f280d48..fd9fa6cbdce2dde0faadc6e6c1ed48e07469f547 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 int byte_vasprintf(char **ptrp,
                   const char *fmt,
                   va_list ap) {
+  struct sink *s;
   struct dynstr d;
   int n;
 
   dynstr_init(&d);
-  if((n = byte_vsinkprintf(sink_dynstr(&d), fmt, ap)) >= 0) {
+  s = sink_dynstr(&d);
+  n = byte_vsinkprintf(s, fmt, ap);
+  xfree(s);
+  if(n >= 0) {
     dynstr_terminate(&d);
     *ptrp = d.vec;
   }
index 8cc96f904542949d984c5104efe83be04040ff42..c06c233ed26642833a92517ce9ae425a93ba758e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2004, 2006, 2007 Richard Kettlewell
+ * Copyright (C) 2004, 2006, 2007, 2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -64,10 +64,10 @@ static const struct algorithm algorithms[] = {
  * Computes H(challenge|password) and returns it as a newly allocated hex
  * string, or returns NULL on error.
  */
-const char *authhash(const void *challenge, size_t nchallenge,
-                    const char *password, const char *algo) {
+char *authhash(const void *challenge, size_t nchallenge,
+               const char *password, const char *algo) {
   gcrypt_hash_handle h;
-  const char *res;
+  char *res;
   size_t n;
   int id;
 
index 8604a13948f1a81e602ea15992a87ecc15c35c29..7b73d67ea7acfd8a3b7df235ecbf4b945c40d395 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2006, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2006-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -19,8 +19,8 @@
 #ifndef AUTHHASH_H
 #define AUTHHASH_H
 
-const char *authhash(const void *challenge, size_t nchallenge,
-                    const char *user, const char *algo);
+char *authhash(const void *challenge, size_t nchallenge,
+               const char *user, const char *algo);
 int valid_authhash(const char *algo);
 
 #endif /* AUTHHASH_H */
index 15b556c483cbc51915c179ee1b72e6e23ccafc4c..9fd42f1d41a929625be9dde37817f55285fbcf0f 100644 (file)
--- a/lib/cgi.c
+++ b/lib/cgi.c
@@ -226,7 +226,6 @@ void cgi_clear(void) {
  */
 char *cgi_sgmlquote(const char *src) {
   uint32_t *ucs, c;
-  int n;
   struct dynstr d[1];
   struct sink *s;
 
@@ -234,7 +233,6 @@ char *cgi_sgmlquote(const char *src) {
     exit(1);
   dynstr_init(d);
   s = sink_dynstr(d);
-  n = 1;
   /* format the string */
   while((c = *ucs++)) {
     switch(c) {
index be2b05a45ae5a3ced48f189fb1b69167b701a330..e3c3a4eb59b560e9a6a9ce4afcd5fd714582e835 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2007-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -49,6 +49,16 @@ char *any2any(const char *from/*encoding or 0*/,
  * that iconv knows.  If FROM and TO are both 0 then ANY is returned
  * unchanged. */
 
+char *mb2utf8_f(char *mb);
+char *utf82mb_f(char *utf8);
+char *any2utf8_f(const char *from/*encoding*/,
+                 char *any/*string*/);
+char *any2mb_f(const char *from/*encoding or 0*/,
+               char *any/*string*/);
+char *any2any_f(const char *from/*encoding or 0*/,
+                const char *to/*encoding to 0*/,
+                char *any/*string*/);
+
 /** @brief Insist that @p s is not null
  * @param s Pointer to check
  * @return @p s
diff --git a/lib/charsetf.c b/lib/charsetf.c
new file mode 100644 (file)
index 0000000..cb27974
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file lib/charsetf.c @brief Character set conversion with free() */
+
+#include "common.h"
+
+#include "charset.h"
+#include "mem.h"
+
+char *mb2utf8_f(char *mb) {
+  char *s = mb2utf8(mb);
+  xfree(mb);
+  return s;
+}
+
+char *utf82mb_f(char *utf8) {
+  char *s = utf82mb(utf8);
+  xfree(utf8);
+  return s;
+}
+
+char *any2utf8_f(const char *from,
+                 char *any) {
+  char *s = any2utf8(from, any);
+  xfree(any);
+  return s;
+}
+
+char *any2mb_f(const char *from,
+               char *any) {
+  char *s = any2mb(from, any);
+  xfree(any);
+  return s;
+}
+
+char *any2any_f(const char *from,
+                const char *to,
+                char *any) {
+  char *s = any2any(from, to, any);
+  xfree(any);
+  return s;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index c55da8939fb6084e9f52e98910ef65ef5b6bfeb6..d5c61ce62f6f08ee650fc4802843a81a8c38f00b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2004, 2005, 2006, 2007 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2006, 2007, 2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -63,6 +63,7 @@ socklen_t find_server(struct config *c,
     strcpy(su.sun_path, name);
     sa = (struct sockaddr *)&su;
     len = sizeof su;
+    xfree(name);
   }
   *sap = xmalloc_noptr(len);
   memcpy(*sap, sa, len);
index 67f8a530f156d6ac0da7d821f48551b164c97c45..2cbcfa76201324f07dc0668975b5dd5c51a98291 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -141,10 +141,12 @@ static int check_response(disorder_client *c, char **rp) {
   else if(rc / 100 == 2) {
     if(rp)
       *rp = (rc % 10 == 9) ? 0 : xstrdup(r + 4);
+    xfree(r);
     return 0;
   } else {
     if(c->verbose)
       disorder_error(0, "from %s: %s", c->ident, utf82mb(r));
+    xfree(r);
     return rc;
   }
 }
@@ -200,6 +202,7 @@ static int disorder_simple_v(disorder_client *c,
     D(("command: %s", d.vec));
     if(fputs(d.vec, c->fpout) < 0)
       goto write_error;
+    xfree(d.vec);
     if(body) {
       if(nbody < 0)
         for(nbody = 0; body[nbody]; ++nbody)
@@ -291,7 +294,9 @@ static int dequote(int rc, char **rp) {
 
   if(!rc) {
     if((rr = split(*rp, 0, SPLIT_QUOTES, 0, 0)) && *rr) {
+      xfree(*rp);
       *rp = *rr;
+      xfree(rr);
       return 0;
     }
     disorder_error(0, "invalid reply: %s", *rp);
@@ -316,13 +321,13 @@ int disorder_connect_generic(struct config *conf,
                              const char *username,
                              const char *password,
                              const char *cookie) {
-  int fd = -1, fd2 = -1, nrvec, rc;
-  unsigned char *nonce;
+  int fd = -1, fd2 = -1, nrvec = 0, rc;
+  unsigned char *nonce = NULL;
   size_t nl;
-  const char *res;
-  char *r, **rvec;
+  char *res = NULL;
+  char *r = NULL, **rvec = NULL;
   const char *protocol, *algorithm, *challenge;
-  struct sockaddr *sa;
+  struct sockaddr *sa = NULL;
   socklen_t salen;
 
   if((salen = find_server(conf, &sa, &c->ident)) == (socklen_t)-1)
@@ -364,14 +369,14 @@ int disorder_connect_generic(struct config *conf,
     disorder_error(0, "cannot parse server greeting %s", r);
     goto error;
   }
-  protocol = *rvec++;
+  protocol = rvec[0];
   if(strcmp(protocol, "2")) {
     c->last = "unknown protocol version";
     disorder_error(0, "unknown protocol version: %s", protocol);
     goto error;
   }
-  algorithm = *rvec++;
-  challenge = *rvec++;
+  algorithm = rvec[1];
+  challenge = rvec[2];
   if(!(nonce = unhex(challenge, &nl)))
     goto error;
   if(cookie) {
@@ -391,6 +396,11 @@ int disorder_connect_generic(struct config *conf,
   if((rc = disorder_simple(c, 0, "user", username, res, (char *)0)))
     goto error_rc;
   c->user = xstrdup(username);
+  xfree(res);
+  free_strings(nrvec, rvec);
+  xfree(nonce);
+  xfree(sa);
+  xfree(r);
   return 0;
 error:
   rc = -1;
@@ -505,9 +515,11 @@ int disorder_close(disorder_client *c) {
     }
     c->fpout = 0;
   }
+  xfree(c->ident);
   c->ident = 0;
+  xfree(c->user);
   c->user = 0;
-  return 0;
+  return ret;
 }
 
 /** @brief Play a track
@@ -641,6 +653,7 @@ static int disorder_somequeue(disorder_client *c,
     if(!strcmp(l, ".")) {
       *qt = 0;
       *qp = qh;
+      xfree(l);
       return 0;
     }
     q = xmalloc(sizeof *q);
@@ -648,6 +661,7 @@ static int disorder_somequeue(disorder_client *c,
       *qt = q;
       qt = &q->next;
     }
+    xfree(l);
   }
   if(ferror(c->fpin)) {
     byte_xasprintf((char **)&c->last, "input error: %s", strerror(errno));
@@ -700,9 +714,11 @@ static int readlist(disorder_client *c, char ***vecp, int *nvecp) {
       if(nvecp)
        *nvecp = v.nvec;
       *vecp = v.vec;
+      xfree(l);
       return 0;
     }
-    vector_append(&v, l + (*l == '.'));
+    vector_append(&v, xstrdup(l + (*l == '.')));
+    xfree(l);
   }
   if(ferror(c->fpin)) {
     byte_xasprintf((char **)&c->last, "input error: %s", strerror(errno));
@@ -853,7 +869,9 @@ int disorder_prefs(disorder_client *c, const char *track, struct kvp **kp) {
     k->name = pvec[0];
     k->value = pvec[1];
     kp = &k->next;
+    xfree(pvec);
   }
+  free_strings(nvec, vec);
   *kp = 0;
   return 0;
 }
index 45f232946155facab3c55e9c761b64f446fd16a2..932c54bdf6e922be82741feff7e274e0bbb7cc0d 100644 (file)
@@ -240,6 +240,7 @@ static int set_string(const struct config_state *cs,
                   cs->path, cs->line, whoami->name);
     return -1;
   }
+  xfree(VALUE(cs->config, char *));
   VALUE(cs->config, char *) = xstrdup(vec[0]);
   return 0;
 }
@@ -520,8 +521,7 @@ static int set_rights(const struct config_state *cs,
                   cs->path, cs->line, vec[0]);
     return -1;
   }
-  *ADDRESS(cs->config, char *) = vec[0];
-  return 0;
+  return set_string(cs, whoami, nvec, vec);
 }
 
 static int set_netaddress(const struct config_state *cs,
@@ -644,7 +644,7 @@ static const struct conftype
   type_namepart = { set_namepart, free_namepartlist },
   type_transform = { set_transform, free_transformlist },
   type_netaddress = { set_netaddress, free_netaddress },
-  type_rights = { set_rights, free_none };
+  type_rights = { set_rights, free_string };
 
 /* specific validation routine */
 
@@ -835,9 +835,7 @@ static int validate_positive(const struct config_state *cs,
 static int validate_isauser(const struct config_state *cs,
                            int attribute((unused)) nvec,
                            char **vec) {
-  struct passwd *pw;
-
-  if(!(pw = getpwnam(vec[0]))) {
+  if(!getpwnam(vec[0])) {
     disorder_error(0, "%s:%d: no such user as '%s'", cs->path, cs->line, vec[0]);
     return -1;
   }
@@ -1047,6 +1045,7 @@ static int validate_destaddr(const struct config_state attribute((unused)) *cs,
     disorder_error(0, "%s:%d: destination address required", cs->path, cs->line);
     return -1;
   }
+  xfree(na->address);
   return 0;
 }
 
@@ -1080,6 +1079,7 @@ static const struct conf conf[] = {
   { C(lock),             &type_boolean,          validate_any },
   { C(mail_sender),      &type_string,           validate_any },
   { C(mixer),            &type_string,           validate_any },
+  { C(mount_rescan),     &type_boolean,          validate_any },
   { C(multicast_loop),   &type_boolean,          validate_any },
   { C(multicast_ttl),    &type_integer,          validate_non_negative },
   { C(namepart),         &type_namepart,         validate_any },
@@ -1106,6 +1106,7 @@ static const struct conf conf[] = {
   { C(replay_min),       &type_integer,          validate_non_negative },
   { C2(restrict, restrictions),         &type_restrict,         validate_any },
   { C(rtp_delay_threshold), &type_integer,       validate_positive },
+  { C(rtp_verbose),      &type_boolean,          validate_any },
   { C(sample_format),    &type_sample_format,    validate_sample_format },
   { C(scratch),          &type_string_accum,     validate_isreg },
   { C(sendmail),         &type_string,           validate_isabspath },
@@ -1175,7 +1176,9 @@ static int config_set_args(const struct config_state *cs,
     vector_append(v, s);
   va_end(ap);
   vector_terminate(v);
-  return config_set(cs, v->nvec, v->vec);
+  int rc = config_set(cs, v->nvec, v->vec);
+  xfree(v->vec);
+  return rc;
 }
 
 /** @brief Error callback used by config_include()
@@ -1373,6 +1376,7 @@ static struct config *config_default(void) {
   c->sox_generation = DEFAULT_SOX_GENERATION;
   c->playlist_max = INT_MAX;            /* effectively no limit */
   c->playlist_lock_timeout = 10;        /* 10s */
+  c->mount_rescan = 1;
   /* Default stopwords */
   if(config_set(&cs, (int)NDEFAULT_STOPWORDS, (char **)default_stopwords))
     exit(1);
@@ -1417,7 +1421,7 @@ static void set_configfile(void) {
  *
  * @p c is indeterminate after this function is called.
  */
-static void config_free(struct config *c) {
+void config_free(struct config *c) {
   int n;
 
   if(c) {
index 617d9293480948d5078279515f1bb84780595127..6e3a9a946b8a04a2024e589d3a0c98fda9bd9b71 100644 (file)
@@ -195,10 +195,10 @@ struct config {
   const char *home;
 
   /** @brief Login username */
-  const char *username;
+  char *username;
 
   /** @brief Login password */
-  const char *password;
+  char *password;
 
   /** @brief Address to connect to */
   struct netaddress connect;
@@ -251,6 +251,9 @@ struct config {
 
   /** @brief RTP delay threshold */
   long rtp_delay_threshold;
+
+  /** @brief Verbose RTP transmission logging */
+  int rtp_verbose;
   
   /** @brief TTL for multicast packets */
   long multicast_ttl;
@@ -290,7 +293,10 @@ struct config {
 
   /** @brief Maximum bias */
   long new_bias;
-  
+
+  /** @brief Rescan on (un)mount */
+  int mount_rescan;
+
   /* derived values: */
   int nparts;                          /* number of distinct name parts */
   char **parts;                                /* name part list  */
@@ -325,6 +331,8 @@ char *config_private(void);
 
 int config_verify(void);
 
+void config_free(struct config *c);
+
 extern char *configfile;
 extern int config_per_user;
 
index 5eda674ff03431d62e735c22adc6a3837e04647b..d03306e852347b8d726f3ef9bf116ccb1922109d 100644 (file)
@@ -193,6 +193,7 @@ static void logentry_adopted(disorder_eclient *c, int nvec, char **vec);
 static void logentry_playlist_created(disorder_eclient *c, int nvec, char **vec);
 static void logentry_playlist_deleted(disorder_eclient *c, int nvec, char **vec);
 static void logentry_playlist_modified(disorder_eclient *c, int nvec, char **vec);
+static void logentry_global_pref(disorder_eclient *c, int nvec, char **vec);
 
 /* Tables ********************************************************************/
 
@@ -212,6 +213,7 @@ static const struct logentry_handler logentry_handlers[] = {
   LE(adopted, 2, 2),
   LE(completed, 1, 1),
   LE(failed, 2, 2),
+  LE(global_pref, 1, 2),
   LE(moved, 1, 1),
   LE(playing, 1, 2),
   LE(playlist_created, 2, 2),
@@ -916,8 +918,8 @@ static void string_response_opcallback(disorder_eclient *c,
     = (disorder_eclient_string_response *)op->completed;
     
   D(("string_response_callback"));
-  if(c->rc / 100 == 2 || c->rc == 555) {
-    if(op->completed) {
+  if(completed) {
+    if(c->rc / 100 == 2 || c->rc == 555) {
       if(c->rc == 555)
         completed(op->v, NULL, NULL);
       else if(c->protocol >= 2) {
@@ -931,9 +933,9 @@ static void string_response_opcallback(disorder_eclient *c,
           completed(op->v, "error parsing response", NULL);
       } else
         completed(op->v, NULL, c->line + 4);
-    }
-  } else
-    completed(op->v, errorstring(c), NULL);
+    } else
+      completed(op->v, errorstring(c), NULL);
+  }
 }
 
 /* for commands with a simple integer response */ 
@@ -963,10 +965,12 @@ static void no_response_opcallback(disorder_eclient *c,
     = (disorder_eclient_no_response *)op->completed;
 
   D(("no_response_callback"));
-  if(c->rc / 100 == 2)
-    completed(op->v, NULL);
-  else
-    completed(op->v, errorstring(c));
+  if(completed) {
+    if(c->rc / 100 == 2)
+      completed(op->v, NULL);
+    else
+      completed(op->v, errorstring(c));
+  }
 }
 
 /* error callback for queue_unmarshall */
@@ -1356,6 +1360,31 @@ int disorder_eclient_nop(disorder_eclient *c,
                 "nop", (char *)0);
 }
 
+int disorder_eclient_get_global(disorder_eclient *c,
+                                disorder_eclient_string_response *completed,
+                                const char *pref,
+                                void *v) {
+  return simple(c, string_response_opcallback, (void (*)())completed, v,
+                "get-global", pref, (char *)0);
+}
+
+int disorder_eclient_set_global(disorder_eclient *c,
+                                disorder_eclient_no_response *completed,
+                                const char *pref,
+                                const char *value,
+                                void *v) {
+  return simple(c, no_response_opcallback, (void (*)())completed, v,
+                "set-global", pref, value, (char *)0);
+}
+
+int disorder_eclient_unset_global(disorder_eclient *c,
+                                  disorder_eclient_no_response *completed,
+                                  const char *pref,
+                                  void *v) {
+  return simple(c, no_response_opcallback, (void (*)())completed, v,
+                "unset-global", pref, (char *)0);
+}
+
 /** @brief Get the last @p max added tracks
  * @param c Client
  * @param completed Called with list
@@ -1919,6 +1948,12 @@ static void logentry_adopted(disorder_eclient *c,
     c->log_callbacks->adopted(c->log_v, vec[0], vec[1]);
 }
 
+static void logentry_global_pref(disorder_eclient *c,
+                                 int nvec, char **vec) {
+  if(c->log_callbacks->global_pref) 
+    c->log_callbacks->global_pref(c->log_v, vec[0], nvec > 1 ? vec[1] : 0);
+}
+
 /*
 Local Variables:
 c-basic-offset:2
index b100106c04abd55f25e4ebdf6c1593b957efe140..c44c5dc1dd645568cd6a2b3eed6a017f16d18d34 100644 (file)
@@ -177,6 +177,9 @@ typedef struct disorder_eclient_log_callbacks {
 
   /** @brief Called when a new playlist is deleted */
   void (*playlist_deleted)(void *v, const char *playlist);
+
+  /** @brief Called when a global pref is changed or delete */
+  void (*global_pref)(void *v, const char *pref, const char *value/*or NULL*/);
 } disorder_eclient_log_callbacks;
 
 /* State bits */
@@ -461,6 +464,21 @@ int disorder_eclient_unset(disorder_eclient *c,
                            void *v);
 /* Get/set preference values */
 
+int disorder_eclient_get_global(disorder_eclient *c,
+                                disorder_eclient_string_response *completed,
+                                const char *pref,
+                                void *v);
+int disorder_eclient_set_global(disorder_eclient *c,
+                                disorder_eclient_no_response *completed,
+                                const char *pref,
+                                const char *value,
+                                void *v);
+int disorder_eclient_unset_global(disorder_eclient *c,
+                                  disorder_eclient_no_response *completed,
+                                  const char *pref,
+                                  void *v);
+/* Get/set global prefs */
+
 int disorder_eclient_search(disorder_eclient *c,
                             disorder_eclient_list_response *completed,
                             const char *terms,
index ac0c0d813f8e070acc2df1e258403234ea53df9b..3227f12f38fd3f5af07de8b255d424257613d3dd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2004, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2007-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@
 
 #include "printf.h"
 #include "sink.h"
+#include "mem.h"
 
 /** @brief vfprintf() workalike that always accepts UTF-8
  * @param fp Stream to write to
  * @return -1 on error or bytes written on success
  */
 int byte_vfprintf(FILE *fp, const char *fmt, va_list ap) {
-  return byte_vsinkprintf(sink_stdio(0, fp), fmt, ap);
+  struct sink *s = sink_stdio(0, fp);
+  int rc = byte_vsinkprintf(s, fmt, ap);
+  xfree(s);
+  return rc;
 }
 
 /** @brief fprintf() workalike that always accepts UTF-8
diff --git a/lib/hreader.c b/lib/hreader.c
new file mode 100644 (file)
index 0000000..bdf3c07
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file lib/hreader.c
+ * @brief Hands-off reader - read files without keeping them open
+ */
+#include <config.h>
+#include "hreader.h"
+#include "mem.h"
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <unistd.h>
+
+static int hreader_fill(struct hreader *h, off_t offset);
+
+int hreader_init(const char *path, struct hreader *h) {
+  struct stat sb;
+  if(stat(path, &sb) < 0)
+    return -1;
+  memset(h, 0, sizeof *h);
+  h->path = xstrdup(path);
+  h->size = sb.st_size;
+  h->bufsize = 65536;
+  h->buffer = xmalloc_noptr(h->bufsize);
+  return 0;
+}
+
+void hreader_close(struct hreader *h) {
+  xfree(h->path);
+  xfree(h->buffer);
+}
+
+int hreader_read(struct hreader *h, void *buffer, size_t n) {
+  int r = hreader_pread(h, buffer, n, h->read_offset);
+  if(r > 0)
+    h->read_offset += r;
+  return r;
+}
+
+int hreader_pread(struct hreader *h, void *buffer, size_t n, off_t offset) {
+  size_t bytes_read = 0;
+
+  while(bytes_read < n) {
+    // If the desired byte range is outside the file, fetch new contents
+    if(offset < h->buf_offset || offset >= h->buf_offset + (off_t)h->bytes) {
+      int r = hreader_fill(h, offset);
+      if(r < 0)
+        return -1;                      /* disaster! */
+      else if(r == 0)
+        break;                          /* end of file */
+    }
+    // Figure out how much we can read this time round
+    size_t left = h->bytes - (offset - h->buf_offset);
+    // Truncate the read if we don't want that much
+    if(left > (n - bytes_read))
+      left = n - bytes_read;
+    memcpy((char *)buffer + bytes_read,
+           h->buffer + (offset - h->buf_offset),
+           left);
+    offset += left;
+    bytes_read += left;
+  }
+  return bytes_read;
+}
+
+static int hreader_fill(struct hreader *h, off_t offset) {
+  int fd = open(h->path, O_RDONLY);
+  if(fd < 0)
+    return -1;
+  int n = pread(fd, h->buffer, h->bufsize, offset);
+  close(fd);
+  if(n < 0)
+    return -1;
+  h->buf_offset = offset;
+  h->bytes = n;
+  return n;
+}
+
+off_t hreader_seek(struct hreader *h, off_t offset, int whence) {
+  switch(whence) {
+  case SEEK_SET: break;
+  case SEEK_CUR: offset += h->read_offset; break;
+  case SEEK_END: offset += h->size; break;
+  default: einval: errno = EINVAL; return -1;
+  }
+  if(offset < 0) goto einval;
+  h->read_offset = offset;
+  return offset;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
diff --git a/lib/hreader.h b/lib/hreader.h
new file mode 100644 (file)
index 0000000..90431c1
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file lib/hreader.h
+ * @brief Hands-off reader - read files without keeping them open
+ */
+#ifndef HREADER_H
+#define HREADER_H
+
+#include <unistd.h>
+
+/** @brief A hands-off reader
+ *
+ * Allows files to be read without holding them open.
+ */
+struct hreader {
+  char *path;                   /* file to read */
+  off_t size;                   /* file size */
+  off_t read_offset;            /* for next hreader_read() */
+  off_t buf_offset;             /* offset of start of buffer */
+  char *buffer;                        /* input buffer */
+  size_t bufsize;              /* buffer size */
+  size_t bytes;                        /* size of last read */
+};
+
+/** @brief Initialize a hands-off reader
+ * @param path File to read
+ * @param h Reader to initialize
+ * @return 0 on success, -1 on error
+ */
+int hreader_init(const char *path, struct hreader *h);
+
+/** @brief Close a hands-off reader
+ * @param h Reader to close
+ */
+void hreader_close(struct hreader *h);
+
+/** @brief Read some bytes
+ * @param h Reader to read from
+ * @param buffer Where to store bytes
+ * @param n Maximum bytes to read
+ * @return Bytes read, or 0 at EOF, or -1 on error
+ */
+int hreader_read(struct hreader *h, void *buffer, size_t n);
+
+/** @brief Read some bytes at a given offset
+ * @param h Reader to read from
+ * @param offset Offset to read at
+ * @param buffer Where to store bytes
+ * @param n Maximum bytes to read
+ * @return Bytes read, or 0 at EOF, or -1 on error
+ */
+int hreader_pread(struct hreader *h, void *buffer, size_t n, off_t offset);
+
+/** @brief Seek within a file
+ * @param h Reader to seek
+ * @param offset Offset
+ * @param whence SEEK_*
+ * @return Result offset
+ */
+off_t hreader_seek(struct hreader *h, off_t offset, int whence);
+
+/** @brief Return file size
+ * @param h Reader to find size of
+ * @return Size in bytes
+ */
+static inline off_t hreader_size(const struct hreader *h) {
+  return h->size;
+}
+
+/** @brief Test for end of file
+ * @param h Reader to test
+ * @return 1 at eof, 0 otherwise
+ *
+ * This tells you whether the next read will return 0 bytes, rather than
+ * whether the last read reached end of file.  So it is slightly different to
+ * feof().
+ */
+static inline int hreader_eof(const struct hreader *h) {
+  return h->read_offset == h->size;
+}
+
+#endif /* HREADER_H */
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index 45aa03c190f3533540b95f323d473e9e95b0b594..f17cdc1edb05c9ac77ed63b3332465409b07edd6 100644 (file)
--- a/lib/kvp.c
+++ b/lib/kvp.c
@@ -287,6 +287,15 @@ struct kvp *kvp_make(const char *name, ...) {
   return kvp;
 }
 
+void kvp_free(struct kvp *k) {
+  if(k) {
+    kvp_free(k->next);
+    xfree((void *)k->name);
+    xfree((void *)k->value);
+    xfree(k);
+  }
+}
+
 /*
 Local Variables:
 c-basic-offset:2
index 0a7e4780d0af3691c25ea3a10043406f78e26c0f..732a8a68623613be96154d3a0d3c95a57baaffeb 100644 (file)
--- a/lib/kvp.h
+++ b/lib/kvp.h
@@ -71,6 +71,8 @@ char *urlencodestring(const char *s);
 char *urldecodestring(const char *s, size_t ns);
 struct kvp *kvp_make(const char *key, ...);
 
+void kvp_free(struct kvp *k);
+
 #endif /* KVP_H */
 
 /*
index 9cc54d64fc9c9e382b586a6f5629661d19685f86..48354b3d7ed636958bc2765cbfa3f1c97f99da44 100644 (file)
@@ -110,7 +110,7 @@ static const char *skipwhite(const char *s, int rfc822_comments) {
   int c, depth;
   
   for(;;) {
-    switch(c = *s) {
+    switch(*s) {
     case ' ':
     case '\t':
     case '\r':
@@ -402,7 +402,7 @@ int mime_multipart(const char *s,
  * @param s Start of field
  * @param dispositionp Where to store disposition
  * @param parameternamep Where to store parameter name
- * @param parametervaluep Wher to store parameter value
+ * @param parametervaluep Where to store parameter value
  * @return 0 on success, non-0 on error
  *
  * See <a href="http://tools.ietf.org/html/rfc2388#section-3">RFC 2388 s3</a>
index 69a798696737e9f2d2efe629cffc62e3839d444b..0f39b23800fa5c31991fda8e7b21fb9ecdbc4842 100644 (file)
@@ -30,6 +30,7 @@
 #include "syscalls.h"
 #include "table.h"
 #include "printf.h"
+#include "vector.h"
 
 const char *const playing_states[] = {
   "failed",
@@ -95,11 +96,17 @@ static const char *marshall_long(const struct queue_entry *q, size_t offset) {
   return xstrdup(buffer);
 }
 
+static void free_none(struct queue_entry attribute((unused)) *q,
+                      size_t attribute((unused)) offset) {
+}
+
+#define free_long free_none
+
 static int unmarshall_string(char *data, struct queue_entry *q,
                             size_t offset,
                             void attribute((unused)) (*error_handler)(const char *, void *),
                             void attribute((unused)) *u) {
-  VALUE(q, offset, char *) = data;
+  VALUE(q, offset, char *) = xstrdup(data);
   return 0;
 }
 
@@ -107,6 +114,10 @@ static const char *marshall_string(const struct queue_entry *q, size_t offset) {
   return VALUE(q, offset, char *);
 }
 
+static void free_string(struct queue_entry *q, size_t offset) {
+  xfree(VALUE(q, offset, char *));
+}
+
 static int unmarshall_time_t(char *data, struct queue_entry *q,
                             size_t offset,
                             void (*error_handler)(const char *, void *),
@@ -134,6 +145,8 @@ static const char *marshall_time_t(const struct queue_entry *q, size_t offset) {
   return xstrdup(buffer);
 }
 
+#define free_time_t free_none
+
 static int unmarshall_state(char *data, struct queue_entry *q,
                            size_t offset,
                            void (*error_handler)(const char *, void *),
@@ -176,7 +189,10 @@ static const char *marshall_origin(const struct queue_entry *q, size_t offset) {
   return track_origins[VALUE(q, offset, enum track_origin)];
 }
 
-#define F(n, h) { #n, offsetof(struct queue_entry, n), marshall_##h, unmarshall_##h }
+#define free_state free_none
+#define free_origin free_none
+
+#define F(n, h) { #n, offsetof(struct queue_entry, n), marshall_##h, unmarshall_##h, free_##h }
 
 static const struct field {
   const char *name;
@@ -185,6 +201,7 @@ static const struct field {
   int (*unmarshall)(char *data, struct queue_entry *q, size_t offset,
                    void (*error_handler)(const char *, void *),
                    void *u);
+  void (*free)(struct queue_entry *q, size_t offset);
 } fields[] = {
   /* Keep this table sorted. */
   F(expected, time_t),
@@ -199,6 +216,7 @@ static const struct field {
   F(when, time_t),
   F(wstat, long)
 };
+#define NFIELDS (sizeof fields / sizeof *fields)
 
 int queue_unmarshall(struct queue_entry *q, const char *s,
                     void (*error_handler)(const char *, void *),
@@ -209,7 +227,9 @@ int queue_unmarshall(struct queue_entry *q, const char *s,
   q->pid = -1;                          /* =none */
   if(!(vec = split(s, &nvec, SPLIT_QUOTES, error_handler, u)))
     return -1;
-  return queue_unmarshall_vec(q, nvec, vec, error_handler, u);
+  int rc = queue_unmarshall_vec(q, nvec, vec, error_handler, u);
+  free_strings(nvec, vec);
+  return rc;
 }
 
 int queue_unmarshall_vec(struct queue_entry *q, int nvec, char **vec,
@@ -258,6 +278,16 @@ char *queue_marshall(const struct queue_entry *q) {
   return r;
 }
 
+void queue_free(struct queue_entry *q, int rest) {
+  if(!q)
+    return;
+  if(rest)
+    queue_free(q->next, rest);
+  for(unsigned n = 0; n < NFIELDS; ++n)
+    fields[n].free(q, fields[n].offset);
+  xfree(q);
+}
+
 /*
 Local Variables:
 c-basic-offset:2
index c287ebe950afd4eb9ce55e989be998c6c1713796..2219763f6539cd5da3b83b9a01979ced7ea43872 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -238,6 +238,8 @@ int queue_unmarshall_vec(struct queue_entry *q, int nvec, char **vec,
 char *queue_marshall(const struct queue_entry *q);
 /* marshall @q@ into a UTF-8 string */
 
+void queue_free(struct queue_entry *q, int rest);
+
 #endif /* QUEUE_H */
 
 /*
index 524f68d97fb88449f624dba7014f48c75dac7f0e..0c5f4db0f7a70e9797a861169d561a5ea9fc79ab 100644 (file)
@@ -118,7 +118,7 @@ static int sendmailfp(const char *tag, FILE *in, FILE *out,
                      const char *encoding,
                      const char *content_type,
                      const char *body) {
-  int rc, sol = 1;
+  int sol = 1;
   const char *ptr;
   uint8_t idbuf[20];
   char *id;
@@ -131,23 +131,23 @@ static int sendmailfp(const char *tag, FILE *in, FILE *out,
   strftime(date, sizeof date, "%a, %d %b %Y %H:%M:%S +0000", &ut);
   gcry_create_nonce(idbuf, sizeof idbuf);
   id = mime_to_base64(idbuf, sizeof idbuf);
-  if((rc = getresponse(tag, in)) / 100 != 2)
+  if(getresponse(tag, in) / 100 != 2)
     return -1;
   if(sendcommand(tag, out, "HELO %s", local_hostname()))
     return -1;
-  if((rc = getresponse(tag, in)) / 100 != 2)
+  if(getresponse(tag, in) / 100 != 2)
     return -1;
   if(sendcommand(tag, out, "MAIL FROM:<%s>", sender))
     return -1;
-  if((rc = getresponse(tag, in)) / 100 != 2)
+  if(getresponse(tag, in) / 100 != 2)
     return -1;
   if(sendcommand(tag, out, "RCPT TO:<%s>", recipient))
     return -1;
-  if((rc = getresponse(tag, in)) / 100 != 2)
+  if(getresponse(tag, in) / 100 != 2)
     return -1;
   if(sendcommand(tag, out, "DATA", sender))
     return -1;
-  if((rc = getresponse(tag, in)) / 100 != 3)
+  if(getresponse(tag, in) / 100 != 3)
     return -1;
   if(fprintf(out, "From: %s\r\n", pubsender) < 0
      || fprintf(out, "To: %s\r\n", recipient) < 0
@@ -181,7 +181,7 @@ static int sendmailfp(const char *tag, FILE *in, FILE *out,
   if(fprintf(out, ".\r\n") < 0
      || fflush(out) < 0)
     goto write_error;
-  if((rc = getresponse(tag, in)) / 100 != 2)
+  if(getresponse(tag, in) / 100 != 2)
     return -1;
   return 0;
 }
index 628498a0cbcc89e7bfaaea6d6412246e8bdc5dff..4afd9257929960eb168fb921d383a906a2968fd5 100644 (file)
@@ -840,7 +840,7 @@ static char **dedupe(char **vec, int nvec) {
   int m, n;
 
   qsort(vec, nvec, sizeof (char *), wordcmp);
-  m = n = 0;
+  m = 0;
   if(nvec) {
     vec[m++] = vec[0];
     for(n = 1; n < nvec; ++n)
@@ -1823,7 +1823,7 @@ int trackdb_set(const char *track,
         if(trackdb_putdata(trackdb_prefsdb, track, p, tid, 0))
           goto fail;
       /* compute the new alias name */
-      if((err = compute_alias(&newalias, track, p, tid))) goto fail;
+      if(compute_alias(&newalias, track, p, tid)) goto fail;
       /* check whether alias has changed */
       if(!(oldalias == newalias
            || (oldalias && newalias && !strcmp(oldalias, newalias)))) {
@@ -2176,13 +2176,13 @@ const char *trackdb_getpart(const char *track,
   DB_TXN *tid;
   char *pref;
   const char *actual;
-  int used_db, err;
+  int used_db;
 
   /* construct the full pref */
   byte_xasprintf(&pref, "trackname_%s_%s", context, part);
   for(;;) {
     tid = trackdb_begin_transaction();
-    if((err = gettrackdata(track, 0, &p, &actual, 0, tid)) == DB_LOCK_DEADLOCK)
+    if(gettrackdata(track, 0, &p, &actual, 0, tid) == DB_LOCK_DEADLOCK)
       goto fail;
     break;
 fail:
@@ -2493,6 +2493,9 @@ char **trackdb_search(char **wordlist, int nwordlist, int *ntracks) {
     }
     if(trackdb_closecursor(cursor)) err = DB_LOCK_DEADLOCK;
     cursor = 0;
+    if(err)
+      goto fail;
+    cursor = 0;
     /* do a naive search over that (hopefuly fairly small) list of tracks */
     u.nvec = 0;
     for(n = 0; n < v.nvec; ++n) {
@@ -2733,17 +2736,18 @@ int trackdb_rescan_underway(void) {
  * @param name Global preference name
  * @param value New value
  * @param who Who is setting it
+ * @return 0 on success, -1 on error
  */
-void trackdb_set_global(const char *name,
+int trackdb_set_global(const char *name,
                         const char *value,
                         const char *who) {
   DB_TXN *tid;
-  int err;
-  int state;
+  int state, err;
 
   for(;;) {
     tid = trackdb_begin_transaction();
-    if(!(err = trackdb_set_global_tid(name, value, tid)))
+    err = trackdb_set_global_tid(name, value, tid);
+    if(err != DB_LOCK_DEADLOCK)
       break;
     trackdb_abort_transaction(tid);
   }
@@ -2763,6 +2767,8 @@ void trackdb_set_global(const char *name,
                   who ? who : "-");
     eventlog("state", state ? "enable_random" : "disable_random", (char *)0);
   }
+  eventlog("global_pref", name, value, (char *)0);
+  return err == 0 ? 0 : -1;
 }
 
 /** @brief Set a global preference
@@ -2788,7 +2794,7 @@ int trackdb_set_global_tid(const char *name,
     err = trackdb_globaldb->put(trackdb_globaldb, tid, &k, &d, 0);
   else
     err = trackdb_globaldb->del(trackdb_globaldb, tid, &k, 0);
-  if(err == DB_LOCK_DEADLOCK) return err;
+  if(err == DB_LOCK_DEADLOCK || err == DB_NOTFOUND) return err;
   if(err)
     disorder_fatal(0, "error updating database: %s", db_strerror(err));
   return 0;
@@ -2800,12 +2806,11 @@ int trackdb_set_global_tid(const char *name,
  */
 const char *trackdb_get_global(const char *name) {
   DB_TXN *tid;
-  int err;
   const char *r;
 
   for(;;) {
     tid = trackdb_begin_transaction();
-    if(!(err = trackdb_get_global_tid(name, tid, &r)))
+    if(!trackdb_get_global_tid(name, tid, &r))
       break;
     trackdb_abort_transaction(tid);
   }
@@ -2909,7 +2914,7 @@ static char **trackdb_new_tid(int *ntracksp,
   default:
     disorder_fatal(0, "error reading noticed.db: %s", db_strerror(err));
   }
-  if((err = trackdb_closecursor(c)))
+  if(trackdb_closecursor(c))
     return 0;                           /* deadlock */
   vector_terminate(tracks);
   if(ntracksp)
index 1d7c8e97cf02d94e25498a32527eee21622cef79..a37c81b3fd8c478d366529b0624a56bb2b897c73 100644 (file)
@@ -148,9 +148,9 @@ int trackdb_rescan_cancel(void);
 void trackdb_gc(void);
 /* tidy up old database log files */
 
-void trackdb_set_global(const char *name,
-                        const char *value,
-                        const char *who);
+int trackdb_set_global(const char *name,
+                       const char *value,
+                       const char *who);
 /* set a global pref (remove if value=0). */
 
 const char *trackdb_get_global(const char *name);
index c8e2ef2985aa88792412f615b3ba5acf7bdfdb4c..3ce1cbe6b54cb3c25f6cb4c017d35c0a10c7e822 100644 (file)
@@ -164,6 +164,20 @@ static size_t rtp_play(void *buffer, size_t nsamples, unsigned flags) {
   vec[1].iov_len = nsamples * uaudio_sample_size;
   const uint32_t timestamp = uaudio_schedule_sync();
   header.timestamp = htonl(rtp_base + (uint32_t)timestamp);
+
+  /* We send ~120 packets a second with current arrangements.  So if we log
+   * once every 8192 packets we log about once a minute. */
+
+  if(!(ntohs(header.seq) & 8191)
+     && config->rtp_verbose)
+    disorder_info("RTP: seq %04"PRIx16" %08"PRIx32"+%08"PRIx32"=%08"PRIx32" ns %zu%s",
+                  ntohs(header.seq),
+                  rtp_base,
+                  timestamp,
+                  header.timestamp,
+                  nsamples,
+                  flags & UAUDIO_PAUSED ? " [paused]" : "");
+
   /* If we're paused don't actually end a packet, we just pretend */
   if(flags & UAUDIO_PAUSED) {
     uaudio_schedule_sent(nsamples);
@@ -293,6 +307,8 @@ static void rtp_open(void) {
   if(connect(rtp_fd, res->ai_addr, res->ai_addrlen) < 0)
     disorder_fatal(errno, "error connecting broadcast socket to %s", 
                    format_sockaddr(res->ai_addr));
+  if(config->rtp_verbose)
+    disorder_info("RTP: prepared socket");
 }
 
 static void rtp_start(uaudio_callback *callback,
@@ -309,14 +325,22 @@ static void rtp_start(uaudio_callback *callback,
   else
     disorder_fatal(0, "asked for %d/%d/%d 16/44100/1 and 16/44100/2",
                    uaudio_bits, uaudio_rate, uaudio_channels); 
+  if(config->rtp_verbose)
+    disorder_info("RTP: %d channels %d bits %d Hz payload type %d",
+                  uaudio_channels, uaudio_bits, uaudio_rate, rtp_payload);
   /* Various fields are required to have random initial values by RFC3550.  The
    * packet contents are highly public so there's no point asking for very
    * strong randomness. */
   gcry_create_nonce(&rtp_id, sizeof rtp_id);
   gcry_create_nonce(&rtp_base, sizeof rtp_base);
   gcry_create_nonce(&rtp_sequence, sizeof rtp_sequence);
+  if(config->rtp_verbose)
+    disorder_info("RTP: id %08"PRIx32" base %08"PRIx32" initial seq %08"PRIx16,
+                  rtp_id, rtp_base, rtp_sequence);
   rtp_open();
   uaudio_schedule_init();
+  if(config->rtp_verbose)
+    disorder_info("RTP: initialized schedule");
   uaudio_thread_start(callback,
                       userdata,
                       rtp_play,
@@ -324,6 +348,8 @@ static void rtp_start(uaudio_callback *callback,
                       (NETWORK_BYTES - sizeof(struct rtp_header))
                       / uaudio_sample_size,
                       0);
+  if(config->rtp_verbose)
+    disorder_info("RTP: created thread");
 }
 
 static void rtp_stop(void) {
@@ -344,6 +370,8 @@ static void rtp_configure(void) {
   snprintf(buffer, sizeof buffer, "%ld", config->multicast_ttl);
   uaudio_set("multicast-ttl", buffer);
   uaudio_set("multicast-loop", config->multicast_loop ? "yes" : "no");
+  if(config->rtp_verbose)
+    disorder_info("RTP: configured");
 }
 
 const struct uaudio uaudio_rtp = {
index 87b90f59353d32b9c523aeccd773c8d33e1edde4..e33b275eac3117c0d595339ef7bdebcff4064d59 100644 (file)
@@ -1235,3787 +1235,3901 @@ dd1106[]={70,65,88,0},
 dd1107[]={915,0},
 dd1108[]={928,0},
 dd1109[]={8721,0},
-dd1110[]={49,8260,51,0},
-dd1111[]={50,8260,51,0},
-dd1112[]={49,8260,53,0},
-dd1113[]={50,8260,53,0},
-dd1114[]={51,8260,53,0},
-dd1115[]={52,8260,53,0},
-dd1116[]={49,8260,54,0},
-dd1117[]={53,8260,54,0},
-dd1118[]={49,8260,56,0},
-dd1119[]={51,8260,56,0},
-dd1120[]={53,8260,56,0},
-dd1121[]={55,8260,56,0},
-dd1122[]={49,8260,0},
-dd1123[]={73,73,0},
-dd1124[]={73,73,73,0},
-dd1125[]={73,86,0},
-dd1126[]={86,0},
-dd1127[]={86,73,0},
-dd1128[]={86,73,73,0},
-dd1129[]={86,73,73,73,0},
-dd1130[]={73,88,0},
-dd1131[]={88,0},
-dd1132[]={88,73,0},
-dd1133[]={88,73,73,0},
-dd1134[]={105,105,0},
-dd1135[]={105,105,105,0},
-dd1136[]={105,118,0},
-dd1137[]={118,105,0},
-dd1138[]={118,105,105,0},
-dd1139[]={118,105,105,105,0},
-dd1140[]={105,120,0},
-dd1141[]={120,105,0},
-dd1142[]={120,105,105,0},
-dd1143[]={8592,824,0},
-dd1144[]={8594,824,0},
-dd1145[]={8596,824,0},
-dd1146[]={8656,824,0},
-dd1147[]={8660,824,0},
-dd1148[]={8658,824,0},
-dd1149[]={8707,824,0},
-dd1150[]={8712,824,0},
-dd1151[]={8715,824,0},
-dd1152[]={8739,824,0},
-dd1153[]={8741,824,0},
-dd1154[]={8747,8747,0},
-dd1155[]={8747,8747,8747,0},
-dd1156[]={8750,8750,0},
-dd1157[]={8750,8750,8750,0},
-dd1158[]={8764,824,0},
-dd1159[]={8771,824,0},
-dd1160[]={8773,824,0},
-dd1161[]={8776,824,0},
-dd1162[]={61,824,0},
-dd1163[]={8801,824,0},
-dd1164[]={8781,824,0},
-dd1165[]={60,824,0},
-dd1166[]={62,824,0},
-dd1167[]={8804,824,0},
-dd1168[]={8805,824,0},
-dd1169[]={8818,824,0},
-dd1170[]={8819,824,0},
-dd1171[]={8822,824,0},
-dd1172[]={8823,824,0},
-dd1173[]={8826,824,0},
-dd1174[]={8827,824,0},
-dd1175[]={8834,824,0},
-dd1176[]={8835,824,0},
-dd1177[]={8838,824,0},
-dd1178[]={8839,824,0},
-dd1179[]={8866,824,0},
-dd1180[]={8872,824,0},
-dd1181[]={8873,824,0},
-dd1182[]={8875,824,0},
-dd1183[]={8828,824,0},
-dd1184[]={8829,824,0},
-dd1185[]={8849,824,0},
-dd1186[]={8850,824,0},
-dd1187[]={8882,824,0},
-dd1188[]={8883,824,0},
-dd1189[]={8884,824,0},
-dd1190[]={8885,824,0},
-dd1191[]={12296,0},
-dd1192[]={12297,0},
-dd1193[]={49,48,0},
-dd1194[]={49,49,0},
-dd1195[]={49,50,0},
-dd1196[]={49,51,0},
-dd1197[]={49,52,0},
-dd1198[]={49,53,0},
-dd1199[]={49,54,0},
-dd1200[]={49,55,0},
-dd1201[]={49,56,0},
-dd1202[]={49,57,0},
-dd1203[]={50,48,0},
-dd1204[]={40,49,41,0},
-dd1205[]={40,50,41,0},
-dd1206[]={40,51,41,0},
-dd1207[]={40,52,41,0},
-dd1208[]={40,53,41,0},
-dd1209[]={40,54,41,0},
-dd1210[]={40,55,41,0},
-dd1211[]={40,56,41,0},
-dd1212[]={40,57,41,0},
-dd1213[]={40,49,48,41,0},
-dd1214[]={40,49,49,41,0},
-dd1215[]={40,49,50,41,0},
-dd1216[]={40,49,51,41,0},
-dd1217[]={40,49,52,41,0},
-dd1218[]={40,49,53,41,0},
-dd1219[]={40,49,54,41,0},
-dd1220[]={40,49,55,41,0},
-dd1221[]={40,49,56,41,0},
-dd1222[]={40,49,57,41,0},
-dd1223[]={40,50,48,41,0},
-dd1224[]={49,46,0},
-dd1225[]={50,46,0},
-dd1226[]={51,46,0},
-dd1227[]={52,46,0},
-dd1228[]={53,46,0},
-dd1229[]={54,46,0},
-dd1230[]={55,46,0},
-dd1231[]={56,46,0},
-dd1232[]={57,46,0},
-dd1233[]={49,48,46,0},
-dd1234[]={49,49,46,0},
-dd1235[]={49,50,46,0},
-dd1236[]={49,51,46,0},
-dd1237[]={49,52,46,0},
-dd1238[]={49,53,46,0},
-dd1239[]={49,54,46,0},
-dd1240[]={49,55,46,0},
-dd1241[]={49,56,46,0},
-dd1242[]={49,57,46,0},
-dd1243[]={50,48,46,0},
-dd1244[]={40,97,41,0},
-dd1245[]={40,98,41,0},
-dd1246[]={40,99,41,0},
-dd1247[]={40,100,41,0},
-dd1248[]={40,101,41,0},
-dd1249[]={40,102,41,0},
-dd1250[]={40,103,41,0},
-dd1251[]={40,104,41,0},
-dd1252[]={40,105,41,0},
-dd1253[]={40,106,41,0},
-dd1254[]={40,107,41,0},
-dd1255[]={40,108,41,0},
-dd1256[]={40,109,41,0},
-dd1257[]={40,110,41,0},
-dd1258[]={40,111,41,0},
-dd1259[]={40,112,41,0},
-dd1260[]={40,113,41,0},
-dd1261[]={40,114,41,0},
-dd1262[]={40,115,41,0},
-dd1263[]={40,116,41,0},
-dd1264[]={40,117,41,0},
-dd1265[]={40,118,41,0},
-dd1266[]={40,119,41,0},
-dd1267[]={40,120,41,0},
-dd1268[]={40,121,41,0},
-dd1269[]={40,122,41,0},
-dd1270[]={83,0},
-dd1271[]={89,0},
-dd1272[]={113,0},
-dd1273[]={8747,8747,8747,8747,0},
-dd1274[]={58,58,61,0},
-dd1275[]={61,61,0},
-dd1276[]={61,61,61,0},
-dd1277[]={10973,824,0},
-dd1278[]={11617,0},
-dd1279[]={27597,0},
-dd1280[]={40863,0},
-dd1281[]={19968,0},
-dd1282[]={20008,0},
-dd1283[]={20022,0},
-dd1284[]={20031,0},
-dd1285[]={20057,0},
-dd1286[]={20101,0},
-dd1287[]={20108,0},
-dd1288[]={20128,0},
-dd1289[]={20154,0},
-dd1290[]={20799,0},
-dd1291[]={20837,0},
-dd1292[]={20843,0},
-dd1293[]={20866,0},
-dd1294[]={20886,0},
-dd1295[]={20907,0},
-dd1296[]={20960,0},
-dd1297[]={20981,0},
-dd1298[]={20992,0},
-dd1299[]={21147,0},
-dd1300[]={21241,0},
-dd1301[]={21269,0},
-dd1302[]={21274,0},
-dd1303[]={21304,0},
-dd1304[]={21313,0},
-dd1305[]={21340,0},
-dd1306[]={21353,0},
-dd1307[]={21378,0},
-dd1308[]={21430,0},
-dd1309[]={21448,0},
-dd1310[]={21475,0},
-dd1311[]={22231,0},
-dd1312[]={22303,0},
-dd1313[]={22763,0},
-dd1314[]={22786,0},
-dd1315[]={22794,0},
-dd1316[]={22805,0},
-dd1317[]={22823,0},
-dd1318[]={22899,0},
-dd1319[]={23376,0},
-dd1320[]={23424,0},
-dd1321[]={23544,0},
-dd1322[]={23567,0},
-dd1323[]={23586,0},
-dd1324[]={23608,0},
-dd1325[]={23662,0},
-dd1326[]={23665,0},
-dd1327[]={24027,0},
-dd1328[]={24037,0},
-dd1329[]={24049,0},
-dd1330[]={24062,0},
-dd1331[]={24178,0},
-dd1332[]={24186,0},
-dd1333[]={24191,0},
-dd1334[]={24308,0},
-dd1335[]={24318,0},
-dd1336[]={24331,0},
-dd1337[]={24339,0},
-dd1338[]={24400,0},
-dd1339[]={24417,0},
-dd1340[]={24435,0},
-dd1341[]={24515,0},
-dd1342[]={25096,0},
-dd1343[]={25142,0},
-dd1344[]={25163,0},
-dd1345[]={25903,0},
-dd1346[]={25908,0},
-dd1347[]={25991,0},
-dd1348[]={26007,0},
-dd1349[]={26020,0},
-dd1350[]={26041,0},
-dd1351[]={26080,0},
-dd1352[]={26085,0},
-dd1353[]={26352,0},
-dd1354[]={26376,0},
-dd1355[]={26408,0},
-dd1356[]={27424,0},
-dd1357[]={27490,0},
-dd1358[]={27513,0},
-dd1359[]={27571,0},
-dd1360[]={27595,0},
-dd1361[]={27604,0},
-dd1362[]={27611,0},
-dd1363[]={27663,0},
-dd1364[]={27668,0},
-dd1365[]={27700,0},
-dd1366[]={28779,0},
-dd1367[]={29226,0},
-dd1368[]={29238,0},
-dd1369[]={29243,0},
-dd1370[]={29247,0},
-dd1371[]={29255,0},
-dd1372[]={29273,0},
-dd1373[]={29275,0},
-dd1374[]={29356,0},
-dd1375[]={29572,0},
-dd1376[]={29577,0},
-dd1377[]={29916,0},
-dd1378[]={29926,0},
-dd1379[]={29976,0},
-dd1380[]={29983,0},
-dd1381[]={29992,0},
-dd1382[]={30000,0},
-dd1383[]={30091,0},
-dd1384[]={30098,0},
-dd1385[]={30326,0},
-dd1386[]={30333,0},
-dd1387[]={30382,0},
-dd1388[]={30399,0},
-dd1389[]={30446,0},
-dd1390[]={30683,0},
-dd1391[]={30690,0},
-dd1392[]={30707,0},
-dd1393[]={31034,0},
-dd1394[]={31160,0},
-dd1395[]={31166,0},
-dd1396[]={31348,0},
-dd1397[]={31435,0},
-dd1398[]={31481,0},
-dd1399[]={31859,0},
-dd1400[]={31992,0},
-dd1401[]={32566,0},
-dd1402[]={32593,0},
-dd1403[]={32650,0},
-dd1404[]={32701,0},
-dd1405[]={32769,0},
-dd1406[]={32780,0},
-dd1407[]={32786,0},
-dd1408[]={32819,0},
-dd1409[]={32895,0},
-dd1410[]={32905,0},
-dd1411[]={33251,0},
-dd1412[]={33258,0},
-dd1413[]={33267,0},
-dd1414[]={33276,0},
-dd1415[]={33292,0},
-dd1416[]={33307,0},
-dd1417[]={33311,0},
-dd1418[]={33390,0},
-dd1419[]={33394,0},
-dd1420[]={33400,0},
-dd1421[]={34381,0},
-dd1422[]={34411,0},
-dd1423[]={34880,0},
-dd1424[]={34892,0},
-dd1425[]={34915,0},
-dd1426[]={35198,0},
-dd1427[]={35211,0},
-dd1428[]={35282,0},
-dd1429[]={35328,0},
-dd1430[]={35895,0},
-dd1431[]={35910,0},
-dd1432[]={35925,0},
-dd1433[]={35960,0},
-dd1434[]={35997,0},
-dd1435[]={36196,0},
-dd1436[]={36208,0},
-dd1437[]={36275,0},
-dd1438[]={36523,0},
-dd1439[]={36554,0},
-dd1440[]={36763,0},
-dd1441[]={36784,0},
-dd1442[]={36789,0},
-dd1443[]={37009,0},
-dd1444[]={37193,0},
-dd1445[]={37318,0},
-dd1446[]={37324,0},
-dd1447[]={37329,0},
-dd1448[]={38263,0},
-dd1449[]={38272,0},
-dd1450[]={38428,0},
-dd1451[]={38582,0},
-dd1452[]={38585,0},
-dd1453[]={38632,0},
-dd1454[]={38737,0},
-dd1455[]={38750,0},
-dd1456[]={38754,0},
-dd1457[]={38761,0},
-dd1458[]={38859,0},
-dd1459[]={38893,0},
-dd1460[]={38899,0},
-dd1461[]={38913,0},
-dd1462[]={39080,0},
-dd1463[]={39131,0},
-dd1464[]={39135,0},
-dd1465[]={39318,0},
-dd1466[]={39321,0},
-dd1467[]={39340,0},
-dd1468[]={39592,0},
-dd1469[]={39640,0},
-dd1470[]={39647,0},
-dd1471[]={39717,0},
-dd1472[]={39727,0},
-dd1473[]={39730,0},
-dd1474[]={39740,0},
-dd1475[]={39770,0},
-dd1476[]={40165,0},
-dd1477[]={40565,0},
-dd1478[]={40575,0},
-dd1479[]={40613,0},
-dd1480[]={40635,0},
-dd1481[]={40643,0},
-dd1482[]={40653,0},
-dd1483[]={40657,0},
-dd1484[]={40697,0},
-dd1485[]={40701,0},
-dd1486[]={40718,0},
-dd1487[]={40723,0},
-dd1488[]={40736,0},
-dd1489[]={40763,0},
-dd1490[]={40778,0},
-dd1491[]={40786,0},
-dd1492[]={40845,0},
-dd1493[]={40860,0},
-dd1494[]={40864,0},
-dd1495[]={12306,0},
-dd1496[]={21316,0},
-dd1497[]={21317,0},
-dd1498[]={12363,12441,0},
-dd1499[]={12365,12441,0},
-dd1500[]={12367,12441,0},
-dd1501[]={12369,12441,0},
-dd1502[]={12371,12441,0},
-dd1503[]={12373,12441,0},
-dd1504[]={12375,12441,0},
-dd1505[]={12377,12441,0},
-dd1506[]={12379,12441,0},
-dd1507[]={12381,12441,0},
-dd1508[]={12383,12441,0},
-dd1509[]={12385,12441,0},
-dd1510[]={12388,12441,0},
-dd1511[]={12390,12441,0},
-dd1512[]={12392,12441,0},
-dd1513[]={12399,12441,0},
-dd1514[]={12399,12442,0},
-dd1515[]={12402,12441,0},
-dd1516[]={12402,12442,0},
-dd1517[]={12405,12441,0},
-dd1518[]={12405,12442,0},
-dd1519[]={12408,12441,0},
-dd1520[]={12408,12442,0},
-dd1521[]={12411,12441,0},
-dd1522[]={12411,12442,0},
-dd1523[]={12358,12441,0},
-dd1524[]={32,12441,0},
-dd1525[]={32,12442,0},
-dd1526[]={12445,12441,0},
-dd1527[]={12424,12426,0},
-dd1528[]={12459,12441,0},
-dd1529[]={12461,12441,0},
-dd1530[]={12463,12441,0},
-dd1531[]={12465,12441,0},
-dd1532[]={12467,12441,0},
-dd1533[]={12469,12441,0},
-dd1534[]={12471,12441,0},
-dd1535[]={12473,12441,0},
-dd1536[]={12475,12441,0},
-dd1537[]={12477,12441,0},
-dd1538[]={12479,12441,0},
-dd1539[]={12481,12441,0},
-dd1540[]={12484,12441,0},
-dd1541[]={12486,12441,0},
-dd1542[]={12488,12441,0},
-dd1543[]={12495,12441,0},
-dd1544[]={12495,12442,0},
-dd1545[]={12498,12441,0},
-dd1546[]={12498,12442,0},
-dd1547[]={12501,12441,0},
-dd1548[]={12501,12442,0},
-dd1549[]={12504,12441,0},
-dd1550[]={12504,12442,0},
-dd1551[]={12507,12441,0},
-dd1552[]={12507,12442,0},
-dd1553[]={12454,12441,0},
-dd1554[]={12527,12441,0},
-dd1555[]={12528,12441,0},
-dd1556[]={12529,12441,0},
-dd1557[]={12530,12441,0},
-dd1558[]={12541,12441,0},
-dd1559[]={12467,12488,0},
-dd1560[]={4352,0},
-dd1561[]={4353,0},
-dd1562[]={4522,0},
-dd1563[]={4354,0},
-dd1564[]={4524,0},
-dd1565[]={4525,0},
-dd1566[]={4355,0},
-dd1567[]={4356,0},
-dd1568[]={4357,0},
-dd1569[]={4528,0},
-dd1570[]={4529,0},
-dd1571[]={4530,0},
-dd1572[]={4531,0},
-dd1573[]={4532,0},
-dd1574[]={4533,0},
-dd1575[]={4378,0},
-dd1576[]={4358,0},
-dd1577[]={4359,0},
-dd1578[]={4360,0},
-dd1579[]={4385,0},
-dd1580[]={4361,0},
-dd1581[]={4362,0},
-dd1582[]={4363,0},
-dd1583[]={4364,0},
-dd1584[]={4365,0},
-dd1585[]={4366,0},
-dd1586[]={4367,0},
-dd1587[]={4368,0},
-dd1588[]={4369,0},
-dd1589[]={4370,0},
-dd1590[]={4449,0},
-dd1591[]={4450,0},
-dd1592[]={4451,0},
-dd1593[]={4452,0},
-dd1594[]={4453,0},
-dd1595[]={4454,0},
-dd1596[]={4455,0},
-dd1597[]={4456,0},
-dd1598[]={4457,0},
-dd1599[]={4458,0},
-dd1600[]={4459,0},
-dd1601[]={4460,0},
-dd1602[]={4461,0},
-dd1603[]={4462,0},
-dd1604[]={4463,0},
-dd1605[]={4464,0},
-dd1606[]={4465,0},
-dd1607[]={4466,0},
-dd1608[]={4467,0},
-dd1609[]={4468,0},
-dd1610[]={4469,0},
-dd1611[]={4448,0},
-dd1612[]={4372,0},
-dd1613[]={4373,0},
-dd1614[]={4551,0},
-dd1615[]={4552,0},
-dd1616[]={4556,0},
-dd1617[]={4558,0},
-dd1618[]={4563,0},
-dd1619[]={4567,0},
-dd1620[]={4569,0},
-dd1621[]={4380,0},
-dd1622[]={4573,0},
-dd1623[]={4575,0},
-dd1624[]={4381,0},
-dd1625[]={4382,0},
-dd1626[]={4384,0},
-dd1627[]={4386,0},
-dd1628[]={4387,0},
-dd1629[]={4391,0},
-dd1630[]={4393,0},
-dd1631[]={4395,0},
-dd1632[]={4396,0},
-dd1633[]={4397,0},
-dd1634[]={4398,0},
-dd1635[]={4399,0},
-dd1636[]={4402,0},
-dd1637[]={4406,0},
-dd1638[]={4416,0},
-dd1639[]={4423,0},
-dd1640[]={4428,0},
-dd1641[]={4593,0},
-dd1642[]={4594,0},
-dd1643[]={4439,0},
-dd1644[]={4440,0},
-dd1645[]={4441,0},
-dd1646[]={4484,0},
-dd1647[]={4485,0},
-dd1648[]={4488,0},
-dd1649[]={4497,0},
-dd1650[]={4498,0},
-dd1651[]={4500,0},
-dd1652[]={4510,0},
-dd1653[]={4513,0},
-dd1654[]={19977,0},
-dd1655[]={22235,0},
-dd1656[]={19978,0},
-dd1657[]={20013,0},
-dd1658[]={19979,0},
-dd1659[]={30002,0},
-dd1660[]={19993,0},
-dd1661[]={19969,0},
-dd1662[]={22825,0},
-dd1663[]={22320,0},
-dd1664[]={40,4352,41,0},
-dd1665[]={40,4354,41,0},
-dd1666[]={40,4355,41,0},
-dd1667[]={40,4357,41,0},
-dd1668[]={40,4358,41,0},
-dd1669[]={40,4359,41,0},
-dd1670[]={40,4361,41,0},
-dd1671[]={40,4363,41,0},
-dd1672[]={40,4364,41,0},
-dd1673[]={40,4366,41,0},
-dd1674[]={40,4367,41,0},
-dd1675[]={40,4368,41,0},
-dd1676[]={40,4369,41,0},
-dd1677[]={40,4370,41,0},
-dd1678[]={40,4352,4449,41,0},
-dd1679[]={40,4354,4449,41,0},
-dd1680[]={40,4355,4449,41,0},
-dd1681[]={40,4357,4449,41,0},
-dd1682[]={40,4358,4449,41,0},
-dd1683[]={40,4359,4449,41,0},
-dd1684[]={40,4361,4449,41,0},
-dd1685[]={40,4363,4449,41,0},
-dd1686[]={40,4364,4449,41,0},
-dd1687[]={40,4366,4449,41,0},
-dd1688[]={40,4367,4449,41,0},
-dd1689[]={40,4368,4449,41,0},
-dd1690[]={40,4369,4449,41,0},
-dd1691[]={40,4370,4449,41,0},
-dd1692[]={40,4364,4462,41,0},
-dd1693[]={40,4363,4457,4364,4453,4523,41,0},
-dd1694[]={40,4363,4457,4370,4462,41,0},
-dd1695[]={40,19968,41,0},
-dd1696[]={40,20108,41,0},
-dd1697[]={40,19977,41,0},
-dd1698[]={40,22235,41,0},
-dd1699[]={40,20116,41,0},
-dd1700[]={40,20845,41,0},
-dd1701[]={40,19971,41,0},
-dd1702[]={40,20843,41,0},
-dd1703[]={40,20061,41,0},
-dd1704[]={40,21313,41,0},
-dd1705[]={40,26376,41,0},
-dd1706[]={40,28779,41,0},
-dd1707[]={40,27700,41,0},
-dd1708[]={40,26408,41,0},
-dd1709[]={40,37329,41,0},
-dd1710[]={40,22303,41,0},
-dd1711[]={40,26085,41,0},
-dd1712[]={40,26666,41,0},
-dd1713[]={40,26377,41,0},
-dd1714[]={40,31038,41,0},
-dd1715[]={40,21517,41,0},
-dd1716[]={40,29305,41,0},
-dd1717[]={40,36001,41,0},
-dd1718[]={40,31069,41,0},
-dd1719[]={40,21172,41,0},
-dd1720[]={40,20195,41,0},
-dd1721[]={40,21628,41,0},
-dd1722[]={40,23398,41,0},
-dd1723[]={40,30435,41,0},
-dd1724[]={40,20225,41,0},
-dd1725[]={40,36039,41,0},
-dd1726[]={40,21332,41,0},
-dd1727[]={40,31085,41,0},
-dd1728[]={40,20241,41,0},
-dd1729[]={40,33258,41,0},
-dd1730[]={40,33267,41,0},
-dd1731[]={80,84,69,0},
-dd1732[]={50,49,0},
-dd1733[]={50,50,0},
-dd1734[]={50,51,0},
-dd1735[]={50,52,0},
-dd1736[]={50,53,0},
-dd1737[]={50,54,0},
-dd1738[]={50,55,0},
-dd1739[]={50,56,0},
-dd1740[]={50,57,0},
-dd1741[]={51,48,0},
-dd1742[]={51,49,0},
-dd1743[]={51,50,0},
-dd1744[]={51,51,0},
-dd1745[]={51,52,0},
-dd1746[]={51,53,0},
-dd1747[]={4352,4449,0},
-dd1748[]={4354,4449,0},
-dd1749[]={4355,4449,0},
-dd1750[]={4357,4449,0},
-dd1751[]={4358,4449,0},
-dd1752[]={4359,4449,0},
-dd1753[]={4361,4449,0},
-dd1754[]={4363,4449,0},
-dd1755[]={4364,4449,0},
-dd1756[]={4366,4449,0},
-dd1757[]={4367,4449,0},
-dd1758[]={4368,4449,0},
-dd1759[]={4369,4449,0},
-dd1760[]={4370,4449,0},
-dd1761[]={4366,4449,4535,4352,4457,0},
-dd1762[]={4364,4462,4363,4468,0},
-dd1763[]={4363,4462,0},
-dd1764[]={20116,0},
-dd1765[]={20845,0},
-dd1766[]={19971,0},
-dd1767[]={20061,0},
-dd1768[]={26666,0},
-dd1769[]={26377,0},
-dd1770[]={31038,0},
-dd1771[]={21517,0},
-dd1772[]={29305,0},
-dd1773[]={36001,0},
-dd1774[]={31069,0},
-dd1775[]={21172,0},
-dd1776[]={31192,0},
-dd1777[]={30007,0},
-dd1778[]={36969,0},
-dd1779[]={20778,0},
-dd1780[]={21360,0},
-dd1781[]={27880,0},
-dd1782[]={38917,0},
-dd1783[]={20241,0},
-dd1784[]={20889,0},
-dd1785[]={27491,0},
-dd1786[]={24038,0},
-dd1787[]={21491,0},
-dd1788[]={21307,0},
-dd1789[]={23447,0},
-dd1790[]={23398,0},
-dd1791[]={30435,0},
-dd1792[]={20225,0},
-dd1793[]={36039,0},
-dd1794[]={21332,0},
-dd1795[]={22812,0},
-dd1796[]={51,54,0},
-dd1797[]={51,55,0},
-dd1798[]={51,56,0},
-dd1799[]={51,57,0},
-dd1800[]={52,48,0},
-dd1801[]={52,49,0},
-dd1802[]={52,50,0},
-dd1803[]={52,51,0},
-dd1804[]={52,52,0},
-dd1805[]={52,53,0},
-dd1806[]={52,54,0},
-dd1807[]={52,55,0},
-dd1808[]={52,56,0},
-dd1809[]={52,57,0},
-dd1810[]={53,48,0},
-dd1811[]={49,26376,0},
-dd1812[]={50,26376,0},
-dd1813[]={51,26376,0},
-dd1814[]={52,26376,0},
-dd1815[]={53,26376,0},
-dd1816[]={54,26376,0},
-dd1817[]={55,26376,0},
-dd1818[]={56,26376,0},
-dd1819[]={57,26376,0},
-dd1820[]={49,48,26376,0},
-dd1821[]={49,49,26376,0},
-dd1822[]={49,50,26376,0},
-dd1823[]={72,103,0},
-dd1824[]={101,114,103,0},
-dd1825[]={101,86,0},
-dd1826[]={76,84,68,0},
-dd1827[]={12450,0},
-dd1828[]={12452,0},
-dd1829[]={12454,0},
-dd1830[]={12456,0},
-dd1831[]={12458,0},
-dd1832[]={12459,0},
-dd1833[]={12461,0},
-dd1834[]={12463,0},
-dd1835[]={12465,0},
-dd1836[]={12467,0},
-dd1837[]={12469,0},
-dd1838[]={12471,0},
-dd1839[]={12473,0},
-dd1840[]={12475,0},
-dd1841[]={12477,0},
-dd1842[]={12479,0},
-dd1843[]={12481,0},
-dd1844[]={12484,0},
-dd1845[]={12486,0},
-dd1846[]={12488,0},
-dd1847[]={12490,0},
-dd1848[]={12491,0},
-dd1849[]={12492,0},
-dd1850[]={12493,0},
-dd1851[]={12494,0},
-dd1852[]={12495,0},
-dd1853[]={12498,0},
-dd1854[]={12501,0},
-dd1855[]={12504,0},
-dd1856[]={12507,0},
-dd1857[]={12510,0},
-dd1858[]={12511,0},
-dd1859[]={12512,0},
-dd1860[]={12513,0},
-dd1861[]={12514,0},
-dd1862[]={12516,0},
-dd1863[]={12518,0},
-dd1864[]={12520,0},
-dd1865[]={12521,0},
-dd1866[]={12522,0},
-dd1867[]={12523,0},
-dd1868[]={12524,0},
-dd1869[]={12525,0},
-dd1870[]={12527,0},
-dd1871[]={12528,0},
-dd1872[]={12529,0},
-dd1873[]={12530,0},
-dd1874[]={12450,12497,12540,12488,0},
-dd1875[]={12450,12523,12501,12449,0},
-dd1876[]={12450,12531,12506,12450,0},
-dd1877[]={12450,12540,12523,0},
-dd1878[]={12452,12491,12531,12464,0},
-dd1879[]={12452,12531,12481,0},
-dd1880[]={12454,12457,12531,0},
-dd1881[]={12456,12473,12463,12540,12489,0},
-dd1882[]={12456,12540,12459,12540,0},
-dd1883[]={12458,12531,12473,0},
-dd1884[]={12458,12540,12512,0},
-dd1885[]={12459,12452,12522,0},
-dd1886[]={12459,12521,12483,12488,0},
-dd1887[]={12459,12525,12522,12540,0},
-dd1888[]={12460,12525,12531,0},
-dd1889[]={12460,12531,12510,0},
-dd1890[]={12462,12460,0},
-dd1891[]={12462,12491,12540,0},
-dd1892[]={12461,12517,12522,12540,0},
-dd1893[]={12462,12523,12480,12540,0},
-dd1894[]={12461,12525,0},
-dd1895[]={12461,12525,12464,12521,12512,0},
-dd1896[]={12461,12525,12513,12540,12488,12523,0},
-dd1897[]={12461,12525,12527,12483,12488,0},
-dd1898[]={12464,12521,12512,0},
-dd1899[]={12464,12521,12512,12488,12531,0},
-dd1900[]={12463,12523,12476,12452,12525,0},
-dd1901[]={12463,12525,12540,12493,0},
-dd1902[]={12465,12540,12473,0},
-dd1903[]={12467,12523,12490,0},
-dd1904[]={12467,12540,12509,0},
-dd1905[]={12469,12452,12463,12523,0},
-dd1906[]={12469,12531,12481,12540,12512,0},
-dd1907[]={12471,12522,12531,12464,0},
-dd1908[]={12475,12531,12481,0},
-dd1909[]={12475,12531,12488,0},
-dd1910[]={12480,12540,12473,0},
-dd1911[]={12487,12471,0},
-dd1912[]={12489,12523,0},
-dd1913[]={12488,12531,0},
-dd1914[]={12490,12494,0},
-dd1915[]={12494,12483,12488,0},
-dd1916[]={12495,12452,12484,0},
-dd1917[]={12497,12540,12475,12531,12488,0},
-dd1918[]={12497,12540,12484,0},
-dd1919[]={12496,12540,12524,12523,0},
-dd1920[]={12500,12450,12473,12488,12523,0},
-dd1921[]={12500,12463,12523,0},
-dd1922[]={12500,12467,0},
-dd1923[]={12499,12523,0},
-dd1924[]={12501,12449,12521,12483,12489,0},
-dd1925[]={12501,12451,12540,12488,0},
-dd1926[]={12502,12483,12471,12455,12523,0},
-dd1927[]={12501,12521,12531,0},
-dd1928[]={12504,12463,12479,12540,12523,0},
-dd1929[]={12506,12477,0},
-dd1930[]={12506,12491,12498,0},
-dd1931[]={12504,12523,12484,0},
-dd1932[]={12506,12531,12473,0},
-dd1933[]={12506,12540,12472,0},
-dd1934[]={12505,12540,12479,0},
-dd1935[]={12509,12452,12531,12488,0},
-dd1936[]={12508,12523,12488,0},
-dd1937[]={12507,12531,0},
-dd1938[]={12509,12531,12489,0},
-dd1939[]={12507,12540,12523,0},
-dd1940[]={12507,12540,12531,0},
-dd1941[]={12510,12452,12463,12525,0},
-dd1942[]={12510,12452,12523,0},
-dd1943[]={12510,12483,12495,0},
-dd1944[]={12510,12523,12463,0},
-dd1945[]={12510,12531,12471,12519,12531,0},
-dd1946[]={12511,12463,12525,12531,0},
-dd1947[]={12511,12522,0},
-dd1948[]={12511,12522,12496,12540,12523,0},
-dd1949[]={12513,12460,0},
-dd1950[]={12513,12460,12488,12531,0},
-dd1951[]={12513,12540,12488,12523,0},
-dd1952[]={12516,12540,12489,0},
-dd1953[]={12516,12540,12523,0},
-dd1954[]={12518,12450,12531,0},
-dd1955[]={12522,12483,12488,12523,0},
-dd1956[]={12522,12521,0},
-dd1957[]={12523,12500,12540,0},
-dd1958[]={12523,12540,12502,12523,0},
-dd1959[]={12524,12512,0},
-dd1960[]={12524,12531,12488,12466,12531,0},
-dd1961[]={12527,12483,12488,0},
-dd1962[]={48,28857,0},
-dd1963[]={49,28857,0},
-dd1964[]={50,28857,0},
-dd1965[]={51,28857,0},
-dd1966[]={52,28857,0},
-dd1967[]={53,28857,0},
-dd1968[]={54,28857,0},
-dd1969[]={55,28857,0},
-dd1970[]={56,28857,0},
-dd1971[]={57,28857,0},
-dd1972[]={49,48,28857,0},
-dd1973[]={49,49,28857,0},
-dd1974[]={49,50,28857,0},
-dd1975[]={49,51,28857,0},
-dd1976[]={49,52,28857,0},
-dd1977[]={49,53,28857,0},
-dd1978[]={49,54,28857,0},
-dd1979[]={49,55,28857,0},
-dd1980[]={49,56,28857,0},
-dd1981[]={49,57,28857,0},
-dd1982[]={50,48,28857,0},
-dd1983[]={50,49,28857,0},
-dd1984[]={50,50,28857,0},
-dd1985[]={50,51,28857,0},
-dd1986[]={50,52,28857,0},
-dd1987[]={104,80,97,0},
-dd1988[]={100,97,0},
-dd1989[]={65,85,0},
-dd1990[]={98,97,114,0},
-dd1991[]={111,86,0},
-dd1992[]={112,99,0},
-dd1993[]={100,109,0},
-dd1994[]={100,109,178,0},
-dd1995[]={100,109,179,0},
-dd1996[]={73,85,0},
-dd1997[]={24179,25104,0},
-dd1998[]={26157,21644,0},
-dd1999[]={22823,27491,0},
-dd2000[]={26126,27835,0},
-dd2001[]={26666,24335,20250,31038,0},
-dd2002[]={112,65,0},
-dd2003[]={110,65,0},
-dd2004[]={956,65,0},
-dd2005[]={109,65,0},
-dd2006[]={107,65,0},
-dd2007[]={75,66,0},
-dd2008[]={77,66,0},
-dd2009[]={71,66,0},
-dd2010[]={99,97,108,0},
-dd2011[]={107,99,97,108,0},
-dd2012[]={112,70,0},
-dd2013[]={110,70,0},
-dd2014[]={956,70,0},
-dd2015[]={956,103,0},
-dd2016[]={109,103,0},
-dd2017[]={107,103,0},
-dd2018[]={72,122,0},
-dd2019[]={107,72,122,0},
-dd2020[]={77,72,122,0},
-dd2021[]={71,72,122,0},
-dd2022[]={84,72,122,0},
-dd2023[]={956,8467,0},
-dd2024[]={109,8467,0},
-dd2025[]={100,8467,0},
-dd2026[]={107,8467,0},
-dd2027[]={102,109,0},
-dd2028[]={110,109,0},
-dd2029[]={956,109,0},
-dd2030[]={109,109,0},
-dd2031[]={99,109,0},
-dd2032[]={107,109,0},
-dd2033[]={109,109,178,0},
-dd2034[]={99,109,178,0},
-dd2035[]={109,178,0},
-dd2036[]={107,109,178,0},
-dd2037[]={109,109,179,0},
-dd2038[]={99,109,179,0},
-dd2039[]={109,179,0},
-dd2040[]={107,109,179,0},
-dd2041[]={109,8725,115,0},
-dd2042[]={109,8725,115,178,0},
-dd2043[]={80,97,0},
-dd2044[]={107,80,97,0},
-dd2045[]={77,80,97,0},
-dd2046[]={71,80,97,0},
-dd2047[]={114,97,100,0},
-dd2048[]={114,97,100,8725,115,0},
-dd2049[]={114,97,100,8725,115,178,0},
-dd2050[]={112,115,0},
-dd2051[]={110,115,0},
-dd2052[]={956,115,0},
-dd2053[]={109,115,0},
-dd2054[]={112,86,0},
-dd2055[]={110,86,0},
-dd2056[]={956,86,0},
-dd2057[]={109,86,0},
-dd2058[]={107,86,0},
-dd2059[]={77,86,0},
-dd2060[]={112,87,0},
-dd2061[]={110,87,0},
-dd2062[]={956,87,0},
-dd2063[]={109,87,0},
-dd2064[]={107,87,0},
-dd2065[]={77,87,0},
-dd2066[]={107,937,0},
-dd2067[]={77,937,0},
-dd2068[]={97,46,109,46,0},
-dd2069[]={66,113,0},
-dd2070[]={99,99,0},
-dd2071[]={99,100,0},
-dd2072[]={67,8725,107,103,0},
-dd2073[]={67,111,46,0},
-dd2074[]={100,66,0},
-dd2075[]={71,121,0},
-dd2076[]={104,97,0},
-dd2077[]={72,80,0},
-dd2078[]={105,110,0},
-dd2079[]={75,75,0},
-dd2080[]={75,77,0},
-dd2081[]={107,116,0},
-dd2082[]={108,109,0},
-dd2083[]={108,110,0},
-dd2084[]={108,111,103,0},
-dd2085[]={108,120,0},
-dd2086[]={109,98,0},
-dd2087[]={109,105,108,0},
-dd2088[]={109,111,108,0},
-dd2089[]={80,72,0},
-dd2090[]={112,46,109,46,0},
-dd2091[]={80,80,77,0},
-dd2092[]={80,82,0},
-dd2093[]={115,114,0},
-dd2094[]={83,118,0},
-dd2095[]={87,98,0},
-dd2096[]={86,8725,109,0},
-dd2097[]={65,8725,109,0},
-dd2098[]={49,26085,0},
-dd2099[]={50,26085,0},
-dd2100[]={51,26085,0},
-dd2101[]={52,26085,0},
-dd2102[]={53,26085,0},
-dd2103[]={54,26085,0},
-dd2104[]={55,26085,0},
-dd2105[]={56,26085,0},
-dd2106[]={57,26085,0},
-dd2107[]={49,48,26085,0},
-dd2108[]={49,49,26085,0},
-dd2109[]={49,50,26085,0},
-dd2110[]={49,51,26085,0},
-dd2111[]={49,52,26085,0},
-dd2112[]={49,53,26085,0},
-dd2113[]={49,54,26085,0},
-dd2114[]={49,55,26085,0},
-dd2115[]={49,56,26085,0},
-dd2116[]={49,57,26085,0},
-dd2117[]={50,48,26085,0},
-dd2118[]={50,49,26085,0},
-dd2119[]={50,50,26085,0},
-dd2120[]={50,51,26085,0},
-dd2121[]={50,52,26085,0},
-dd2122[]={50,53,26085,0},
-dd2123[]={50,54,26085,0},
-dd2124[]={50,55,26085,0},
-dd2125[]={50,56,26085,0},
-dd2126[]={50,57,26085,0},
-dd2127[]={51,48,26085,0},
-dd2128[]={51,49,26085,0},
-dd2129[]={103,97,108,0},
-dd2130[]={42863,0},
-dd2131[]={35912,0},
-dd2132[]={26356,0},
-dd2133[]={36040,0},
-dd2134[]={28369,0},
-dd2135[]={20018,0},
-dd2136[]={21477,0},
-dd2137[]={22865,0},
-dd2138[]={21895,0},
-dd2139[]={22856,0},
-dd2140[]={25078,0},
-dd2141[]={30313,0},
-dd2142[]={32645,0},
-dd2143[]={34367,0},
-dd2144[]={34746,0},
-dd2145[]={35064,0},
-dd2146[]={37007,0},
-dd2147[]={27138,0},
-dd2148[]={27931,0},
-dd2149[]={28889,0},
-dd2150[]={29662,0},
-dd2151[]={33853,0},
-dd2152[]={37226,0},
-dd2153[]={39409,0},
-dd2154[]={20098,0},
-dd2155[]={21365,0},
-dd2156[]={27396,0},
-dd2157[]={29211,0},
-dd2158[]={34349,0},
-dd2159[]={40478,0},
-dd2160[]={23888,0},
-dd2161[]={28651,0},
-dd2162[]={34253,0},
-dd2163[]={35172,0},
-dd2164[]={25289,0},
-dd2165[]={33240,0},
-dd2166[]={34847,0},
-dd2167[]={24266,0},
-dd2168[]={26391,0},
-dd2169[]={28010,0},
-dd2170[]={29436,0},
-dd2171[]={37070,0},
-dd2172[]={20358,0},
-dd2173[]={20919,0},
-dd2174[]={21214,0},
-dd2175[]={25796,0},
-dd2176[]={27347,0},
-dd2177[]={29200,0},
-dd2178[]={30439,0},
-dd2179[]={34310,0},
-dd2180[]={34396,0},
-dd2181[]={36335,0},
-dd2182[]={38706,0},
-dd2183[]={39791,0},
-dd2184[]={40442,0},
-dd2185[]={30860,0},
-dd2186[]={31103,0},
-dd2187[]={32160,0},
-dd2188[]={33737,0},
-dd2189[]={37636,0},
-dd2190[]={35542,0},
-dd2191[]={22751,0},
-dd2192[]={24324,0},
-dd2193[]={31840,0},
-dd2194[]={32894,0},
-dd2195[]={29282,0},
-dd2196[]={30922,0},
-dd2197[]={36034,0},
-dd2198[]={38647,0},
-dd2199[]={22744,0},
-dd2200[]={23650,0},
-dd2201[]={27155,0},
-dd2202[]={28122,0},
-dd2203[]={28431,0},
-dd2204[]={32047,0},
-dd2205[]={32311,0},
-dd2206[]={38475,0},
-dd2207[]={21202,0},
-dd2208[]={32907,0},
-dd2209[]={20956,0},
-dd2210[]={20940,0},
-dd2211[]={31260,0},
-dd2212[]={32190,0},
-dd2213[]={33777,0},
-dd2214[]={38517,0},
-dd2215[]={35712,0},
-dd2216[]={25295,0},
-dd2217[]={35582,0},
-dd2218[]={20025,0},
-dd2219[]={23527,0},
-dd2220[]={24594,0},
-dd2221[]={29575,0},
-dd2222[]={30064,0},
-dd2223[]={21271,0},
-dd2224[]={30971,0},
-dd2225[]={20415,0},
-dd2226[]={24489,0},
-dd2227[]={19981,0},
-dd2228[]={27852,0},
-dd2229[]={25976,0},
-dd2230[]={32034,0},
-dd2231[]={21443,0},
-dd2232[]={22622,0},
-dd2233[]={30465,0},
-dd2234[]={33865,0},
-dd2235[]={35498,0},
-dd2236[]={27578,0},
-dd2237[]={27784,0},
-dd2238[]={25342,0},
-dd2239[]={33509,0},
-dd2240[]={25504,0},
-dd2241[]={30053,0},
-dd2242[]={20142,0},
-dd2243[]={20841,0},
-dd2244[]={20937,0},
-dd2245[]={26753,0},
-dd2246[]={31975,0},
-dd2247[]={33391,0},
-dd2248[]={35538,0},
-dd2249[]={37327,0},
-dd2250[]={21237,0},
-dd2251[]={21570,0},
-dd2252[]={24300,0},
-dd2253[]={26053,0},
-dd2254[]={28670,0},
-dd2255[]={31018,0},
-dd2256[]={38317,0},
-dd2257[]={39530,0},
-dd2258[]={40599,0},
-dd2259[]={40654,0},
-dd2260[]={26310,0},
-dd2261[]={27511,0},
-dd2262[]={36706,0},
-dd2263[]={24180,0},
-dd2264[]={24976,0},
-dd2265[]={25088,0},
-dd2266[]={25754,0},
-dd2267[]={28451,0},
-dd2268[]={29001,0},
-dd2269[]={29833,0},
-dd2270[]={31178,0},
-dd2271[]={32244,0},
-dd2272[]={32879,0},
-dd2273[]={36646,0},
-dd2274[]={34030,0},
-dd2275[]={36899,0},
-dd2276[]={37706,0},
-dd2277[]={21015,0},
-dd2278[]={21155,0},
-dd2279[]={21693,0},
-dd2280[]={28872,0},
-dd2281[]={35010,0},
-dd2282[]={24265,0},
-dd2283[]={24565,0},
-dd2284[]={25467,0},
-dd2285[]={27566,0},
-dd2286[]={31806,0},
-dd2287[]={29557,0},
-dd2288[]={20196,0},
-dd2289[]={22265,0},
-dd2290[]={23994,0},
-dd2291[]={24604,0},
-dd2292[]={29618,0},
-dd2293[]={29801,0},
-dd2294[]={32666,0},
-dd2295[]={32838,0},
-dd2296[]={37428,0},
-dd2297[]={38646,0},
-dd2298[]={38728,0},
-dd2299[]={38936,0},
-dd2300[]={20363,0},
-dd2301[]={31150,0},
-dd2302[]={37300,0},
-dd2303[]={38584,0},
-dd2304[]={24801,0},
-dd2305[]={20102,0},
-dd2306[]={20698,0},
-dd2307[]={23534,0},
-dd2308[]={23615,0},
-dd2309[]={26009,0},
-dd2310[]={29134,0},
-dd2311[]={30274,0},
-dd2312[]={34044,0},
-dd2313[]={36988,0},
-dd2314[]={26248,0},
-dd2315[]={38446,0},
-dd2316[]={21129,0},
-dd2317[]={26491,0},
-dd2318[]={26611,0},
-dd2319[]={27969,0},
-dd2320[]={28316,0},
-dd2321[]={29705,0},
-dd2322[]={30041,0},
-dd2323[]={30827,0},
-dd2324[]={32016,0},
-dd2325[]={39006,0},
-dd2326[]={25134,0},
-dd2327[]={38520,0},
-dd2328[]={20523,0},
-dd2329[]={23833,0},
-dd2330[]={28138,0},
-dd2331[]={36650,0},
-dd2332[]={24459,0},
-dd2333[]={24900,0},
-dd2334[]={26647,0},
-dd2335[]={38534,0},
-dd2336[]={21033,0},
-dd2337[]={21519,0},
-dd2338[]={23653,0},
-dd2339[]={26131,0},
-dd2340[]={26446,0},
-dd2341[]={26792,0},
-dd2342[]={27877,0},
-dd2343[]={29702,0},
-dd2344[]={30178,0},
-dd2345[]={32633,0},
-dd2346[]={35023,0},
-dd2347[]={35041,0},
-dd2348[]={38626,0},
-dd2349[]={21311,0},
-dd2350[]={28346,0},
-dd2351[]={21533,0},
-dd2352[]={29136,0},
-dd2353[]={29848,0},
-dd2354[]={34298,0},
-dd2355[]={38563,0},
-dd2356[]={40023,0},
-dd2357[]={40607,0},
-dd2358[]={26519,0},
-dd2359[]={28107,0},
-dd2360[]={33256,0},
-dd2361[]={31520,0},
-dd2362[]={31890,0},
-dd2363[]={29376,0},
-dd2364[]={28825,0},
-dd2365[]={35672,0},
-dd2366[]={20160,0},
-dd2367[]={33590,0},
-dd2368[]={21050,0},
-dd2369[]={20999,0},
-dd2370[]={24230,0},
-dd2371[]={25299,0},
-dd2372[]={31958,0},
-dd2373[]={23429,0},
-dd2374[]={27934,0},
-dd2375[]={26292,0},
-dd2376[]={36667,0},
-dd2377[]={38477,0},
-dd2378[]={24275,0},
-dd2379[]={20800,0},
-dd2380[]={21952,0},
-dd2381[]={22618,0},
-dd2382[]={26228,0},
-dd2383[]={20958,0},
-dd2384[]={29482,0},
-dd2385[]={30410,0},
-dd2386[]={31036,0},
-dd2387[]={31070,0},
-dd2388[]={31077,0},
-dd2389[]={31119,0},
-dd2390[]={38742,0},
-dd2391[]={31934,0},
-dd2392[]={34322,0},
-dd2393[]={35576,0},
-dd2394[]={36920,0},
-dd2395[]={37117,0},
-dd2396[]={39151,0},
-dd2397[]={39164,0},
-dd2398[]={39208,0},
-dd2399[]={40372,0},
-dd2400[]={20398,0},
-dd2401[]={20711,0},
-dd2402[]={20813,0},
-dd2403[]={21193,0},
-dd2404[]={21220,0},
-dd2405[]={21329,0},
-dd2406[]={21917,0},
-dd2407[]={22022,0},
-dd2408[]={22120,0},
-dd2409[]={22592,0},
-dd2410[]={22696,0},
-dd2411[]={23652,0},
-dd2412[]={24724,0},
-dd2413[]={24936,0},
-dd2414[]={24974,0},
-dd2415[]={25074,0},
-dd2416[]={25935,0},
-dd2417[]={26082,0},
-dd2418[]={26257,0},
-dd2419[]={26757,0},
-dd2420[]={28023,0},
-dd2421[]={28186,0},
-dd2422[]={28450,0},
-dd2423[]={29038,0},
-dd2424[]={29227,0},
-dd2425[]={29730,0},
-dd2426[]={30865,0},
-dd2427[]={31049,0},
-dd2428[]={31048,0},
-dd2429[]={31056,0},
-dd2430[]={31062,0},
-dd2431[]={31117,0},
-dd2432[]={31118,0},
-dd2433[]={31296,0},
-dd2434[]={31361,0},
-dd2435[]={31680,0},
-dd2436[]={32265,0},
-dd2437[]={32321,0},
-dd2438[]={32626,0},
-dd2439[]={32773,0},
-dd2440[]={33261,0},
-dd2441[]={33401,0},
-dd2442[]={33879,0},
-dd2443[]={35088,0},
-dd2444[]={35222,0},
-dd2445[]={35585,0},
-dd2446[]={35641,0},
-dd2447[]={36051,0},
-dd2448[]={36104,0},
-dd2449[]={36790,0},
-dd2450[]={38627,0},
-dd2451[]={38911,0},
-dd2452[]={38971,0},
-dd2453[]={20006,0},
-dd2454[]={20917,0},
-dd2455[]={20840,0},
-dd2456[]={20352,0},
-dd2457[]={20805,0},
-dd2458[]={20864,0},
-dd2459[]={21191,0},
-dd2460[]={21242,0},
-dd2461[]={21845,0},
-dd2462[]={21913,0},
-dd2463[]={21986,0},
-dd2464[]={22707,0},
-dd2465[]={22852,0},
-dd2466[]={22868,0},
-dd2467[]={23138,0},
-dd2468[]={23336,0},
-dd2469[]={24274,0},
-dd2470[]={24281,0},
-dd2471[]={24425,0},
-dd2472[]={24493,0},
-dd2473[]={24792,0},
-dd2474[]={24910,0},
-dd2475[]={24840,0},
-dd2476[]={24928,0},
-dd2477[]={25140,0},
-dd2478[]={25540,0},
-dd2479[]={25628,0},
-dd2480[]={25682,0},
-dd2481[]={25942,0},
-dd2482[]={26395,0},
-dd2483[]={26454,0},
-dd2484[]={28379,0},
-dd2485[]={28363,0},
-dd2486[]={28702,0},
-dd2487[]={30631,0},
-dd2488[]={29237,0},
-dd2489[]={29359,0},
-dd2490[]={29809,0},
-dd2491[]={29958,0},
-dd2492[]={30011,0},
-dd2493[]={30237,0},
-dd2494[]={30239,0},
-dd2495[]={30427,0},
-dd2496[]={30452,0},
-dd2497[]={30538,0},
-dd2498[]={30528,0},
-dd2499[]={30924,0},
-dd2500[]={31409,0},
-dd2501[]={31867,0},
-dd2502[]={32091,0},
-dd2503[]={32574,0},
-dd2504[]={33618,0},
-dd2505[]={33775,0},
-dd2506[]={34681,0},
-dd2507[]={35137,0},
-dd2508[]={35206,0},
-dd2509[]={35519,0},
-dd2510[]={35531,0},
-dd2511[]={35565,0},
-dd2512[]={35722,0},
-dd2513[]={36664,0},
-dd2514[]={36978,0},
-dd2515[]={37273,0},
-dd2516[]={37494,0},
-dd2517[]={38524,0},
-dd2518[]={38875,0},
-dd2519[]={38923,0},
-dd2520[]={39698,0},
-dd2521[]={141386,0},
-dd2522[]={141380,0},
-dd2523[]={144341,0},
-dd2524[]={15261,0},
-dd2525[]={16408,0},
-dd2526[]={16441,0},
-dd2527[]={152137,0},
-dd2528[]={154832,0},
-dd2529[]={163539,0},
-dd2530[]={40771,0},
-dd2531[]={40846,0},
-dd2532[]={102,102,0},
-dd2533[]={102,105,0},
-dd2534[]={102,108,0},
-dd2535[]={102,102,105,0},
-dd2536[]={102,102,108,0},
-dd2537[]={383,116,0},
-dd2538[]={115,116,0},
-dd2539[]={1396,1398,0},
-dd2540[]={1396,1381,0},
-dd2541[]={1396,1387,0},
-dd2542[]={1406,1398,0},
-dd2543[]={1396,1389,0},
-dd2544[]={1497,1460,0},
-dd2545[]={1522,1463,0},
-dd2546[]={1506,0},
-dd2547[]={1492,0},
-dd2548[]={1499,0},
-dd2549[]={1500,0},
-dd2550[]={1501,0},
-dd2551[]={1512,0},
-dd2552[]={1514,0},
-dd2553[]={1513,1473,0},
-dd2554[]={1513,1474,0},
-dd2555[]={64329,1473,0},
-dd2556[]={64329,1474,0},
-dd2557[]={1488,1463,0},
-dd2558[]={1488,1464,0},
-dd2559[]={1488,1468,0},
-dd2560[]={1489,1468,0},
-dd2561[]={1490,1468,0},
-dd2562[]={1491,1468,0},
-dd2563[]={1492,1468,0},
-dd2564[]={1493,1468,0},
-dd2565[]={1494,1468,0},
-dd2566[]={1496,1468,0},
-dd2567[]={1497,1468,0},
-dd2568[]={1498,1468,0},
-dd2569[]={1499,1468,0},
-dd2570[]={1500,1468,0},
-dd2571[]={1502,1468,0},
-dd2572[]={1504,1468,0},
-dd2573[]={1505,1468,0},
-dd2574[]={1507,1468,0},
-dd2575[]={1508,1468,0},
-dd2576[]={1510,1468,0},
-dd2577[]={1511,1468,0},
-dd2578[]={1512,1468,0},
-dd2579[]={1513,1468,0},
-dd2580[]={1514,1468,0},
-dd2581[]={1493,1465,0},
-dd2582[]={1489,1471,0},
-dd2583[]={1499,1471,0},
-dd2584[]={1508,1471,0},
-dd2585[]={1488,1500,0},
-dd2586[]={1649,0},
-dd2587[]={1659,0},
-dd2588[]={1662,0},
-dd2589[]={1664,0},
-dd2590[]={1658,0},
-dd2591[]={1663,0},
-dd2592[]={1657,0},
-dd2593[]={1700,0},
-dd2594[]={1702,0},
-dd2595[]={1668,0},
-dd2596[]={1667,0},
-dd2597[]={1670,0},
-dd2598[]={1671,0},
-dd2599[]={1677,0},
-dd2600[]={1676,0},
-dd2601[]={1678,0},
-dd2602[]={1672,0},
-dd2603[]={1688,0},
-dd2604[]={1681,0},
-dd2605[]={1705,0},
-dd2606[]={1711,0},
-dd2607[]={1715,0},
-dd2608[]={1713,0},
-dd2609[]={1722,0},
-dd2610[]={1723,0},
-dd2611[]={1728,0},
-dd2612[]={1729,0},
-dd2613[]={1726,0},
-dd2614[]={1746,0},
-dd2615[]={1747,0},
-dd2616[]={1709,0},
-dd2617[]={1735,0},
-dd2618[]={1734,0},
-dd2619[]={1736,0},
-dd2620[]={1655,0},
-dd2621[]={1739,0},
-dd2622[]={1733,0},
-dd2623[]={1737,0},
-dd2624[]={1744,0},
-dd2625[]={1609,0},
-dd2626[]={1574,1575,0},
-dd2627[]={1574,1749,0},
-dd2628[]={1574,1608,0},
-dd2629[]={1574,1735,0},
-dd2630[]={1574,1734,0},
-dd2631[]={1574,1736,0},
-dd2632[]={1574,1744,0},
-dd2633[]={1574,1609,0},
-dd2634[]={1740,0},
-dd2635[]={1574,1580,0},
-dd2636[]={1574,1581,0},
-dd2637[]={1574,1605,0},
-dd2638[]={1574,1610,0},
-dd2639[]={1576,1580,0},
-dd2640[]={1576,1581,0},
-dd2641[]={1576,1582,0},
-dd2642[]={1576,1605,0},
-dd2643[]={1576,1609,0},
-dd2644[]={1576,1610,0},
-dd2645[]={1578,1580,0},
-dd2646[]={1578,1581,0},
-dd2647[]={1578,1582,0},
-dd2648[]={1578,1605,0},
-dd2649[]={1578,1609,0},
-dd2650[]={1578,1610,0},
-dd2651[]={1579,1580,0},
-dd2652[]={1579,1605,0},
-dd2653[]={1579,1609,0},
-dd2654[]={1579,1610,0},
-dd2655[]={1580,1581,0},
-dd2656[]={1580,1605,0},
-dd2657[]={1581,1580,0},
-dd2658[]={1581,1605,0},
-dd2659[]={1582,1580,0},
-dd2660[]={1582,1581,0},
-dd2661[]={1582,1605,0},
-dd2662[]={1587,1580,0},
-dd2663[]={1587,1581,0},
-dd2664[]={1587,1582,0},
-dd2665[]={1587,1605,0},
-dd2666[]={1589,1581,0},
-dd2667[]={1589,1605,0},
-dd2668[]={1590,1580,0},
-dd2669[]={1590,1581,0},
-dd2670[]={1590,1582,0},
-dd2671[]={1590,1605,0},
-dd2672[]={1591,1581,0},
-dd2673[]={1591,1605,0},
-dd2674[]={1592,1605,0},
-dd2675[]={1593,1580,0},
-dd2676[]={1593,1605,0},
-dd2677[]={1594,1580,0},
-dd2678[]={1594,1605,0},
-dd2679[]={1601,1580,0},
-dd2680[]={1601,1581,0},
-dd2681[]={1601,1582,0},
-dd2682[]={1601,1605,0},
-dd2683[]={1601,1609,0},
-dd2684[]={1601,1610,0},
-dd2685[]={1602,1581,0},
-dd2686[]={1602,1605,0},
-dd2687[]={1602,1609,0},
-dd2688[]={1602,1610,0},
-dd2689[]={1603,1575,0},
-dd2690[]={1603,1580,0},
-dd2691[]={1603,1581,0},
-dd2692[]={1603,1582,0},
-dd2693[]={1603,1604,0},
-dd2694[]={1603,1605,0},
-dd2695[]={1603,1609,0},
-dd2696[]={1603,1610,0},
-dd2697[]={1604,1580,0},
-dd2698[]={1604,1581,0},
-dd2699[]={1604,1582,0},
-dd2700[]={1604,1605,0},
-dd2701[]={1604,1609,0},
-dd2702[]={1604,1610,0},
-dd2703[]={1605,1580,0},
-dd2704[]={1605,1581,0},
-dd2705[]={1605,1582,0},
-dd2706[]={1605,1605,0},
-dd2707[]={1605,1609,0},
-dd2708[]={1605,1610,0},
-dd2709[]={1606,1580,0},
-dd2710[]={1606,1581,0},
-dd2711[]={1606,1582,0},
-dd2712[]={1606,1605,0},
-dd2713[]={1606,1609,0},
-dd2714[]={1606,1610,0},
-dd2715[]={1607,1580,0},
-dd2716[]={1607,1605,0},
-dd2717[]={1607,1609,0},
-dd2718[]={1607,1610,0},
-dd2719[]={1610,1580,0},
-dd2720[]={1610,1581,0},
-dd2721[]={1610,1582,0},
-dd2722[]={1610,1605,0},
-dd2723[]={1610,1609,0},
-dd2724[]={1610,1610,0},
-dd2725[]={1584,1648,0},
-dd2726[]={1585,1648,0},
-dd2727[]={1609,1648,0},
-dd2728[]={32,1612,1617,0},
-dd2729[]={32,1613,1617,0},
-dd2730[]={32,1614,1617,0},
-dd2731[]={32,1615,1617,0},
-dd2732[]={32,1616,1617,0},
-dd2733[]={32,1617,1648,0},
-dd2734[]={1574,1585,0},
-dd2735[]={1574,1586,0},
-dd2736[]={1574,1606,0},
-dd2737[]={1576,1585,0},
-dd2738[]={1576,1586,0},
-dd2739[]={1576,1606,0},
-dd2740[]={1578,1585,0},
-dd2741[]={1578,1586,0},
-dd2742[]={1578,1606,0},
-dd2743[]={1579,1585,0},
-dd2744[]={1579,1586,0},
-dd2745[]={1579,1606,0},
-dd2746[]={1605,1575,0},
-dd2747[]={1606,1585,0},
-dd2748[]={1606,1586,0},
-dd2749[]={1606,1606,0},
-dd2750[]={1610,1585,0},
-dd2751[]={1610,1586,0},
-dd2752[]={1610,1606,0},
-dd2753[]={1574,1582,0},
-dd2754[]={1574,1607,0},
-dd2755[]={1576,1607,0},
-dd2756[]={1578,1607,0},
-dd2757[]={1589,1582,0},
-dd2758[]={1604,1607,0},
-dd2759[]={1606,1607,0},
-dd2760[]={1607,1648,0},
-dd2761[]={1610,1607,0},
-dd2762[]={1579,1607,0},
-dd2763[]={1587,1607,0},
-dd2764[]={1588,1605,0},
-dd2765[]={1588,1607,0},
-dd2766[]={1600,1614,1617,0},
-dd2767[]={1600,1615,1617,0},
-dd2768[]={1600,1616,1617,0},
-dd2769[]={1591,1609,0},
-dd2770[]={1591,1610,0},
-dd2771[]={1593,1609,0},
-dd2772[]={1593,1610,0},
-dd2773[]={1594,1609,0},
-dd2774[]={1594,1610,0},
-dd2775[]={1587,1609,0},
-dd2776[]={1587,1610,0},
-dd2777[]={1588,1609,0},
-dd2778[]={1588,1610,0},
-dd2779[]={1581,1609,0},
-dd2780[]={1581,1610,0},
-dd2781[]={1580,1609,0},
-dd2782[]={1580,1610,0},
-dd2783[]={1582,1609,0},
-dd2784[]={1582,1610,0},
-dd2785[]={1589,1609,0},
-dd2786[]={1589,1610,0},
-dd2787[]={1590,1609,0},
-dd2788[]={1590,1610,0},
-dd2789[]={1588,1580,0},
-dd2790[]={1588,1581,0},
-dd2791[]={1588,1582,0},
-dd2792[]={1588,1585,0},
-dd2793[]={1587,1585,0},
-dd2794[]={1589,1585,0},
-dd2795[]={1590,1585,0},
-dd2796[]={1575,1611,0},
-dd2797[]={1578,1580,1605,0},
-dd2798[]={1578,1581,1580,0},
-dd2799[]={1578,1581,1605,0},
-dd2800[]={1578,1582,1605,0},
-dd2801[]={1578,1605,1580,0},
-dd2802[]={1578,1605,1581,0},
-dd2803[]={1578,1605,1582,0},
-dd2804[]={1580,1605,1581,0},
-dd2805[]={1581,1605,1610,0},
-dd2806[]={1581,1605,1609,0},
-dd2807[]={1587,1581,1580,0},
-dd2808[]={1587,1580,1581,0},
-dd2809[]={1587,1580,1609,0},
-dd2810[]={1587,1605,1581,0},
-dd2811[]={1587,1605,1580,0},
-dd2812[]={1587,1605,1605,0},
-dd2813[]={1589,1581,1581,0},
-dd2814[]={1589,1605,1605,0},
-dd2815[]={1588,1581,1605,0},
-dd2816[]={1588,1580,1610,0},
-dd2817[]={1588,1605,1582,0},
-dd2818[]={1588,1605,1605,0},
-dd2819[]={1590,1581,1609,0},
-dd2820[]={1590,1582,1605,0},
-dd2821[]={1591,1605,1581,0},
-dd2822[]={1591,1605,1605,0},
-dd2823[]={1591,1605,1610,0},
-dd2824[]={1593,1580,1605,0},
-dd2825[]={1593,1605,1605,0},
-dd2826[]={1593,1605,1609,0},
-dd2827[]={1594,1605,1605,0},
-dd2828[]={1594,1605,1610,0},
-dd2829[]={1594,1605,1609,0},
-dd2830[]={1601,1582,1605,0},
-dd2831[]={1602,1605,1581,0},
-dd2832[]={1602,1605,1605,0},
-dd2833[]={1604,1581,1605,0},
-dd2834[]={1604,1581,1610,0},
-dd2835[]={1604,1581,1609,0},
-dd2836[]={1604,1580,1580,0},
-dd2837[]={1604,1582,1605,0},
-dd2838[]={1604,1605,1581,0},
-dd2839[]={1605,1581,1580,0},
-dd2840[]={1605,1581,1605,0},
-dd2841[]={1605,1581,1610,0},
-dd2842[]={1605,1580,1581,0},
-dd2843[]={1605,1580,1605,0},
-dd2844[]={1605,1582,1580,0},
-dd2845[]={1605,1582,1605,0},
-dd2846[]={1605,1580,1582,0},
-dd2847[]={1607,1605,1580,0},
-dd2848[]={1607,1605,1605,0},
-dd2849[]={1606,1581,1605,0},
-dd2850[]={1606,1581,1609,0},
-dd2851[]={1606,1580,1605,0},
-dd2852[]={1606,1580,1609,0},
-dd2853[]={1606,1605,1610,0},
-dd2854[]={1606,1605,1609,0},
-dd2855[]={1610,1605,1605,0},
-dd2856[]={1576,1582,1610,0},
-dd2857[]={1578,1580,1610,0},
-dd2858[]={1578,1580,1609,0},
-dd2859[]={1578,1582,1610,0},
-dd2860[]={1578,1582,1609,0},
-dd2861[]={1578,1605,1610,0},
-dd2862[]={1578,1605,1609,0},
-dd2863[]={1580,1605,1610,0},
-dd2864[]={1580,1581,1609,0},
-dd2865[]={1580,1605,1609,0},
-dd2866[]={1587,1582,1609,0},
-dd2867[]={1589,1581,1610,0},
-dd2868[]={1588,1581,1610,0},
-dd2869[]={1590,1581,1610,0},
-dd2870[]={1604,1580,1610,0},
-dd2871[]={1604,1605,1610,0},
-dd2872[]={1610,1581,1610,0},
-dd2873[]={1610,1580,1610,0},
-dd2874[]={1610,1605,1610,0},
-dd2875[]={1605,1605,1610,0},
-dd2876[]={1602,1605,1610,0},
-dd2877[]={1606,1581,1610,0},
-dd2878[]={1593,1605,1610,0},
-dd2879[]={1603,1605,1610,0},
-dd2880[]={1606,1580,1581,0},
-dd2881[]={1605,1582,1610,0},
-dd2882[]={1604,1580,1605,0},
-dd2883[]={1603,1605,1605,0},
-dd2884[]={1580,1581,1610,0},
-dd2885[]={1581,1580,1610,0},
-dd2886[]={1605,1580,1610,0},
-dd2887[]={1601,1605,1610,0},
-dd2888[]={1576,1581,1610,0},
-dd2889[]={1587,1582,1610,0},
-dd2890[]={1606,1580,1610,0},
-dd2891[]={1589,1604,1746,0},
-dd2892[]={1602,1604,1746,0},
-dd2893[]={1575,1604,1604,1607,0},
-dd2894[]={1575,1603,1576,1585,0},
-dd2895[]={1605,1581,1605,1583,0},
-dd2896[]={1589,1604,1593,1605,0},
-dd2897[]={1585,1587,1608,1604,0},
-dd2898[]={1593,1604,1610,1607,0},
-dd2899[]={1608,1587,1604,1605,0},
-dd2900[]={1589,1604,1609,0},
-dd2901[]={1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605,0},
-dd2902[]={1580,1604,32,1580,1604,1575,1604,1607,0},
-dd2903[]={1585,1740,1575,1604,0},
-dd2904[]={44,0},
-dd2905[]={12289,0},
-dd2906[]={12290,0},
-dd2907[]={58,0},
-dd2908[]={33,0},
-dd2909[]={63,0},
-dd2910[]={12310,0},
-dd2911[]={12311,0},
-dd2912[]={8230,0},
-dd2913[]={8229,0},
-dd2914[]={8212,0},
-dd2915[]={8211,0},
-dd2916[]={95,0},
-dd2917[]={123,0},
-dd2918[]={125,0},
-dd2919[]={12308,0},
-dd2920[]={12309,0},
-dd2921[]={12304,0},
-dd2922[]={12305,0},
-dd2923[]={12298,0},
-dd2924[]={12299,0},
-dd2925[]={12300,0},
-dd2926[]={12301,0},
-dd2927[]={12302,0},
-dd2928[]={12303,0},
-dd2929[]={91,0},
-dd2930[]={93,0},
-dd2931[]={8254,0},
-dd2932[]={35,0},
-dd2933[]={38,0},
-dd2934[]={42,0},
-dd2935[]={45,0},
-dd2936[]={60,0},
-dd2937[]={62,0},
-dd2938[]={92,0},
-dd2939[]={36,0},
-dd2940[]={37,0},
-dd2941[]={64,0},
-dd2942[]={32,1611,0},
-dd2943[]={1600,1611,0},
-dd2944[]={32,1612,0},
-dd2945[]={32,1613,0},
-dd2946[]={32,1614,0},
-dd2947[]={1600,1614,0},
-dd2948[]={32,1615,0},
-dd2949[]={1600,1615,0},
-dd2950[]={32,1616,0},
-dd2951[]={1600,1616,0},
-dd2952[]={32,1617,0},
-dd2953[]={1600,1617,0},
-dd2954[]={32,1618,0},
-dd2955[]={1600,1618,0},
-dd2956[]={1569,0},
-dd2957[]={1570,0},
-dd2958[]={1571,0},
-dd2959[]={1572,0},
-dd2960[]={1573,0},
-dd2961[]={1574,0},
-dd2962[]={1575,0},
-dd2963[]={1576,0},
-dd2964[]={1577,0},
-dd2965[]={1578,0},
-dd2966[]={1579,0},
-dd2967[]={1580,0},
-dd2968[]={1581,0},
-dd2969[]={1582,0},
-dd2970[]={1583,0},
-dd2971[]={1584,0},
-dd2972[]={1585,0},
-dd2973[]={1586,0},
-dd2974[]={1587,0},
-dd2975[]={1588,0},
-dd2976[]={1589,0},
-dd2977[]={1590,0},
-dd2978[]={1591,0},
-dd2979[]={1592,0},
-dd2980[]={1593,0},
-dd2981[]={1594,0},
-dd2982[]={1601,0},
-dd2983[]={1602,0},
-dd2984[]={1603,0},
-dd2985[]={1604,0},
-dd2986[]={1605,0},
-dd2987[]={1606,0},
-dd2988[]={1607,0},
-dd2989[]={1608,0},
-dd2990[]={1610,0},
-dd2991[]={1604,1570,0},
-dd2992[]={1604,1571,0},
-dd2993[]={1604,1573,0},
-dd2994[]={1604,1575,0},
-dd2995[]={34,0},
-dd2996[]={39,0},
-dd2997[]={47,0},
-dd2998[]={94,0},
-dd2999[]={124,0},
-dd3000[]={126,0},
-dd3001[]={10629,0},
-dd3002[]={10630,0},
-dd3003[]={12539,0},
-dd3004[]={12449,0},
-dd3005[]={12451,0},
-dd3006[]={12453,0},
-dd3007[]={12455,0},
-dd3008[]={12457,0},
-dd3009[]={12515,0},
-dd3010[]={12517,0},
-dd3011[]={12519,0},
-dd3012[]={12483,0},
-dd3013[]={12540,0},
-dd3014[]={12531,0},
-dd3015[]={12441,0},
-dd3016[]={12442,0},
-dd3017[]={12644,0},
-dd3018[]={12593,0},
-dd3019[]={12594,0},
-dd3020[]={12595,0},
-dd3021[]={12596,0},
-dd3022[]={12597,0},
-dd3023[]={12598,0},
-dd3024[]={12599,0},
-dd3025[]={12600,0},
-dd3026[]={12601,0},
-dd3027[]={12602,0},
-dd3028[]={12603,0},
-dd3029[]={12604,0},
-dd3030[]={12605,0},
-dd3031[]={12606,0},
-dd3032[]={12607,0},
-dd3033[]={12608,0},
-dd3034[]={12609,0},
-dd3035[]={12610,0},
-dd3036[]={12611,0},
-dd3037[]={12612,0},
-dd3038[]={12613,0},
-dd3039[]={12614,0},
-dd3040[]={12615,0},
-dd3041[]={12616,0},
-dd3042[]={12617,0},
-dd3043[]={12618,0},
-dd3044[]={12619,0},
-dd3045[]={12620,0},
-dd3046[]={12621,0},
-dd3047[]={12622,0},
-dd3048[]={12623,0},
-dd3049[]={12624,0},
-dd3050[]={12625,0},
-dd3051[]={12626,0},
-dd3052[]={12627,0},
-dd3053[]={12628,0},
-dd3054[]={12629,0},
-dd3055[]={12630,0},
-dd3056[]={12631,0},
-dd3057[]={12632,0},
-dd3058[]={12633,0},
-dd3059[]={12634,0},
-dd3060[]={12635,0},
-dd3061[]={12636,0},
-dd3062[]={12637,0},
-dd3063[]={12638,0},
-dd3064[]={12639,0},
-dd3065[]={12640,0},
-dd3066[]={12641,0},
-dd3067[]={12642,0},
-dd3068[]={12643,0},
-dd3069[]={162,0},
-dd3070[]={163,0},
-dd3071[]={172,0},
-dd3072[]={175,0},
-dd3073[]={166,0},
-dd3074[]={165,0},
-dd3075[]={8361,0},
-dd3076[]={9474,0},
-dd3077[]={8592,0},
-dd3078[]={8593,0},
-dd3079[]={8594,0},
-dd3080[]={8595,0},
-dd3081[]={9632,0},
-dd3082[]={9675,0},
-dd3083[]={119127,119141,0},
-dd3084[]={119128,119141,0},
-dd3085[]={119135,119150,0},
-dd3086[]={119135,119151,0},
-dd3087[]={119135,119152,0},
-dd3088[]={119135,119153,0},
-dd3089[]={119135,119154,0},
-dd3090[]={119225,119141,0},
-dd3091[]={119226,119141,0},
-dd3092[]={119227,119150,0},
-dd3093[]={119228,119150,0},
-dd3094[]={119227,119151,0},
-dd3095[]={119228,119151,0},
-dd3096[]={305,0},
-dd3097[]={567,0},
-dd3098[]={913,0},
-dd3099[]={914,0},
-dd3100[]={916,0},
-dd3101[]={917,0},
-dd3102[]={918,0},
-dd3103[]={919,0},
-dd3104[]={921,0},
-dd3105[]={922,0},
-dd3106[]={923,0},
-dd3107[]={924,0},
-dd3108[]={925,0},
-dd3109[]={926,0},
-dd3110[]={927,0},
-dd3111[]={929,0},
-dd3112[]={1012,0},
-dd3113[]={932,0},
-dd3114[]={934,0},
-dd3115[]={935,0},
-dd3116[]={936,0},
-dd3117[]={8711,0},
-dd3118[]={945,0},
-dd3119[]={950,0},
-dd3120[]={951,0},
-dd3121[]={955,0},
-dd3122[]={957,0},
-dd3123[]={958,0},
-dd3124[]={959,0},
-dd3125[]={963,0},
-dd3126[]={964,0},
-dd3127[]={965,0},
-dd3128[]={968,0},
-dd3129[]={969,0},
-dd3130[]={8706,0},
-dd3131[]={1013,0},
-dd3132[]={977,0},
-dd3133[]={1008,0},
-dd3134[]={981,0},
-dd3135[]={1009,0},
-dd3136[]={982,0},
-dd3137[]={988,0},
-dd3138[]={989,0},
-dd3139[]={20029,0},
-dd3140[]={20024,0},
-dd3141[]={20033,0},
-dd3142[]={131362,0},
-dd3143[]={20320,0},
-dd3144[]={20411,0},
-dd3145[]={20482,0},
-dd3146[]={20602,0},
-dd3147[]={20633,0},
-dd3148[]={20687,0},
-dd3149[]={13470,0},
-dd3150[]={132666,0},
-dd3151[]={20820,0},
-dd3152[]={20836,0},
-dd3153[]={20855,0},
-dd3154[]={132380,0},
-dd3155[]={13497,0},
-dd3156[]={20839,0},
-dd3157[]={20877,0},
-dd3158[]={132427,0},
-dd3159[]={20887,0},
-dd3160[]={20900,0},
-dd3161[]={20172,0},
-dd3162[]={20908,0},
-dd3163[]={168415,0},
-dd3164[]={20995,0},
-dd3165[]={13535,0},
-dd3166[]={21051,0},
-dd3167[]={21062,0},
-dd3168[]={21106,0},
-dd3169[]={21111,0},
-dd3170[]={13589,0},
-dd3171[]={21253,0},
-dd3172[]={21254,0},
-dd3173[]={21321,0},
-dd3174[]={21338,0},
-dd3175[]={21363,0},
-dd3176[]={21373,0},
-dd3177[]={21375,0},
-dd3178[]={133676,0},
-dd3179[]={28784,0},
-dd3180[]={21450,0},
-dd3181[]={21471,0},
-dd3182[]={133987,0},
-dd3183[]={21483,0},
-dd3184[]={21489,0},
-dd3185[]={21510,0},
-dd3186[]={21662,0},
-dd3187[]={21560,0},
-dd3188[]={21576,0},
-dd3189[]={21608,0},
-dd3190[]={21666,0},
-dd3191[]={21750,0},
-dd3192[]={21776,0},
-dd3193[]={21843,0},
-dd3194[]={21859,0},
-dd3195[]={21892,0},
-dd3196[]={21931,0},
-dd3197[]={21939,0},
-dd3198[]={21954,0},
-dd3199[]={22294,0},
-dd3200[]={22295,0},
-dd3201[]={22097,0},
-dd3202[]={22132,0},
-dd3203[]={22766,0},
-dd3204[]={22478,0},
-dd3205[]={22516,0},
-dd3206[]={22541,0},
-dd3207[]={22411,0},
-dd3208[]={22578,0},
-dd3209[]={22577,0},
-dd3210[]={22700,0},
-dd3211[]={136420,0},
-dd3212[]={22770,0},
-dd3213[]={22775,0},
-dd3214[]={22790,0},
-dd3215[]={22810,0},
-dd3216[]={22818,0},
-dd3217[]={22882,0},
-dd3218[]={136872,0},
-dd3219[]={136938,0},
-dd3220[]={23020,0},
-dd3221[]={23067,0},
-dd3222[]={23079,0},
-dd3223[]={23000,0},
-dd3224[]={23142,0},
-dd3225[]={14062,0},
-dd3226[]={14076,0},
-dd3227[]={23304,0},
-dd3228[]={23358,0},
-dd3229[]={137672,0},
-dd3230[]={23491,0},
-dd3231[]={23512,0},
-dd3232[]={23539,0},
-dd3233[]={138008,0},
-dd3234[]={23551,0},
-dd3235[]={23558,0},
-dd3236[]={24403,0},
-dd3237[]={14209,0},
-dd3238[]={23648,0},
-dd3239[]={23744,0},
-dd3240[]={23693,0},
-dd3241[]={138724,0},
-dd3242[]={23875,0},
-dd3243[]={138726,0},
-dd3244[]={23918,0},
-dd3245[]={23915,0},
-dd3246[]={23932,0},
-dd3247[]={24033,0},
-dd3248[]={24034,0},
-dd3249[]={14383,0},
-dd3250[]={24061,0},
-dd3251[]={24104,0},
-dd3252[]={24125,0},
-dd3253[]={24169,0},
-dd3254[]={14434,0},
-dd3255[]={139651,0},
-dd3256[]={14460,0},
-dd3257[]={24240,0},
-dd3258[]={24243,0},
-dd3259[]={24246,0},
-dd3260[]={172946,0},
-dd3261[]={140081,0},
-dd3262[]={33281,0},
-dd3263[]={24354,0},
-dd3264[]={14535,0},
-dd3265[]={144056,0},
-dd3266[]={156122,0},
-dd3267[]={24418,0},
-dd3268[]={24427,0},
-dd3269[]={14563,0},
-dd3270[]={24474,0},
-dd3271[]={24525,0},
-dd3272[]={24535,0},
-dd3273[]={24569,0},
-dd3274[]={24705,0},
-dd3275[]={14650,0},
-dd3276[]={14620,0},
-dd3277[]={141012,0},
-dd3278[]={24775,0},
-dd3279[]={24904,0},
-dd3280[]={24908,0},
-dd3281[]={24954,0},
-dd3282[]={25010,0},
-dd3283[]={24996,0},
-dd3284[]={25007,0},
-dd3285[]={25054,0},
-dd3286[]={25104,0},
-dd3287[]={25115,0},
-dd3288[]={25181,0},
-dd3289[]={25265,0},
-dd3290[]={25300,0},
-dd3291[]={25424,0},
-dd3292[]={142092,0},
-dd3293[]={25405,0},
-dd3294[]={25340,0},
-dd3295[]={25448,0},
-dd3296[]={25475,0},
-dd3297[]={25572,0},
-dd3298[]={142321,0},
-dd3299[]={25634,0},
-dd3300[]={25541,0},
-dd3301[]={25513,0},
-dd3302[]={14894,0},
-dd3303[]={25705,0},
-dd3304[]={25726,0},
-dd3305[]={25757,0},
-dd3306[]={25719,0},
-dd3307[]={14956,0},
-dd3308[]={25964,0},
-dd3309[]={143370,0},
-dd3310[]={26083,0},
-dd3311[]={26360,0},
-dd3312[]={26185,0},
-dd3313[]={15129,0},
-dd3314[]={15112,0},
-dd3315[]={15076,0},
-dd3316[]={20882,0},
-dd3317[]={20885,0},
-dd3318[]={26368,0},
-dd3319[]={26268,0},
-dd3320[]={32941,0},
-dd3321[]={17369,0},
-dd3322[]={26401,0},
-dd3323[]={26462,0},
-dd3324[]={26451,0},
-dd3325[]={144323,0},
-dd3326[]={15177,0},
-dd3327[]={26618,0},
-dd3328[]={26501,0},
-dd3329[]={26706,0},
-dd3330[]={144493,0},
-dd3331[]={26766,0},
-dd3332[]={26655,0},
-dd3333[]={26900,0},
-dd3334[]={26946,0},
-dd3335[]={27043,0},
-dd3336[]={27114,0},
-dd3337[]={27304,0},
-dd3338[]={145059,0},
-dd3339[]={27355,0},
-dd3340[]={15384,0},
-dd3341[]={27425,0},
-dd3342[]={145575,0},
-dd3343[]={27476,0},
-dd3344[]={15438,0},
-dd3345[]={27506,0},
-dd3346[]={27551,0},
-dd3347[]={27579,0},
-dd3348[]={146061,0},
-dd3349[]={138507,0},
-dd3350[]={146170,0},
-dd3351[]={27726,0},
-dd3352[]={146620,0},
-dd3353[]={27839,0},
-dd3354[]={27853,0},
-dd3355[]={27751,0},
-dd3356[]={27926,0},
-dd3357[]={27966,0},
-dd3358[]={28009,0},
-dd3359[]={28024,0},
-dd3360[]={28037,0},
-dd3361[]={146718,0},
-dd3362[]={27956,0},
-dd3363[]={28207,0},
-dd3364[]={28270,0},
-dd3365[]={15667,0},
-dd3366[]={28359,0},
-dd3367[]={147153,0},
-dd3368[]={28153,0},
-dd3369[]={28526,0},
-dd3370[]={147294,0},
-dd3371[]={147342,0},
-dd3372[]={28614,0},
-dd3373[]={28729,0},
-dd3374[]={28699,0},
-dd3375[]={15766,0},
-dd3376[]={28746,0},
-dd3377[]={28797,0},
-dd3378[]={28791,0},
-dd3379[]={28845,0},
-dd3380[]={132389,0},
-dd3381[]={28997,0},
-dd3382[]={148067,0},
-dd3383[]={29084,0},
-dd3384[]={148395,0},
-dd3385[]={29224,0},
-dd3386[]={29264,0},
-dd3387[]={149000,0},
-dd3388[]={29312,0},
-dd3389[]={29333,0},
-dd3390[]={149301,0},
-dd3391[]={149524,0},
-dd3392[]={29562,0},
-dd3393[]={29579,0},
-dd3394[]={16044,0},
-dd3395[]={29605,0},
-dd3396[]={16056,0},
-dd3397[]={29767,0},
-dd3398[]={29788,0},
-dd3399[]={29829,0},
-dd3400[]={29898,0},
-dd3401[]={16155,0},
-dd3402[]={29988,0},
-dd3403[]={150582,0},
-dd3404[]={30014,0},
-dd3405[]={150674,0},
-dd3406[]={139679,0},
-dd3407[]={30224,0},
-dd3408[]={151457,0},
-dd3409[]={151480,0},
-dd3410[]={151620,0},
-dd3411[]={16380,0},
-dd3412[]={16392,0},
-dd3413[]={151795,0},
-dd3414[]={151794,0},
-dd3415[]={151833,0},
-dd3416[]={151859,0},
-dd3417[]={30494,0},
-dd3418[]={30495,0},
-dd3419[]={30603,0},
-dd3420[]={16454,0},
-dd3421[]={16534,0},
-dd3422[]={152605,0},
-dd3423[]={30798,0},
-dd3424[]={16611,0},
-dd3425[]={153126,0},
-dd3426[]={153242,0},
-dd3427[]={153285,0},
-dd3428[]={31211,0},
-dd3429[]={16687,0},
-dd3430[]={31306,0},
-dd3431[]={31311,0},
-dd3432[]={153980,0},
-dd3433[]={154279,0},
-dd3434[]={31470,0},
-dd3435[]={16898,0},
-dd3436[]={154539,0},
-dd3437[]={31686,0},
-dd3438[]={31689,0},
-dd3439[]={16935,0},
-dd3440[]={154752,0},
-dd3441[]={31954,0},
-dd3442[]={17056,0},
-dd3443[]={31976,0},
-dd3444[]={31971,0},
-dd3445[]={32000,0},
-dd3446[]={155526,0},
-dd3447[]={32099,0},
-dd3448[]={17153,0},
-dd3449[]={32199,0},
-dd3450[]={32258,0},
-dd3451[]={32325,0},
-dd3452[]={17204,0},
-dd3453[]={156200,0},
-dd3454[]={156231,0},
-dd3455[]={17241,0},
-dd3456[]={156377,0},
-dd3457[]={32634,0},
-dd3458[]={156478,0},
-dd3459[]={32661,0},
-dd3460[]={32762,0},
-dd3461[]={156890,0},
-dd3462[]={156963,0},
-dd3463[]={32864,0},
-dd3464[]={157096,0},
-dd3465[]={32880,0},
-dd3466[]={144223,0},
-dd3467[]={17365,0},
-dd3468[]={32946,0},
-dd3469[]={33027,0},
-dd3470[]={17419,0},
-dd3471[]={33086,0},
-dd3472[]={23221,0},
-dd3473[]={157607,0},
-dd3474[]={157621,0},
-dd3475[]={144275,0},
-dd3476[]={144284,0},
-dd3477[]={33284,0},
-dd3478[]={36766,0},
-dd3479[]={17515,0},
-dd3480[]={33425,0},
-dd3481[]={33419,0},
-dd3482[]={33437,0},
-dd3483[]={21171,0},
-dd3484[]={33457,0},
-dd3485[]={33459,0},
-dd3486[]={33469,0},
-dd3487[]={33510,0},
-dd3488[]={158524,0},
-dd3489[]={33565,0},
-dd3490[]={33635,0},
-dd3491[]={33709,0},
-dd3492[]={33571,0},
-dd3493[]={33725,0},
-dd3494[]={33767,0},
-dd3495[]={33619,0},
-dd3496[]={33738,0},
-dd3497[]={33740,0},
-dd3498[]={33756,0},
-dd3499[]={158774,0},
-dd3500[]={159083,0},
-dd3501[]={158933,0},
-dd3502[]={17707,0},
-dd3503[]={34033,0},
-dd3504[]={34035,0},
-dd3505[]={34070,0},
-dd3506[]={160714,0},
-dd3507[]={34148,0},
-dd3508[]={159532,0},
-dd3509[]={17757,0},
-dd3510[]={17761,0},
-dd3511[]={159665,0},
-dd3512[]={159954,0},
-dd3513[]={17771,0},
-dd3514[]={34384,0},
-dd3515[]={34407,0},
-dd3516[]={34409,0},
-dd3517[]={34473,0},
-dd3518[]={34440,0},
-dd3519[]={34574,0},
-dd3520[]={34530,0},
-dd3521[]={34600,0},
-dd3522[]={34667,0},
-dd3523[]={34694,0},
-dd3524[]={17879,0},
-dd3525[]={34785,0},
-dd3526[]={34817,0},
-dd3527[]={17913,0},
-dd3528[]={34912,0},
-dd3529[]={161383,0},
-dd3530[]={35031,0},
-dd3531[]={35038,0},
-dd3532[]={17973,0},
-dd3533[]={35066,0},
-dd3534[]={13499,0},
-dd3535[]={161966,0},
-dd3536[]={162150,0},
-dd3537[]={18110,0},
-dd3538[]={18119,0},
-dd3539[]={35488,0},
-dd3540[]={162984,0},
-dd3541[]={36011,0},
-dd3542[]={36033,0},
-dd3543[]={36123,0},
-dd3544[]={36215,0},
-dd3545[]={163631,0},
-dd3546[]={133124,0},
-dd3547[]={36299,0},
-dd3548[]={36284,0},
-dd3549[]={36336,0},
-dd3550[]={133342,0},
-dd3551[]={36564,0},
-dd3552[]={165330,0},
-dd3553[]={165357,0},
-dd3554[]={37012,0},
-dd3555[]={37105,0},
-dd3556[]={37137,0},
-dd3557[]={165678,0},
-dd3558[]={37147,0},
-dd3559[]={37432,0},
-dd3560[]={37591,0},
-dd3561[]={37592,0},
-dd3562[]={37500,0},
-dd3563[]={37881,0},
-dd3564[]={37909,0},
-dd3565[]={166906,0},
-dd3566[]={38283,0},
-dd3567[]={18837,0},
-dd3568[]={38327,0},
-dd3569[]={167287,0},
-dd3570[]={18918,0},
-dd3571[]={38595,0},
-dd3572[]={23986,0},
-dd3573[]={38691,0},
-dd3574[]={168261,0},
-dd3575[]={168474,0},
-dd3576[]={19054,0},
-dd3577[]={19062,0},
-dd3578[]={38880,0},
-dd3579[]={168970,0},
-dd3580[]={19122,0},
-dd3581[]={169110,0},
-dd3582[]={38953,0},
-dd3583[]={169398,0},
-dd3584[]={39138,0},
-dd3585[]={19251,0},
-dd3586[]={39209,0},
-dd3587[]={39335,0},
-dd3588[]={39362,0},
-dd3589[]={39422,0},
-dd3590[]={19406,0},
-dd3591[]={170800,0},
-dd3592[]={40000,0},
-dd3593[]={40189,0},
-dd3594[]={19662,0},
-dd3595[]={19693,0},
-dd3596[]={40295,0},
-dd3597[]={172238,0},
-dd3598[]={19704,0},
-dd3599[]={172293,0},
-dd3600[]={172558,0},
-dd3601[]={172689,0},
-dd3602[]={19798,0},
-dd3603[]={40702,0},
-dd3604[]={40709,0},
-dd3605[]={40719,0},
-dd3606[]={40726,0},
-dd3607[]={173568,0},
-dd3608[]={8814,0},
-dd3609[]={8800,0},
-dd3610[]={8815,0},
-dd3611[]={192,193,194,195,196,197,256,258,260,461,512,514,550,7680,7840,7842,0},
-dd3612[]={7682,7684,7686,0},
-dd3613[]={199,262,264,266,268,0},
-dd3614[]={270,7690,7692,7694,7696,7698,0},
-dd3615[]={200,201,202,203,274,276,278,280,282,516,518,552,7704,7706,7864,7866,7868,0},
-dd3616[]={7710,0},
-dd3617[]={284,286,288,290,486,500,7712,0},
-dd3618[]={292,542,7714,7716,7718,7720,7722,0},
-dd3619[]={204,205,206,207,296,298,300,302,304,463,520,522,7724,7880,7882,0},
-dd3620[]={308,0},
-dd3621[]={310,488,7728,7730,7732,0},
-dd3622[]={313,315,317,7734,7738,7740,0},
-dd3623[]={7742,7744,7746,0},
-dd3624[]={209,323,325,327,504,7748,7750,7752,7754,0},
-dd3625[]={210,211,212,213,214,332,334,336,416,465,490,524,526,558,7884,7886,0},
-dd3626[]={7764,7766,0},
-dd3627[]={340,342,344,528,530,7768,7770,7774,0},
-dd3628[]={346,348,350,352,536,7776,7778,0},
-dd3629[]={354,356,538,7786,7788,7790,7792,0},
-dd3630[]={217,218,219,220,360,362,364,366,368,370,431,467,532,534,7794,7796,7798,7908,7910,0},
-dd3631[]={7804,7806,0},
-dd3632[]={372,7808,7810,7812,7814,7816,0},
-dd3633[]={7818,7820,0},
-dd3634[]={221,374,376,562,7822,7922,7924,7926,7928,0},
-dd3635[]={377,379,381,7824,7826,7828,0},
-dd3636[]={224,225,226,227,228,229,257,259,261,462,513,515,551,7681,7841,7843,0},
-dd3637[]={7683,7685,7687,0},
-dd3638[]={231,263,265,267,269,0},
-dd3639[]={271,7691,7693,7695,7697,7699,0},
-dd3640[]={232,233,234,235,275,277,279,281,283,517,519,553,7705,7707,7865,7867,7869,0},
-dd3641[]={7711,0},
-dd3642[]={285,287,289,291,487,501,7713,0},
-dd3643[]={293,543,7715,7717,7719,7721,7723,7830,0},
-dd3644[]={236,237,238,239,297,299,301,303,464,521,523,7725,7881,7883,0},
-dd3645[]={309,496,0},
-dd3646[]={311,489,7729,7731,7733,0},
-dd3647[]={314,316,318,7735,7739,7741,0},
-dd3648[]={7743,7745,7747,0},
-dd3649[]={241,324,326,328,505,7749,7751,7753,7755,0},
-dd3650[]={242,243,244,245,246,333,335,337,417,466,491,525,527,559,7885,7887,0},
-dd3651[]={7765,7767,0},
-dd3652[]={341,343,345,529,531,7769,7771,7775,0},
-dd3653[]={347,349,351,353,537,7777,7779,0},
-dd3654[]={355,357,539,7787,7789,7791,7793,7831,0},
-dd3655[]={249,250,251,252,361,363,365,367,369,371,432,468,533,535,7795,7797,7799,7909,7911,0},
-dd3656[]={7805,7807,0},
-dd3657[]={373,7809,7811,7813,7815,7817,7832,0},
-dd3658[]={7819,7821,0},
-dd3659[]={253,255,375,563,7823,7833,7923,7925,7927,7929,0},
-dd3660[]={378,380,382,7825,7827,7829,0},
-dd3661[]={901,8129,8173,0},
-dd3662[]={7844,7846,7848,7850,0},
-dd3663[]={478,0},
-dd3664[]={506,0},
-dd3665[]={482,508,0},
-dd3666[]={7688,0},
-dd3667[]={7870,7872,7874,7876,0},
-dd3668[]={7726,0},
-dd3669[]={7888,7890,7892,7894,0},
-dd3670[]={556,7756,7758,0},
-dd3671[]={554,0},
-dd3672[]={510,0},
-dd3673[]={469,471,473,475,0},
-dd3674[]={7845,7847,7849,7851,0},
-dd3675[]={479,0},
-dd3676[]={507,0},
-dd3677[]={483,509,0},
-dd3678[]={7689,0},
-dd3679[]={7871,7873,7875,7877,0},
-dd3680[]={7727,0},
-dd3681[]={7889,7891,7893,7895,0},
-dd3682[]={557,7757,7759,0},
-dd3683[]={555,0},
-dd3684[]={511,0},
-dd3685[]={470,472,474,476,0},
-dd3686[]={7854,7856,7858,7860,0},
-dd3687[]={7855,7857,7859,7861,0},
-dd3688[]={7700,7702,0},
-dd3689[]={7701,7703,0},
-dd3690[]={7760,7762,0},
-dd3691[]={7761,7763,0},
-dd3692[]={7780,0},
-dd3693[]={7781,0},
-dd3694[]={7782,0},
-dd3695[]={7783,0},
-dd3696[]={7800,0},
-dd3697[]={7801,0},
-dd3698[]={7802,0},
-dd3699[]={7803,0},
-dd3700[]={7835,0},
-dd3701[]={7898,7900,7902,7904,7906,0},
-dd3702[]={7899,7901,7903,7905,7907,0},
-dd3703[]={7912,7914,7916,7918,7920,0},
-dd3704[]={7913,7915,7917,7919,7921,0},
-dd3705[]={494,0},
-dd3706[]={492,0},
-dd3707[]={493,0},
-dd3708[]={480,0},
-dd3709[]={481,0},
-dd3710[]={7708,0},
-dd3711[]={7709,0},
-dd3712[]={560,0},
-dd3713[]={561,0},
-dd3714[]={495,0},
-dd3715[]={902,7944,7945,8120,8121,8122,8124,0},
-dd3716[]={904,7960,7961,8136,0},
-dd3717[]={905,7976,7977,8138,8140,0},
-dd3718[]={906,938,7992,7993,8152,8153,8154,0},
-dd3719[]={908,8008,8009,8184,0},
-dd3720[]={8172,0},
-dd3721[]={910,939,8025,8168,8169,8170,0},
-dd3722[]={911,8040,8041,8186,8188,0},
-dd3723[]={8116,0},
-dd3724[]={8132,0},
-dd3725[]={940,7936,7937,8048,8112,8113,8115,8118,0},
-dd3726[]={941,7952,7953,8050,0},
-dd3727[]={942,7968,7969,8052,8131,8134,0},
-dd3728[]={943,970,7984,7985,8054,8144,8145,8150,0},
-dd3729[]={972,8000,8001,8056,0},
-dd3730[]={8164,8165,0},
-dd3731[]={971,973,8016,8017,8058,8160,8161,8166,0},
-dd3732[]={974,8032,8033,8060,8179,8182,0},
-dd3733[]={912,8146,8151,0},
-dd3734[]={944,8162,8167,0},
-dd3735[]={8180,0},
-dd3736[]={979,980,0},
-dd3737[]={1031,0},
-dd3738[]={1232,1234,0},
-dd3739[]={1027,0},
-dd3740[]={1024,1025,1238,0},
-dd3741[]={1217,1244,0},
-dd3742[]={1246,0},
-dd3743[]={1037,1049,1250,1252,0},
-dd3744[]={1036,0},
-dd3745[]={1254,0},
-dd3746[]={1038,1262,1264,1266,0},
-dd3747[]={1268,0},
-dd3748[]={1272,0},
-dd3749[]={1260,0},
-dd3750[]={1233,1235,0},
-dd3751[]={1107,0},
-dd3752[]={1104,1105,1239,0},
-dd3753[]={1218,1245,0},
-dd3754[]={1247,0},
-dd3755[]={1081,1117,1251,1253,0},
-dd3756[]={1116,0},
-dd3757[]={1255,0},
-dd3758[]={1118,1263,1265,1267,0},
-dd3759[]={1269,0},
-dd3760[]={1273,0},
-dd3761[]={1261,0},
-dd3762[]={1111,0},
-dd3763[]={1142,0},
-dd3764[]={1143,0},
-dd3765[]={1242,0},
-dd3766[]={1243,0},
-dd3767[]={1258,0},
-dd3768[]={1259,0},
-dd3769[]={1570,1571,1573,0},
-dd3770[]={1730,0},
-dd3771[]={2345,0},
-dd3772[]={2353,0},
-dd3773[]={2356,0},
-dd3774[]={2507,2508,0},
-dd3775[]={2888,2891,2892,0},
-dd3776[]={2964,0},
-dd3777[]={3018,3020,0},
-dd3778[]={3019,0},
-dd3779[]={3144,0},
-dd3780[]={3264,0},
-dd3781[]={3271,3272,3274,0},
-dd3782[]={3275,0},
-dd3783[]={3402,3404,0},
-dd3784[]={3403,0},
-dd3785[]={3546,3548,3550,0},
-dd3786[]={3549,0},
-dd3787[]={4134,0},
-dd3788[]={6918,0},
-dd3789[]={6920,0},
-dd3790[]={6922,0},
-dd3791[]={6924,0},
-dd3792[]={6926,0},
-dd3793[]={6930,0},
-dd3794[]={6971,0},
-dd3795[]={6973,0},
-dd3796[]={6976,0},
-dd3797[]={6977,0},
-dd3798[]={6979,0},
-dd3799[]={7736,0},
-dd3800[]={7737,0},
-dd3801[]={7772,0},
-dd3802[]={7773,0},
-dd3803[]={7784,0},
-dd3804[]={7785,0},
-dd3805[]={7852,7862,0},
-dd3806[]={7853,7863,0},
-dd3807[]={7878,0},
-dd3808[]={7879,0},
-dd3809[]={7896,0},
-dd3810[]={7897,0},
-dd3811[]={7938,7940,7942,8064,0},
-dd3812[]={7939,7941,7943,8065,0},
-dd3813[]={8066,0},
-dd3814[]={8067,0},
-dd3815[]={8068,0},
-dd3816[]={8069,0},
-dd3817[]={8070,0},
-dd3818[]={8071,0},
-dd3819[]={7946,7948,7950,8072,0},
-dd3820[]={7947,7949,7951,8073,0},
-dd3821[]={8074,0},
-dd3822[]={8075,0},
-dd3823[]={8076,0},
-dd3824[]={8077,0},
-dd3825[]={8078,0},
-dd3826[]={8079,0},
-dd3827[]={7954,7956,0},
-dd3828[]={7955,7957,0},
-dd3829[]={7962,7964,0},
-dd3830[]={7963,7965,0},
-dd3831[]={7970,7972,7974,8080,0},
-dd3832[]={7971,7973,7975,8081,0},
-dd3833[]={8082,0},
-dd3834[]={8083,0},
-dd3835[]={8084,0},
-dd3836[]={8085,0},
-dd3837[]={8086,0},
-dd3838[]={8087,0},
-dd3839[]={7978,7980,7982,8088,0},
-dd3840[]={7979,7981,7983,8089,0},
-dd3841[]={8090,0},
-dd3842[]={8091,0},
-dd3843[]={8092,0},
-dd3844[]={8093,0},
-dd3845[]={8094,0},
-dd3846[]={8095,0},
-dd3847[]={7986,7988,7990,0},
-dd3848[]={7987,7989,7991,0},
-dd3849[]={7994,7996,7998,0},
-dd3850[]={7995,7997,7999,0},
-dd3851[]={8002,8004,0},
-dd3852[]={8003,8005,0},
-dd3853[]={8010,8012,0},
-dd3854[]={8011,8013,0},
-dd3855[]={8018,8020,8022,0},
-dd3856[]={8019,8021,8023,0},
-dd3857[]={8027,8029,8031,0},
-dd3858[]={8034,8036,8038,8096,0},
-dd3859[]={8035,8037,8039,8097,0},
-dd3860[]={8098,0},
-dd3861[]={8099,0},
-dd3862[]={8100,0},
-dd3863[]={8101,0},
-dd3864[]={8102,0},
-dd3865[]={8103,0},
-dd3866[]={8042,8044,8046,8104,0},
-dd3867[]={8043,8045,8047,8105,0},
-dd3868[]={8106,0},
-dd3869[]={8107,0},
-dd3870[]={8108,0},
-dd3871[]={8109,0},
-dd3872[]={8110,0},
-dd3873[]={8111,0},
-dd3874[]={8114,0},
-dd3875[]={8130,0},
-dd3876[]={8178,0},
-dd3877[]={8119,0},
-dd3878[]={8141,8142,8143,0},
-dd3879[]={8135,0},
-dd3880[]={8183,0},
-dd3881[]={8157,8158,8159,0},
-dd3882[]={8602,0},
-dd3883[]={8603,0},
-dd3884[]={8622,0},
-dd3885[]={8653,0},
-dd3886[]={8655,0},
-dd3887[]={8654,0},
-dd3888[]={8708,0},
-dd3889[]={8713,0},
-dd3890[]={8716,0},
-dd3891[]={8740,0},
-dd3892[]={8742,0},
-dd3893[]={8769,0},
-dd3894[]={8772,0},
-dd3895[]={8775,0},
-dd3896[]={8777,0},
-dd3897[]={8813,0},
-dd3898[]={8802,0},
-dd3899[]={8816,0},
-dd3900[]={8817,0},
-dd3901[]={8820,0},
-dd3902[]={8821,0},
-dd3903[]={8824,0},
-dd3904[]={8825,0},
-dd3905[]={8832,0},
-dd3906[]={8833,0},
-dd3907[]={8928,0},
-dd3908[]={8929,0},
-dd3909[]={8836,0},
-dd3910[]={8837,0},
-dd3911[]={8840,0},
-dd3912[]={8841,0},
-dd3913[]={8930,0},
-dd3914[]={8931,0},
-dd3915[]={8876,0},
-dd3916[]={8877,0},
-dd3917[]={8878,0},
-dd3918[]={8879,0},
-dd3919[]={8938,0},
-dd3920[]={8939,0},
-dd3921[]={8940,0},
-dd3922[]={8941,0},
-dd3923[]={12436,0},
-dd3924[]={12364,0},
-dd3925[]={12366,0},
-dd3926[]={12368,0},
-dd3927[]={12370,0},
-dd3928[]={12372,0},
-dd3929[]={12374,0},
-dd3930[]={12376,0},
-dd3931[]={12378,0},
-dd3932[]={12380,0},
-dd3933[]={12382,0},
-dd3934[]={12384,0},
-dd3935[]={12386,0},
-dd3936[]={12389,0},
-dd3937[]={12391,0},
-dd3938[]={12393,0},
-dd3939[]={12400,12401,0},
-dd3940[]={12403,12404,0},
-dd3941[]={12406,12407,0},
-dd3942[]={12409,12410,0},
-dd3943[]={12412,12413,0},
-dd3944[]={12446,0},
-dd3945[]={12532,0},
-dd3946[]={12460,0},
-dd3947[]={12462,0},
-dd3948[]={12464,0},
-dd3949[]={12466,0},
-dd3950[]={12468,0},
-dd3951[]={12470,0},
-dd3952[]={12472,0},
-dd3953[]={12474,0},
-dd3954[]={12476,0},
-dd3955[]={12478,0},
-dd3956[]={12480,0},
-dd3957[]={12482,0},
-dd3958[]={12485,0},
-dd3959[]={12487,0},
-dd3960[]={12489,0},
-dd3961[]={12496,12497,0},
-dd3962[]={12499,12500,0},
-dd3963[]={12502,12503,0},
-dd3964[]={12505,12506,0},
-dd3965[]={12508,12509,0},
-dd3966[]={12535,0},
-dd3967[]={12536,0},
-dd3968[]={12537,0},
-dd3969[]={12538,0},
-dd3970[]={12542,0},
-dd3971[]={224,0},
-dd3972[]={225,0},
-dd3973[]={226,0},
-dd3974[]={227,0},
-dd3975[]={228,0},
-dd3976[]={229,0},
-dd3977[]={230,0},
-dd3978[]={231,0},
-dd3979[]={232,0},
-dd3980[]={233,0},
-dd3981[]={234,0},
-dd3982[]={235,0},
-dd3983[]={236,0},
-dd3984[]={237,0},
-dd3985[]={238,0},
-dd3986[]={239,0},
-dd3987[]={241,0},
-dd3988[]={242,0},
-dd3989[]={243,0},
-dd3990[]={244,0},
-dd3991[]={245,0},
-dd3992[]={246,0},
-dd3993[]={248,0},
-dd3994[]={249,0},
-dd3995[]={250,0},
-dd3996[]={251,0},
-dd3997[]={252,0},
-dd3998[]={253,0},
-dd3999[]={254,0},
-dd4000[]={115,115,0},
-dd4001[]={257,0},
-dd4002[]={259,0},
-dd4003[]={261,0},
-dd4004[]={263,0},
-dd4005[]={265,0},
-dd4006[]={267,0},
-dd4007[]={269,0},
-dd4008[]={271,0},
-dd4009[]={273,0},
-dd4010[]={275,0},
-dd4011[]={277,0},
-dd4012[]={279,0},
-dd4013[]={281,0},
-dd4014[]={283,0},
-dd4015[]={285,0},
-dd4016[]={287,0},
-dd4017[]={289,0},
-dd4018[]={291,0},
-dd4019[]={293,0},
-dd4020[]={297,0},
-dd4021[]={299,0},
-dd4022[]={301,0},
-dd4023[]={303,0},
-dd4024[]={105,775,0},
-dd4025[]={307,0},
-dd4026[]={309,0},
-dd4027[]={311,0},
-dd4028[]={314,0},
-dd4029[]={316,0},
-dd4030[]={318,0},
-dd4031[]={320,0},
-dd4032[]={322,0},
-dd4033[]={324,0},
-dd4034[]={326,0},
-dd4035[]={328,0},
-dd4036[]={333,0},
-dd4037[]={335,0},
-dd4038[]={337,0},
-dd4039[]={339,0},
-dd4040[]={341,0},
-dd4041[]={343,0},
-dd4042[]={345,0},
-dd4043[]={347,0},
-dd4044[]={349,0},
-dd4045[]={351,0},
-dd4046[]={353,0},
-dd4047[]={355,0},
-dd4048[]={357,0},
-dd4049[]={359,0},
-dd4050[]={361,0},
-dd4051[]={363,0},
-dd4052[]={365,0},
-dd4053[]={367,0},
-dd4054[]={369,0},
-dd4055[]={371,0},
-dd4056[]={373,0},
-dd4057[]={375,0},
-dd4058[]={255,0},
-dd4059[]={378,0},
-dd4060[]={380,0},
-dd4061[]={382,0},
-dd4062[]={595,0},
-dd4063[]={387,0},
-dd4064[]={389,0},
-dd4065[]={392,0},
-dd4066[]={598,0},
-dd4067[]={599,0},
-dd4068[]={396,0},
-dd4069[]={477,0},
-dd4070[]={402,0},
-dd4071[]={608,0},
-dd4072[]={409,0},
-dd4073[]={417,0},
-dd4074[]={419,0},
-dd4075[]={421,0},
-dd4076[]={640,0},
-dd4077[]={424,0},
-dd4078[]={429,0},
-dd4079[]={648,0},
-dd4080[]={432,0},
-dd4081[]={436,0},
-dd4082[]={438,0},
-dd4083[]={441,0},
-dd4084[]={445,0},
-dd4085[]={454,0},
-dd4086[]={457,0},
-dd4087[]={460,0},
-dd4088[]={462,0},
-dd4089[]={464,0},
-dd4090[]={466,0},
-dd4091[]={468,0},
-dd4092[]={470,0},
-dd4093[]={472,0},
-dd4094[]={474,0},
-dd4095[]={476,0},
-dd4096[]={483,0},
-dd4097[]={485,0},
-dd4098[]={487,0},
-dd4099[]={489,0},
-dd4100[]={491,0},
-dd4101[]={499,0},
-dd4102[]={501,0},
-dd4103[]={405,0},
-dd4104[]={447,0},
-dd4105[]={505,0},
-dd4106[]={509,0},
-dd4107[]={513,0},
-dd4108[]={515,0},
-dd4109[]={517,0},
-dd4110[]={519,0},
-dd4111[]={521,0},
-dd4112[]={523,0},
-dd4113[]={525,0},
-dd4114[]={527,0},
-dd4115[]={529,0},
-dd4116[]={531,0},
-dd4117[]={533,0},
-dd4118[]={535,0},
-dd4119[]={537,0},
-dd4120[]={539,0},
-dd4121[]={541,0},
-dd4122[]={543,0},
-dd4123[]={414,0},
-dd4124[]={547,0},
-dd4125[]={549,0},
-dd4126[]={551,0},
-dd4127[]={553,0},
-dd4128[]={557,0},
-dd4129[]={559,0},
-dd4130[]={563,0},
-dd4131[]={11365,0},
-dd4132[]={572,0},
-dd4133[]={410,0},
-dd4134[]={11366,0},
-dd4135[]={578,0},
-dd4136[]={384,0},
-dd4137[]={583,0},
-dd4138[]={585,0},
-dd4139[]={587,0},
-dd4140[]={589,0},
-dd4141[]={591,0},
-dd4142[]={881,0},
-dd4143[]={883,0},
-dd4144[]={887,0},
-dd4145[]={953,776,769,0},
-dd4146[]={970,0},
-dd4147[]={971,0},
-dd4148[]={965,776,769,0},
-dd4149[]={983,0},
-dd4150[]={985,0},
-dd4151[]={987,0},
-dd4152[]={991,0},
-dd4153[]={993,0},
-dd4154[]={995,0},
-dd4155[]={997,0},
-dd4156[]={999,0},
-dd4157[]={1001,0},
-dd4158[]={1003,0},
-dd4159[]={1005,0},
-dd4160[]={1007,0},
-dd4161[]={1016,0},
-dd4162[]={1010,0},
-dd4163[]={1019,0},
-dd4164[]={891,0},
-dd4165[]={892,0},
-dd4166[]={893,0},
-dd4167[]={1104,0},
-dd4168[]={1105,0},
-dd4169[]={1106,0},
-dd4170[]={1108,0},
-dd4171[]={1109,0},
-dd4172[]={1110,0},
-dd4173[]={1112,0},
-dd4174[]={1113,0},
-dd4175[]={1114,0},
-dd4176[]={1115,0},
-dd4177[]={1117,0},
-dd4178[]={1118,0},
-dd4179[]={1119,0},
-dd4180[]={1072,0},
-dd4181[]={1073,0},
-dd4182[]={1074,0},
-dd4183[]={1075,0},
-dd4184[]={1076,0},
-dd4185[]={1077,0},
-dd4186[]={1078,0},
-dd4187[]={1079,0},
-dd4188[]={1080,0},
-dd4189[]={1081,0},
-dd4190[]={1082,0},
-dd4191[]={1083,0},
-dd4192[]={1084,0},
-dd4193[]={1086,0},
-dd4194[]={1087,0},
-dd4195[]={1088,0},
-dd4196[]={1089,0},
-dd4197[]={1090,0},
-dd4198[]={1091,0},
-dd4199[]={1092,0},
-dd4200[]={1093,0},
-dd4201[]={1094,0},
-dd4202[]={1095,0},
-dd4203[]={1096,0},
-dd4204[]={1097,0},
-dd4205[]={1098,0},
-dd4206[]={1099,0},
-dd4207[]={1100,0},
-dd4208[]={1101,0},
-dd4209[]={1102,0},
-dd4210[]={1103,0},
-dd4211[]={1121,0},
-dd4212[]={1123,0},
-dd4213[]={1125,0},
-dd4214[]={1127,0},
-dd4215[]={1129,0},
-dd4216[]={1131,0},
-dd4217[]={1133,0},
-dd4218[]={1135,0},
-dd4219[]={1137,0},
-dd4220[]={1139,0},
-dd4221[]={1141,0},
-dd4222[]={1145,0},
-dd4223[]={1147,0},
-dd4224[]={1149,0},
-dd4225[]={1151,0},
-dd4226[]={1153,0},
-dd4227[]={1163,0},
-dd4228[]={1165,0},
-dd4229[]={1167,0},
-dd4230[]={1169,0},
-dd4231[]={1171,0},
-dd4232[]={1173,0},
-dd4233[]={1175,0},
-dd4234[]={1177,0},
-dd4235[]={1179,0},
-dd4236[]={1181,0},
-dd4237[]={1183,0},
-dd4238[]={1185,0},
-dd4239[]={1187,0},
-dd4240[]={1189,0},
-dd4241[]={1191,0},
-dd4242[]={1193,0},
-dd4243[]={1195,0},
-dd4244[]={1197,0},
-dd4245[]={1199,0},
-dd4246[]={1201,0},
-dd4247[]={1203,0},
-dd4248[]={1205,0},
-dd4249[]={1207,0},
-dd4250[]={1209,0},
-dd4251[]={1211,0},
-dd4252[]={1213,0},
-dd4253[]={1215,0},
-dd4254[]={1231,0},
-dd4255[]={1218,0},
-dd4256[]={1220,0},
-dd4257[]={1222,0},
-dd4258[]={1224,0},
-dd4259[]={1226,0},
-dd4260[]={1228,0},
-dd4261[]={1230,0},
-dd4262[]={1233,0},
-dd4263[]={1235,0},
-dd4264[]={1237,0},
-dd4265[]={1239,0},
-dd4266[]={1241,0},
-dd4267[]={1245,0},
-dd4268[]={1249,0},
-dd4269[]={1251,0},
-dd4270[]={1253,0},
-dd4271[]={1257,0},
-dd4272[]={1263,0},
-dd4273[]={1265,0},
-dd4274[]={1267,0},
-dd4275[]={1271,0},
-dd4276[]={1275,0},
-dd4277[]={1277,0},
-dd4278[]={1279,0},
-dd4279[]={1281,0},
-dd4280[]={1283,0},
-dd4281[]={1285,0},
-dd4282[]={1287,0},
-dd4283[]={1289,0},
-dd4284[]={1291,0},
-dd4285[]={1293,0},
-dd4286[]={1295,0},
-dd4287[]={1297,0},
-dd4288[]={1299,0},
-dd4289[]={1301,0},
-dd4290[]={1303,0},
-dd4291[]={1305,0},
-dd4292[]={1307,0},
-dd4293[]={1309,0},
-dd4294[]={1311,0},
-dd4295[]={1313,0},
-dd4296[]={1315,0},
-dd4297[]={1377,0},
-dd4298[]={1378,0},
-dd4299[]={1379,0},
-dd4300[]={1380,0},
-dd4301[]={1381,0},
-dd4302[]={1382,0},
-dd4303[]={1383,0},
-dd4304[]={1384,0},
-dd4305[]={1385,0},
-dd4306[]={1386,0},
-dd4307[]={1387,0},
-dd4308[]={1388,0},
-dd4309[]={1389,0},
-dd4310[]={1390,0},
-dd4311[]={1391,0},
-dd4312[]={1392,0},
-dd4313[]={1393,0},
-dd4314[]={1394,0},
-dd4315[]={1395,0},
-dd4316[]={1396,0},
-dd4317[]={1397,0},
-dd4318[]={1398,0},
-dd4319[]={1399,0},
-dd4320[]={1400,0},
-dd4321[]={1401,0},
-dd4322[]={1402,0},
-dd4323[]={1403,0},
-dd4324[]={1404,0},
-dd4325[]={1405,0},
-dd4326[]={1406,0},
-dd4327[]={1407,0},
-dd4328[]={1408,0},
-dd4329[]={1409,0},
-dd4330[]={1410,0},
-dd4331[]={1411,0},
-dd4332[]={1412,0},
-dd4333[]={1413,0},
-dd4334[]={1414,0},
-dd4335[]={11520,0},
-dd4336[]={11521,0},
-dd4337[]={11522,0},
-dd4338[]={11523,0},
-dd4339[]={11524,0},
-dd4340[]={11525,0},
-dd4341[]={11526,0},
-dd4342[]={11527,0},
-dd4343[]={11528,0},
-dd4344[]={11529,0},
-dd4345[]={11530,0},
-dd4346[]={11531,0},
-dd4347[]={11532,0},
-dd4348[]={11533,0},
-dd4349[]={11534,0},
-dd4350[]={11535,0},
-dd4351[]={11536,0},
-dd4352[]={11537,0},
-dd4353[]={11538,0},
-dd4354[]={11539,0},
-dd4355[]={11540,0},
-dd4356[]={11541,0},
-dd4357[]={11542,0},
-dd4358[]={11543,0},
-dd4359[]={11544,0},
-dd4360[]={11545,0},
-dd4361[]={11546,0},
-dd4362[]={11547,0},
-dd4363[]={11548,0},
-dd4364[]={11549,0},
-dd4365[]={11550,0},
-dd4366[]={11551,0},
-dd4367[]={11552,0},
-dd4368[]={11553,0},
-dd4369[]={11554,0},
-dd4370[]={11555,0},
-dd4371[]={11556,0},
-dd4372[]={11557,0},
-dd4373[]={7681,0},
-dd4374[]={7683,0},
-dd4375[]={7685,0},
-dd4376[]={7687,0},
-dd4377[]={7691,0},
-dd4378[]={7693,0},
-dd4379[]={7695,0},
-dd4380[]={7697,0},
-dd4381[]={7699,0},
-dd4382[]={7701,0},
-dd4383[]={7703,0},
-dd4384[]={7705,0},
-dd4385[]={7707,0},
-dd4386[]={7713,0},
-dd4387[]={7715,0},
-dd4388[]={7717,0},
-dd4389[]={7719,0},
-dd4390[]={7721,0},
-dd4391[]={7723,0},
-dd4392[]={7725,0},
-dd4393[]={7729,0},
-dd4394[]={7731,0},
-dd4395[]={7733,0},
-dd4396[]={7735,0},
-dd4397[]={7739,0},
-dd4398[]={7741,0},
-dd4399[]={7743,0},
-dd4400[]={7745,0},
-dd4401[]={7747,0},
-dd4402[]={7749,0},
-dd4403[]={7751,0},
-dd4404[]={7753,0},
-dd4405[]={7755,0},
-dd4406[]={7757,0},
-dd4407[]={7759,0},
-dd4408[]={7761,0},
-dd4409[]={7763,0},
-dd4410[]={7765,0},
-dd4411[]={7767,0},
-dd4412[]={7769,0},
-dd4413[]={7771,0},
-dd4414[]={7775,0},
-dd4415[]={7777,0},
-dd4416[]={7779,0},
-dd4417[]={7787,0},
-dd4418[]={7789,0},
-dd4419[]={7791,0},
-dd4420[]={7793,0},
-dd4421[]={7795,0},
-dd4422[]={7797,0},
-dd4423[]={7799,0},
-dd4424[]={7805,0},
-dd4425[]={7807,0},
-dd4426[]={7809,0},
-dd4427[]={7811,0},
-dd4428[]={7813,0},
-dd4429[]={7815,0},
-dd4430[]={7817,0},
-dd4431[]={7819,0},
-dd4432[]={7821,0},
-dd4433[]={7823,0},
-dd4434[]={7825,0},
-dd4435[]={7827,0},
-dd4436[]={7829,0},
-dd4437[]={7841,0},
-dd4438[]={7843,0},
-dd4439[]={7845,0},
-dd4440[]={7847,0},
-dd4441[]={7849,0},
-dd4442[]={7851,0},
-dd4443[]={7853,0},
-dd4444[]={7855,0},
-dd4445[]={7857,0},
-dd4446[]={7859,0},
-dd4447[]={7861,0},
-dd4448[]={7863,0},
-dd4449[]={7865,0},
-dd4450[]={7867,0},
-dd4451[]={7869,0},
-dd4452[]={7871,0},
-dd4453[]={7873,0},
-dd4454[]={7875,0},
-dd4455[]={7877,0},
-dd4456[]={7881,0},
-dd4457[]={7883,0},
-dd4458[]={7885,0},
-dd4459[]={7887,0},
-dd4460[]={7889,0},
-dd4461[]={7891,0},
-dd4462[]={7893,0},
-dd4463[]={7895,0},
-dd4464[]={7899,0},
-dd4465[]={7901,0},
-dd4466[]={7903,0},
-dd4467[]={7905,0},
-dd4468[]={7907,0},
-dd4469[]={7909,0},
-dd4470[]={7911,0},
-dd4471[]={7913,0},
-dd4472[]={7915,0},
-dd4473[]={7917,0},
-dd4474[]={7919,0},
-dd4475[]={7921,0},
-dd4476[]={7923,0},
-dd4477[]={7925,0},
-dd4478[]={7927,0},
-dd4479[]={7929,0},
-dd4480[]={7931,0},
-dd4481[]={7933,0},
-dd4482[]={7935,0},
-dd4483[]={7936,0},
-dd4484[]={7937,0},
-dd4485[]={7938,0},
-dd4486[]={7939,0},
-dd4487[]={7940,0},
-dd4488[]={7941,0},
-dd4489[]={7942,0},
-dd4490[]={7943,0},
-dd4491[]={7952,0},
-dd4492[]={7953,0},
-dd4493[]={7954,0},
-dd4494[]={7955,0},
-dd4495[]={7956,0},
-dd4496[]={7957,0},
-dd4497[]={7968,0},
-dd4498[]={7969,0},
-dd4499[]={7970,0},
-dd4500[]={7971,0},
-dd4501[]={7972,0},
-dd4502[]={7973,0},
-dd4503[]={7974,0},
-dd4504[]={7975,0},
-dd4505[]={7984,0},
-dd4506[]={7985,0},
-dd4507[]={7986,0},
-dd4508[]={7987,0},
-dd4509[]={7988,0},
-dd4510[]={7989,0},
-dd4511[]={7990,0},
-dd4512[]={7991,0},
-dd4513[]={8000,0},
-dd4514[]={8001,0},
-dd4515[]={8002,0},
-dd4516[]={8003,0},
-dd4517[]={8004,0},
-dd4518[]={8005,0},
-dd4519[]={965,787,768,0},
-dd4520[]={965,787,769,0},
-dd4521[]={965,787,834,0},
-dd4522[]={8017,0},
-dd4523[]={8019,0},
-dd4524[]={8021,0},
-dd4525[]={8023,0},
-dd4526[]={8032,0},
-dd4527[]={8033,0},
-dd4528[]={8034,0},
-dd4529[]={8035,0},
-dd4530[]={8036,0},
-dd4531[]={8037,0},
-dd4532[]={8038,0},
-dd4533[]={8039,0},
-dd4534[]={7936,953,0},
-dd4535[]={7937,953,0},
-dd4536[]={7938,953,0},
-dd4537[]={7939,953,0},
-dd4538[]={7940,953,0},
-dd4539[]={7941,953,0},
-dd4540[]={7942,953,0},
-dd4541[]={7943,953,0},
-dd4542[]={7968,953,0},
-dd4543[]={7969,953,0},
-dd4544[]={7970,953,0},
-dd4545[]={7971,953,0},
-dd4546[]={7972,953,0},
-dd4547[]={7973,953,0},
-dd4548[]={7974,953,0},
-dd4549[]={7975,953,0},
-dd4550[]={8032,953,0},
-dd4551[]={8033,953,0},
-dd4552[]={8034,953,0},
-dd4553[]={8035,953,0},
-dd4554[]={8036,953,0},
-dd4555[]={8037,953,0},
-dd4556[]={8038,953,0},
-dd4557[]={8039,953,0},
-dd4558[]={8048,953,0},
-dd4559[]={945,953,0},
-dd4560[]={940,953,0},
-dd4561[]={945,834,953,0},
-dd4562[]={8112,0},
-dd4563[]={8113,0},
-dd4564[]={8048,0},
-dd4565[]={8049,0},
-dd4566[]={8052,953,0},
-dd4567[]={951,953,0},
-dd4568[]={942,953,0},
-dd4569[]={951,834,953,0},
-dd4570[]={8050,0},
-dd4571[]={8051,0},
-dd4572[]={8052,0},
-dd4573[]={8053,0},
-dd4574[]={953,776,768,0},
-dd4575[]={953,776,834,0},
-dd4576[]={8144,0},
-dd4577[]={8145,0},
-dd4578[]={8054,0},
-dd4579[]={8055,0},
-dd4580[]={965,776,768,0},
-dd4581[]={965,776,834,0},
-dd4582[]={8160,0},
-dd4583[]={8161,0},
-dd4584[]={8058,0},
-dd4585[]={8059,0},
-dd4586[]={8165,0},
-dd4587[]={8060,953,0},
-dd4588[]={969,953,0},
-dd4589[]={974,953,0},
-dd4590[]={969,834,953,0},
-dd4591[]={8056,0},
-dd4592[]={8057,0},
-dd4593[]={8060,0},
-dd4594[]={8061,0},
-dd4595[]={8526,0},
-dd4596[]={8560,0},
-dd4597[]={8561,0},
-dd4598[]={8562,0},
-dd4599[]={8563,0},
-dd4600[]={8564,0},
-dd4601[]={8565,0},
-dd4602[]={8566,0},
-dd4603[]={8567,0},
-dd4604[]={8568,0},
-dd4605[]={8569,0},
-dd4606[]={8570,0},
-dd4607[]={8571,0},
-dd4608[]={8572,0},
-dd4609[]={8573,0},
-dd4610[]={8574,0},
-dd4611[]={8575,0},
-dd4612[]={8580,0},
-dd4613[]={9424,0},
-dd4614[]={9425,0},
-dd4615[]={9426,0},
-dd4616[]={9427,0},
-dd4617[]={9428,0},
-dd4618[]={9429,0},
-dd4619[]={9430,0},
-dd4620[]={9431,0},
-dd4621[]={9432,0},
-dd4622[]={9433,0},
-dd4623[]={9434,0},
-dd4624[]={9435,0},
-dd4625[]={9436,0},
-dd4626[]={9437,0},
-dd4627[]={9438,0},
-dd4628[]={9439,0},
-dd4629[]={9440,0},
-dd4630[]={9441,0},
-dd4631[]={9442,0},
-dd4632[]={9443,0},
-dd4633[]={9444,0},
-dd4634[]={9445,0},
-dd4635[]={9446,0},
-dd4636[]={9447,0},
-dd4637[]={9448,0},
-dd4638[]={9449,0},
-dd4639[]={11312,0},
-dd4640[]={11313,0},
-dd4641[]={11314,0},
-dd4642[]={11315,0},
-dd4643[]={11316,0},
-dd4644[]={11317,0},
-dd4645[]={11318,0},
-dd4646[]={11319,0},
-dd4647[]={11320,0},
-dd4648[]={11321,0},
-dd4649[]={11322,0},
-dd4650[]={11323,0},
-dd4651[]={11324,0},
-dd4652[]={11325,0},
-dd4653[]={11326,0},
-dd4654[]={11327,0},
-dd4655[]={11328,0},
-dd4656[]={11329,0},
-dd4657[]={11330,0},
-dd4658[]={11331,0},
-dd4659[]={11332,0},
-dd4660[]={11333,0},
-dd4661[]={11334,0},
-dd4662[]={11335,0},
-dd4663[]={11336,0},
-dd4664[]={11337,0},
-dd4665[]={11338,0},
-dd4666[]={11339,0},
-dd4667[]={11340,0},
-dd4668[]={11341,0},
-dd4669[]={11342,0},
-dd4670[]={11343,0},
-dd4671[]={11344,0},
-dd4672[]={11345,0},
-dd4673[]={11346,0},
-dd4674[]={11347,0},
-dd4675[]={11348,0},
-dd4676[]={11349,0},
-dd4677[]={11350,0},
-dd4678[]={11351,0},
-dd4679[]={11352,0},
-dd4680[]={11353,0},
-dd4681[]={11354,0},
-dd4682[]={11355,0},
-dd4683[]={11356,0},
-dd4684[]={11357,0},
-dd4685[]={11358,0},
-dd4686[]={11361,0},
-dd4687[]={619,0},
-dd4688[]={7549,0},
-dd4689[]={637,0},
-dd4690[]={11368,0},
-dd4691[]={11370,0},
-dd4692[]={11372,0},
-dd4693[]={11379,0},
-dd4694[]={11382,0},
-dd4695[]={11393,0},
-dd4696[]={11395,0},
-dd4697[]={11397,0},
-dd4698[]={11399,0},
-dd4699[]={11401,0},
-dd4700[]={11403,0},
-dd4701[]={11405,0},
-dd4702[]={11407,0},
-dd4703[]={11409,0},
-dd4704[]={11411,0},
-dd4705[]={11413,0},
-dd4706[]={11415,0},
-dd4707[]={11417,0},
-dd4708[]={11419,0},
-dd4709[]={11421,0},
-dd4710[]={11423,0},
-dd4711[]={11425,0},
-dd4712[]={11427,0},
-dd4713[]={11429,0},
-dd4714[]={11431,0},
-dd4715[]={11433,0},
-dd4716[]={11435,0},
-dd4717[]={11437,0},
-dd4718[]={11439,0},
-dd4719[]={11441,0},
-dd4720[]={11443,0},
-dd4721[]={11445,0},
-dd4722[]={11447,0},
-dd4723[]={11449,0},
-dd4724[]={11451,0},
-dd4725[]={11453,0},
-dd4726[]={11455,0},
-dd4727[]={11457,0},
-dd4728[]={11459,0},
-dd4729[]={11461,0},
-dd4730[]={11463,0},
-dd4731[]={11465,0},
-dd4732[]={11467,0},
-dd4733[]={11469,0},
-dd4734[]={11471,0},
-dd4735[]={11473,0},
-dd4736[]={11475,0},
-dd4737[]={11477,0},
-dd4738[]={11479,0},
-dd4739[]={11481,0},
-dd4740[]={11483,0},
-dd4741[]={11485,0},
-dd4742[]={11487,0},
-dd4743[]={11489,0},
-dd4744[]={11491,0},
-dd4745[]={42561,0},
-dd4746[]={42563,0},
-dd4747[]={42565,0},
-dd4748[]={42567,0},
-dd4749[]={42569,0},
-dd4750[]={42571,0},
-dd4751[]={42573,0},
-dd4752[]={42575,0},
-dd4753[]={42577,0},
-dd4754[]={42579,0},
-dd4755[]={42581,0},
-dd4756[]={42583,0},
-dd4757[]={42585,0},
-dd4758[]={42587,0},
-dd4759[]={42589,0},
-dd4760[]={42591,0},
-dd4761[]={42595,0},
-dd4762[]={42597,0},
-dd4763[]={42599,0},
-dd4764[]={42601,0},
-dd4765[]={42603,0},
-dd4766[]={42605,0},
-dd4767[]={42625,0},
-dd4768[]={42627,0},
-dd4769[]={42629,0},
-dd4770[]={42631,0},
-dd4771[]={42633,0},
-dd4772[]={42635,0},
-dd4773[]={42637,0},
-dd4774[]={42639,0},
-dd4775[]={42641,0},
-dd4776[]={42643,0},
-dd4777[]={42645,0},
-dd4778[]={42647,0},
-dd4779[]={42787,0},
-dd4780[]={42789,0},
-dd4781[]={42791,0},
-dd4782[]={42793,0},
-dd4783[]={42795,0},
-dd4784[]={42797,0},
-dd4785[]={42799,0},
-dd4786[]={42803,0},
-dd4787[]={42805,0},
-dd4788[]={42807,0},
-dd4789[]={42809,0},
-dd4790[]={42811,0},
-dd4791[]={42813,0},
-dd4792[]={42815,0},
-dd4793[]={42817,0},
-dd4794[]={42819,0},
-dd4795[]={42821,0},
-dd4796[]={42823,0},
-dd4797[]={42825,0},
-dd4798[]={42827,0},
-dd4799[]={42829,0},
-dd4800[]={42831,0},
-dd4801[]={42833,0},
-dd4802[]={42835,0},
-dd4803[]={42837,0},
-dd4804[]={42839,0},
-dd4805[]={42841,0},
-dd4806[]={42843,0},
-dd4807[]={42845,0},
-dd4808[]={42847,0},
-dd4809[]={42849,0},
-dd4810[]={42851,0},
-dd4811[]={42853,0},
-dd4812[]={42855,0},
-dd4813[]={42857,0},
-dd4814[]={42859,0},
-dd4815[]={42861,0},
-dd4816[]={42874,0},
-dd4817[]={42876,0},
-dd4818[]={7545,0},
-dd4819[]={42879,0},
-dd4820[]={42881,0},
-dd4821[]={42883,0},
-dd4822[]={42885,0},
-dd4823[]={42887,0},
-dd4824[]={42892,0},
-dd4825[]={65345,0},
-dd4826[]={65346,0},
-dd4827[]={65347,0},
-dd4828[]={65348,0},
-dd4829[]={65349,0},
-dd4830[]={65350,0},
-dd4831[]={65351,0},
-dd4832[]={65352,0},
-dd4833[]={65353,0},
-dd4834[]={65354,0},
-dd4835[]={65355,0},
-dd4836[]={65356,0},
-dd4837[]={65357,0},
-dd4838[]={65358,0},
-dd4839[]={65359,0},
-dd4840[]={65360,0},
-dd4841[]={65361,0},
-dd4842[]={65362,0},
-dd4843[]={65363,0},
-dd4844[]={65364,0},
-dd4845[]={65365,0},
-dd4846[]={65366,0},
-dd4847[]={65367,0},
-dd4848[]={65368,0},
-dd4849[]={65369,0},
-dd4850[]={65370,0},
-dd4851[]={66600,0},
-dd4852[]={66601,0},
-dd4853[]={66602,0},
-dd4854[]={66603,0},
-dd4855[]={66604,0},
-dd4856[]={66605,0},
-dd4857[]={66606,0},
-dd4858[]={66607,0},
-dd4859[]={66608,0},
-dd4860[]={66609,0},
-dd4861[]={66610,0},
-dd4862[]={66611,0},
-dd4863[]={66612,0},
-dd4864[]={66613,0},
-dd4865[]={66614,0},
-dd4866[]={66615,0},
-dd4867[]={66616,0},
-dd4868[]={66617,0},
-dd4869[]={66618,0},
-dd4870[]={66619,0},
-dd4871[]={66620,0},
-dd4872[]={66621,0},
-dd4873[]={66622,0},
-dd4874[]={66623,0},
-dd4875[]={66624,0},
-dd4876[]={66625,0},
-dd4877[]={66626,0},
-dd4878[]={66627,0},
-dd4879[]={66628,0},
-dd4880[]={66629,0},
-dd4881[]={66630,0},
-dd4882[]={66631,0},
-dd4883[]={66632,0},
-dd4884[]={66633,0},
-dd4885[]={66634,0},
-dd4886[]={66635,0},
-dd4887[]={66636,0},
-dd4888[]={66637,0},
-dd4889[]={66638,0},
-dd4890[]={66639,0};
+dd1110[]={49,8260,55,0},
+dd1111[]={49,8260,57,0},
+dd1112[]={49,8260,49,48,0},
+dd1113[]={49,8260,51,0},
+dd1114[]={50,8260,51,0},
+dd1115[]={49,8260,53,0},
+dd1116[]={50,8260,53,0},
+dd1117[]={51,8260,53,0},
+dd1118[]={52,8260,53,0},
+dd1119[]={49,8260,54,0},
+dd1120[]={53,8260,54,0},
+dd1121[]={49,8260,56,0},
+dd1122[]={51,8260,56,0},
+dd1123[]={53,8260,56,0},
+dd1124[]={55,8260,56,0},
+dd1125[]={49,8260,0},
+dd1126[]={73,73,0},
+dd1127[]={73,73,73,0},
+dd1128[]={73,86,0},
+dd1129[]={86,0},
+dd1130[]={86,73,0},
+dd1131[]={86,73,73,0},
+dd1132[]={86,73,73,73,0},
+dd1133[]={73,88,0},
+dd1134[]={88,0},
+dd1135[]={88,73,0},
+dd1136[]={88,73,73,0},
+dd1137[]={105,105,0},
+dd1138[]={105,105,105,0},
+dd1139[]={105,118,0},
+dd1140[]={118,105,0},
+dd1141[]={118,105,105,0},
+dd1142[]={118,105,105,105,0},
+dd1143[]={105,120,0},
+dd1144[]={120,105,0},
+dd1145[]={120,105,105,0},
+dd1146[]={48,8260,51,0},
+dd1147[]={8592,824,0},
+dd1148[]={8594,824,0},
+dd1149[]={8596,824,0},
+dd1150[]={8656,824,0},
+dd1151[]={8660,824,0},
+dd1152[]={8658,824,0},
+dd1153[]={8707,824,0},
+dd1154[]={8712,824,0},
+dd1155[]={8715,824,0},
+dd1156[]={8739,824,0},
+dd1157[]={8741,824,0},
+dd1158[]={8747,8747,0},
+dd1159[]={8747,8747,8747,0},
+dd1160[]={8750,8750,0},
+dd1161[]={8750,8750,8750,0},
+dd1162[]={8764,824,0},
+dd1163[]={8771,824,0},
+dd1164[]={8773,824,0},
+dd1165[]={8776,824,0},
+dd1166[]={61,824,0},
+dd1167[]={8801,824,0},
+dd1168[]={8781,824,0},
+dd1169[]={60,824,0},
+dd1170[]={62,824,0},
+dd1171[]={8804,824,0},
+dd1172[]={8805,824,0},
+dd1173[]={8818,824,0},
+dd1174[]={8819,824,0},
+dd1175[]={8822,824,0},
+dd1176[]={8823,824,0},
+dd1177[]={8826,824,0},
+dd1178[]={8827,824,0},
+dd1179[]={8834,824,0},
+dd1180[]={8835,824,0},
+dd1181[]={8838,824,0},
+dd1182[]={8839,824,0},
+dd1183[]={8866,824,0},
+dd1184[]={8872,824,0},
+dd1185[]={8873,824,0},
+dd1186[]={8875,824,0},
+dd1187[]={8828,824,0},
+dd1188[]={8829,824,0},
+dd1189[]={8849,824,0},
+dd1190[]={8850,824,0},
+dd1191[]={8882,824,0},
+dd1192[]={8883,824,0},
+dd1193[]={8884,824,0},
+dd1194[]={8885,824,0},
+dd1195[]={12296,0},
+dd1196[]={12297,0},
+dd1197[]={49,48,0},
+dd1198[]={49,49,0},
+dd1199[]={49,50,0},
+dd1200[]={49,51,0},
+dd1201[]={49,52,0},
+dd1202[]={49,53,0},
+dd1203[]={49,54,0},
+dd1204[]={49,55,0},
+dd1205[]={49,56,0},
+dd1206[]={49,57,0},
+dd1207[]={50,48,0},
+dd1208[]={40,49,41,0},
+dd1209[]={40,50,41,0},
+dd1210[]={40,51,41,0},
+dd1211[]={40,52,41,0},
+dd1212[]={40,53,41,0},
+dd1213[]={40,54,41,0},
+dd1214[]={40,55,41,0},
+dd1215[]={40,56,41,0},
+dd1216[]={40,57,41,0},
+dd1217[]={40,49,48,41,0},
+dd1218[]={40,49,49,41,0},
+dd1219[]={40,49,50,41,0},
+dd1220[]={40,49,51,41,0},
+dd1221[]={40,49,52,41,0},
+dd1222[]={40,49,53,41,0},
+dd1223[]={40,49,54,41,0},
+dd1224[]={40,49,55,41,0},
+dd1225[]={40,49,56,41,0},
+dd1226[]={40,49,57,41,0},
+dd1227[]={40,50,48,41,0},
+dd1228[]={49,46,0},
+dd1229[]={50,46,0},
+dd1230[]={51,46,0},
+dd1231[]={52,46,0},
+dd1232[]={53,46,0},
+dd1233[]={54,46,0},
+dd1234[]={55,46,0},
+dd1235[]={56,46,0},
+dd1236[]={57,46,0},
+dd1237[]={49,48,46,0},
+dd1238[]={49,49,46,0},
+dd1239[]={49,50,46,0},
+dd1240[]={49,51,46,0},
+dd1241[]={49,52,46,0},
+dd1242[]={49,53,46,0},
+dd1243[]={49,54,46,0},
+dd1244[]={49,55,46,0},
+dd1245[]={49,56,46,0},
+dd1246[]={49,57,46,0},
+dd1247[]={50,48,46,0},
+dd1248[]={40,97,41,0},
+dd1249[]={40,98,41,0},
+dd1250[]={40,99,41,0},
+dd1251[]={40,100,41,0},
+dd1252[]={40,101,41,0},
+dd1253[]={40,102,41,0},
+dd1254[]={40,103,41,0},
+dd1255[]={40,104,41,0},
+dd1256[]={40,105,41,0},
+dd1257[]={40,106,41,0},
+dd1258[]={40,107,41,0},
+dd1259[]={40,108,41,0},
+dd1260[]={40,109,41,0},
+dd1261[]={40,110,41,0},
+dd1262[]={40,111,41,0},
+dd1263[]={40,112,41,0},
+dd1264[]={40,113,41,0},
+dd1265[]={40,114,41,0},
+dd1266[]={40,115,41,0},
+dd1267[]={40,116,41,0},
+dd1268[]={40,117,41,0},
+dd1269[]={40,118,41,0},
+dd1270[]={40,119,41,0},
+dd1271[]={40,120,41,0},
+dd1272[]={40,121,41,0},
+dd1273[]={40,122,41,0},
+dd1274[]={83,0},
+dd1275[]={89,0},
+dd1276[]={113,0},
+dd1277[]={8747,8747,8747,8747,0},
+dd1278[]={58,58,61,0},
+dd1279[]={61,61,0},
+dd1280[]={61,61,61,0},
+dd1281[]={10973,824,0},
+dd1282[]={11617,0},
+dd1283[]={27597,0},
+dd1284[]={40863,0},
+dd1285[]={19968,0},
+dd1286[]={20008,0},
+dd1287[]={20022,0},
+dd1288[]={20031,0},
+dd1289[]={20057,0},
+dd1290[]={20101,0},
+dd1291[]={20108,0},
+dd1292[]={20128,0},
+dd1293[]={20154,0},
+dd1294[]={20799,0},
+dd1295[]={20837,0},
+dd1296[]={20843,0},
+dd1297[]={20866,0},
+dd1298[]={20886,0},
+dd1299[]={20907,0},
+dd1300[]={20960,0},
+dd1301[]={20981,0},
+dd1302[]={20992,0},
+dd1303[]={21147,0},
+dd1304[]={21241,0},
+dd1305[]={21269,0},
+dd1306[]={21274,0},
+dd1307[]={21304,0},
+dd1308[]={21313,0},
+dd1309[]={21340,0},
+dd1310[]={21353,0},
+dd1311[]={21378,0},
+dd1312[]={21430,0},
+dd1313[]={21448,0},
+dd1314[]={21475,0},
+dd1315[]={22231,0},
+dd1316[]={22303,0},
+dd1317[]={22763,0},
+dd1318[]={22786,0},
+dd1319[]={22794,0},
+dd1320[]={22805,0},
+dd1321[]={22823,0},
+dd1322[]={22899,0},
+dd1323[]={23376,0},
+dd1324[]={23424,0},
+dd1325[]={23544,0},
+dd1326[]={23567,0},
+dd1327[]={23586,0},
+dd1328[]={23608,0},
+dd1329[]={23662,0},
+dd1330[]={23665,0},
+dd1331[]={24027,0},
+dd1332[]={24037,0},
+dd1333[]={24049,0},
+dd1334[]={24062,0},
+dd1335[]={24178,0},
+dd1336[]={24186,0},
+dd1337[]={24191,0},
+dd1338[]={24308,0},
+dd1339[]={24318,0},
+dd1340[]={24331,0},
+dd1341[]={24339,0},
+dd1342[]={24400,0},
+dd1343[]={24417,0},
+dd1344[]={24435,0},
+dd1345[]={24515,0},
+dd1346[]={25096,0},
+dd1347[]={25142,0},
+dd1348[]={25163,0},
+dd1349[]={25903,0},
+dd1350[]={25908,0},
+dd1351[]={25991,0},
+dd1352[]={26007,0},
+dd1353[]={26020,0},
+dd1354[]={26041,0},
+dd1355[]={26080,0},
+dd1356[]={26085,0},
+dd1357[]={26352,0},
+dd1358[]={26376,0},
+dd1359[]={26408,0},
+dd1360[]={27424,0},
+dd1361[]={27490,0},
+dd1362[]={27513,0},
+dd1363[]={27571,0},
+dd1364[]={27595,0},
+dd1365[]={27604,0},
+dd1366[]={27611,0},
+dd1367[]={27663,0},
+dd1368[]={27668,0},
+dd1369[]={27700,0},
+dd1370[]={28779,0},
+dd1371[]={29226,0},
+dd1372[]={29238,0},
+dd1373[]={29243,0},
+dd1374[]={29247,0},
+dd1375[]={29255,0},
+dd1376[]={29273,0},
+dd1377[]={29275,0},
+dd1378[]={29356,0},
+dd1379[]={29572,0},
+dd1380[]={29577,0},
+dd1381[]={29916,0},
+dd1382[]={29926,0},
+dd1383[]={29976,0},
+dd1384[]={29983,0},
+dd1385[]={29992,0},
+dd1386[]={30000,0},
+dd1387[]={30091,0},
+dd1388[]={30098,0},
+dd1389[]={30326,0},
+dd1390[]={30333,0},
+dd1391[]={30382,0},
+dd1392[]={30399,0},
+dd1393[]={30446,0},
+dd1394[]={30683,0},
+dd1395[]={30690,0},
+dd1396[]={30707,0},
+dd1397[]={31034,0},
+dd1398[]={31160,0},
+dd1399[]={31166,0},
+dd1400[]={31348,0},
+dd1401[]={31435,0},
+dd1402[]={31481,0},
+dd1403[]={31859,0},
+dd1404[]={31992,0},
+dd1405[]={32566,0},
+dd1406[]={32593,0},
+dd1407[]={32650,0},
+dd1408[]={32701,0},
+dd1409[]={32769,0},
+dd1410[]={32780,0},
+dd1411[]={32786,0},
+dd1412[]={32819,0},
+dd1413[]={32895,0},
+dd1414[]={32905,0},
+dd1415[]={33251,0},
+dd1416[]={33258,0},
+dd1417[]={33267,0},
+dd1418[]={33276,0},
+dd1419[]={33292,0},
+dd1420[]={33307,0},
+dd1421[]={33311,0},
+dd1422[]={33390,0},
+dd1423[]={33394,0},
+dd1424[]={33400,0},
+dd1425[]={34381,0},
+dd1426[]={34411,0},
+dd1427[]={34880,0},
+dd1428[]={34892,0},
+dd1429[]={34915,0},
+dd1430[]={35198,0},
+dd1431[]={35211,0},
+dd1432[]={35282,0},
+dd1433[]={35328,0},
+dd1434[]={35895,0},
+dd1435[]={35910,0},
+dd1436[]={35925,0},
+dd1437[]={35960,0},
+dd1438[]={35997,0},
+dd1439[]={36196,0},
+dd1440[]={36208,0},
+dd1441[]={36275,0},
+dd1442[]={36523,0},
+dd1443[]={36554,0},
+dd1444[]={36763,0},
+dd1445[]={36784,0},
+dd1446[]={36789,0},
+dd1447[]={37009,0},
+dd1448[]={37193,0},
+dd1449[]={37318,0},
+dd1450[]={37324,0},
+dd1451[]={37329,0},
+dd1452[]={38263,0},
+dd1453[]={38272,0},
+dd1454[]={38428,0},
+dd1455[]={38582,0},
+dd1456[]={38585,0},
+dd1457[]={38632,0},
+dd1458[]={38737,0},
+dd1459[]={38750,0},
+dd1460[]={38754,0},
+dd1461[]={38761,0},
+dd1462[]={38859,0},
+dd1463[]={38893,0},
+dd1464[]={38899,0},
+dd1465[]={38913,0},
+dd1466[]={39080,0},
+dd1467[]={39131,0},
+dd1468[]={39135,0},
+dd1469[]={39318,0},
+dd1470[]={39321,0},
+dd1471[]={39340,0},
+dd1472[]={39592,0},
+dd1473[]={39640,0},
+dd1474[]={39647,0},
+dd1475[]={39717,0},
+dd1476[]={39727,0},
+dd1477[]={39730,0},
+dd1478[]={39740,0},
+dd1479[]={39770,0},
+dd1480[]={40165,0},
+dd1481[]={40565,0},
+dd1482[]={40575,0},
+dd1483[]={40613,0},
+dd1484[]={40635,0},
+dd1485[]={40643,0},
+dd1486[]={40653,0},
+dd1487[]={40657,0},
+dd1488[]={40697,0},
+dd1489[]={40701,0},
+dd1490[]={40718,0},
+dd1491[]={40723,0},
+dd1492[]={40736,0},
+dd1493[]={40763,0},
+dd1494[]={40778,0},
+dd1495[]={40786,0},
+dd1496[]={40845,0},
+dd1497[]={40860,0},
+dd1498[]={40864,0},
+dd1499[]={12306,0},
+dd1500[]={21316,0},
+dd1501[]={21317,0},
+dd1502[]={12363,12441,0},
+dd1503[]={12365,12441,0},
+dd1504[]={12367,12441,0},
+dd1505[]={12369,12441,0},
+dd1506[]={12371,12441,0},
+dd1507[]={12373,12441,0},
+dd1508[]={12375,12441,0},
+dd1509[]={12377,12441,0},
+dd1510[]={12379,12441,0},
+dd1511[]={12381,12441,0},
+dd1512[]={12383,12441,0},
+dd1513[]={12385,12441,0},
+dd1514[]={12388,12441,0},
+dd1515[]={12390,12441,0},
+dd1516[]={12392,12441,0},
+dd1517[]={12399,12441,0},
+dd1518[]={12399,12442,0},
+dd1519[]={12402,12441,0},
+dd1520[]={12402,12442,0},
+dd1521[]={12405,12441,0},
+dd1522[]={12405,12442,0},
+dd1523[]={12408,12441,0},
+dd1524[]={12408,12442,0},
+dd1525[]={12411,12441,0},
+dd1526[]={12411,12442,0},
+dd1527[]={12358,12441,0},
+dd1528[]={32,12441,0},
+dd1529[]={32,12442,0},
+dd1530[]={12445,12441,0},
+dd1531[]={12424,12426,0},
+dd1532[]={12459,12441,0},
+dd1533[]={12461,12441,0},
+dd1534[]={12463,12441,0},
+dd1535[]={12465,12441,0},
+dd1536[]={12467,12441,0},
+dd1537[]={12469,12441,0},
+dd1538[]={12471,12441,0},
+dd1539[]={12473,12441,0},
+dd1540[]={12475,12441,0},
+dd1541[]={12477,12441,0},
+dd1542[]={12479,12441,0},
+dd1543[]={12481,12441,0},
+dd1544[]={12484,12441,0},
+dd1545[]={12486,12441,0},
+dd1546[]={12488,12441,0},
+dd1547[]={12495,12441,0},
+dd1548[]={12495,12442,0},
+dd1549[]={12498,12441,0},
+dd1550[]={12498,12442,0},
+dd1551[]={12501,12441,0},
+dd1552[]={12501,12442,0},
+dd1553[]={12504,12441,0},
+dd1554[]={12504,12442,0},
+dd1555[]={12507,12441,0},
+dd1556[]={12507,12442,0},
+dd1557[]={12454,12441,0},
+dd1558[]={12527,12441,0},
+dd1559[]={12528,12441,0},
+dd1560[]={12529,12441,0},
+dd1561[]={12530,12441,0},
+dd1562[]={12541,12441,0},
+dd1563[]={12467,12488,0},
+dd1564[]={4352,0},
+dd1565[]={4353,0},
+dd1566[]={4522,0},
+dd1567[]={4354,0},
+dd1568[]={4524,0},
+dd1569[]={4525,0},
+dd1570[]={4355,0},
+dd1571[]={4356,0},
+dd1572[]={4357,0},
+dd1573[]={4528,0},
+dd1574[]={4529,0},
+dd1575[]={4530,0},
+dd1576[]={4531,0},
+dd1577[]={4532,0},
+dd1578[]={4533,0},
+dd1579[]={4378,0},
+dd1580[]={4358,0},
+dd1581[]={4359,0},
+dd1582[]={4360,0},
+dd1583[]={4385,0},
+dd1584[]={4361,0},
+dd1585[]={4362,0},
+dd1586[]={4363,0},
+dd1587[]={4364,0},
+dd1588[]={4365,0},
+dd1589[]={4366,0},
+dd1590[]={4367,0},
+dd1591[]={4368,0},
+dd1592[]={4369,0},
+dd1593[]={4370,0},
+dd1594[]={4449,0},
+dd1595[]={4450,0},
+dd1596[]={4451,0},
+dd1597[]={4452,0},
+dd1598[]={4453,0},
+dd1599[]={4454,0},
+dd1600[]={4455,0},
+dd1601[]={4456,0},
+dd1602[]={4457,0},
+dd1603[]={4458,0},
+dd1604[]={4459,0},
+dd1605[]={4460,0},
+dd1606[]={4461,0},
+dd1607[]={4462,0},
+dd1608[]={4463,0},
+dd1609[]={4464,0},
+dd1610[]={4465,0},
+dd1611[]={4466,0},
+dd1612[]={4467,0},
+dd1613[]={4468,0},
+dd1614[]={4469,0},
+dd1615[]={4448,0},
+dd1616[]={4372,0},
+dd1617[]={4373,0},
+dd1618[]={4551,0},
+dd1619[]={4552,0},
+dd1620[]={4556,0},
+dd1621[]={4558,0},
+dd1622[]={4563,0},
+dd1623[]={4567,0},
+dd1624[]={4569,0},
+dd1625[]={4380,0},
+dd1626[]={4573,0},
+dd1627[]={4575,0},
+dd1628[]={4381,0},
+dd1629[]={4382,0},
+dd1630[]={4384,0},
+dd1631[]={4386,0},
+dd1632[]={4387,0},
+dd1633[]={4391,0},
+dd1634[]={4393,0},
+dd1635[]={4395,0},
+dd1636[]={4396,0},
+dd1637[]={4397,0},
+dd1638[]={4398,0},
+dd1639[]={4399,0},
+dd1640[]={4402,0},
+dd1641[]={4406,0},
+dd1642[]={4416,0},
+dd1643[]={4423,0},
+dd1644[]={4428,0},
+dd1645[]={4593,0},
+dd1646[]={4594,0},
+dd1647[]={4439,0},
+dd1648[]={4440,0},
+dd1649[]={4441,0},
+dd1650[]={4484,0},
+dd1651[]={4485,0},
+dd1652[]={4488,0},
+dd1653[]={4497,0},
+dd1654[]={4498,0},
+dd1655[]={4500,0},
+dd1656[]={4510,0},
+dd1657[]={4513,0},
+dd1658[]={19977,0},
+dd1659[]={22235,0},
+dd1660[]={19978,0},
+dd1661[]={20013,0},
+dd1662[]={19979,0},
+dd1663[]={30002,0},
+dd1664[]={19993,0},
+dd1665[]={19969,0},
+dd1666[]={22825,0},
+dd1667[]={22320,0},
+dd1668[]={40,4352,41,0},
+dd1669[]={40,4354,41,0},
+dd1670[]={40,4355,41,0},
+dd1671[]={40,4357,41,0},
+dd1672[]={40,4358,41,0},
+dd1673[]={40,4359,41,0},
+dd1674[]={40,4361,41,0},
+dd1675[]={40,4363,41,0},
+dd1676[]={40,4364,41,0},
+dd1677[]={40,4366,41,0},
+dd1678[]={40,4367,41,0},
+dd1679[]={40,4368,41,0},
+dd1680[]={40,4369,41,0},
+dd1681[]={40,4370,41,0},
+dd1682[]={40,4352,4449,41,0},
+dd1683[]={40,4354,4449,41,0},
+dd1684[]={40,4355,4449,41,0},
+dd1685[]={40,4357,4449,41,0},
+dd1686[]={40,4358,4449,41,0},
+dd1687[]={40,4359,4449,41,0},
+dd1688[]={40,4361,4449,41,0},
+dd1689[]={40,4363,4449,41,0},
+dd1690[]={40,4364,4449,41,0},
+dd1691[]={40,4366,4449,41,0},
+dd1692[]={40,4367,4449,41,0},
+dd1693[]={40,4368,4449,41,0},
+dd1694[]={40,4369,4449,41,0},
+dd1695[]={40,4370,4449,41,0},
+dd1696[]={40,4364,4462,41,0},
+dd1697[]={40,4363,4457,4364,4453,4523,41,0},
+dd1698[]={40,4363,4457,4370,4462,41,0},
+dd1699[]={40,19968,41,0},
+dd1700[]={40,20108,41,0},
+dd1701[]={40,19977,41,0},
+dd1702[]={40,22235,41,0},
+dd1703[]={40,20116,41,0},
+dd1704[]={40,20845,41,0},
+dd1705[]={40,19971,41,0},
+dd1706[]={40,20843,41,0},
+dd1707[]={40,20061,41,0},
+dd1708[]={40,21313,41,0},
+dd1709[]={40,26376,41,0},
+dd1710[]={40,28779,41,0},
+dd1711[]={40,27700,41,0},
+dd1712[]={40,26408,41,0},
+dd1713[]={40,37329,41,0},
+dd1714[]={40,22303,41,0},
+dd1715[]={40,26085,41,0},
+dd1716[]={40,26666,41,0},
+dd1717[]={40,26377,41,0},
+dd1718[]={40,31038,41,0},
+dd1719[]={40,21517,41,0},
+dd1720[]={40,29305,41,0},
+dd1721[]={40,36001,41,0},
+dd1722[]={40,31069,41,0},
+dd1723[]={40,21172,41,0},
+dd1724[]={40,20195,41,0},
+dd1725[]={40,21628,41,0},
+dd1726[]={40,23398,41,0},
+dd1727[]={40,30435,41,0},
+dd1728[]={40,20225,41,0},
+dd1729[]={40,36039,41,0},
+dd1730[]={40,21332,41,0},
+dd1731[]={40,31085,41,0},
+dd1732[]={40,20241,41,0},
+dd1733[]={40,33258,41,0},
+dd1734[]={40,33267,41,0},
+dd1735[]={21839,0},
+dd1736[]={24188,0},
+dd1737[]={31631,0},
+dd1738[]={80,84,69,0},
+dd1739[]={50,49,0},
+dd1740[]={50,50,0},
+dd1741[]={50,51,0},
+dd1742[]={50,52,0},
+dd1743[]={50,53,0},
+dd1744[]={50,54,0},
+dd1745[]={50,55,0},
+dd1746[]={50,56,0},
+dd1747[]={50,57,0},
+dd1748[]={51,48,0},
+dd1749[]={51,49,0},
+dd1750[]={51,50,0},
+dd1751[]={51,51,0},
+dd1752[]={51,52,0},
+dd1753[]={51,53,0},
+dd1754[]={4352,4449,0},
+dd1755[]={4354,4449,0},
+dd1756[]={4355,4449,0},
+dd1757[]={4357,4449,0},
+dd1758[]={4358,4449,0},
+dd1759[]={4359,4449,0},
+dd1760[]={4361,4449,0},
+dd1761[]={4363,4449,0},
+dd1762[]={4364,4449,0},
+dd1763[]={4366,4449,0},
+dd1764[]={4367,4449,0},
+dd1765[]={4368,4449,0},
+dd1766[]={4369,4449,0},
+dd1767[]={4370,4449,0},
+dd1768[]={4366,4449,4535,4352,4457,0},
+dd1769[]={4364,4462,4363,4468,0},
+dd1770[]={4363,4462,0},
+dd1771[]={20116,0},
+dd1772[]={20845,0},
+dd1773[]={19971,0},
+dd1774[]={20061,0},
+dd1775[]={26666,0},
+dd1776[]={26377,0},
+dd1777[]={31038,0},
+dd1778[]={21517,0},
+dd1779[]={29305,0},
+dd1780[]={36001,0},
+dd1781[]={31069,0},
+dd1782[]={21172,0},
+dd1783[]={31192,0},
+dd1784[]={30007,0},
+dd1785[]={36969,0},
+dd1786[]={20778,0},
+dd1787[]={21360,0},
+dd1788[]={27880,0},
+dd1789[]={38917,0},
+dd1790[]={20241,0},
+dd1791[]={20889,0},
+dd1792[]={27491,0},
+dd1793[]={24038,0},
+dd1794[]={21491,0},
+dd1795[]={21307,0},
+dd1796[]={23447,0},
+dd1797[]={23398,0},
+dd1798[]={30435,0},
+dd1799[]={20225,0},
+dd1800[]={36039,0},
+dd1801[]={21332,0},
+dd1802[]={22812,0},
+dd1803[]={51,54,0},
+dd1804[]={51,55,0},
+dd1805[]={51,56,0},
+dd1806[]={51,57,0},
+dd1807[]={52,48,0},
+dd1808[]={52,49,0},
+dd1809[]={52,50,0},
+dd1810[]={52,51,0},
+dd1811[]={52,52,0},
+dd1812[]={52,53,0},
+dd1813[]={52,54,0},
+dd1814[]={52,55,0},
+dd1815[]={52,56,0},
+dd1816[]={52,57,0},
+dd1817[]={53,48,0},
+dd1818[]={49,26376,0},
+dd1819[]={50,26376,0},
+dd1820[]={51,26376,0},
+dd1821[]={52,26376,0},
+dd1822[]={53,26376,0},
+dd1823[]={54,26376,0},
+dd1824[]={55,26376,0},
+dd1825[]={56,26376,0},
+dd1826[]={57,26376,0},
+dd1827[]={49,48,26376,0},
+dd1828[]={49,49,26376,0},
+dd1829[]={49,50,26376,0},
+dd1830[]={72,103,0},
+dd1831[]={101,114,103,0},
+dd1832[]={101,86,0},
+dd1833[]={76,84,68,0},
+dd1834[]={12450,0},
+dd1835[]={12452,0},
+dd1836[]={12454,0},
+dd1837[]={12456,0},
+dd1838[]={12458,0},
+dd1839[]={12459,0},
+dd1840[]={12461,0},
+dd1841[]={12463,0},
+dd1842[]={12465,0},
+dd1843[]={12467,0},
+dd1844[]={12469,0},
+dd1845[]={12471,0},
+dd1846[]={12473,0},
+dd1847[]={12475,0},
+dd1848[]={12477,0},
+dd1849[]={12479,0},
+dd1850[]={12481,0},
+dd1851[]={12484,0},
+dd1852[]={12486,0},
+dd1853[]={12488,0},
+dd1854[]={12490,0},
+dd1855[]={12491,0},
+dd1856[]={12492,0},
+dd1857[]={12493,0},
+dd1858[]={12494,0},
+dd1859[]={12495,0},
+dd1860[]={12498,0},
+dd1861[]={12501,0},
+dd1862[]={12504,0},
+dd1863[]={12507,0},
+dd1864[]={12510,0},
+dd1865[]={12511,0},
+dd1866[]={12512,0},
+dd1867[]={12513,0},
+dd1868[]={12514,0},
+dd1869[]={12516,0},
+dd1870[]={12518,0},
+dd1871[]={12520,0},
+dd1872[]={12521,0},
+dd1873[]={12522,0},
+dd1874[]={12523,0},
+dd1875[]={12524,0},
+dd1876[]={12525,0},
+dd1877[]={12527,0},
+dd1878[]={12528,0},
+dd1879[]={12529,0},
+dd1880[]={12530,0},
+dd1881[]={12450,12497,12540,12488,0},
+dd1882[]={12450,12523,12501,12449,0},
+dd1883[]={12450,12531,12506,12450,0},
+dd1884[]={12450,12540,12523,0},
+dd1885[]={12452,12491,12531,12464,0},
+dd1886[]={12452,12531,12481,0},
+dd1887[]={12454,12457,12531,0},
+dd1888[]={12456,12473,12463,12540,12489,0},
+dd1889[]={12456,12540,12459,12540,0},
+dd1890[]={12458,12531,12473,0},
+dd1891[]={12458,12540,12512,0},
+dd1892[]={12459,12452,12522,0},
+dd1893[]={12459,12521,12483,12488,0},
+dd1894[]={12459,12525,12522,12540,0},
+dd1895[]={12460,12525,12531,0},
+dd1896[]={12460,12531,12510,0},
+dd1897[]={12462,12460,0},
+dd1898[]={12462,12491,12540,0},
+dd1899[]={12461,12517,12522,12540,0},
+dd1900[]={12462,12523,12480,12540,0},
+dd1901[]={12461,12525,0},
+dd1902[]={12461,12525,12464,12521,12512,0},
+dd1903[]={12461,12525,12513,12540,12488,12523,0},
+dd1904[]={12461,12525,12527,12483,12488,0},
+dd1905[]={12464,12521,12512,0},
+dd1906[]={12464,12521,12512,12488,12531,0},
+dd1907[]={12463,12523,12476,12452,12525,0},
+dd1908[]={12463,12525,12540,12493,0},
+dd1909[]={12465,12540,12473,0},
+dd1910[]={12467,12523,12490,0},
+dd1911[]={12467,12540,12509,0},
+dd1912[]={12469,12452,12463,12523,0},
+dd1913[]={12469,12531,12481,12540,12512,0},
+dd1914[]={12471,12522,12531,12464,0},
+dd1915[]={12475,12531,12481,0},
+dd1916[]={12475,12531,12488,0},
+dd1917[]={12480,12540,12473,0},
+dd1918[]={12487,12471,0},
+dd1919[]={12489,12523,0},
+dd1920[]={12488,12531,0},
+dd1921[]={12490,12494,0},
+dd1922[]={12494,12483,12488,0},
+dd1923[]={12495,12452,12484,0},
+dd1924[]={12497,12540,12475,12531,12488,0},
+dd1925[]={12497,12540,12484,0},
+dd1926[]={12496,12540,12524,12523,0},
+dd1927[]={12500,12450,12473,12488,12523,0},
+dd1928[]={12500,12463,12523,0},
+dd1929[]={12500,12467,0},
+dd1930[]={12499,12523,0},
+dd1931[]={12501,12449,12521,12483,12489,0},
+dd1932[]={12501,12451,12540,12488,0},
+dd1933[]={12502,12483,12471,12455,12523,0},
+dd1934[]={12501,12521,12531,0},
+dd1935[]={12504,12463,12479,12540,12523,0},
+dd1936[]={12506,12477,0},
+dd1937[]={12506,12491,12498,0},
+dd1938[]={12504,12523,12484,0},
+dd1939[]={12506,12531,12473,0},
+dd1940[]={12506,12540,12472,0},
+dd1941[]={12505,12540,12479,0},
+dd1942[]={12509,12452,12531,12488,0},
+dd1943[]={12508,12523,12488,0},
+dd1944[]={12507,12531,0},
+dd1945[]={12509,12531,12489,0},
+dd1946[]={12507,12540,12523,0},
+dd1947[]={12507,12540,12531,0},
+dd1948[]={12510,12452,12463,12525,0},
+dd1949[]={12510,12452,12523,0},
+dd1950[]={12510,12483,12495,0},
+dd1951[]={12510,12523,12463,0},
+dd1952[]={12510,12531,12471,12519,12531,0},
+dd1953[]={12511,12463,12525,12531,0},
+dd1954[]={12511,12522,0},
+dd1955[]={12511,12522,12496,12540,12523,0},
+dd1956[]={12513,12460,0},
+dd1957[]={12513,12460,12488,12531,0},
+dd1958[]={12513,12540,12488,12523,0},
+dd1959[]={12516,12540,12489,0},
+dd1960[]={12516,12540,12523,0},
+dd1961[]={12518,12450,12531,0},
+dd1962[]={12522,12483,12488,12523,0},
+dd1963[]={12522,12521,0},
+dd1964[]={12523,12500,12540,0},
+dd1965[]={12523,12540,12502,12523,0},
+dd1966[]={12524,12512,0},
+dd1967[]={12524,12531,12488,12466,12531,0},
+dd1968[]={12527,12483,12488,0},
+dd1969[]={48,28857,0},
+dd1970[]={49,28857,0},
+dd1971[]={50,28857,0},
+dd1972[]={51,28857,0},
+dd1973[]={52,28857,0},
+dd1974[]={53,28857,0},
+dd1975[]={54,28857,0},
+dd1976[]={55,28857,0},
+dd1977[]={56,28857,0},
+dd1978[]={57,28857,0},
+dd1979[]={49,48,28857,0},
+dd1980[]={49,49,28857,0},
+dd1981[]={49,50,28857,0},
+dd1982[]={49,51,28857,0},
+dd1983[]={49,52,28857,0},
+dd1984[]={49,53,28857,0},
+dd1985[]={49,54,28857,0},
+dd1986[]={49,55,28857,0},
+dd1987[]={49,56,28857,0},
+dd1988[]={49,57,28857,0},
+dd1989[]={50,48,28857,0},
+dd1990[]={50,49,28857,0},
+dd1991[]={50,50,28857,0},
+dd1992[]={50,51,28857,0},
+dd1993[]={50,52,28857,0},
+dd1994[]={104,80,97,0},
+dd1995[]={100,97,0},
+dd1996[]={65,85,0},
+dd1997[]={98,97,114,0},
+dd1998[]={111,86,0},
+dd1999[]={112,99,0},
+dd2000[]={100,109,0},
+dd2001[]={100,109,178,0},
+dd2002[]={100,109,179,0},
+dd2003[]={73,85,0},
+dd2004[]={24179,25104,0},
+dd2005[]={26157,21644,0},
+dd2006[]={22823,27491,0},
+dd2007[]={26126,27835,0},
+dd2008[]={26666,24335,20250,31038,0},
+dd2009[]={112,65,0},
+dd2010[]={110,65,0},
+dd2011[]={956,65,0},
+dd2012[]={109,65,0},
+dd2013[]={107,65,0},
+dd2014[]={75,66,0},
+dd2015[]={77,66,0},
+dd2016[]={71,66,0},
+dd2017[]={99,97,108,0},
+dd2018[]={107,99,97,108,0},
+dd2019[]={112,70,0},
+dd2020[]={110,70,0},
+dd2021[]={956,70,0},
+dd2022[]={956,103,0},
+dd2023[]={109,103,0},
+dd2024[]={107,103,0},
+dd2025[]={72,122,0},
+dd2026[]={107,72,122,0},
+dd2027[]={77,72,122,0},
+dd2028[]={71,72,122,0},
+dd2029[]={84,72,122,0},
+dd2030[]={956,8467,0},
+dd2031[]={109,8467,0},
+dd2032[]={100,8467,0},
+dd2033[]={107,8467,0},
+dd2034[]={102,109,0},
+dd2035[]={110,109,0},
+dd2036[]={956,109,0},
+dd2037[]={109,109,0},
+dd2038[]={99,109,0},
+dd2039[]={107,109,0},
+dd2040[]={109,109,178,0},
+dd2041[]={99,109,178,0},
+dd2042[]={109,178,0},
+dd2043[]={107,109,178,0},
+dd2044[]={109,109,179,0},
+dd2045[]={99,109,179,0},
+dd2046[]={109,179,0},
+dd2047[]={107,109,179,0},
+dd2048[]={109,8725,115,0},
+dd2049[]={109,8725,115,178,0},
+dd2050[]={80,97,0},
+dd2051[]={107,80,97,0},
+dd2052[]={77,80,97,0},
+dd2053[]={71,80,97,0},
+dd2054[]={114,97,100,0},
+dd2055[]={114,97,100,8725,115,0},
+dd2056[]={114,97,100,8725,115,178,0},
+dd2057[]={112,115,0},
+dd2058[]={110,115,0},
+dd2059[]={956,115,0},
+dd2060[]={109,115,0},
+dd2061[]={112,86,0},
+dd2062[]={110,86,0},
+dd2063[]={956,86,0},
+dd2064[]={109,86,0},
+dd2065[]={107,86,0},
+dd2066[]={77,86,0},
+dd2067[]={112,87,0},
+dd2068[]={110,87,0},
+dd2069[]={956,87,0},
+dd2070[]={109,87,0},
+dd2071[]={107,87,0},
+dd2072[]={77,87,0},
+dd2073[]={107,937,0},
+dd2074[]={77,937,0},
+dd2075[]={97,46,109,46,0},
+dd2076[]={66,113,0},
+dd2077[]={99,99,0},
+dd2078[]={99,100,0},
+dd2079[]={67,8725,107,103,0},
+dd2080[]={67,111,46,0},
+dd2081[]={100,66,0},
+dd2082[]={71,121,0},
+dd2083[]={104,97,0},
+dd2084[]={72,80,0},
+dd2085[]={105,110,0},
+dd2086[]={75,75,0},
+dd2087[]={75,77,0},
+dd2088[]={107,116,0},
+dd2089[]={108,109,0},
+dd2090[]={108,110,0},
+dd2091[]={108,111,103,0},
+dd2092[]={108,120,0},
+dd2093[]={109,98,0},
+dd2094[]={109,105,108,0},
+dd2095[]={109,111,108,0},
+dd2096[]={80,72,0},
+dd2097[]={112,46,109,46,0},
+dd2098[]={80,80,77,0},
+dd2099[]={80,82,0},
+dd2100[]={115,114,0},
+dd2101[]={83,118,0},
+dd2102[]={87,98,0},
+dd2103[]={86,8725,109,0},
+dd2104[]={65,8725,109,0},
+dd2105[]={49,26085,0},
+dd2106[]={50,26085,0},
+dd2107[]={51,26085,0},
+dd2108[]={52,26085,0},
+dd2109[]={53,26085,0},
+dd2110[]={54,26085,0},
+dd2111[]={55,26085,0},
+dd2112[]={56,26085,0},
+dd2113[]={57,26085,0},
+dd2114[]={49,48,26085,0},
+dd2115[]={49,49,26085,0},
+dd2116[]={49,50,26085,0},
+dd2117[]={49,51,26085,0},
+dd2118[]={49,52,26085,0},
+dd2119[]={49,53,26085,0},
+dd2120[]={49,54,26085,0},
+dd2121[]={49,55,26085,0},
+dd2122[]={49,56,26085,0},
+dd2123[]={49,57,26085,0},
+dd2124[]={50,48,26085,0},
+dd2125[]={50,49,26085,0},
+dd2126[]={50,50,26085,0},
+dd2127[]={50,51,26085,0},
+dd2128[]={50,52,26085,0},
+dd2129[]={50,53,26085,0},
+dd2130[]={50,54,26085,0},
+dd2131[]={50,55,26085,0},
+dd2132[]={50,56,26085,0},
+dd2133[]={50,57,26085,0},
+dd2134[]={51,48,26085,0},
+dd2135[]={51,49,26085,0},
+dd2136[]={103,97,108,0},
+dd2137[]={42863,0},
+dd2138[]={35912,0},
+dd2139[]={26356,0},
+dd2140[]={36040,0},
+dd2141[]={28369,0},
+dd2142[]={20018,0},
+dd2143[]={21477,0},
+dd2144[]={22865,0},
+dd2145[]={21895,0},
+dd2146[]={22856,0},
+dd2147[]={25078,0},
+dd2148[]={30313,0},
+dd2149[]={32645,0},
+dd2150[]={34367,0},
+dd2151[]={34746,0},
+dd2152[]={35064,0},
+dd2153[]={37007,0},
+dd2154[]={27138,0},
+dd2155[]={27931,0},
+dd2156[]={28889,0},
+dd2157[]={29662,0},
+dd2158[]={33853,0},
+dd2159[]={37226,0},
+dd2160[]={39409,0},
+dd2161[]={20098,0},
+dd2162[]={21365,0},
+dd2163[]={27396,0},
+dd2164[]={29211,0},
+dd2165[]={34349,0},
+dd2166[]={40478,0},
+dd2167[]={23888,0},
+dd2168[]={28651,0},
+dd2169[]={34253,0},
+dd2170[]={35172,0},
+dd2171[]={25289,0},
+dd2172[]={33240,0},
+dd2173[]={34847,0},
+dd2174[]={24266,0},
+dd2175[]={26391,0},
+dd2176[]={28010,0},
+dd2177[]={29436,0},
+dd2178[]={37070,0},
+dd2179[]={20358,0},
+dd2180[]={20919,0},
+dd2181[]={21214,0},
+dd2182[]={25796,0},
+dd2183[]={27347,0},
+dd2184[]={29200,0},
+dd2185[]={30439,0},
+dd2186[]={34310,0},
+dd2187[]={34396,0},
+dd2188[]={36335,0},
+dd2189[]={38706,0},
+dd2190[]={39791,0},
+dd2191[]={40442,0},
+dd2192[]={30860,0},
+dd2193[]={31103,0},
+dd2194[]={32160,0},
+dd2195[]={33737,0},
+dd2196[]={37636,0},
+dd2197[]={35542,0},
+dd2198[]={22751,0},
+dd2199[]={24324,0},
+dd2200[]={31840,0},
+dd2201[]={32894,0},
+dd2202[]={29282,0},
+dd2203[]={30922,0},
+dd2204[]={36034,0},
+dd2205[]={38647,0},
+dd2206[]={22744,0},
+dd2207[]={23650,0},
+dd2208[]={27155,0},
+dd2209[]={28122,0},
+dd2210[]={28431,0},
+dd2211[]={32047,0},
+dd2212[]={32311,0},
+dd2213[]={38475,0},
+dd2214[]={21202,0},
+dd2215[]={32907,0},
+dd2216[]={20956,0},
+dd2217[]={20940,0},
+dd2218[]={31260,0},
+dd2219[]={32190,0},
+dd2220[]={33777,0},
+dd2221[]={38517,0},
+dd2222[]={35712,0},
+dd2223[]={25295,0},
+dd2224[]={35582,0},
+dd2225[]={20025,0},
+dd2226[]={23527,0},
+dd2227[]={24594,0},
+dd2228[]={29575,0},
+dd2229[]={30064,0},
+dd2230[]={21271,0},
+dd2231[]={30971,0},
+dd2232[]={20415,0},
+dd2233[]={24489,0},
+dd2234[]={19981,0},
+dd2235[]={27852,0},
+dd2236[]={25976,0},
+dd2237[]={32034,0},
+dd2238[]={21443,0},
+dd2239[]={22622,0},
+dd2240[]={30465,0},
+dd2241[]={33865,0},
+dd2242[]={35498,0},
+dd2243[]={27578,0},
+dd2244[]={27784,0},
+dd2245[]={25342,0},
+dd2246[]={33509,0},
+dd2247[]={25504,0},
+dd2248[]={30053,0},
+dd2249[]={20142,0},
+dd2250[]={20841,0},
+dd2251[]={20937,0},
+dd2252[]={26753,0},
+dd2253[]={31975,0},
+dd2254[]={33391,0},
+dd2255[]={35538,0},
+dd2256[]={37327,0},
+dd2257[]={21237,0},
+dd2258[]={21570,0},
+dd2259[]={24300,0},
+dd2260[]={26053,0},
+dd2261[]={28670,0},
+dd2262[]={31018,0},
+dd2263[]={38317,0},
+dd2264[]={39530,0},
+dd2265[]={40599,0},
+dd2266[]={40654,0},
+dd2267[]={26310,0},
+dd2268[]={27511,0},
+dd2269[]={36706,0},
+dd2270[]={24180,0},
+dd2271[]={24976,0},
+dd2272[]={25088,0},
+dd2273[]={25754,0},
+dd2274[]={28451,0},
+dd2275[]={29001,0},
+dd2276[]={29833,0},
+dd2277[]={31178,0},
+dd2278[]={32244,0},
+dd2279[]={32879,0},
+dd2280[]={36646,0},
+dd2281[]={34030,0},
+dd2282[]={36899,0},
+dd2283[]={37706,0},
+dd2284[]={21015,0},
+dd2285[]={21155,0},
+dd2286[]={21693,0},
+dd2287[]={28872,0},
+dd2288[]={35010,0},
+dd2289[]={24265,0},
+dd2290[]={24565,0},
+dd2291[]={25467,0},
+dd2292[]={27566,0},
+dd2293[]={31806,0},
+dd2294[]={29557,0},
+dd2295[]={20196,0},
+dd2296[]={22265,0},
+dd2297[]={23994,0},
+dd2298[]={24604,0},
+dd2299[]={29618,0},
+dd2300[]={29801,0},
+dd2301[]={32666,0},
+dd2302[]={32838,0},
+dd2303[]={37428,0},
+dd2304[]={38646,0},
+dd2305[]={38728,0},
+dd2306[]={38936,0},
+dd2307[]={20363,0},
+dd2308[]={31150,0},
+dd2309[]={37300,0},
+dd2310[]={38584,0},
+dd2311[]={24801,0},
+dd2312[]={20102,0},
+dd2313[]={20698,0},
+dd2314[]={23534,0},
+dd2315[]={23615,0},
+dd2316[]={26009,0},
+dd2317[]={29134,0},
+dd2318[]={30274,0},
+dd2319[]={34044,0},
+dd2320[]={36988,0},
+dd2321[]={26248,0},
+dd2322[]={38446,0},
+dd2323[]={21129,0},
+dd2324[]={26491,0},
+dd2325[]={26611,0},
+dd2326[]={27969,0},
+dd2327[]={28316,0},
+dd2328[]={29705,0},
+dd2329[]={30041,0},
+dd2330[]={30827,0},
+dd2331[]={32016,0},
+dd2332[]={39006,0},
+dd2333[]={25134,0},
+dd2334[]={38520,0},
+dd2335[]={20523,0},
+dd2336[]={23833,0},
+dd2337[]={28138,0},
+dd2338[]={36650,0},
+dd2339[]={24459,0},
+dd2340[]={24900,0},
+dd2341[]={26647,0},
+dd2342[]={38534,0},
+dd2343[]={21033,0},
+dd2344[]={21519,0},
+dd2345[]={23653,0},
+dd2346[]={26131,0},
+dd2347[]={26446,0},
+dd2348[]={26792,0},
+dd2349[]={27877,0},
+dd2350[]={29702,0},
+dd2351[]={30178,0},
+dd2352[]={32633,0},
+dd2353[]={35023,0},
+dd2354[]={35041,0},
+dd2355[]={38626,0},
+dd2356[]={21311,0},
+dd2357[]={28346,0},
+dd2358[]={21533,0},
+dd2359[]={29136,0},
+dd2360[]={29848,0},
+dd2361[]={34298,0},
+dd2362[]={38563,0},
+dd2363[]={40023,0},
+dd2364[]={40607,0},
+dd2365[]={26519,0},
+dd2366[]={28107,0},
+dd2367[]={33256,0},
+dd2368[]={31520,0},
+dd2369[]={31890,0},
+dd2370[]={29376,0},
+dd2371[]={28825,0},
+dd2372[]={35672,0},
+dd2373[]={20160,0},
+dd2374[]={33590,0},
+dd2375[]={21050,0},
+dd2376[]={20999,0},
+dd2377[]={24230,0},
+dd2378[]={25299,0},
+dd2379[]={31958,0},
+dd2380[]={23429,0},
+dd2381[]={27934,0},
+dd2382[]={26292,0},
+dd2383[]={36667,0},
+dd2384[]={38477,0},
+dd2385[]={24275,0},
+dd2386[]={20800,0},
+dd2387[]={21952,0},
+dd2388[]={22618,0},
+dd2389[]={26228,0},
+dd2390[]={20958,0},
+dd2391[]={29482,0},
+dd2392[]={30410,0},
+dd2393[]={31036,0},
+dd2394[]={31070,0},
+dd2395[]={31077,0},
+dd2396[]={31119,0},
+dd2397[]={38742,0},
+dd2398[]={31934,0},
+dd2399[]={34322,0},
+dd2400[]={35576,0},
+dd2401[]={36920,0},
+dd2402[]={37117,0},
+dd2403[]={39151,0},
+dd2404[]={39164,0},
+dd2405[]={39208,0},
+dd2406[]={40372,0},
+dd2407[]={20398,0},
+dd2408[]={20711,0},
+dd2409[]={20813,0},
+dd2410[]={21193,0},
+dd2411[]={21220,0},
+dd2412[]={21329,0},
+dd2413[]={21917,0},
+dd2414[]={22022,0},
+dd2415[]={22120,0},
+dd2416[]={22592,0},
+dd2417[]={22696,0},
+dd2418[]={23652,0},
+dd2419[]={24724,0},
+dd2420[]={24936,0},
+dd2421[]={24974,0},
+dd2422[]={25074,0},
+dd2423[]={25935,0},
+dd2424[]={26082,0},
+dd2425[]={26257,0},
+dd2426[]={26757,0},
+dd2427[]={28023,0},
+dd2428[]={28186,0},
+dd2429[]={28450,0},
+dd2430[]={29038,0},
+dd2431[]={29227,0},
+dd2432[]={29730,0},
+dd2433[]={30865,0},
+dd2434[]={31049,0},
+dd2435[]={31048,0},
+dd2436[]={31056,0},
+dd2437[]={31062,0},
+dd2438[]={31117,0},
+dd2439[]={31118,0},
+dd2440[]={31296,0},
+dd2441[]={31361,0},
+dd2442[]={31680,0},
+dd2443[]={32265,0},
+dd2444[]={32321,0},
+dd2445[]={32626,0},
+dd2446[]={32773,0},
+dd2447[]={33261,0},
+dd2448[]={33401,0},
+dd2449[]={33879,0},
+dd2450[]={35088,0},
+dd2451[]={35222,0},
+dd2452[]={35585,0},
+dd2453[]={35641,0},
+dd2454[]={36051,0},
+dd2455[]={36104,0},
+dd2456[]={36790,0},
+dd2457[]={38627,0},
+dd2458[]={38911,0},
+dd2459[]={38971,0},
+dd2460[]={24693,0},
+dd2461[]={148206,0},
+dd2462[]={33304,0},
+dd2463[]={20006,0},
+dd2464[]={20917,0},
+dd2465[]={20840,0},
+dd2466[]={20352,0},
+dd2467[]={20805,0},
+dd2468[]={20864,0},
+dd2469[]={21191,0},
+dd2470[]={21242,0},
+dd2471[]={21845,0},
+dd2472[]={21913,0},
+dd2473[]={21986,0},
+dd2474[]={22707,0},
+dd2475[]={22852,0},
+dd2476[]={22868,0},
+dd2477[]={23138,0},
+dd2478[]={23336,0},
+dd2479[]={24274,0},
+dd2480[]={24281,0},
+dd2481[]={24425,0},
+dd2482[]={24493,0},
+dd2483[]={24792,0},
+dd2484[]={24910,0},
+dd2485[]={24840,0},
+dd2486[]={24928,0},
+dd2487[]={25140,0},
+dd2488[]={25540,0},
+dd2489[]={25628,0},
+dd2490[]={25682,0},
+dd2491[]={25942,0},
+dd2492[]={26395,0},
+dd2493[]={26454,0},
+dd2494[]={28379,0},
+dd2495[]={28363,0},
+dd2496[]={28702,0},
+dd2497[]={30631,0},
+dd2498[]={29237,0},
+dd2499[]={29359,0},
+dd2500[]={29809,0},
+dd2501[]={29958,0},
+dd2502[]={30011,0},
+dd2503[]={30237,0},
+dd2504[]={30239,0},
+dd2505[]={30427,0},
+dd2506[]={30452,0},
+dd2507[]={30538,0},
+dd2508[]={30528,0},
+dd2509[]={30924,0},
+dd2510[]={31409,0},
+dd2511[]={31867,0},
+dd2512[]={32091,0},
+dd2513[]={32574,0},
+dd2514[]={33618,0},
+dd2515[]={33775,0},
+dd2516[]={34681,0},
+dd2517[]={35137,0},
+dd2518[]={35206,0},
+dd2519[]={35519,0},
+dd2520[]={35531,0},
+dd2521[]={35565,0},
+dd2522[]={35722,0},
+dd2523[]={36664,0},
+dd2524[]={36978,0},
+dd2525[]={37273,0},
+dd2526[]={37494,0},
+dd2527[]={38524,0},
+dd2528[]={38875,0},
+dd2529[]={38923,0},
+dd2530[]={39698,0},
+dd2531[]={141386,0},
+dd2532[]={141380,0},
+dd2533[]={144341,0},
+dd2534[]={15261,0},
+dd2535[]={16408,0},
+dd2536[]={16441,0},
+dd2537[]={152137,0},
+dd2538[]={154832,0},
+dd2539[]={163539,0},
+dd2540[]={40771,0},
+dd2541[]={40846,0},
+dd2542[]={102,102,0},
+dd2543[]={102,105,0},
+dd2544[]={102,108,0},
+dd2545[]={102,102,105,0},
+dd2546[]={102,102,108,0},
+dd2547[]={383,116,0},
+dd2548[]={115,116,0},
+dd2549[]={1396,1398,0},
+dd2550[]={1396,1381,0},
+dd2551[]={1396,1387,0},
+dd2552[]={1406,1398,0},
+dd2553[]={1396,1389,0},
+dd2554[]={1497,1460,0},
+dd2555[]={1522,1463,0},
+dd2556[]={1506,0},
+dd2557[]={1492,0},
+dd2558[]={1499,0},
+dd2559[]={1500,0},
+dd2560[]={1501,0},
+dd2561[]={1512,0},
+dd2562[]={1514,0},
+dd2563[]={1513,1473,0},
+dd2564[]={1513,1474,0},
+dd2565[]={64329,1473,0},
+dd2566[]={64329,1474,0},
+dd2567[]={1488,1463,0},
+dd2568[]={1488,1464,0},
+dd2569[]={1488,1468,0},
+dd2570[]={1489,1468,0},
+dd2571[]={1490,1468,0},
+dd2572[]={1491,1468,0},
+dd2573[]={1492,1468,0},
+dd2574[]={1493,1468,0},
+dd2575[]={1494,1468,0},
+dd2576[]={1496,1468,0},
+dd2577[]={1497,1468,0},
+dd2578[]={1498,1468,0},
+dd2579[]={1499,1468,0},
+dd2580[]={1500,1468,0},
+dd2581[]={1502,1468,0},
+dd2582[]={1504,1468,0},
+dd2583[]={1505,1468,0},
+dd2584[]={1507,1468,0},
+dd2585[]={1508,1468,0},
+dd2586[]={1510,1468,0},
+dd2587[]={1511,1468,0},
+dd2588[]={1512,1468,0},
+dd2589[]={1513,1468,0},
+dd2590[]={1514,1468,0},
+dd2591[]={1493,1465,0},
+dd2592[]={1489,1471,0},
+dd2593[]={1499,1471,0},
+dd2594[]={1508,1471,0},
+dd2595[]={1488,1500,0},
+dd2596[]={1649,0},
+dd2597[]={1659,0},
+dd2598[]={1662,0},
+dd2599[]={1664,0},
+dd2600[]={1658,0},
+dd2601[]={1663,0},
+dd2602[]={1657,0},
+dd2603[]={1700,0},
+dd2604[]={1702,0},
+dd2605[]={1668,0},
+dd2606[]={1667,0},
+dd2607[]={1670,0},
+dd2608[]={1671,0},
+dd2609[]={1677,0},
+dd2610[]={1676,0},
+dd2611[]={1678,0},
+dd2612[]={1672,0},
+dd2613[]={1688,0},
+dd2614[]={1681,0},
+dd2615[]={1705,0},
+dd2616[]={1711,0},
+dd2617[]={1715,0},
+dd2618[]={1713,0},
+dd2619[]={1722,0},
+dd2620[]={1723,0},
+dd2621[]={1728,0},
+dd2622[]={1729,0},
+dd2623[]={1726,0},
+dd2624[]={1746,0},
+dd2625[]={1747,0},
+dd2626[]={1709,0},
+dd2627[]={1735,0},
+dd2628[]={1734,0},
+dd2629[]={1736,0},
+dd2630[]={1655,0},
+dd2631[]={1739,0},
+dd2632[]={1733,0},
+dd2633[]={1737,0},
+dd2634[]={1744,0},
+dd2635[]={1609,0},
+dd2636[]={1574,1575,0},
+dd2637[]={1574,1749,0},
+dd2638[]={1574,1608,0},
+dd2639[]={1574,1735,0},
+dd2640[]={1574,1734,0},
+dd2641[]={1574,1736,0},
+dd2642[]={1574,1744,0},
+dd2643[]={1574,1609,0},
+dd2644[]={1740,0},
+dd2645[]={1574,1580,0},
+dd2646[]={1574,1581,0},
+dd2647[]={1574,1605,0},
+dd2648[]={1574,1610,0},
+dd2649[]={1576,1580,0},
+dd2650[]={1576,1581,0},
+dd2651[]={1576,1582,0},
+dd2652[]={1576,1605,0},
+dd2653[]={1576,1609,0},
+dd2654[]={1576,1610,0},
+dd2655[]={1578,1580,0},
+dd2656[]={1578,1581,0},
+dd2657[]={1578,1582,0},
+dd2658[]={1578,1605,0},
+dd2659[]={1578,1609,0},
+dd2660[]={1578,1610,0},
+dd2661[]={1579,1580,0},
+dd2662[]={1579,1605,0},
+dd2663[]={1579,1609,0},
+dd2664[]={1579,1610,0},
+dd2665[]={1580,1581,0},
+dd2666[]={1580,1605,0},
+dd2667[]={1581,1580,0},
+dd2668[]={1581,1605,0},
+dd2669[]={1582,1580,0},
+dd2670[]={1582,1581,0},
+dd2671[]={1582,1605,0},
+dd2672[]={1587,1580,0},
+dd2673[]={1587,1581,0},
+dd2674[]={1587,1582,0},
+dd2675[]={1587,1605,0},
+dd2676[]={1589,1581,0},
+dd2677[]={1589,1605,0},
+dd2678[]={1590,1580,0},
+dd2679[]={1590,1581,0},
+dd2680[]={1590,1582,0},
+dd2681[]={1590,1605,0},
+dd2682[]={1591,1581,0},
+dd2683[]={1591,1605,0},
+dd2684[]={1592,1605,0},
+dd2685[]={1593,1580,0},
+dd2686[]={1593,1605,0},
+dd2687[]={1594,1580,0},
+dd2688[]={1594,1605,0},
+dd2689[]={1601,1580,0},
+dd2690[]={1601,1581,0},
+dd2691[]={1601,1582,0},
+dd2692[]={1601,1605,0},
+dd2693[]={1601,1609,0},
+dd2694[]={1601,1610,0},
+dd2695[]={1602,1581,0},
+dd2696[]={1602,1605,0},
+dd2697[]={1602,1609,0},
+dd2698[]={1602,1610,0},
+dd2699[]={1603,1575,0},
+dd2700[]={1603,1580,0},
+dd2701[]={1603,1581,0},
+dd2702[]={1603,1582,0},
+dd2703[]={1603,1604,0},
+dd2704[]={1603,1605,0},
+dd2705[]={1603,1609,0},
+dd2706[]={1603,1610,0},
+dd2707[]={1604,1580,0},
+dd2708[]={1604,1581,0},
+dd2709[]={1604,1582,0},
+dd2710[]={1604,1605,0},
+dd2711[]={1604,1609,0},
+dd2712[]={1604,1610,0},
+dd2713[]={1605,1580,0},
+dd2714[]={1605,1581,0},
+dd2715[]={1605,1582,0},
+dd2716[]={1605,1605,0},
+dd2717[]={1605,1609,0},
+dd2718[]={1605,1610,0},
+dd2719[]={1606,1580,0},
+dd2720[]={1606,1581,0},
+dd2721[]={1606,1582,0},
+dd2722[]={1606,1605,0},
+dd2723[]={1606,1609,0},
+dd2724[]={1606,1610,0},
+dd2725[]={1607,1580,0},
+dd2726[]={1607,1605,0},
+dd2727[]={1607,1609,0},
+dd2728[]={1607,1610,0},
+dd2729[]={1610,1580,0},
+dd2730[]={1610,1581,0},
+dd2731[]={1610,1582,0},
+dd2732[]={1610,1605,0},
+dd2733[]={1610,1609,0},
+dd2734[]={1610,1610,0},
+dd2735[]={1584,1648,0},
+dd2736[]={1585,1648,0},
+dd2737[]={1609,1648,0},
+dd2738[]={32,1612,1617,0},
+dd2739[]={32,1613,1617,0},
+dd2740[]={32,1614,1617,0},
+dd2741[]={32,1615,1617,0},
+dd2742[]={32,1616,1617,0},
+dd2743[]={32,1617,1648,0},
+dd2744[]={1574,1585,0},
+dd2745[]={1574,1586,0},
+dd2746[]={1574,1606,0},
+dd2747[]={1576,1585,0},
+dd2748[]={1576,1586,0},
+dd2749[]={1576,1606,0},
+dd2750[]={1578,1585,0},
+dd2751[]={1578,1586,0},
+dd2752[]={1578,1606,0},
+dd2753[]={1579,1585,0},
+dd2754[]={1579,1586,0},
+dd2755[]={1579,1606,0},
+dd2756[]={1605,1575,0},
+dd2757[]={1606,1585,0},
+dd2758[]={1606,1586,0},
+dd2759[]={1606,1606,0},
+dd2760[]={1610,1585,0},
+dd2761[]={1610,1586,0},
+dd2762[]={1610,1606,0},
+dd2763[]={1574,1582,0},
+dd2764[]={1574,1607,0},
+dd2765[]={1576,1607,0},
+dd2766[]={1578,1607,0},
+dd2767[]={1589,1582,0},
+dd2768[]={1604,1607,0},
+dd2769[]={1606,1607,0},
+dd2770[]={1607,1648,0},
+dd2771[]={1610,1607,0},
+dd2772[]={1579,1607,0},
+dd2773[]={1587,1607,0},
+dd2774[]={1588,1605,0},
+dd2775[]={1588,1607,0},
+dd2776[]={1600,1614,1617,0},
+dd2777[]={1600,1615,1617,0},
+dd2778[]={1600,1616,1617,0},
+dd2779[]={1591,1609,0},
+dd2780[]={1591,1610,0},
+dd2781[]={1593,1609,0},
+dd2782[]={1593,1610,0},
+dd2783[]={1594,1609,0},
+dd2784[]={1594,1610,0},
+dd2785[]={1587,1609,0},
+dd2786[]={1587,1610,0},
+dd2787[]={1588,1609,0},
+dd2788[]={1588,1610,0},
+dd2789[]={1581,1609,0},
+dd2790[]={1581,1610,0},
+dd2791[]={1580,1609,0},
+dd2792[]={1580,1610,0},
+dd2793[]={1582,1609,0},
+dd2794[]={1582,1610,0},
+dd2795[]={1589,1609,0},
+dd2796[]={1589,1610,0},
+dd2797[]={1590,1609,0},
+dd2798[]={1590,1610,0},
+dd2799[]={1588,1580,0},
+dd2800[]={1588,1581,0},
+dd2801[]={1588,1582,0},
+dd2802[]={1588,1585,0},
+dd2803[]={1587,1585,0},
+dd2804[]={1589,1585,0},
+dd2805[]={1590,1585,0},
+dd2806[]={1575,1611,0},
+dd2807[]={1578,1580,1605,0},
+dd2808[]={1578,1581,1580,0},
+dd2809[]={1578,1581,1605,0},
+dd2810[]={1578,1582,1605,0},
+dd2811[]={1578,1605,1580,0},
+dd2812[]={1578,1605,1581,0},
+dd2813[]={1578,1605,1582,0},
+dd2814[]={1580,1605,1581,0},
+dd2815[]={1581,1605,1610,0},
+dd2816[]={1581,1605,1609,0},
+dd2817[]={1587,1581,1580,0},
+dd2818[]={1587,1580,1581,0},
+dd2819[]={1587,1580,1609,0},
+dd2820[]={1587,1605,1581,0},
+dd2821[]={1587,1605,1580,0},
+dd2822[]={1587,1605,1605,0},
+dd2823[]={1589,1581,1581,0},
+dd2824[]={1589,1605,1605,0},
+dd2825[]={1588,1581,1605,0},
+dd2826[]={1588,1580,1610,0},
+dd2827[]={1588,1605,1582,0},
+dd2828[]={1588,1605,1605,0},
+dd2829[]={1590,1581,1609,0},
+dd2830[]={1590,1582,1605,0},
+dd2831[]={1591,1605,1581,0},
+dd2832[]={1591,1605,1605,0},
+dd2833[]={1591,1605,1610,0},
+dd2834[]={1593,1580,1605,0},
+dd2835[]={1593,1605,1605,0},
+dd2836[]={1593,1605,1609,0},
+dd2837[]={1594,1605,1605,0},
+dd2838[]={1594,1605,1610,0},
+dd2839[]={1594,1605,1609,0},
+dd2840[]={1601,1582,1605,0},
+dd2841[]={1602,1605,1581,0},
+dd2842[]={1602,1605,1605,0},
+dd2843[]={1604,1581,1605,0},
+dd2844[]={1604,1581,1610,0},
+dd2845[]={1604,1581,1609,0},
+dd2846[]={1604,1580,1580,0},
+dd2847[]={1604,1582,1605,0},
+dd2848[]={1604,1605,1581,0},
+dd2849[]={1605,1581,1580,0},
+dd2850[]={1605,1581,1605,0},
+dd2851[]={1605,1581,1610,0},
+dd2852[]={1605,1580,1581,0},
+dd2853[]={1605,1580,1605,0},
+dd2854[]={1605,1582,1580,0},
+dd2855[]={1605,1582,1605,0},
+dd2856[]={1605,1580,1582,0},
+dd2857[]={1607,1605,1580,0},
+dd2858[]={1607,1605,1605,0},
+dd2859[]={1606,1581,1605,0},
+dd2860[]={1606,1581,1609,0},
+dd2861[]={1606,1580,1605,0},
+dd2862[]={1606,1580,1609,0},
+dd2863[]={1606,1605,1610,0},
+dd2864[]={1606,1605,1609,0},
+dd2865[]={1610,1605,1605,0},
+dd2866[]={1576,1582,1610,0},
+dd2867[]={1578,1580,1610,0},
+dd2868[]={1578,1580,1609,0},
+dd2869[]={1578,1582,1610,0},
+dd2870[]={1578,1582,1609,0},
+dd2871[]={1578,1605,1610,0},
+dd2872[]={1578,1605,1609,0},
+dd2873[]={1580,1605,1610,0},
+dd2874[]={1580,1581,1609,0},
+dd2875[]={1580,1605,1609,0},
+dd2876[]={1587,1582,1609,0},
+dd2877[]={1589,1581,1610,0},
+dd2878[]={1588,1581,1610,0},
+dd2879[]={1590,1581,1610,0},
+dd2880[]={1604,1580,1610,0},
+dd2881[]={1604,1605,1610,0},
+dd2882[]={1610,1581,1610,0},
+dd2883[]={1610,1580,1610,0},
+dd2884[]={1610,1605,1610,0},
+dd2885[]={1605,1605,1610,0},
+dd2886[]={1602,1605,1610,0},
+dd2887[]={1606,1581,1610,0},
+dd2888[]={1593,1605,1610,0},
+dd2889[]={1603,1605,1610,0},
+dd2890[]={1606,1580,1581,0},
+dd2891[]={1605,1582,1610,0},
+dd2892[]={1604,1580,1605,0},
+dd2893[]={1603,1605,1605,0},
+dd2894[]={1580,1581,1610,0},
+dd2895[]={1581,1580,1610,0},
+dd2896[]={1605,1580,1610,0},
+dd2897[]={1601,1605,1610,0},
+dd2898[]={1576,1581,1610,0},
+dd2899[]={1587,1582,1610,0},
+dd2900[]={1606,1580,1610,0},
+dd2901[]={1589,1604,1746,0},
+dd2902[]={1602,1604,1746,0},
+dd2903[]={1575,1604,1604,1607,0},
+dd2904[]={1575,1603,1576,1585,0},
+dd2905[]={1605,1581,1605,1583,0},
+dd2906[]={1589,1604,1593,1605,0},
+dd2907[]={1585,1587,1608,1604,0},
+dd2908[]={1593,1604,1610,1607,0},
+dd2909[]={1608,1587,1604,1605,0},
+dd2910[]={1589,1604,1609,0},
+dd2911[]={1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605,0},
+dd2912[]={1580,1604,32,1580,1604,1575,1604,1607,0},
+dd2913[]={1585,1740,1575,1604,0},
+dd2914[]={44,0},
+dd2915[]={12289,0},
+dd2916[]={12290,0},
+dd2917[]={58,0},
+dd2918[]={33,0},
+dd2919[]={63,0},
+dd2920[]={12310,0},
+dd2921[]={12311,0},
+dd2922[]={8230,0},
+dd2923[]={8229,0},
+dd2924[]={8212,0},
+dd2925[]={8211,0},
+dd2926[]={95,0},
+dd2927[]={123,0},
+dd2928[]={125,0},
+dd2929[]={12308,0},
+dd2930[]={12309,0},
+dd2931[]={12304,0},
+dd2932[]={12305,0},
+dd2933[]={12298,0},
+dd2934[]={12299,0},
+dd2935[]={12300,0},
+dd2936[]={12301,0},
+dd2937[]={12302,0},
+dd2938[]={12303,0},
+dd2939[]={91,0},
+dd2940[]={93,0},
+dd2941[]={8254,0},
+dd2942[]={35,0},
+dd2943[]={38,0},
+dd2944[]={42,0},
+dd2945[]={45,0},
+dd2946[]={60,0},
+dd2947[]={62,0},
+dd2948[]={92,0},
+dd2949[]={36,0},
+dd2950[]={37,0},
+dd2951[]={64,0},
+dd2952[]={32,1611,0},
+dd2953[]={1600,1611,0},
+dd2954[]={32,1612,0},
+dd2955[]={32,1613,0},
+dd2956[]={32,1614,0},
+dd2957[]={1600,1614,0},
+dd2958[]={32,1615,0},
+dd2959[]={1600,1615,0},
+dd2960[]={32,1616,0},
+dd2961[]={1600,1616,0},
+dd2962[]={32,1617,0},
+dd2963[]={1600,1617,0},
+dd2964[]={32,1618,0},
+dd2965[]={1600,1618,0},
+dd2966[]={1569,0},
+dd2967[]={1570,0},
+dd2968[]={1571,0},
+dd2969[]={1572,0},
+dd2970[]={1573,0},
+dd2971[]={1574,0},
+dd2972[]={1575,0},
+dd2973[]={1576,0},
+dd2974[]={1577,0},
+dd2975[]={1578,0},
+dd2976[]={1579,0},
+dd2977[]={1580,0},
+dd2978[]={1581,0},
+dd2979[]={1582,0},
+dd2980[]={1583,0},
+dd2981[]={1584,0},
+dd2982[]={1585,0},
+dd2983[]={1586,0},
+dd2984[]={1587,0},
+dd2985[]={1588,0},
+dd2986[]={1589,0},
+dd2987[]={1590,0},
+dd2988[]={1591,0},
+dd2989[]={1592,0},
+dd2990[]={1593,0},
+dd2991[]={1594,0},
+dd2992[]={1601,0},
+dd2993[]={1602,0},
+dd2994[]={1603,0},
+dd2995[]={1604,0},
+dd2996[]={1605,0},
+dd2997[]={1606,0},
+dd2998[]={1607,0},
+dd2999[]={1608,0},
+dd3000[]={1610,0},
+dd3001[]={1604,1570,0},
+dd3002[]={1604,1571,0},
+dd3003[]={1604,1573,0},
+dd3004[]={1604,1575,0},
+dd3005[]={34,0},
+dd3006[]={39,0},
+dd3007[]={47,0},
+dd3008[]={94,0},
+dd3009[]={124,0},
+dd3010[]={126,0},
+dd3011[]={10629,0},
+dd3012[]={10630,0},
+dd3013[]={12539,0},
+dd3014[]={12449,0},
+dd3015[]={12451,0},
+dd3016[]={12453,0},
+dd3017[]={12455,0},
+dd3018[]={12457,0},
+dd3019[]={12515,0},
+dd3020[]={12517,0},
+dd3021[]={12519,0},
+dd3022[]={12483,0},
+dd3023[]={12540,0},
+dd3024[]={12531,0},
+dd3025[]={12441,0},
+dd3026[]={12442,0},
+dd3027[]={12644,0},
+dd3028[]={12593,0},
+dd3029[]={12594,0},
+dd3030[]={12595,0},
+dd3031[]={12596,0},
+dd3032[]={12597,0},
+dd3033[]={12598,0},
+dd3034[]={12599,0},
+dd3035[]={12600,0},
+dd3036[]={12601,0},
+dd3037[]={12602,0},
+dd3038[]={12603,0},
+dd3039[]={12604,0},
+dd3040[]={12605,0},
+dd3041[]={12606,0},
+dd3042[]={12607,0},
+dd3043[]={12608,0},
+dd3044[]={12609,0},
+dd3045[]={12610,0},
+dd3046[]={12611,0},
+dd3047[]={12612,0},
+dd3048[]={12613,0},
+dd3049[]={12614,0},
+dd3050[]={12615,0},
+dd3051[]={12616,0},
+dd3052[]={12617,0},
+dd3053[]={12618,0},
+dd3054[]={12619,0},
+dd3055[]={12620,0},
+dd3056[]={12621,0},
+dd3057[]={12622,0},
+dd3058[]={12623,0},
+dd3059[]={12624,0},
+dd3060[]={12625,0},
+dd3061[]={12626,0},
+dd3062[]={12627,0},
+dd3063[]={12628,0},
+dd3064[]={12629,0},
+dd3065[]={12630,0},
+dd3066[]={12631,0},
+dd3067[]={12632,0},
+dd3068[]={12633,0},
+dd3069[]={12634,0},
+dd3070[]={12635,0},
+dd3071[]={12636,0},
+dd3072[]={12637,0},
+dd3073[]={12638,0},
+dd3074[]={12639,0},
+dd3075[]={12640,0},
+dd3076[]={12641,0},
+dd3077[]={12642,0},
+dd3078[]={12643,0},
+dd3079[]={162,0},
+dd3080[]={163,0},
+dd3081[]={172,0},
+dd3082[]={175,0},
+dd3083[]={166,0},
+dd3084[]={165,0},
+dd3085[]={8361,0},
+dd3086[]={9474,0},
+dd3087[]={8592,0},
+dd3088[]={8593,0},
+dd3089[]={8594,0},
+dd3090[]={8595,0},
+dd3091[]={9632,0},
+dd3092[]={9675,0},
+dd3093[]={69785,69818,0},
+dd3094[]={69787,69818,0},
+dd3095[]={69797,69818,0},
+dd3096[]={119127,119141,0},
+dd3097[]={119128,119141,0},
+dd3098[]={119135,119150,0},
+dd3099[]={119135,119151,0},
+dd3100[]={119135,119152,0},
+dd3101[]={119135,119153,0},
+dd3102[]={119135,119154,0},
+dd3103[]={119225,119141,0},
+dd3104[]={119226,119141,0},
+dd3105[]={119227,119150,0},
+dd3106[]={119228,119150,0},
+dd3107[]={119227,119151,0},
+dd3108[]={119228,119151,0},
+dd3109[]={305,0},
+dd3110[]={567,0},
+dd3111[]={913,0},
+dd3112[]={914,0},
+dd3113[]={916,0},
+dd3114[]={917,0},
+dd3115[]={918,0},
+dd3116[]={919,0},
+dd3117[]={921,0},
+dd3118[]={922,0},
+dd3119[]={923,0},
+dd3120[]={924,0},
+dd3121[]={925,0},
+dd3122[]={926,0},
+dd3123[]={927,0},
+dd3124[]={929,0},
+dd3125[]={1012,0},
+dd3126[]={932,0},
+dd3127[]={934,0},
+dd3128[]={935,0},
+dd3129[]={936,0},
+dd3130[]={8711,0},
+dd3131[]={945,0},
+dd3132[]={950,0},
+dd3133[]={951,0},
+dd3134[]={955,0},
+dd3135[]={957,0},
+dd3136[]={958,0},
+dd3137[]={959,0},
+dd3138[]={963,0},
+dd3139[]={964,0},
+dd3140[]={965,0},
+dd3141[]={968,0},
+dd3142[]={969,0},
+dd3143[]={8706,0},
+dd3144[]={1013,0},
+dd3145[]={977,0},
+dd3146[]={1008,0},
+dd3147[]={981,0},
+dd3148[]={1009,0},
+dd3149[]={982,0},
+dd3150[]={988,0},
+dd3151[]={989,0},
+dd3152[]={48,46,0},
+dd3153[]={48,44,0},
+dd3154[]={49,44,0},
+dd3155[]={50,44,0},
+dd3156[]={51,44,0},
+dd3157[]={52,44,0},
+dd3158[]={53,44,0},
+dd3159[]={54,44,0},
+dd3160[]={55,44,0},
+dd3161[]={56,44,0},
+dd3162[]={57,44,0},
+dd3163[]={40,65,41,0},
+dd3164[]={40,66,41,0},
+dd3165[]={40,67,41,0},
+dd3166[]={40,68,41,0},
+dd3167[]={40,69,41,0},
+dd3168[]={40,70,41,0},
+dd3169[]={40,71,41,0},
+dd3170[]={40,72,41,0},
+dd3171[]={40,73,41,0},
+dd3172[]={40,74,41,0},
+dd3173[]={40,75,41,0},
+dd3174[]={40,76,41,0},
+dd3175[]={40,77,41,0},
+dd3176[]={40,78,41,0},
+dd3177[]={40,79,41,0},
+dd3178[]={40,80,41,0},
+dd3179[]={40,81,41,0},
+dd3180[]={40,82,41,0},
+dd3181[]={40,83,41,0},
+dd3182[]={40,84,41,0},
+dd3183[]={40,85,41,0},
+dd3184[]={40,86,41,0},
+dd3185[]={40,87,41,0},
+dd3186[]={40,88,41,0},
+dd3187[]={40,89,41,0},
+dd3188[]={40,90,41,0},
+dd3189[]={12308,83,12309,0},
+dd3190[]={67,68,0},
+dd3191[]={87,90,0},
+dd3192[]={72,86,0},
+dd3193[]={83,68,0},
+dd3194[]={83,83,0},
+dd3195[]={80,80,86,0},
+dd3196[]={87,67,0},
+dd3197[]={68,74,0},
+dd3198[]={12411,12363,0},
+dd3199[]={12467,12467,0},
+dd3200[]={23383,0},
+dd3201[]={21452,0},
+dd3202[]={12487,0},
+dd3203[]={22810,0},
+dd3204[]={35299,0},
+dd3205[]={20132,0},
+dd3206[]={26144,0},
+dd3207[]={28961,0},
+dd3208[]={21069,0},
+dd3209[]={24460,0},
+dd3210[]={20877,0},
+dd3211[]={26032,0},
+dd3212[]={21021,0},
+dd3213[]={32066,0},
+dd3214[]={36009,0},
+dd3215[]={22768,0},
+dd3216[]={21561,0},
+dd3217[]={28436,0},
+dd3218[]={25237,0},
+dd3219[]={25429,0},
+dd3220[]={36938,0},
+dd3221[]={25351,0},
+dd3222[]={25171,0},
+dd3223[]={31105,0},
+dd3224[]={31354,0},
+dd3225[]={21512,0},
+dd3226[]={28288,0},
+dd3227[]={30003,0},
+dd3228[]={21106,0},
+dd3229[]={21942,0},
+dd3230[]={12308,26412,12309,0},
+dd3231[]={12308,19977,12309,0},
+dd3232[]={12308,20108,12309,0},
+dd3233[]={12308,23433,12309,0},
+dd3234[]={12308,28857,12309,0},
+dd3235[]={12308,25171,12309,0},
+dd3236[]={12308,30423,12309,0},
+dd3237[]={12308,21213,12309,0},
+dd3238[]={12308,25943,12309,0},
+dd3239[]={24471,0},
+dd3240[]={21487,0},
+dd3241[]={20029,0},
+dd3242[]={20024,0},
+dd3243[]={20033,0},
+dd3244[]={131362,0},
+dd3245[]={20320,0},
+dd3246[]={20411,0},
+dd3247[]={20482,0},
+dd3248[]={20602,0},
+dd3249[]={20633,0},
+dd3250[]={20687,0},
+dd3251[]={13470,0},
+dd3252[]={132666,0},
+dd3253[]={20820,0},
+dd3254[]={20836,0},
+dd3255[]={20855,0},
+dd3256[]={132380,0},
+dd3257[]={13497,0},
+dd3258[]={20839,0},
+dd3259[]={132427,0},
+dd3260[]={20887,0},
+dd3261[]={20900,0},
+dd3262[]={20172,0},
+dd3263[]={20908,0},
+dd3264[]={168415,0},
+dd3265[]={20995,0},
+dd3266[]={13535,0},
+dd3267[]={21051,0},
+dd3268[]={21062,0},
+dd3269[]={21111,0},
+dd3270[]={13589,0},
+dd3271[]={21253,0},
+dd3272[]={21254,0},
+dd3273[]={21321,0},
+dd3274[]={21338,0},
+dd3275[]={21363,0},
+dd3276[]={21373,0},
+dd3277[]={21375,0},
+dd3278[]={133676,0},
+dd3279[]={28784,0},
+dd3280[]={21450,0},
+dd3281[]={21471,0},
+dd3282[]={133987,0},
+dd3283[]={21483,0},
+dd3284[]={21489,0},
+dd3285[]={21510,0},
+dd3286[]={21662,0},
+dd3287[]={21560,0},
+dd3288[]={21576,0},
+dd3289[]={21608,0},
+dd3290[]={21666,0},
+dd3291[]={21750,0},
+dd3292[]={21776,0},
+dd3293[]={21843,0},
+dd3294[]={21859,0},
+dd3295[]={21892,0},
+dd3296[]={21931,0},
+dd3297[]={21939,0},
+dd3298[]={21954,0},
+dd3299[]={22294,0},
+dd3300[]={22295,0},
+dd3301[]={22097,0},
+dd3302[]={22132,0},
+dd3303[]={22766,0},
+dd3304[]={22478,0},
+dd3305[]={22516,0},
+dd3306[]={22541,0},
+dd3307[]={22411,0},
+dd3308[]={22578,0},
+dd3309[]={22577,0},
+dd3310[]={22700,0},
+dd3311[]={136420,0},
+dd3312[]={22770,0},
+dd3313[]={22775,0},
+dd3314[]={22790,0},
+dd3315[]={22818,0},
+dd3316[]={22882,0},
+dd3317[]={136872,0},
+dd3318[]={136938,0},
+dd3319[]={23020,0},
+dd3320[]={23067,0},
+dd3321[]={23079,0},
+dd3322[]={23000,0},
+dd3323[]={23142,0},
+dd3324[]={14062,0},
+dd3325[]={14076,0},
+dd3326[]={23304,0},
+dd3327[]={23358,0},
+dd3328[]={137672,0},
+dd3329[]={23491,0},
+dd3330[]={23512,0},
+dd3331[]={23539,0},
+dd3332[]={138008,0},
+dd3333[]={23551,0},
+dd3334[]={23558,0},
+dd3335[]={24403,0},
+dd3336[]={14209,0},
+dd3337[]={23648,0},
+dd3338[]={23744,0},
+dd3339[]={23693,0},
+dd3340[]={138724,0},
+dd3341[]={23875,0},
+dd3342[]={138726,0},
+dd3343[]={23918,0},
+dd3344[]={23915,0},
+dd3345[]={23932,0},
+dd3346[]={24033,0},
+dd3347[]={24034,0},
+dd3348[]={14383,0},
+dd3349[]={24061,0},
+dd3350[]={24104,0},
+dd3351[]={24125,0},
+dd3352[]={24169,0},
+dd3353[]={14434,0},
+dd3354[]={139651,0},
+dd3355[]={14460,0},
+dd3356[]={24240,0},
+dd3357[]={24243,0},
+dd3358[]={24246,0},
+dd3359[]={172946,0},
+dd3360[]={140081,0},
+dd3361[]={33281,0},
+dd3362[]={24354,0},
+dd3363[]={14535,0},
+dd3364[]={144056,0},
+dd3365[]={156122,0},
+dd3366[]={24418,0},
+dd3367[]={24427,0},
+dd3368[]={14563,0},
+dd3369[]={24474,0},
+dd3370[]={24525,0},
+dd3371[]={24535,0},
+dd3372[]={24569,0},
+dd3373[]={24705,0},
+dd3374[]={14650,0},
+dd3375[]={14620,0},
+dd3376[]={141012,0},
+dd3377[]={24775,0},
+dd3378[]={24904,0},
+dd3379[]={24908,0},
+dd3380[]={24954,0},
+dd3381[]={25010,0},
+dd3382[]={24996,0},
+dd3383[]={25007,0},
+dd3384[]={25054,0},
+dd3385[]={25104,0},
+dd3386[]={25115,0},
+dd3387[]={25181,0},
+dd3388[]={25265,0},
+dd3389[]={25300,0},
+dd3390[]={25424,0},
+dd3391[]={142092,0},
+dd3392[]={25405,0},
+dd3393[]={25340,0},
+dd3394[]={25448,0},
+dd3395[]={25475,0},
+dd3396[]={25572,0},
+dd3397[]={142321,0},
+dd3398[]={25634,0},
+dd3399[]={25541,0},
+dd3400[]={25513,0},
+dd3401[]={14894,0},
+dd3402[]={25705,0},
+dd3403[]={25726,0},
+dd3404[]={25757,0},
+dd3405[]={25719,0},
+dd3406[]={14956,0},
+dd3407[]={25964,0},
+dd3408[]={143370,0},
+dd3409[]={26083,0},
+dd3410[]={26360,0},
+dd3411[]={26185,0},
+dd3412[]={15129,0},
+dd3413[]={15112,0},
+dd3414[]={15076,0},
+dd3415[]={20882,0},
+dd3416[]={20885,0},
+dd3417[]={26368,0},
+dd3418[]={26268,0},
+dd3419[]={32941,0},
+dd3420[]={17369,0},
+dd3421[]={26401,0},
+dd3422[]={26462,0},
+dd3423[]={26451,0},
+dd3424[]={144323,0},
+dd3425[]={15177,0},
+dd3426[]={26618,0},
+dd3427[]={26501,0},
+dd3428[]={26706,0},
+dd3429[]={144493,0},
+dd3430[]={26766,0},
+dd3431[]={26655,0},
+dd3432[]={26900,0},
+dd3433[]={26946,0},
+dd3434[]={27043,0},
+dd3435[]={27114,0},
+dd3436[]={27304,0},
+dd3437[]={145059,0},
+dd3438[]={27355,0},
+dd3439[]={15384,0},
+dd3440[]={27425,0},
+dd3441[]={145575,0},
+dd3442[]={27476,0},
+dd3443[]={15438,0},
+dd3444[]={27506,0},
+dd3445[]={27551,0},
+dd3446[]={27579,0},
+dd3447[]={146061,0},
+dd3448[]={138507,0},
+dd3449[]={146170,0},
+dd3450[]={27726,0},
+dd3451[]={146620,0},
+dd3452[]={27839,0},
+dd3453[]={27853,0},
+dd3454[]={27751,0},
+dd3455[]={27926,0},
+dd3456[]={27966,0},
+dd3457[]={28009,0},
+dd3458[]={28024,0},
+dd3459[]={28037,0},
+dd3460[]={146718,0},
+dd3461[]={27956,0},
+dd3462[]={28207,0},
+dd3463[]={28270,0},
+dd3464[]={15667,0},
+dd3465[]={28359,0},
+dd3466[]={147153,0},
+dd3467[]={28153,0},
+dd3468[]={28526,0},
+dd3469[]={147294,0},
+dd3470[]={147342,0},
+dd3471[]={28614,0},
+dd3472[]={28729,0},
+dd3473[]={28699,0},
+dd3474[]={15766,0},
+dd3475[]={28746,0},
+dd3476[]={28797,0},
+dd3477[]={28791,0},
+dd3478[]={28845,0},
+dd3479[]={132389,0},
+dd3480[]={28997,0},
+dd3481[]={148067,0},
+dd3482[]={29084,0},
+dd3483[]={148395,0},
+dd3484[]={29224,0},
+dd3485[]={29264,0},
+dd3486[]={149000,0},
+dd3487[]={29312,0},
+dd3488[]={29333,0},
+dd3489[]={149301,0},
+dd3490[]={149524,0},
+dd3491[]={29562,0},
+dd3492[]={29579,0},
+dd3493[]={16044,0},
+dd3494[]={29605,0},
+dd3495[]={16056,0},
+dd3496[]={29767,0},
+dd3497[]={29788,0},
+dd3498[]={29829,0},
+dd3499[]={29898,0},
+dd3500[]={16155,0},
+dd3501[]={29988,0},
+dd3502[]={150582,0},
+dd3503[]={30014,0},
+dd3504[]={150674,0},
+dd3505[]={139679,0},
+dd3506[]={30224,0},
+dd3507[]={151457,0},
+dd3508[]={151480,0},
+dd3509[]={151620,0},
+dd3510[]={16380,0},
+dd3511[]={16392,0},
+dd3512[]={151795,0},
+dd3513[]={151794,0},
+dd3514[]={151833,0},
+dd3515[]={151859,0},
+dd3516[]={30494,0},
+dd3517[]={30495,0},
+dd3518[]={30603,0},
+dd3519[]={16454,0},
+dd3520[]={16534,0},
+dd3521[]={152605,0},
+dd3522[]={30798,0},
+dd3523[]={16611,0},
+dd3524[]={153126,0},
+dd3525[]={153242,0},
+dd3526[]={153285,0},
+dd3527[]={31211,0},
+dd3528[]={16687,0},
+dd3529[]={31306,0},
+dd3530[]={31311,0},
+dd3531[]={153980,0},
+dd3532[]={154279,0},
+dd3533[]={31470,0},
+dd3534[]={16898,0},
+dd3535[]={154539,0},
+dd3536[]={31686,0},
+dd3537[]={31689,0},
+dd3538[]={16935,0},
+dd3539[]={154752,0},
+dd3540[]={31954,0},
+dd3541[]={17056,0},
+dd3542[]={31976,0},
+dd3543[]={31971,0},
+dd3544[]={32000,0},
+dd3545[]={155526,0},
+dd3546[]={32099,0},
+dd3547[]={17153,0},
+dd3548[]={32199,0},
+dd3549[]={32258,0},
+dd3550[]={32325,0},
+dd3551[]={17204,0},
+dd3552[]={156200,0},
+dd3553[]={156231,0},
+dd3554[]={17241,0},
+dd3555[]={156377,0},
+dd3556[]={32634,0},
+dd3557[]={156478,0},
+dd3558[]={32661,0},
+dd3559[]={32762,0},
+dd3560[]={156890,0},
+dd3561[]={156963,0},
+dd3562[]={32864,0},
+dd3563[]={157096,0},
+dd3564[]={32880,0},
+dd3565[]={144223,0},
+dd3566[]={17365,0},
+dd3567[]={32946,0},
+dd3568[]={33027,0},
+dd3569[]={17419,0},
+dd3570[]={33086,0},
+dd3571[]={23221,0},
+dd3572[]={157607,0},
+dd3573[]={157621,0},
+dd3574[]={144275,0},
+dd3575[]={144284,0},
+dd3576[]={33284,0},
+dd3577[]={36766,0},
+dd3578[]={17515,0},
+dd3579[]={33425,0},
+dd3580[]={33419,0},
+dd3581[]={33437,0},
+dd3582[]={21171,0},
+dd3583[]={33457,0},
+dd3584[]={33459,0},
+dd3585[]={33469,0},
+dd3586[]={33510,0},
+dd3587[]={158524,0},
+dd3588[]={33565,0},
+dd3589[]={33635,0},
+dd3590[]={33709,0},
+dd3591[]={33571,0},
+dd3592[]={33725,0},
+dd3593[]={33767,0},
+dd3594[]={33619,0},
+dd3595[]={33738,0},
+dd3596[]={33740,0},
+dd3597[]={33756,0},
+dd3598[]={158774,0},
+dd3599[]={159083,0},
+dd3600[]={158933,0},
+dd3601[]={17707,0},
+dd3602[]={34033,0},
+dd3603[]={34035,0},
+dd3604[]={34070,0},
+dd3605[]={160714,0},
+dd3606[]={34148,0},
+dd3607[]={159532,0},
+dd3608[]={17757,0},
+dd3609[]={17761,0},
+dd3610[]={159665,0},
+dd3611[]={159954,0},
+dd3612[]={17771,0},
+dd3613[]={34384,0},
+dd3614[]={34407,0},
+dd3615[]={34409,0},
+dd3616[]={34473,0},
+dd3617[]={34440,0},
+dd3618[]={34574,0},
+dd3619[]={34530,0},
+dd3620[]={34600,0},
+dd3621[]={34667,0},
+dd3622[]={34694,0},
+dd3623[]={17879,0},
+dd3624[]={34785,0},
+dd3625[]={34817,0},
+dd3626[]={17913,0},
+dd3627[]={34912,0},
+dd3628[]={161383,0},
+dd3629[]={35031,0},
+dd3630[]={35038,0},
+dd3631[]={17973,0},
+dd3632[]={35066,0},
+dd3633[]={13499,0},
+dd3634[]={161966,0},
+dd3635[]={162150,0},
+dd3636[]={18110,0},
+dd3637[]={18119,0},
+dd3638[]={35488,0},
+dd3639[]={162984,0},
+dd3640[]={36011,0},
+dd3641[]={36033,0},
+dd3642[]={36123,0},
+dd3643[]={36215,0},
+dd3644[]={163631,0},
+dd3645[]={133124,0},
+dd3646[]={36299,0},
+dd3647[]={36284,0},
+dd3648[]={36336,0},
+dd3649[]={133342,0},
+dd3650[]={36564,0},
+dd3651[]={165330,0},
+dd3652[]={165357,0},
+dd3653[]={37012,0},
+dd3654[]={37105,0},
+dd3655[]={37137,0},
+dd3656[]={165678,0},
+dd3657[]={37147,0},
+dd3658[]={37432,0},
+dd3659[]={37591,0},
+dd3660[]={37592,0},
+dd3661[]={37500,0},
+dd3662[]={37881,0},
+dd3663[]={37909,0},
+dd3664[]={166906,0},
+dd3665[]={38283,0},
+dd3666[]={18837,0},
+dd3667[]={38327,0},
+dd3668[]={167287,0},
+dd3669[]={18918,0},
+dd3670[]={38595,0},
+dd3671[]={23986,0},
+dd3672[]={38691,0},
+dd3673[]={168261,0},
+dd3674[]={168474,0},
+dd3675[]={19054,0},
+dd3676[]={19062,0},
+dd3677[]={38880,0},
+dd3678[]={168970,0},
+dd3679[]={19122,0},
+dd3680[]={169110,0},
+dd3681[]={38953,0},
+dd3682[]={169398,0},
+dd3683[]={39138,0},
+dd3684[]={19251,0},
+dd3685[]={39209,0},
+dd3686[]={39335,0},
+dd3687[]={39362,0},
+dd3688[]={39422,0},
+dd3689[]={19406,0},
+dd3690[]={170800,0},
+dd3691[]={40000,0},
+dd3692[]={40189,0},
+dd3693[]={19662,0},
+dd3694[]={19693,0},
+dd3695[]={40295,0},
+dd3696[]={172238,0},
+dd3697[]={19704,0},
+dd3698[]={172293,0},
+dd3699[]={172558,0},
+dd3700[]={172689,0},
+dd3701[]={19798,0},
+dd3702[]={40702,0},
+dd3703[]={40709,0},
+dd3704[]={40719,0},
+dd3705[]={40726,0},
+dd3706[]={173568,0},
+dd3707[]={8814,0},
+dd3708[]={8800,0},
+dd3709[]={8815,0},
+dd3710[]={192,193,194,195,196,197,256,258,260,461,512,514,550,7680,7840,7842,0},
+dd3711[]={7682,7684,7686,0},
+dd3712[]={199,262,264,266,268,0},
+dd3713[]={270,7690,7692,7694,7696,7698,0},
+dd3714[]={200,201,202,203,274,276,278,280,282,516,518,552,7704,7706,7864,7866,7868,0},
+dd3715[]={7710,0},
+dd3716[]={284,286,288,290,486,500,7712,0},
+dd3717[]={292,542,7714,7716,7718,7720,7722,0},
+dd3718[]={204,205,206,207,296,298,300,302,304,463,520,522,7724,7880,7882,0},
+dd3719[]={308,0},
+dd3720[]={310,488,7728,7730,7732,0},
+dd3721[]={313,315,317,7734,7738,7740,0},
+dd3722[]={7742,7744,7746,0},
+dd3723[]={209,323,325,327,504,7748,7750,7752,7754,0},
+dd3724[]={210,211,212,213,214,332,334,336,416,465,490,524,526,558,7884,7886,0},
+dd3725[]={7764,7766,0},
+dd3726[]={340,342,344,528,530,7768,7770,7774,0},
+dd3727[]={346,348,350,352,536,7776,7778,0},
+dd3728[]={354,356,538,7786,7788,7790,7792,0},
+dd3729[]={217,218,219,220,360,362,364,366,368,370,431,467,532,534,7794,7796,7798,7908,7910,0},
+dd3730[]={7804,7806,0},
+dd3731[]={372,7808,7810,7812,7814,7816,0},
+dd3732[]={7818,7820,0},
+dd3733[]={221,374,376,562,7822,7922,7924,7926,7928,0},
+dd3734[]={377,379,381,7824,7826,7828,0},
+dd3735[]={224,225,226,227,228,229,257,259,261,462,513,515,551,7681,7841,7843,0},
+dd3736[]={7683,7685,7687,0},
+dd3737[]={231,263,265,267,269,0},
+dd3738[]={271,7691,7693,7695,7697,7699,0},
+dd3739[]={232,233,234,235,275,277,279,281,283,517,519,553,7705,7707,7865,7867,7869,0},
+dd3740[]={7711,0},
+dd3741[]={285,287,289,291,487,501,7713,0},
+dd3742[]={293,543,7715,7717,7719,7721,7723,7830,0},
+dd3743[]={236,237,238,239,297,299,301,303,464,521,523,7725,7881,7883,0},
+dd3744[]={309,496,0},
+dd3745[]={311,489,7729,7731,7733,0},
+dd3746[]={314,316,318,7735,7739,7741,0},
+dd3747[]={7743,7745,7747,0},
+dd3748[]={241,324,326,328,505,7749,7751,7753,7755,0},
+dd3749[]={242,243,244,245,246,333,335,337,417,466,491,525,527,559,7885,7887,0},
+dd3750[]={7765,7767,0},
+dd3751[]={341,343,345,529,531,7769,7771,7775,0},
+dd3752[]={347,349,351,353,537,7777,7779,0},
+dd3753[]={355,357,539,7787,7789,7791,7793,7831,0},
+dd3754[]={249,250,251,252,361,363,365,367,369,371,432,468,533,535,7795,7797,7799,7909,7911,0},
+dd3755[]={7805,7807,0},
+dd3756[]={373,7809,7811,7813,7815,7817,7832,0},
+dd3757[]={7819,7821,0},
+dd3758[]={253,255,375,563,7823,7833,7923,7925,7927,7929,0},
+dd3759[]={378,380,382,7825,7827,7829,0},
+dd3760[]={901,8129,8173,0},
+dd3761[]={7844,7846,7848,7850,0},
+dd3762[]={478,0},
+dd3763[]={506,0},
+dd3764[]={482,508,0},
+dd3765[]={7688,0},
+dd3766[]={7870,7872,7874,7876,0},
+dd3767[]={7726,0},
+dd3768[]={7888,7890,7892,7894,0},
+dd3769[]={556,7756,7758,0},
+dd3770[]={554,0},
+dd3771[]={510,0},
+dd3772[]={469,471,473,475,0},
+dd3773[]={7845,7847,7849,7851,0},
+dd3774[]={479,0},
+dd3775[]={507,0},
+dd3776[]={483,509,0},
+dd3777[]={7689,0},
+dd3778[]={7871,7873,7875,7877,0},
+dd3779[]={7727,0},
+dd3780[]={7889,7891,7893,7895,0},
+dd3781[]={557,7757,7759,0},
+dd3782[]={555,0},
+dd3783[]={511,0},
+dd3784[]={470,472,474,476,0},
+dd3785[]={7854,7856,7858,7860,0},
+dd3786[]={7855,7857,7859,7861,0},
+dd3787[]={7700,7702,0},
+dd3788[]={7701,7703,0},
+dd3789[]={7760,7762,0},
+dd3790[]={7761,7763,0},
+dd3791[]={7780,0},
+dd3792[]={7781,0},
+dd3793[]={7782,0},
+dd3794[]={7783,0},
+dd3795[]={7800,0},
+dd3796[]={7801,0},
+dd3797[]={7802,0},
+dd3798[]={7803,0},
+dd3799[]={7835,0},
+dd3800[]={7898,7900,7902,7904,7906,0},
+dd3801[]={7899,7901,7903,7905,7907,0},
+dd3802[]={7912,7914,7916,7918,7920,0},
+dd3803[]={7913,7915,7917,7919,7921,0},
+dd3804[]={494,0},
+dd3805[]={492,0},
+dd3806[]={493,0},
+dd3807[]={480,0},
+dd3808[]={481,0},
+dd3809[]={7708,0},
+dd3810[]={7709,0},
+dd3811[]={560,0},
+dd3812[]={561,0},
+dd3813[]={495,0},
+dd3814[]={902,7944,7945,8120,8121,8122,8124,0},
+dd3815[]={904,7960,7961,8136,0},
+dd3816[]={905,7976,7977,8138,8140,0},
+dd3817[]={906,938,7992,7993,8152,8153,8154,0},
+dd3818[]={908,8008,8009,8184,0},
+dd3819[]={8172,0},
+dd3820[]={910,939,8025,8168,8169,8170,0},
+dd3821[]={911,8040,8041,8186,8188,0},
+dd3822[]={8116,0},
+dd3823[]={8132,0},
+dd3824[]={940,7936,7937,8048,8112,8113,8115,8118,0},
+dd3825[]={941,7952,7953,8050,0},
+dd3826[]={942,7968,7969,8052,8131,8134,0},
+dd3827[]={943,970,7984,7985,8054,8144,8145,8150,0},
+dd3828[]={972,8000,8001,8056,0},
+dd3829[]={8164,8165,0},
+dd3830[]={971,973,8016,8017,8058,8160,8161,8166,0},
+dd3831[]={974,8032,8033,8060,8179,8182,0},
+dd3832[]={912,8146,8151,0},
+dd3833[]={944,8162,8167,0},
+dd3834[]={8180,0},
+dd3835[]={979,980,0},
+dd3836[]={1031,0},
+dd3837[]={1232,1234,0},
+dd3838[]={1027,0},
+dd3839[]={1024,1025,1238,0},
+dd3840[]={1217,1244,0},
+dd3841[]={1246,0},
+dd3842[]={1037,1049,1250,1252,0},
+dd3843[]={1036,0},
+dd3844[]={1254,0},
+dd3845[]={1038,1262,1264,1266,0},
+dd3846[]={1268,0},
+dd3847[]={1272,0},
+dd3848[]={1260,0},
+dd3849[]={1233,1235,0},
+dd3850[]={1107,0},
+dd3851[]={1104,1105,1239,0},
+dd3852[]={1218,1245,0},
+dd3853[]={1247,0},
+dd3854[]={1081,1117,1251,1253,0},
+dd3855[]={1116,0},
+dd3856[]={1255,0},
+dd3857[]={1118,1263,1265,1267,0},
+dd3858[]={1269,0},
+dd3859[]={1273,0},
+dd3860[]={1261,0},
+dd3861[]={1111,0},
+dd3862[]={1142,0},
+dd3863[]={1143,0},
+dd3864[]={1242,0},
+dd3865[]={1243,0},
+dd3866[]={1258,0},
+dd3867[]={1259,0},
+dd3868[]={1570,1571,1573,0},
+dd3869[]={1730,0},
+dd3870[]={2345,0},
+dd3871[]={2353,0},
+dd3872[]={2356,0},
+dd3873[]={2507,2508,0},
+dd3874[]={2888,2891,2892,0},
+dd3875[]={2964,0},
+dd3876[]={3018,3020,0},
+dd3877[]={3019,0},
+dd3878[]={3144,0},
+dd3879[]={3264,0},
+dd3880[]={3271,3272,3274,0},
+dd3881[]={3275,0},
+dd3882[]={3402,3404,0},
+dd3883[]={3403,0},
+dd3884[]={3546,3548,3550,0},
+dd3885[]={3549,0},
+dd3886[]={4134,0},
+dd3887[]={6918,0},
+dd3888[]={6920,0},
+dd3889[]={6922,0},
+dd3890[]={6924,0},
+dd3891[]={6926,0},
+dd3892[]={6930,0},
+dd3893[]={6971,0},
+dd3894[]={6973,0},
+dd3895[]={6976,0},
+dd3896[]={6977,0},
+dd3897[]={6979,0},
+dd3898[]={7736,0},
+dd3899[]={7737,0},
+dd3900[]={7772,0},
+dd3901[]={7773,0},
+dd3902[]={7784,0},
+dd3903[]={7785,0},
+dd3904[]={7852,7862,0},
+dd3905[]={7853,7863,0},
+dd3906[]={7878,0},
+dd3907[]={7879,0},
+dd3908[]={7896,0},
+dd3909[]={7897,0},
+dd3910[]={7938,7940,7942,8064,0},
+dd3911[]={7939,7941,7943,8065,0},
+dd3912[]={8066,0},
+dd3913[]={8067,0},
+dd3914[]={8068,0},
+dd3915[]={8069,0},
+dd3916[]={8070,0},
+dd3917[]={8071,0},
+dd3918[]={7946,7948,7950,8072,0},
+dd3919[]={7947,7949,7951,8073,0},
+dd3920[]={8074,0},
+dd3921[]={8075,0},
+dd3922[]={8076,0},
+dd3923[]={8077,0},
+dd3924[]={8078,0},
+dd3925[]={8079,0},
+dd3926[]={7954,7956,0},
+dd3927[]={7955,7957,0},
+dd3928[]={7962,7964,0},
+dd3929[]={7963,7965,0},
+dd3930[]={7970,7972,7974,8080,0},
+dd3931[]={7971,7973,7975,8081,0},
+dd3932[]={8082,0},
+dd3933[]={8083,0},
+dd3934[]={8084,0},
+dd3935[]={8085,0},
+dd3936[]={8086,0},
+dd3937[]={8087,0},
+dd3938[]={7978,7980,7982,8088,0},
+dd3939[]={7979,7981,7983,8089,0},
+dd3940[]={8090,0},
+dd3941[]={8091,0},
+dd3942[]={8092,0},
+dd3943[]={8093,0},
+dd3944[]={8094,0},
+dd3945[]={8095,0},
+dd3946[]={7986,7988,7990,0},
+dd3947[]={7987,7989,7991,0},
+dd3948[]={7994,7996,7998,0},
+dd3949[]={7995,7997,7999,0},
+dd3950[]={8002,8004,0},
+dd3951[]={8003,8005,0},
+dd3952[]={8010,8012,0},
+dd3953[]={8011,8013,0},
+dd3954[]={8018,8020,8022,0},
+dd3955[]={8019,8021,8023,0},
+dd3956[]={8027,8029,8031,0},
+dd3957[]={8034,8036,8038,8096,0},
+dd3958[]={8035,8037,8039,8097,0},
+dd3959[]={8098,0},
+dd3960[]={8099,0},
+dd3961[]={8100,0},
+dd3962[]={8101,0},
+dd3963[]={8102,0},
+dd3964[]={8103,0},
+dd3965[]={8042,8044,8046,8104,0},
+dd3966[]={8043,8045,8047,8105,0},
+dd3967[]={8106,0},
+dd3968[]={8107,0},
+dd3969[]={8108,0},
+dd3970[]={8109,0},
+dd3971[]={8110,0},
+dd3972[]={8111,0},
+dd3973[]={8114,0},
+dd3974[]={8130,0},
+dd3975[]={8178,0},
+dd3976[]={8119,0},
+dd3977[]={8141,8142,8143,0},
+dd3978[]={8135,0},
+dd3979[]={8183,0},
+dd3980[]={8157,8158,8159,0},
+dd3981[]={8602,0},
+dd3982[]={8603,0},
+dd3983[]={8622,0},
+dd3984[]={8653,0},
+dd3985[]={8655,0},
+dd3986[]={8654,0},
+dd3987[]={8708,0},
+dd3988[]={8713,0},
+dd3989[]={8716,0},
+dd3990[]={8740,0},
+dd3991[]={8742,0},
+dd3992[]={8769,0},
+dd3993[]={8772,0},
+dd3994[]={8775,0},
+dd3995[]={8777,0},
+dd3996[]={8813,0},
+dd3997[]={8802,0},
+dd3998[]={8816,0},
+dd3999[]={8817,0},
+dd4000[]={8820,0},
+dd4001[]={8821,0},
+dd4002[]={8824,0},
+dd4003[]={8825,0},
+dd4004[]={8832,0},
+dd4005[]={8833,0},
+dd4006[]={8928,0},
+dd4007[]={8929,0},
+dd4008[]={8836,0},
+dd4009[]={8837,0},
+dd4010[]={8840,0},
+dd4011[]={8841,0},
+dd4012[]={8930,0},
+dd4013[]={8931,0},
+dd4014[]={8876,0},
+dd4015[]={8877,0},
+dd4016[]={8878,0},
+dd4017[]={8879,0},
+dd4018[]={8938,0},
+dd4019[]={8939,0},
+dd4020[]={8940,0},
+dd4021[]={8941,0},
+dd4022[]={12436,0},
+dd4023[]={12364,0},
+dd4024[]={12366,0},
+dd4025[]={12368,0},
+dd4026[]={12370,0},
+dd4027[]={12372,0},
+dd4028[]={12374,0},
+dd4029[]={12376,0},
+dd4030[]={12378,0},
+dd4031[]={12380,0},
+dd4032[]={12382,0},
+dd4033[]={12384,0},
+dd4034[]={12386,0},
+dd4035[]={12389,0},
+dd4036[]={12391,0},
+dd4037[]={12393,0},
+dd4038[]={12400,12401,0},
+dd4039[]={12403,12404,0},
+dd4040[]={12406,12407,0},
+dd4041[]={12409,12410,0},
+dd4042[]={12412,12413,0},
+dd4043[]={12446,0},
+dd4044[]={12532,0},
+dd4045[]={12460,0},
+dd4046[]={12462,0},
+dd4047[]={12464,0},
+dd4048[]={12466,0},
+dd4049[]={12468,0},
+dd4050[]={12470,0},
+dd4051[]={12472,0},
+dd4052[]={12474,0},
+dd4053[]={12476,0},
+dd4054[]={12478,0},
+dd4055[]={12480,0},
+dd4056[]={12482,0},
+dd4057[]={12485,0},
+dd4058[]={12489,0},
+dd4059[]={12496,12497,0},
+dd4060[]={12499,12500,0},
+dd4061[]={12502,12503,0},
+dd4062[]={12505,12506,0},
+dd4063[]={12508,12509,0},
+dd4064[]={12535,0},
+dd4065[]={12536,0},
+dd4066[]={12537,0},
+dd4067[]={12538,0},
+dd4068[]={12542,0},
+dd4069[]={69786,0},
+dd4070[]={69788,0},
+dd4071[]={69803,0},
+dd4072[]={224,0},
+dd4073[]={225,0},
+dd4074[]={226,0},
+dd4075[]={227,0},
+dd4076[]={228,0},
+dd4077[]={229,0},
+dd4078[]={230,0},
+dd4079[]={231,0},
+dd4080[]={232,0},
+dd4081[]={233,0},
+dd4082[]={234,0},
+dd4083[]={235,0},
+dd4084[]={236,0},
+dd4085[]={237,0},
+dd4086[]={238,0},
+dd4087[]={239,0},
+dd4088[]={241,0},
+dd4089[]={242,0},
+dd4090[]={243,0},
+dd4091[]={244,0},
+dd4092[]={245,0},
+dd4093[]={246,0},
+dd4094[]={248,0},
+dd4095[]={249,0},
+dd4096[]={250,0},
+dd4097[]={251,0},
+dd4098[]={252,0},
+dd4099[]={253,0},
+dd4100[]={254,0},
+dd4101[]={115,115,0},
+dd4102[]={257,0},
+dd4103[]={259,0},
+dd4104[]={261,0},
+dd4105[]={263,0},
+dd4106[]={265,0},
+dd4107[]={267,0},
+dd4108[]={269,0},
+dd4109[]={271,0},
+dd4110[]={273,0},
+dd4111[]={275,0},
+dd4112[]={277,0},
+dd4113[]={279,0},
+dd4114[]={281,0},
+dd4115[]={283,0},
+dd4116[]={285,0},
+dd4117[]={287,0},
+dd4118[]={289,0},
+dd4119[]={291,0},
+dd4120[]={293,0},
+dd4121[]={297,0},
+dd4122[]={299,0},
+dd4123[]={301,0},
+dd4124[]={303,0},
+dd4125[]={105,775,0},
+dd4126[]={307,0},
+dd4127[]={309,0},
+dd4128[]={311,0},
+dd4129[]={314,0},
+dd4130[]={316,0},
+dd4131[]={318,0},
+dd4132[]={320,0},
+dd4133[]={322,0},
+dd4134[]={324,0},
+dd4135[]={326,0},
+dd4136[]={328,0},
+dd4137[]={333,0},
+dd4138[]={335,0},
+dd4139[]={337,0},
+dd4140[]={339,0},
+dd4141[]={341,0},
+dd4142[]={343,0},
+dd4143[]={345,0},
+dd4144[]={347,0},
+dd4145[]={349,0},
+dd4146[]={351,0},
+dd4147[]={353,0},
+dd4148[]={355,0},
+dd4149[]={357,0},
+dd4150[]={359,0},
+dd4151[]={361,0},
+dd4152[]={363,0},
+dd4153[]={365,0},
+dd4154[]={367,0},
+dd4155[]={369,0},
+dd4156[]={371,0},
+dd4157[]={373,0},
+dd4158[]={375,0},
+dd4159[]={255,0},
+dd4160[]={378,0},
+dd4161[]={380,0},
+dd4162[]={382,0},
+dd4163[]={595,0},
+dd4164[]={387,0},
+dd4165[]={389,0},
+dd4166[]={392,0},
+dd4167[]={598,0},
+dd4168[]={599,0},
+dd4169[]={396,0},
+dd4170[]={477,0},
+dd4171[]={402,0},
+dd4172[]={608,0},
+dd4173[]={409,0},
+dd4174[]={417,0},
+dd4175[]={419,0},
+dd4176[]={421,0},
+dd4177[]={640,0},
+dd4178[]={424,0},
+dd4179[]={429,0},
+dd4180[]={648,0},
+dd4181[]={432,0},
+dd4182[]={436,0},
+dd4183[]={438,0},
+dd4184[]={441,0},
+dd4185[]={445,0},
+dd4186[]={454,0},
+dd4187[]={457,0},
+dd4188[]={460,0},
+dd4189[]={462,0},
+dd4190[]={464,0},
+dd4191[]={466,0},
+dd4192[]={468,0},
+dd4193[]={470,0},
+dd4194[]={472,0},
+dd4195[]={474,0},
+dd4196[]={476,0},
+dd4197[]={483,0},
+dd4198[]={485,0},
+dd4199[]={487,0},
+dd4200[]={489,0},
+dd4201[]={491,0},
+dd4202[]={499,0},
+dd4203[]={501,0},
+dd4204[]={405,0},
+dd4205[]={447,0},
+dd4206[]={505,0},
+dd4207[]={509,0},
+dd4208[]={513,0},
+dd4209[]={515,0},
+dd4210[]={517,0},
+dd4211[]={519,0},
+dd4212[]={521,0},
+dd4213[]={523,0},
+dd4214[]={525,0},
+dd4215[]={527,0},
+dd4216[]={529,0},
+dd4217[]={531,0},
+dd4218[]={533,0},
+dd4219[]={535,0},
+dd4220[]={537,0},
+dd4221[]={539,0},
+dd4222[]={541,0},
+dd4223[]={543,0},
+dd4224[]={414,0},
+dd4225[]={547,0},
+dd4226[]={549,0},
+dd4227[]={551,0},
+dd4228[]={553,0},
+dd4229[]={557,0},
+dd4230[]={559,0},
+dd4231[]={563,0},
+dd4232[]={11365,0},
+dd4233[]={572,0},
+dd4234[]={410,0},
+dd4235[]={11366,0},
+dd4236[]={578,0},
+dd4237[]={384,0},
+dd4238[]={583,0},
+dd4239[]={585,0},
+dd4240[]={587,0},
+dd4241[]={589,0},
+dd4242[]={591,0},
+dd4243[]={881,0},
+dd4244[]={883,0},
+dd4245[]={887,0},
+dd4246[]={953,776,769,0},
+dd4247[]={970,0},
+dd4248[]={971,0},
+dd4249[]={965,776,769,0},
+dd4250[]={983,0},
+dd4251[]={985,0},
+dd4252[]={987,0},
+dd4253[]={991,0},
+dd4254[]={993,0},
+dd4255[]={995,0},
+dd4256[]={997,0},
+dd4257[]={999,0},
+dd4258[]={1001,0},
+dd4259[]={1003,0},
+dd4260[]={1005,0},
+dd4261[]={1007,0},
+dd4262[]={1016,0},
+dd4263[]={1010,0},
+dd4264[]={1019,0},
+dd4265[]={891,0},
+dd4266[]={892,0},
+dd4267[]={893,0},
+dd4268[]={1104,0},
+dd4269[]={1105,0},
+dd4270[]={1106,0},
+dd4271[]={1108,0},
+dd4272[]={1109,0},
+dd4273[]={1110,0},
+dd4274[]={1112,0},
+dd4275[]={1113,0},
+dd4276[]={1114,0},
+dd4277[]={1115,0},
+dd4278[]={1117,0},
+dd4279[]={1118,0},
+dd4280[]={1119,0},
+dd4281[]={1072,0},
+dd4282[]={1073,0},
+dd4283[]={1074,0},
+dd4284[]={1075,0},
+dd4285[]={1076,0},
+dd4286[]={1077,0},
+dd4287[]={1078,0},
+dd4288[]={1079,0},
+dd4289[]={1080,0},
+dd4290[]={1081,0},
+dd4291[]={1082,0},
+dd4292[]={1083,0},
+dd4293[]={1084,0},
+dd4294[]={1086,0},
+dd4295[]={1087,0},
+dd4296[]={1088,0},
+dd4297[]={1089,0},
+dd4298[]={1090,0},
+dd4299[]={1091,0},
+dd4300[]={1092,0},
+dd4301[]={1093,0},
+dd4302[]={1094,0},
+dd4303[]={1095,0},
+dd4304[]={1096,0},
+dd4305[]={1097,0},
+dd4306[]={1098,0},
+dd4307[]={1099,0},
+dd4308[]={1100,0},
+dd4309[]={1101,0},
+dd4310[]={1102,0},
+dd4311[]={1103,0},
+dd4312[]={1121,0},
+dd4313[]={1123,0},
+dd4314[]={1125,0},
+dd4315[]={1127,0},
+dd4316[]={1129,0},
+dd4317[]={1131,0},
+dd4318[]={1133,0},
+dd4319[]={1135,0},
+dd4320[]={1137,0},
+dd4321[]={1139,0},
+dd4322[]={1141,0},
+dd4323[]={1145,0},
+dd4324[]={1147,0},
+dd4325[]={1149,0},
+dd4326[]={1151,0},
+dd4327[]={1153,0},
+dd4328[]={1163,0},
+dd4329[]={1165,0},
+dd4330[]={1167,0},
+dd4331[]={1169,0},
+dd4332[]={1171,0},
+dd4333[]={1173,0},
+dd4334[]={1175,0},
+dd4335[]={1177,0},
+dd4336[]={1179,0},
+dd4337[]={1181,0},
+dd4338[]={1183,0},
+dd4339[]={1185,0},
+dd4340[]={1187,0},
+dd4341[]={1189,0},
+dd4342[]={1191,0},
+dd4343[]={1193,0},
+dd4344[]={1195,0},
+dd4345[]={1197,0},
+dd4346[]={1199,0},
+dd4347[]={1201,0},
+dd4348[]={1203,0},
+dd4349[]={1205,0},
+dd4350[]={1207,0},
+dd4351[]={1209,0},
+dd4352[]={1211,0},
+dd4353[]={1213,0},
+dd4354[]={1215,0},
+dd4355[]={1231,0},
+dd4356[]={1218,0},
+dd4357[]={1220,0},
+dd4358[]={1222,0},
+dd4359[]={1224,0},
+dd4360[]={1226,0},
+dd4361[]={1228,0},
+dd4362[]={1230,0},
+dd4363[]={1233,0},
+dd4364[]={1235,0},
+dd4365[]={1237,0},
+dd4366[]={1239,0},
+dd4367[]={1241,0},
+dd4368[]={1245,0},
+dd4369[]={1249,0},
+dd4370[]={1251,0},
+dd4371[]={1253,0},
+dd4372[]={1257,0},
+dd4373[]={1263,0},
+dd4374[]={1265,0},
+dd4375[]={1267,0},
+dd4376[]={1271,0},
+dd4377[]={1275,0},
+dd4378[]={1277,0},
+dd4379[]={1279,0},
+dd4380[]={1281,0},
+dd4381[]={1283,0},
+dd4382[]={1285,0},
+dd4383[]={1287,0},
+dd4384[]={1289,0},
+dd4385[]={1291,0},
+dd4386[]={1293,0},
+dd4387[]={1295,0},
+dd4388[]={1297,0},
+dd4389[]={1299,0},
+dd4390[]={1301,0},
+dd4391[]={1303,0},
+dd4392[]={1305,0},
+dd4393[]={1307,0},
+dd4394[]={1309,0},
+dd4395[]={1311,0},
+dd4396[]={1313,0},
+dd4397[]={1315,0},
+dd4398[]={1317,0},
+dd4399[]={1319,0},
+dd4400[]={1377,0},
+dd4401[]={1378,0},
+dd4402[]={1379,0},
+dd4403[]={1380,0},
+dd4404[]={1381,0},
+dd4405[]={1382,0},
+dd4406[]={1383,0},
+dd4407[]={1384,0},
+dd4408[]={1385,0},
+dd4409[]={1386,0},
+dd4410[]={1387,0},
+dd4411[]={1388,0},
+dd4412[]={1389,0},
+dd4413[]={1390,0},
+dd4414[]={1391,0},
+dd4415[]={1392,0},
+dd4416[]={1393,0},
+dd4417[]={1394,0},
+dd4418[]={1395,0},
+dd4419[]={1396,0},
+dd4420[]={1397,0},
+dd4421[]={1398,0},
+dd4422[]={1399,0},
+dd4423[]={1400,0},
+dd4424[]={1401,0},
+dd4425[]={1402,0},
+dd4426[]={1403,0},
+dd4427[]={1404,0},
+dd4428[]={1405,0},
+dd4429[]={1406,0},
+dd4430[]={1407,0},
+dd4431[]={1408,0},
+dd4432[]={1409,0},
+dd4433[]={1410,0},
+dd4434[]={1411,0},
+dd4435[]={1412,0},
+dd4436[]={1413,0},
+dd4437[]={1414,0},
+dd4438[]={11520,0},
+dd4439[]={11521,0},
+dd4440[]={11522,0},
+dd4441[]={11523,0},
+dd4442[]={11524,0},
+dd4443[]={11525,0},
+dd4444[]={11526,0},
+dd4445[]={11527,0},
+dd4446[]={11528,0},
+dd4447[]={11529,0},
+dd4448[]={11530,0},
+dd4449[]={11531,0},
+dd4450[]={11532,0},
+dd4451[]={11533,0},
+dd4452[]={11534,0},
+dd4453[]={11535,0},
+dd4454[]={11536,0},
+dd4455[]={11537,0},
+dd4456[]={11538,0},
+dd4457[]={11539,0},
+dd4458[]={11540,0},
+dd4459[]={11541,0},
+dd4460[]={11542,0},
+dd4461[]={11543,0},
+dd4462[]={11544,0},
+dd4463[]={11545,0},
+dd4464[]={11546,0},
+dd4465[]={11547,0},
+dd4466[]={11548,0},
+dd4467[]={11549,0},
+dd4468[]={11550,0},
+dd4469[]={11551,0},
+dd4470[]={11552,0},
+dd4471[]={11553,0},
+dd4472[]={11554,0},
+dd4473[]={11555,0},
+dd4474[]={11556,0},
+dd4475[]={11557,0},
+dd4476[]={7681,0},
+dd4477[]={7683,0},
+dd4478[]={7685,0},
+dd4479[]={7687,0},
+dd4480[]={7691,0},
+dd4481[]={7693,0},
+dd4482[]={7695,0},
+dd4483[]={7697,0},
+dd4484[]={7699,0},
+dd4485[]={7701,0},
+dd4486[]={7703,0},
+dd4487[]={7705,0},
+dd4488[]={7707,0},
+dd4489[]={7713,0},
+dd4490[]={7715,0},
+dd4491[]={7717,0},
+dd4492[]={7719,0},
+dd4493[]={7721,0},
+dd4494[]={7723,0},
+dd4495[]={7725,0},
+dd4496[]={7729,0},
+dd4497[]={7731,0},
+dd4498[]={7733,0},
+dd4499[]={7735,0},
+dd4500[]={7739,0},
+dd4501[]={7741,0},
+dd4502[]={7743,0},
+dd4503[]={7745,0},
+dd4504[]={7747,0},
+dd4505[]={7749,0},
+dd4506[]={7751,0},
+dd4507[]={7753,0},
+dd4508[]={7755,0},
+dd4509[]={7757,0},
+dd4510[]={7759,0},
+dd4511[]={7761,0},
+dd4512[]={7763,0},
+dd4513[]={7765,0},
+dd4514[]={7767,0},
+dd4515[]={7769,0},
+dd4516[]={7771,0},
+dd4517[]={7775,0},
+dd4518[]={7777,0},
+dd4519[]={7779,0},
+dd4520[]={7787,0},
+dd4521[]={7789,0},
+dd4522[]={7791,0},
+dd4523[]={7793,0},
+dd4524[]={7795,0},
+dd4525[]={7797,0},
+dd4526[]={7799,0},
+dd4527[]={7805,0},
+dd4528[]={7807,0},
+dd4529[]={7809,0},
+dd4530[]={7811,0},
+dd4531[]={7813,0},
+dd4532[]={7815,0},
+dd4533[]={7817,0},
+dd4534[]={7819,0},
+dd4535[]={7821,0},
+dd4536[]={7823,0},
+dd4537[]={7825,0},
+dd4538[]={7827,0},
+dd4539[]={7829,0},
+dd4540[]={7841,0},
+dd4541[]={7843,0},
+dd4542[]={7845,0},
+dd4543[]={7847,0},
+dd4544[]={7849,0},
+dd4545[]={7851,0},
+dd4546[]={7853,0},
+dd4547[]={7855,0},
+dd4548[]={7857,0},
+dd4549[]={7859,0},
+dd4550[]={7861,0},
+dd4551[]={7863,0},
+dd4552[]={7865,0},
+dd4553[]={7867,0},
+dd4554[]={7869,0},
+dd4555[]={7871,0},
+dd4556[]={7873,0},
+dd4557[]={7875,0},
+dd4558[]={7877,0},
+dd4559[]={7881,0},
+dd4560[]={7883,0},
+dd4561[]={7885,0},
+dd4562[]={7887,0},
+dd4563[]={7889,0},
+dd4564[]={7891,0},
+dd4565[]={7893,0},
+dd4566[]={7895,0},
+dd4567[]={7899,0},
+dd4568[]={7901,0},
+dd4569[]={7903,0},
+dd4570[]={7905,0},
+dd4571[]={7907,0},
+dd4572[]={7909,0},
+dd4573[]={7911,0},
+dd4574[]={7913,0},
+dd4575[]={7915,0},
+dd4576[]={7917,0},
+dd4577[]={7919,0},
+dd4578[]={7921,0},
+dd4579[]={7923,0},
+dd4580[]={7925,0},
+dd4581[]={7927,0},
+dd4582[]={7929,0},
+dd4583[]={7931,0},
+dd4584[]={7933,0},
+dd4585[]={7935,0},
+dd4586[]={7936,0},
+dd4587[]={7937,0},
+dd4588[]={7938,0},
+dd4589[]={7939,0},
+dd4590[]={7940,0},
+dd4591[]={7941,0},
+dd4592[]={7942,0},
+dd4593[]={7943,0},
+dd4594[]={7952,0},
+dd4595[]={7953,0},
+dd4596[]={7954,0},
+dd4597[]={7955,0},
+dd4598[]={7956,0},
+dd4599[]={7957,0},
+dd4600[]={7968,0},
+dd4601[]={7969,0},
+dd4602[]={7970,0},
+dd4603[]={7971,0},
+dd4604[]={7972,0},
+dd4605[]={7973,0},
+dd4606[]={7974,0},
+dd4607[]={7975,0},
+dd4608[]={7984,0},
+dd4609[]={7985,0},
+dd4610[]={7986,0},
+dd4611[]={7987,0},
+dd4612[]={7988,0},
+dd4613[]={7989,0},
+dd4614[]={7990,0},
+dd4615[]={7991,0},
+dd4616[]={8000,0},
+dd4617[]={8001,0},
+dd4618[]={8002,0},
+dd4619[]={8003,0},
+dd4620[]={8004,0},
+dd4621[]={8005,0},
+dd4622[]={965,787,768,0},
+dd4623[]={965,787,769,0},
+dd4624[]={965,787,834,0},
+dd4625[]={8017,0},
+dd4626[]={8019,0},
+dd4627[]={8021,0},
+dd4628[]={8023,0},
+dd4629[]={8032,0},
+dd4630[]={8033,0},
+dd4631[]={8034,0},
+dd4632[]={8035,0},
+dd4633[]={8036,0},
+dd4634[]={8037,0},
+dd4635[]={8038,0},
+dd4636[]={8039,0},
+dd4637[]={7936,953,0},
+dd4638[]={7937,953,0},
+dd4639[]={7938,953,0},
+dd4640[]={7939,953,0},
+dd4641[]={7940,953,0},
+dd4642[]={7941,953,0},
+dd4643[]={7942,953,0},
+dd4644[]={7943,953,0},
+dd4645[]={7968,953,0},
+dd4646[]={7969,953,0},
+dd4647[]={7970,953,0},
+dd4648[]={7971,953,0},
+dd4649[]={7972,953,0},
+dd4650[]={7973,953,0},
+dd4651[]={7974,953,0},
+dd4652[]={7975,953,0},
+dd4653[]={8032,953,0},
+dd4654[]={8033,953,0},
+dd4655[]={8034,953,0},
+dd4656[]={8035,953,0},
+dd4657[]={8036,953,0},
+dd4658[]={8037,953,0},
+dd4659[]={8038,953,0},
+dd4660[]={8039,953,0},
+dd4661[]={8048,953,0},
+dd4662[]={945,953,0},
+dd4663[]={940,953,0},
+dd4664[]={945,834,953,0},
+dd4665[]={8112,0},
+dd4666[]={8113,0},
+dd4667[]={8048,0},
+dd4668[]={8049,0},
+dd4669[]={8052,953,0},
+dd4670[]={951,953,0},
+dd4671[]={942,953,0},
+dd4672[]={951,834,953,0},
+dd4673[]={8050,0},
+dd4674[]={8051,0},
+dd4675[]={8052,0},
+dd4676[]={8053,0},
+dd4677[]={953,776,768,0},
+dd4678[]={953,776,834,0},
+dd4679[]={8144,0},
+dd4680[]={8145,0},
+dd4681[]={8054,0},
+dd4682[]={8055,0},
+dd4683[]={965,776,768,0},
+dd4684[]={965,776,834,0},
+dd4685[]={8160,0},
+dd4686[]={8161,0},
+dd4687[]={8058,0},
+dd4688[]={8059,0},
+dd4689[]={8165,0},
+dd4690[]={8060,953,0},
+dd4691[]={969,953,0},
+dd4692[]={974,953,0},
+dd4693[]={969,834,953,0},
+dd4694[]={8056,0},
+dd4695[]={8057,0},
+dd4696[]={8060,0},
+dd4697[]={8061,0},
+dd4698[]={8526,0},
+dd4699[]={8560,0},
+dd4700[]={8561,0},
+dd4701[]={8562,0},
+dd4702[]={8563,0},
+dd4703[]={8564,0},
+dd4704[]={8565,0},
+dd4705[]={8566,0},
+dd4706[]={8567,0},
+dd4707[]={8568,0},
+dd4708[]={8569,0},
+dd4709[]={8570,0},
+dd4710[]={8571,0},
+dd4711[]={8572,0},
+dd4712[]={8573,0},
+dd4713[]={8574,0},
+dd4714[]={8575,0},
+dd4715[]={8580,0},
+dd4716[]={9424,0},
+dd4717[]={9425,0},
+dd4718[]={9426,0},
+dd4719[]={9427,0},
+dd4720[]={9428,0},
+dd4721[]={9429,0},
+dd4722[]={9430,0},
+dd4723[]={9431,0},
+dd4724[]={9432,0},
+dd4725[]={9433,0},
+dd4726[]={9434,0},
+dd4727[]={9435,0},
+dd4728[]={9436,0},
+dd4729[]={9437,0},
+dd4730[]={9438,0},
+dd4731[]={9439,0},
+dd4732[]={9440,0},
+dd4733[]={9441,0},
+dd4734[]={9442,0},
+dd4735[]={9443,0},
+dd4736[]={9444,0},
+dd4737[]={9445,0},
+dd4738[]={9446,0},
+dd4739[]={9447,0},
+dd4740[]={9448,0},
+dd4741[]={9449,0},
+dd4742[]={11312,0},
+dd4743[]={11313,0},
+dd4744[]={11314,0},
+dd4745[]={11315,0},
+dd4746[]={11316,0},
+dd4747[]={11317,0},
+dd4748[]={11318,0},
+dd4749[]={11319,0},
+dd4750[]={11320,0},
+dd4751[]={11321,0},
+dd4752[]={11322,0},
+dd4753[]={11323,0},
+dd4754[]={11324,0},
+dd4755[]={11325,0},
+dd4756[]={11326,0},
+dd4757[]={11327,0},
+dd4758[]={11328,0},
+dd4759[]={11329,0},
+dd4760[]={11330,0},
+dd4761[]={11331,0},
+dd4762[]={11332,0},
+dd4763[]={11333,0},
+dd4764[]={11334,0},
+dd4765[]={11335,0},
+dd4766[]={11336,0},
+dd4767[]={11337,0},
+dd4768[]={11338,0},
+dd4769[]={11339,0},
+dd4770[]={11340,0},
+dd4771[]={11341,0},
+dd4772[]={11342,0},
+dd4773[]={11343,0},
+dd4774[]={11344,0},
+dd4775[]={11345,0},
+dd4776[]={11346,0},
+dd4777[]={11347,0},
+dd4778[]={11348,0},
+dd4779[]={11349,0},
+dd4780[]={11350,0},
+dd4781[]={11351,0},
+dd4782[]={11352,0},
+dd4783[]={11353,0},
+dd4784[]={11354,0},
+dd4785[]={11355,0},
+dd4786[]={11356,0},
+dd4787[]={11357,0},
+dd4788[]={11358,0},
+dd4789[]={11361,0},
+dd4790[]={619,0},
+dd4791[]={7549,0},
+dd4792[]={637,0},
+dd4793[]={11368,0},
+dd4794[]={11370,0},
+dd4795[]={11372,0},
+dd4796[]={11379,0},
+dd4797[]={11382,0},
+dd4798[]={575,0},
+dd4799[]={576,0},
+dd4800[]={11393,0},
+dd4801[]={11395,0},
+dd4802[]={11397,0},
+dd4803[]={11399,0},
+dd4804[]={11401,0},
+dd4805[]={11403,0},
+dd4806[]={11405,0},
+dd4807[]={11407,0},
+dd4808[]={11409,0},
+dd4809[]={11411,0},
+dd4810[]={11413,0},
+dd4811[]={11415,0},
+dd4812[]={11417,0},
+dd4813[]={11419,0},
+dd4814[]={11421,0},
+dd4815[]={11423,0},
+dd4816[]={11425,0},
+dd4817[]={11427,0},
+dd4818[]={11429,0},
+dd4819[]={11431,0},
+dd4820[]={11433,0},
+dd4821[]={11435,0},
+dd4822[]={11437,0},
+dd4823[]={11439,0},
+dd4824[]={11441,0},
+dd4825[]={11443,0},
+dd4826[]={11445,0},
+dd4827[]={11447,0},
+dd4828[]={11449,0},
+dd4829[]={11451,0},
+dd4830[]={11453,0},
+dd4831[]={11455,0},
+dd4832[]={11457,0},
+dd4833[]={11459,0},
+dd4834[]={11461,0},
+dd4835[]={11463,0},
+dd4836[]={11465,0},
+dd4837[]={11467,0},
+dd4838[]={11469,0},
+dd4839[]={11471,0},
+dd4840[]={11473,0},
+dd4841[]={11475,0},
+dd4842[]={11477,0},
+dd4843[]={11479,0},
+dd4844[]={11481,0},
+dd4845[]={11483,0},
+dd4846[]={11485,0},
+dd4847[]={11487,0},
+dd4848[]={11489,0},
+dd4849[]={11491,0},
+dd4850[]={11500,0},
+dd4851[]={11502,0},
+dd4852[]={42561,0},
+dd4853[]={42563,0},
+dd4854[]={42565,0},
+dd4855[]={42567,0},
+dd4856[]={42569,0},
+dd4857[]={42571,0},
+dd4858[]={42573,0},
+dd4859[]={42575,0},
+dd4860[]={42577,0},
+dd4861[]={42579,0},
+dd4862[]={42581,0},
+dd4863[]={42583,0},
+dd4864[]={42585,0},
+dd4865[]={42587,0},
+dd4866[]={42589,0},
+dd4867[]={42591,0},
+dd4868[]={42593,0},
+dd4869[]={42595,0},
+dd4870[]={42597,0},
+dd4871[]={42599,0},
+dd4872[]={42601,0},
+dd4873[]={42603,0},
+dd4874[]={42605,0},
+dd4875[]={42625,0},
+dd4876[]={42627,0},
+dd4877[]={42629,0},
+dd4878[]={42631,0},
+dd4879[]={42633,0},
+dd4880[]={42635,0},
+dd4881[]={42637,0},
+dd4882[]={42639,0},
+dd4883[]={42641,0},
+dd4884[]={42643,0},
+dd4885[]={42645,0},
+dd4886[]={42647,0},
+dd4887[]={42787,0},
+dd4888[]={42789,0},
+dd4889[]={42791,0},
+dd4890[]={42793,0},
+dd4891[]={42795,0},
+dd4892[]={42797,0},
+dd4893[]={42799,0},
+dd4894[]={42803,0},
+dd4895[]={42805,0},
+dd4896[]={42807,0},
+dd4897[]={42809,0},
+dd4898[]={42811,0},
+dd4899[]={42813,0},
+dd4900[]={42815,0},
+dd4901[]={42817,0},
+dd4902[]={42819,0},
+dd4903[]={42821,0},
+dd4904[]={42823,0},
+dd4905[]={42825,0},
+dd4906[]={42827,0},
+dd4907[]={42829,0},
+dd4908[]={42831,0},
+dd4909[]={42833,0},
+dd4910[]={42835,0},
+dd4911[]={42837,0},
+dd4912[]={42839,0},
+dd4913[]={42841,0},
+dd4914[]={42843,0},
+dd4915[]={42845,0},
+dd4916[]={42847,0},
+dd4917[]={42849,0},
+dd4918[]={42851,0},
+dd4919[]={42853,0},
+dd4920[]={42855,0},
+dd4921[]={42857,0},
+dd4922[]={42859,0},
+dd4923[]={42861,0},
+dd4924[]={42874,0},
+dd4925[]={42876,0},
+dd4926[]={7545,0},
+dd4927[]={42879,0},
+dd4928[]={42881,0},
+dd4929[]={42883,0},
+dd4930[]={42885,0},
+dd4931[]={42887,0},
+dd4932[]={42892,0},
+dd4933[]={42897,0},
+dd4934[]={42913,0},
+dd4935[]={42915,0},
+dd4936[]={42917,0},
+dd4937[]={42919,0},
+dd4938[]={42921,0},
+dd4939[]={65345,0},
+dd4940[]={65346,0},
+dd4941[]={65347,0},
+dd4942[]={65348,0},
+dd4943[]={65349,0},
+dd4944[]={65350,0},
+dd4945[]={65351,0},
+dd4946[]={65352,0},
+dd4947[]={65353,0},
+dd4948[]={65354,0},
+dd4949[]={65355,0},
+dd4950[]={65356,0},
+dd4951[]={65357,0},
+dd4952[]={65358,0},
+dd4953[]={65359,0},
+dd4954[]={65360,0},
+dd4955[]={65361,0},
+dd4956[]={65362,0},
+dd4957[]={65363,0},
+dd4958[]={65364,0},
+dd4959[]={65365,0},
+dd4960[]={65366,0},
+dd4961[]={65367,0},
+dd4962[]={65368,0},
+dd4963[]={65369,0},
+dd4964[]={65370,0},
+dd4965[]={66600,0},
+dd4966[]={66601,0},
+dd4967[]={66602,0},
+dd4968[]={66603,0},
+dd4969[]={66604,0},
+dd4970[]={66605,0},
+dd4971[]={66606,0},
+dd4972[]={66607,0},
+dd4973[]={66608,0},
+dd4974[]={66609,0},
+dd4975[]={66610,0},
+dd4976[]={66611,0},
+dd4977[]={66612,0},
+dd4978[]={66613,0},
+dd4979[]={66614,0},
+dd4980[]={66615,0},
+dd4981[]={66616,0},
+dd4982[]={66617,0},
+dd4983[]={66618,0},
+dd4984[]={66619,0},
+dd4985[]={66620,0},
+dd4986[]={66621,0},
+dd4987[]={66622,0},
+dd4988[]={66623,0},
+dd4989[]={66624,0},
+dd4990[]={66625,0},
+dd4991[]={66626,0},
+dd4992[]={66627,0},
+dd4993[]={66628,0},
+dd4994[]={66629,0},
+dd4995[]={66630,0},
+dd4996[]={66631,0},
+dd4997[]={66632,0},
+dd4998[]={66633,0},
+dd4999[]={66634,0},
+dd5000[]={66635,0},
+dd5001[]={66636,0},
+dd5002[]={66637,0},
+dd5003[]={66638,0},
+dd5004[]={66639,0};
 /* 0000-000F */
 static const struct unidata st0[] = {
 {0,0,0,0,Cc,0,GBControl,WBOther,SBOther},
@@ -5087,43 +5201,43 @@ static const struct unidata st3[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Po,0,GBOther,WBMidLetter,SBSContinue},
 {0,0,0,0,Po,0,GBOther,WBMidNum,SBOther},
-{0,0,dd3608,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3609,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3610,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3707,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3708,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3709,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
 /* 0040-004F */
 static const struct unidata st4[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,dd2,dd3611,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd515,dd3612,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd541,dd3613,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd516,dd3614,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd517,dd3615,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd544,dd3616,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd521,dd3617,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd284,dd3618,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd538,dd3619,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd286,dd3620,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd522,dd3621,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd300,dd3622,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd523,dd3623,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd1082,dd3624,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd10,dd3625,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd2,dd3710,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd515,dd3711,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd541,dd3712,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd516,dd3713,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd517,dd3714,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd544,dd3715,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd521,dd3716,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd284,dd3717,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd538,dd3718,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd286,dd3719,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd522,dd3720,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd300,dd3721,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd523,dd3722,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd1082,dd3723,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd10,dd3724,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0050-005F */
 static const struct unidata st5[] = {
-{0,dd528,dd3626,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd1272,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd287,dd3627,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd180,dd3628,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd529,dd3629,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd530,dd3630,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd533,dd3631,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd291,dd3632,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd301,dd3633,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd292,dd3634,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd571,dd3635,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd528,dd3725,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd1276,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd287,dd3726,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd180,dd3727,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd529,dd3728,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd530,dd3729,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd533,dd3730,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd291,dd3731,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd301,dd3732,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd292,dd3733,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd571,dd3734,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
@@ -5133,35 +5247,35 @@ static const struct unidata st5[] = {
 /* 0060-006F */
 static const struct unidata st6[] = {
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{0,0,dd3636,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3637,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3638,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3639,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3640,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3641,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3642,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3643,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3644,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3645,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3646,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3647,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3648,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3649,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3650,0,Ll,0,GBOther,WBALetter,SBLower}
+{0,0,dd3735,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3736,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3737,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3738,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3739,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3740,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3741,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3742,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3743,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3744,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3745,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3746,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3747,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3748,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3749,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0070-007F */
 static const struct unidata st7[] = {
-{0,0,dd3651,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3652,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3653,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3654,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3655,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3656,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3657,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3658,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3659,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3660,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3750,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3751,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3752,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3753,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3754,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3755,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3756,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3757,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3758,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3759,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
@@ -5197,7 +5311,7 @@ static const struct unidata st9[] = {
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1,0,dd3661,0,Sk,CD,GBOther,WBOther,SBOther},
+{dd1,0,dd3760,0,Sk,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Pi,0,GBOther,WBOther,SBClose},
@@ -5227,60 +5341,60 @@ static const struct unidata st10[] = {
 };
 /* 00C0-00CF */
 static const struct unidata st11[] = {
-{dd14,dd3971,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd15,dd3972,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd16,dd3973,dd3662,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd17,dd3974,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd18,dd3975,dd3663,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd19,dd3976,dd3664,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3977,dd3665,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd20,dd3978,dd3666,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd21,dd3979,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd22,dd3980,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd23,dd3981,dd3667,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd24,dd3982,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd25,dd3983,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd26,dd3984,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd27,dd3985,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd28,dd3986,dd3668,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd14,dd4072,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd15,dd4073,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd16,dd4074,dd3761,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd17,dd4075,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd18,dd4076,dd3762,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd19,dd4077,dd3763,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4078,dd3764,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd20,dd4079,dd3765,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd21,dd4080,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd22,dd4081,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd23,dd4082,dd3766,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd24,dd4083,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd25,dd4084,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd26,dd4085,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd27,dd4086,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd28,dd4087,dd3767,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 00D0-00DF */
 static const struct unidata st12[] = {
 {0,dd543,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd29,dd3987,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd30,dd3988,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd31,dd3989,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd32,dd3990,dd3669,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd33,dd3991,dd3670,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd34,dd3992,dd3671,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,dd3993,dd3672,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd35,dd3994,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd36,dd3995,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd37,dd3996,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd38,dd3997,dd3673,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd39,dd3998,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3999,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4000,0,0,Ll,0,GBOther,WBALetter,SBLower}
+{dd29,dd4088,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd30,dd4089,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd31,dd4090,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd32,dd4091,dd3768,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd33,dd4092,dd3769,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd34,dd4093,dd3770,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,dd4094,dd3771,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd35,dd4095,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd36,dd4096,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd37,dd4097,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd38,dd4098,dd3772,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd39,dd4099,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4100,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4101,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 00E0-00EF */
 static const struct unidata st13[] = {
 {dd40,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd41,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd42,0,dd3674,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd42,0,dd3773,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd43,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd44,0,dd3675,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd45,0,dd3676,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3677,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd46,0,dd3678,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd44,0,dd3774,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd45,0,dd3775,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3776,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd46,0,dd3777,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd47,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd48,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd49,0,dd3679,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd49,0,dd3778,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd50,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd51,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd52,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd53,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd54,0,dd3680,0,Ll,0,GBOther,WBALetter,SBLower}
+{dd54,0,dd3779,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 00F0-00FF */
 static const struct unidata st14[] = {
@@ -5288,201 +5402,201 @@ static const struct unidata st14[] = {
 {dd55,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd56,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd57,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd58,0,dd3681,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd59,0,dd3682,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd60,0,dd3683,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd58,0,dd3780,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd59,0,dd3781,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd60,0,dd3782,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3684,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3783,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd61,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd62,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd63,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd64,0,dd3685,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd64,0,dd3784,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd65,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd66,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0100-010F */
 static const struct unidata st15[] = {
-{dd67,dd4001,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd67,dd4102,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd68,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd69,dd4002,dd3686,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd70,0,dd3687,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd71,dd4003,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd69,dd4103,dd3785,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd70,0,dd3786,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd71,dd4104,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd72,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd73,dd4004,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd73,dd4105,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd74,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd75,dd4005,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd75,dd4106,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd76,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd77,dd4006,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd77,dd4107,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd78,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd79,dd4007,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd79,dd4108,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd80,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd81,dd4008,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd81,dd4109,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd82,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0110-011F */
 static const struct unidata st16[] = {
-{0,dd4009,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4110,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd83,dd4010,dd3688,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd84,0,dd3689,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd85,dd4011,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd83,dd4111,dd3787,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd84,0,dd3788,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd85,dd4112,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd86,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd87,dd4012,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd87,dd4113,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd88,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd89,dd4013,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd89,dd4114,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd90,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd91,dd4014,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd91,dd4115,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd92,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd93,dd4015,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd93,dd4116,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd94,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd95,dd4016,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd95,dd4117,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd96,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0120-012F */
 static const struct unidata st17[] = {
-{dd97,dd4017,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd97,dd4118,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd98,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd99,dd4018,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd99,dd4119,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd100,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd101,dd4019,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd101,dd4120,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd102,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd1092,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd103,dd4020,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd103,dd4121,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd104,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd105,dd4021,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd105,dd4122,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd106,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd107,dd4022,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd107,dd4123,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd108,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd109,dd4023,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd109,dd4124,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd110,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0130-013F */
 static const struct unidata st18[] = {
-{dd111,dd4024,0,0,Lu,NBC,GBOther,WBALetter,SBUpper},
+{dd111,dd4125,0,0,Lu,NBC,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd112,dd4025,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd112,dd4126,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd113,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd114,dd4026,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd114,dd4127,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd115,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd116,dd4027,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd116,dd4128,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd117,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd118,dd4028,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd118,dd4129,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd119,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd120,dd4029,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd120,dd4130,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd121,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd122,dd4030,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd122,dd4131,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd123,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd124,dd4031,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd124,dd4132,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 0140-014F */
 static const struct unidata st19[] = {
 {dd125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{0,dd4032,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4133,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd126,dd4033,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd126,dd4134,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd127,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd128,dd4034,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd128,dd4135,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd129,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd130,dd4035,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd130,dd4136,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd131,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd132,dd132,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,dd524,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd133,dd4036,dd3690,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd134,0,dd3691,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd135,dd4037,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd133,dd4137,dd3789,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd134,0,dd3790,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd135,dd4138,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd136,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0150-015F */
 static const struct unidata st20[] = {
-{dd137,dd4038,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd137,dd4139,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd138,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4039,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4140,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd139,dd4040,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd139,dd4141,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd140,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd141,dd4041,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd141,dd4142,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd142,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd143,dd4042,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd143,dd4143,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd144,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd145,dd4043,dd3692,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd146,0,dd3693,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd147,dd4044,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd145,dd4144,dd3791,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd146,0,dd3792,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd147,dd4145,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd148,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd149,dd4045,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd149,dd4146,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd150,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0160-016F */
 static const struct unidata st21[] = {
-{dd151,dd4046,dd3694,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd152,0,dd3695,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd153,dd4047,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd151,dd4147,dd3793,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd152,0,dd3794,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd153,dd4148,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd154,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd155,dd4048,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd155,dd4149,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd156,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4049,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4150,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd157,dd4050,dd3696,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd158,0,dd3697,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd159,dd4051,dd3698,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd160,0,dd3699,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd161,dd4052,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd157,dd4151,dd3795,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd158,0,dd3796,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd159,dd4152,dd3797,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd160,0,dd3798,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd161,dd4153,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd162,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd163,dd4053,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd163,dd4154,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd164,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0170-017F */
 static const struct unidata st22[] = {
-{dd165,dd4054,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd165,dd4155,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd166,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd167,dd4055,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd167,dd4156,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd168,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd169,dd4056,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd169,dd4157,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd170,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd171,dd4057,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd171,dd4158,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd172,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd173,dd4058,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd174,dd4059,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd173,dd4159,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd174,dd4160,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd175,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd176,dd4060,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd176,dd4161,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd177,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd178,dd4061,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd178,dd4162,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd179,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd180,dd180,dd3700,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd180,dd180,dd3799,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 0180-018F */
 static const struct unidata st23[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4062,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4063,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4163,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4164,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4064,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4165,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd525,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4065,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4166,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4066,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4067,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4068,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4167,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4168,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4169,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4069,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4170,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd518,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0190-019F */
 static const struct unidata st24[] = {
 {0,dd519,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4070,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4171,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4071,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4172,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd299,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd549,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd548,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4072,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4173,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -5493,38 +5607,38 @@ static const struct unidata st24[] = {
 };
 /* 01A0-01AF */
 static const struct unidata st25[] = {
-{dd181,dd4073,dd3701,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd182,0,dd3702,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4074,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd181,dd4174,dd3800,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd182,0,dd3801,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4175,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4075,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4176,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4076,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4077,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4177,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4178,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd564,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4078,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4179,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4079,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd183,dd4080,dd3703,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4180,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd183,dd4181,dd3802,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 01B0-01BF */
 static const struct unidata st26[] = {
-{dd184,0,dd3704,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd184,0,dd3803,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd567,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd569,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4081,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4182,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4082,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4183,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd574,dd3705,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4083,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd574,dd3804,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4184,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,dd4084,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4185,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
@@ -5535,138 +5649,138 @@ static const struct unidata st27[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd185,dd4085,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd186,dd4085,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
+{dd185,dd4186,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd186,dd4186,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
 {dd187,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd188,dd4086,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd189,dd4086,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
+{dd188,dd4187,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd189,dd4187,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
 {dd190,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd191,dd4087,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd192,dd4087,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
+{dd191,dd4188,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd192,dd4188,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
 {dd193,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd194,dd4088,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd194,dd4189,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd195,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd196,dd4089,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd196,dd4190,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 01D0-01DF */
 static const struct unidata st28[] = {
 {dd197,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd198,dd4090,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd198,dd4191,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd199,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd200,dd4091,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd200,dd4192,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd201,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd202,dd4092,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd202,dd4193,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd203,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd204,dd4093,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd204,dd4194,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd205,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd206,dd4094,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd206,dd4195,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd207,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd208,dd4095,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd208,dd4196,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd209,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd210,dd3675,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd210,dd3774,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd211,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 01E0-01EF */
 static const struct unidata st29[] = {
-{dd212,dd3709,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd212,dd3808,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd213,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd214,dd4096,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd214,dd4197,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd215,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4097,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4198,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd216,dd4098,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd216,dd4199,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd217,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd218,dd4099,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd218,dd4200,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd219,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd220,dd4100,dd3706,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd221,0,dd3707,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd222,dd3707,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd220,dd4201,dd3805,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd221,0,dd3806,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd222,dd3806,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd223,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd224,dd3714,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd224,dd3813,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd225,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 01F0-01FF */
 static const struct unidata st30[] = {
 {dd226,dd226,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd227,dd4101,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd228,dd4101,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
+{dd227,dd4202,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd228,dd4202,0,0,Lt,CD,GBOther,WBALetter,SBUpper},
 {dd229,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd230,dd4102,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd230,dd4203,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd231,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4103,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4104,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd232,dd4105,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4204,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4205,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd232,dd4206,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd233,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd234,dd3676,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd234,dd3775,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd235,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd236,dd4106,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd236,dd4207,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd237,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd238,dd3684,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd238,dd3783,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd239,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0200-020F */
 static const struct unidata st31[] = {
-{dd240,dd4107,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd240,dd4208,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd241,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd242,dd4108,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd242,dd4209,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd243,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd244,dd4109,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd244,dd4210,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd245,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd246,dd4110,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd246,dd4211,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd247,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd248,dd4111,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd248,dd4212,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd249,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd250,dd4112,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd250,dd4213,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd251,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd252,dd4113,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd252,dd4214,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd253,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd254,dd4114,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd254,dd4215,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd255,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0210-021F */
 static const struct unidata st32[] = {
-{dd256,dd4115,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd256,dd4216,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd257,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd258,dd4116,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd258,dd4217,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd259,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd260,dd4117,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd260,dd4218,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd261,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd262,dd4118,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd262,dd4219,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd263,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd264,dd4119,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd264,dd4220,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd265,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd266,dd4120,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd266,dd4221,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd267,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4121,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4222,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd268,dd4122,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd268,dd4223,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd269,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0220-022F */
 static const struct unidata st33[] = {
-{0,dd4123,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4224,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4124,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4225,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4125,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4226,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd270,dd4126,dd3708,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd271,0,dd3709,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd272,dd4127,dd3710,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd273,0,dd3711,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd274,dd3683,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd270,dd4227,dd3807,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd271,0,dd3808,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd272,dd4228,dd3809,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd273,0,dd3810,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd274,dd3782,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd275,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd276,dd4128,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd276,dd4229,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd277,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd278,dd4129,dd3712,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd279,0,dd3713,0,Ll,0,GBOther,WBALetter,SBLower}
+{dd278,dd4230,dd3811,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd279,0,dd3812,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0230-023F */
 static const struct unidata st34[] = {
-{dd280,dd3713,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd280,dd3812,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd281,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd282,dd4130,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd282,dd4231,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd283,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -5674,30 +5788,30 @@ static const struct unidata st34[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4131,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4132,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4232,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4233,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4133,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4134,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4234,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4235,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0240-024F */
 static const struct unidata st35[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4135,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4236,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4136,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4237,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd566,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd570,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4137,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4238,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4138,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4239,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4139,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4240,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4140,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4241,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4141,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4242,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0250-025F */
@@ -5723,7 +5837,7 @@ static const struct unidata st36[] = {
 static const struct unidata st37[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3714,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3813,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -5968,13 +6082,13 @@ static const struct unidata st49[] = {
 };
 /* 0370-037F */
 static const struct unidata st50[] = {
-{0,dd4142,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4243,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4143,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4244,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd307,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{0,dd4144,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4245,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -6006,116 +6120,116 @@ static const struct unidata st51[] = {
 };
 /* 0390-039F */
 static const struct unidata st52[] = {
-{dd319,dd4145,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{0,dd3118,dd3715,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd319,dd4246,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{0,dd3131,dd3814,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd332,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd535,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd536,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd343,dd3716,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3119,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3120,dd3717,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd343,dd3815,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3132,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3133,dd3816,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd333,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd996,dd3718,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd996,dd3817,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd339,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3121,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3134,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd7,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3122,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3123,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3124,dd3719,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd3135,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3136,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3137,dd3818,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 03A0-03AF */
 static const struct unidata st53[] = {
 {0,dd338,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd340,dd3720,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd340,dd3819,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,dd3125,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3126,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3127,dd3721,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3138,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3139,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3140,dd3820,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd337,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd537,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3128,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd3129,dd3722,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd320,dd4146,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd321,dd4147,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd322,0,dd3723,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd3141,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3142,dd3821,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd320,dd4247,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd321,dd4248,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd322,0,dd3822,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd323,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd324,0,dd3724,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd324,0,dd3823,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd325,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 03B0-03BF */
 static const struct unidata st54[] = {
-{dd326,dd4148,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{0,0,dd3725,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd326,dd4249,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{0,0,dd3824,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3726,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3825,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3727,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3826,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3728,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3827,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3729,0,Ll,0,GBOther,WBALetter,SBLower}
+{0,0,dd3828,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 03C0-03CF */
 static const struct unidata st55[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3730,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd3125,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3829,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd3138,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3731,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3830,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3732,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd327,0,dd3733,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd328,0,dd3734,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3831,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd327,0,dd3832,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd328,0,dd3833,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd329,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd330,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd331,0,dd3735,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4149,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd331,0,dd3834,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4250,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 03D0-03DF */
 static const struct unidata st56[] = {
 {dd332,dd332,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,dd333,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd334,0,dd3736,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd334,0,dd3835,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd335,0,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd336,0,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd337,dd337,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,dd338,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4150,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4251,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4151,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4252,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd3138,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd3151,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4152,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4253,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 03E0-03EF */
 static const struct unidata st57[] = {
-{0,dd4153,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4254,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4154,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4255,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4155,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4256,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4156,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4257,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4157,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4258,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4158,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4259,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4159,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4260,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4160,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4261,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 03F0-03FF */
@@ -6127,90 +6241,90 @@ static const struct unidata st58[] = {
 {dd342,dd333,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd343,dd343,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,dd4161,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4262,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd344,dd4162,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{0,dd4163,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd344,dd4263,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{0,dd4264,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4164,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4165,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4166,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4265,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4266,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4267,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0400-040F */
 static const struct unidata st59[] = {
-{dd345,dd4167,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd346,dd4168,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4169,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd347,dd3751,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4170,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4171,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4172,dd3737,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd348,dd3762,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4173,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4174,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4175,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4176,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd349,dd3756,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd350,dd4177,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd351,dd4178,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4179,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd345,dd4268,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd346,dd4269,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4270,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd347,dd3850,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4271,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4272,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4273,dd3836,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd348,dd3861,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4274,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4275,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4276,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4277,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd349,dd3855,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd350,dd4278,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd351,dd4279,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4280,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0410-041F */
 static const struct unidata st60[] = {
-{0,dd4180,dd3738,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4181,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4182,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4183,dd3739,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4184,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4185,dd3740,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4186,dd3741,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4187,dd3742,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4188,dd3743,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd352,dd4189,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4190,dd3744,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4191,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4192,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4281,dd3837,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4282,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4283,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4284,dd3838,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4285,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4286,dd3839,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4287,dd3840,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4288,dd3841,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4289,dd3842,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd352,dd4290,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4291,dd3843,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4292,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4293,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd539,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4193,dd3745,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4194,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4294,dd3844,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4295,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0420-042F */
 static const struct unidata st61[] = {
-{0,dd4195,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4196,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4197,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4198,dd3746,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4199,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4200,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4201,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4202,dd3747,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4203,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4204,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4205,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4206,dd3748,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4207,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4208,dd3749,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4209,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4210,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4296,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4297,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4298,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4299,dd3845,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4300,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4301,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4302,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4303,dd3846,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4304,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4305,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4306,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4307,dd3847,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4308,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4309,dd3848,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4310,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4311,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0430-043F */
 static const struct unidata st62[] = {
-{0,0,dd3750,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3849,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3751,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3850,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3752,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3753,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3754,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3755,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3851,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3852,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3853,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3854,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd353,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3756,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3855,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3757,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3856,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0440-044F */
@@ -6218,17 +6332,17 @@ static const struct unidata st63[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3758,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3857,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3759,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3858,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3760,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3859,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3761,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3860,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
@@ -6240,7 +6354,7 @@ static const struct unidata st64[] = {
 {dd356,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,dd3762,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,dd3861,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd357,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -6253,45 +6367,45 @@ static const struct unidata st64[] = {
 };
 /* 0460-046F */
 static const struct unidata st65[] = {
-{0,dd4211,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4312,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4212,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4313,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4213,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4314,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4214,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4315,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4215,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4316,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4216,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4317,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4217,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4318,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4218,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4319,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0470-047F */
 static const struct unidata st66[] = {
-{0,dd4219,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4320,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4220,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4321,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4221,dd3763,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,0,dd3764,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd361,dd3764,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4322,dd3862,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,dd3863,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd361,dd3863,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd362,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4222,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4323,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4223,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4324,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4224,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4325,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4225,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4326,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0480-048F */
 static const struct unidata st67[] = {
-{0,dd4226,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4327,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -6301,194 +6415,194 @@ static const struct unidata st67[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
-{0,dd4227,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4328,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4228,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4329,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4229,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4330,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0490-049F */
 static const struct unidata st68[] = {
-{0,dd4230,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4331,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4231,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4332,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4232,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4333,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4233,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4334,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4234,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4335,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4235,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4336,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4236,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4337,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4237,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4338,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04A0-04AF */
 static const struct unidata st69[] = {
-{0,dd4238,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4339,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4239,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4340,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4240,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4341,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4241,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4342,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4242,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4343,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4243,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4344,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4244,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4345,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4245,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4346,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04B0-04BF */
 static const struct unidata st70[] = {
-{0,dd4246,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4347,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4247,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4348,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4248,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4349,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4249,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4350,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4250,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4351,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4251,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4352,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4252,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4353,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4253,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4354,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04C0-04CF */
 static const struct unidata st71[] = {
-{0,dd4254,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd363,dd4255,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4355,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd363,dd4356,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd364,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4256,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4357,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4257,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4358,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4258,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4359,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4259,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4360,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4260,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4361,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4261,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4362,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04D0-04DF */
 static const struct unidata st72[] = {
-{dd365,dd4262,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd365,dd4363,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd366,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd367,dd4263,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd367,dd4364,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd368,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4264,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4365,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd369,dd4265,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd369,dd4366,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd370,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4266,dd3765,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,0,dd3766,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd371,dd3766,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4367,dd3864,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,dd3865,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd371,dd3865,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd372,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd373,dd4267,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd373,dd4368,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd374,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd375,dd3754,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd375,dd3853,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd376,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04E0-04EF */
 static const struct unidata st73[] = {
-{0,dd4268,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4369,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd377,dd4269,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd377,dd4370,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd378,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd379,dd4270,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd379,dd4371,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd380,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd381,dd3757,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd381,dd3856,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd382,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4271,dd3767,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,0,dd3768,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd383,dd3768,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4372,dd3866,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,dd3867,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd383,dd3867,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd384,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd385,dd3761,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd385,dd3860,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd386,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd387,dd4272,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd387,dd4373,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd388,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 04F0-04FF */
 static const struct unidata st74[] = {
-{dd389,dd4273,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd389,dd4374,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd390,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd391,dd4274,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd391,dd4375,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd392,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd393,dd3759,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd393,dd3858,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd394,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4275,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4376,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd395,dd3760,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd395,dd3859,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd396,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4276,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4377,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4277,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4378,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4278,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4379,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0500-050F */
 static const struct unidata st75[] = {
-{0,dd4279,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4380,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4280,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4381,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4281,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4382,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4282,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4383,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4283,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4384,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4284,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4385,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4285,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4386,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4286,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4387,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0510-051F */
 static const struct unidata st76[] = {
-{0,dd4287,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4388,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4288,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4389,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4289,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4390,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4290,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4391,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4291,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4392,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4292,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4393,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4293,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4394,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4294,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4395,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 0520-052F */
 static const struct unidata st77[] = {
-{0,dd4295,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4396,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4296,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4397,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4398,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4399,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -6501,50 +6615,50 @@ static const struct unidata st77[] = {
 /* 0530-053F */
 static const struct unidata st78[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,dd4297,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4298,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4299,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4300,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4301,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4302,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4303,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4304,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4305,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4306,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4307,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4308,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4309,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4310,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4311,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4400,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4401,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4402,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4403,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4404,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4405,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4406,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4407,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4408,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4409,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4410,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4411,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4412,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4413,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4414,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0540-054F */
 static const struct unidata st79[] = {
-{0,dd4312,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4313,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4314,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4315,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4316,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4317,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4318,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4319,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4320,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4321,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4322,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4323,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4324,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4325,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4326,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4327,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{0,dd4415,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4416,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4417,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4418,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4419,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4420,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4421,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4422,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4423,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4424,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4425,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4426,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4427,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4428,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4429,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4430,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 0550-055F */
 static const struct unidata st80[] = {
-{0,dd4328,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4329,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4330,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4331,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4332,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4333,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4334,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4431,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4432,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4433,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4434,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4435,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4436,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4437,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
@@ -6766,14 +6880,14 @@ static const struct unidata st91[] = {
 };
 /* 0620-062F */
 static const struct unidata st92[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd398,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd399,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd400,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd401,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd402,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3769,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3868,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -6793,9 +6907,9 @@ static const struct unidata st93[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd2959,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd2969,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd2961,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd2971,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,27,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,28,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,29,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -6819,7 +6933,7 @@ static const struct unidata st94[] = {
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0660-066F */
 static const struct unidata st95[] = {
@@ -6862,7 +6976,7 @@ static const struct unidata st96[] = {
 /* 06C0-06CF */
 static const struct unidata st97[] = {
 {dd407,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3770,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3869,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd408,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -6882,10 +6996,10 @@ static const struct unidata st97[] = {
 static const struct unidata st98[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd2615,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd2625,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd409,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
-{0,0,dd2611,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd2621,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -6894,7 +7008,7 @@ static const struct unidata st98[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
-{0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 06E0-06EF */
@@ -7106,29 +7220,105 @@ static const struct unidata st109[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 0800-080F */
+/* 0810-081F */
 static const struct unidata st110[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 0900-090F */
-static const struct unidata st111[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* 0820-082F */
+static const struct unidata st111[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 0830-083F */
+static const struct unidata st112[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 0850-085F */
+static const struct unidata st113[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 0860-086F */
+static const struct unidata st114[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 0900-090F */
+static const struct unidata st115[] = {
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7145,7 +7335,7 @@ static const struct unidata st111[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0920-092F */
-static const struct unidata st112[] = {
+static const struct unidata st116[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7154,7 +7344,7 @@ static const struct unidata st112[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3771,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3870,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd410,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7164,26 +7354,26 @@ static const struct unidata st112[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0930-093F */
-static const struct unidata st113[] = {
-{0,0,dd3772,0,Lo,0,GBOther,WBALetter,SBOLetter},
+static const struct unidata st117[] = {
+{0,0,dd3871,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd411,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3773,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3872,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd412,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,7,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0940-094F */
-static const struct unidata st114[] = {
+static const struct unidata st118[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7198,19 +7388,19 @@ static const struct unidata st114[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0950-095F */
-static const struct unidata st115[] = {
+static const struct unidata st119[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd413,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd414,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd415,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7221,7 +7411,7 @@ static const struct unidata st115[] = {
 {dd420,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0960-096F */
-static const struct unidata st116[] = {
+static const struct unidata st120[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7240,18 +7430,18 @@ static const struct unidata st116[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric}
 };
 /* 0970-097F */
-static const struct unidata st117[] = {
+static const struct unidata st121[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7259,7 +7449,7 @@ static const struct unidata st117[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0980-098F */
-static const struct unidata st118[] = {
+static const struct unidata st122[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -7278,7 +7468,7 @@ static const struct unidata st118[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0990-099F */
-static const struct unidata st119[] = {
+static const struct unidata st123[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7297,7 +7487,7 @@ static const struct unidata st119[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 09A0-09AF */
-static const struct unidata st120[] = {
+static const struct unidata st124[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7316,7 +7506,7 @@ static const struct unidata st120[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 09B0-09BF */
-static const struct unidata st121[] = {
+static const struct unidata st125[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7335,7 +7525,7 @@ static const struct unidata st121[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 09C0-09CF */
-static const struct unidata st122[] = {
+static const struct unidata st126[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7343,7 +7533,7 @@ static const struct unidata st122[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3774,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3873,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7354,7 +7544,7 @@ static const struct unidata st122[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 09D0-09DF */
-static const struct unidata st123[] = {
+static const struct unidata st127[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7373,7 +7563,7 @@ static const struct unidata st123[] = {
 {dd425,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 09E0-09EF */
-static const struct unidata st124[] = {
+static const struct unidata st128[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7392,7 +7582,7 @@ static const struct unidata st124[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric}
 };
 /* 09F0-09FF */
-static const struct unidata st125[] = {
+static const struct unidata st129[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
@@ -7404,14 +7594,14 @@ static const struct unidata st125[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0A00-0A0F */
-static const struct unidata st126[] = {
+static const struct unidata st130[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7430,7 +7620,7 @@ static const struct unidata st126[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0A30-0A3F */
-static const struct unidata st127[] = {
+static const struct unidata st131[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7449,7 +7639,7 @@ static const struct unidata st127[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0A40-0A4F */
-static const struct unidata st128[] = {
+static const struct unidata st132[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7468,7 +7658,7 @@ static const struct unidata st128[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0A50-0A5F */
-static const struct unidata st129[] = {
+static const struct unidata st133[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7487,7 +7677,7 @@ static const struct unidata st129[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0A60-0A6F */
-static const struct unidata st130[] = {
+static const struct unidata st134[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7506,7 +7696,7 @@ static const struct unidata st130[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric}
 };
 /* 0A70-0A7F */
-static const struct unidata st131[] = {
+static const struct unidata st135[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7525,7 +7715,7 @@ static const struct unidata st131[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0A80-0A8F */
-static const struct unidata st132[] = {
+static const struct unidata st136[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7544,7 +7734,7 @@ static const struct unidata st132[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0A90-0A9F */
-static const struct unidata st133[] = {
+static const struct unidata st137[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7563,7 +7753,7 @@ static const struct unidata st133[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0AB0-0ABF */
-static const struct unidata st134[] = {
+static const struct unidata st138[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7582,7 +7772,7 @@ static const struct unidata st134[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0AC0-0ACF */
-static const struct unidata st135[] = {
+static const struct unidata st139[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7601,7 +7791,7 @@ static const struct unidata st135[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0AD0-0ADF */
-static const struct unidata st136[] = {
+static const struct unidata st140[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7620,7 +7810,7 @@ static const struct unidata st136[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0AF0-0AFF */
-static const struct unidata st137[] = {
+static const struct unidata st141[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7639,7 +7829,7 @@ static const struct unidata st137[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0B30-0B3F */
-static const struct unidata st138[] = {
+static const struct unidata st142[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7658,7 +7848,7 @@ static const struct unidata st138[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0B40-0B4F */
-static const struct unidata st139[] = {
+static const struct unidata st143[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7666,7 +7856,7 @@ static const struct unidata st139[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3775,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3874,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd432,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7677,7 +7867,7 @@ static const struct unidata st139[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0B50-0B5F */
-static const struct unidata st140[] = {
+static const struct unidata st144[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7696,15 +7886,15 @@ static const struct unidata st140[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0B70-0B7F */
-static const struct unidata st141[] = {
+static const struct unidata st145[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7715,7 +7905,7 @@ static const struct unidata st141[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0B80-0B8F */
-static const struct unidata st142[] = {
+static const struct unidata st146[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -7734,10 +7924,10 @@ static const struct unidata st142[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0B90-0B9F */
-static const struct unidata st143[] = {
+static const struct unidata st147[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3776,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3875,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd437,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7753,7 +7943,7 @@ static const struct unidata st143[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0BA0-0BAF */
-static const struct unidata st144[] = {
+static const struct unidata st148[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7772,7 +7962,7 @@ static const struct unidata st144[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0BB0-0BBF */
-static const struct unidata st145[] = {
+static const struct unidata st149[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7791,15 +7981,15 @@ static const struct unidata st145[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0BC0-0BCF */
-static const struct unidata st146[] = {
+static const struct unidata st150[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3777,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3778,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3876,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3877,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd438,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -7810,7 +8000,7 @@ static const struct unidata st146[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0BD0-0BDF */
-static const struct unidata st147[] = {
+static const struct unidata st151[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7829,7 +8019,7 @@ static const struct unidata st147[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0BF0-0BFF */
-static const struct unidata st148[] = {
+static const struct unidata st152[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -7848,7 +8038,7 @@ static const struct unidata st148[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0C00-0C0F */
-static const struct unidata st149[] = {
+static const struct unidata st153[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -7867,7 +8057,7 @@ static const struct unidata st149[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0C10-0C1F */
-static const struct unidata st150[] = {
+static const struct unidata st154[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7886,7 +8076,7 @@ static const struct unidata st150[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0C30-0C3F */
-static const struct unidata st151[] = {
+static const struct unidata st155[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7905,14 +8095,14 @@ static const struct unidata st151[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0C40-0C4F */
-static const struct unidata st152[] = {
+static const struct unidata st156[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3779,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,dd3878,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd441,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7924,7 +8114,7 @@ static const struct unidata st152[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0C50-0C5F */
-static const struct unidata st153[] = {
+static const struct unidata st157[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7943,7 +8133,7 @@ static const struct unidata st153[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0C70-0C7F */
-static const struct unidata st154[] = {
+static const struct unidata st158[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -7962,7 +8152,7 @@ static const struct unidata st154[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 0C80-0C8F */
-static const struct unidata st155[] = {
+static const struct unidata st159[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -7981,7 +8171,7 @@ static const struct unidata st155[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0CB0-0CBF */
-static const struct unidata st156[] = {
+static const struct unidata st160[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -7997,21 +8187,21 @@ static const struct unidata st156[] = {
 {0,0,0,7,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3780,0,Mn,0,GBExtend,WBExtend,SBExtend}
+{0,0,dd3879,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0CC0-0CCF */
-static const struct unidata st157[] = {
+static const struct unidata st161[] = {
 {dd442,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3781,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,dd3880,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd443,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd444,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd445,0,dd3782,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{dd445,0,dd3881,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd446,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8019,7 +8209,7 @@ static const struct unidata st157[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0CD0-0CDF */
-static const struct unidata st158[] = {
+static const struct unidata st162[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8038,10 +8228,10 @@ static const struct unidata st158[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0CF0-0CFF */
-static const struct unidata st159[] = {
+static const struct unidata st163[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8057,7 +8247,8 @@ static const struct unidata st159[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0D30-0D3F */
-static const struct unidata st160[] = {
+static const struct unidata st164[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8068,7 +8259,6 @@ static const struct unidata st160[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8076,26 +8266,26 @@ static const struct unidata st160[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0D40-0D4F */
-static const struct unidata st161[] = {
+static const struct unidata st165[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,dd3783,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3784,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3882,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3883,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd447,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd448,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd449,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0D50-0D5F */
-static const struct unidata st162[] = {
+static const struct unidata st166[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8114,7 +8304,7 @@ static const struct unidata st162[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0D70-0D7F */
-static const struct unidata st163[] = {
+static const struct unidata st167[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -8133,7 +8323,7 @@ static const struct unidata st163[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0D80-0D8F */
-static const struct unidata st164[] = {
+static const struct unidata st168[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -8152,7 +8342,7 @@ static const struct unidata st164[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0D90-0D9F */
-static const struct unidata st165[] = {
+static const struct unidata st169[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8171,7 +8361,7 @@ static const struct unidata st165[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0DB0-0DBF */
-static const struct unidata st166[] = {
+static const struct unidata st170[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8190,7 +8380,7 @@ static const struct unidata st166[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0DC0-0DCF */
-static const struct unidata st167[] = {
+static const struct unidata st171[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8209,7 +8399,7 @@ static const struct unidata st167[] = {
 {0,0,0,0,Mc,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0DD0-0DDF */
-static const struct unidata st168[] = {
+static const struct unidata st172[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8219,16 +8409,16 @@ static const struct unidata st168[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3785,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3884,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd450,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{dd451,0,dd3786,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{dd451,0,dd3885,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd452,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd453,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0DF0-0DFF */
-static const struct unidata st169[] = {
+static const struct unidata st173[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -8247,7 +8437,7 @@ static const struct unidata st169[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0E00-0E0F */
-static const struct unidata st170[] = {
+static const struct unidata st174[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8266,7 +8456,7 @@ static const struct unidata st170[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 0E10-0E1F */
-static const struct unidata st171[] = {
+static const struct unidata st175[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8285,11 +8475,11 @@ static const struct unidata st171[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 0E30-0E3F */
-static const struct unidata st172[] = {
-{0,0,0,0,Lo,0,GBExtend,WBExtend,SBOLetter},
+static const struct unidata st176[] = {
+{0,0,0,0,Lo,0,GBSpacingMark,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Lo,0,GBExtend,WBExtend,SBOLetter},
-{dd454,0,0,0,Lo,CD,GBExtend,WBExtend,SBOLetter},
+{0,0,0,0,Lo,0,GBSpacingMark,WBOther,SBOLetter},
+{dd454,0,0,0,Lo,CD,GBSpacingMark,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8304,13 +8494,13 @@ static const struct unidata st172[] = {
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther}
 };
 /* 0E40-0E4F */
-static const struct unidata st173[] = {
+static const struct unidata st177[] = {
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBExtend,WBExtend,SBOLetter},
+{0,0,0,0,Lo,0,GBSpacingMark,WBOther,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,107,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8323,7 +8513,7 @@ static const struct unidata st173[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 0E50-0E5F */
-static const struct unidata st174[] = {
+static const struct unidata st178[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -8342,7 +8532,7 @@ static const struct unidata st174[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0E80-0E8F */
-static const struct unidata st175[] = {
+static const struct unidata st179[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8361,7 +8551,7 @@ static const struct unidata st175[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0E90-0E9F */
-static const struct unidata st176[] = {
+static const struct unidata st180[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8380,7 +8570,7 @@ static const struct unidata st176[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 0EA0-0EAF */
-static const struct unidata st177[] = {
+static const struct unidata st181[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8399,11 +8589,11 @@ static const struct unidata st177[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 0EB0-0EBF */
-static const struct unidata st178[] = {
-{0,0,0,0,Lo,0,GBExtend,WBExtend,SBOLetter},
+static const struct unidata st182[] = {
+{0,0,0,0,Lo,0,GBSpacingMark,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Lo,0,GBExtend,WBExtend,SBOLetter},
-{dd455,0,0,0,Lo,CD,GBExtend,WBExtend,SBOLetter},
+{0,0,0,0,Lo,0,GBSpacingMark,WBOther,SBOLetter},
+{dd455,0,0,0,Lo,CD,GBSpacingMark,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8418,7 +8608,7 @@ static const struct unidata st178[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0EC0-0ECF */
-static const struct unidata st179[] = {
+static const struct unidata st183[] = {
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
@@ -8437,7 +8627,7 @@ static const struct unidata st179[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0ED0-0EDF */
-static const struct unidata st180[] = {
+static const struct unidata st184[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -8456,7 +8646,7 @@ static const struct unidata st180[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0F00-0F0F */
-static const struct unidata st181[] = {
+static const struct unidata st185[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -8475,7 +8665,7 @@ static const struct unidata st181[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 0F10-0F1F */
-static const struct unidata st182[] = {
+static const struct unidata st186[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -8494,7 +8684,7 @@ static const struct unidata st182[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 0F20-0F2F */
-static const struct unidata st183[] = {
+static const struct unidata st187[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -8513,7 +8703,7 @@ static const struct unidata st183[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 0F30-0F3F */
-static const struct unidata st184[] = {
+static const struct unidata st188[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -8532,7 +8722,7 @@ static const struct unidata st184[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0F40-0F4F */
-static const struct unidata st185[] = {
+static const struct unidata st189[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8551,7 +8741,7 @@ static const struct unidata st185[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0F50-0F5F */
-static const struct unidata st186[] = {
+static const struct unidata st190[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd461,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8570,7 +8760,7 @@ static const struct unidata st186[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 0F60-0F6F */
-static const struct unidata st187[] = {
+static const struct unidata st191[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8589,7 +8779,7 @@ static const struct unidata st187[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 0F70-0F7F */
-static const struct unidata st188[] = {
+static const struct unidata st192[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,129,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,130,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8608,7 +8798,7 @@ static const struct unidata st188[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 0F80-0F8F */
-static const struct unidata st189[] = {
+static const struct unidata st193[] = {
 {0,0,0,130,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd471,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8621,13 +8811,13 @@ static const struct unidata st189[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0F90-0F9F */
-static const struct unidata st190[] = {
+static const struct unidata st194[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8646,7 +8836,7 @@ static const struct unidata st190[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0FA0-0FAF */
-static const struct unidata st191[] = {
+static const struct unidata st195[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd474,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8665,7 +8855,7 @@ static const struct unidata st191[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 0FB0-0FBF */
-static const struct unidata st192[] = {
+static const struct unidata st196[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8684,7 +8874,7 @@ static const struct unidata st192[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 0FC0-0FCF */
-static const struct unidata st193[] = {
+static const struct unidata st197[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -8703,18 +8893,18 @@ static const struct unidata st193[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 0FD0-0FDF */
-static const struct unidata st194[] = {
+static const struct unidata st198[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8722,13 +8912,13 @@ static const struct unidata st194[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1020-102F */
-static const struct unidata st195[] = {
+static const struct unidata st199[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3787,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd3886,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd478,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8741,7 +8931,7 @@ static const struct unidata st195[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1030-103F */
-static const struct unidata st196[] = {
+static const struct unidata st200[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8760,7 +8950,7 @@ static const struct unidata st196[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 1040-104F */
-static const struct unidata st197[] = {
+static const struct unidata st201[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -8779,7 +8969,7 @@ static const struct unidata st197[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 1050-105F */
-static const struct unidata st198[] = {
+static const struct unidata st202[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -8798,7 +8988,7 @@ static const struct unidata st198[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1060-106F */
-static const struct unidata st199[] = {
+static const struct unidata st203[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -8817,7 +9007,7 @@ static const struct unidata st199[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 1070-107F */
-static const struct unidata st200[] = {
+static const struct unidata st204[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8836,7 +9026,7 @@ static const struct unidata st200[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 1080-108F */
-static const struct unidata st201[] = {
+static const struct unidata st205[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -8855,7 +9045,7 @@ static const struct unidata st201[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 1090-109F */
-static const struct unidata st202[] = {
+static const struct unidata st206[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -8866,59 +9056,59 @@ static const struct unidata st202[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 10A0-10AF */
-static const struct unidata st203[] = {
-{0,dd4335,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4336,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4337,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4338,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4339,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4340,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4341,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4342,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4343,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4344,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4345,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4346,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4347,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4348,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4349,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4350,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st207[] = {
+{0,dd4438,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4439,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4440,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4441,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4442,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4443,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4444,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4445,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4446,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4447,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4448,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4449,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4450,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4451,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4452,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4453,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 10B0-10BF */
-static const struct unidata st204[] = {
-{0,dd4351,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4352,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4353,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4354,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4355,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4356,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4357,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4358,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4359,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4360,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4361,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4362,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4363,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4364,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4365,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4366,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st208[] = {
+{0,dd4454,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4455,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4456,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4457,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4458,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4459,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4460,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4461,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4462,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4463,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4464,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4465,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4466,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4467,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4468,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4469,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 10C0-10CF */
-static const struct unidata st205[] = {
-{0,dd4367,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4368,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4369,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4370,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4371,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4372,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st209[] = {
+{0,dd4470,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4471,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4472,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4473,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4474,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4475,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -8931,7 +9121,7 @@ static const struct unidata st205[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10F0-10FF */
-static const struct unidata st206[] = {
+static const struct unidata st210[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -8950,26 +9140,12 @@ static const struct unidata st206[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1100-110F */
-static const struct unidata st207[] = {
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+static const struct unidata st211[] = {
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter}
-};
-/* 1150-115F */
-static const struct unidata st208[] = {
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
@@ -8980,15 +9156,10 @@ static const struct unidata st208[] = {
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter}
 };
 /* 1160-116F */
-static const struct unidata st209[] = {
+static const struct unidata st212[] = {
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
@@ -9007,15 +9178,15 @@ static const struct unidata st209[] = {
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter}
 };
 /* 11A0-11AF */
-static const struct unidata st210[] = {
+static const struct unidata st213[] = {
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
@@ -9026,7 +9197,7 @@ static const struct unidata st210[] = {
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter}
 };
 /* 11B0-11BF */
-static const struct unidata st211[] = {
+static const struct unidata st214[] = {
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
@@ -9044,27 +9215,8 @@ static const struct unidata st211[] = {
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter}
 };
-/* 11F0-11FF */
-static const struct unidata st212[] = {
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
 /* 1240-124F */
-static const struct unidata st213[] = {
+static const struct unidata st215[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9083,7 +9235,7 @@ static const struct unidata st213[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1250-125F */
-static const struct unidata st214[] = {
+static const struct unidata st216[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9102,7 +9254,7 @@ static const struct unidata st214[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 12B0-12BF */
-static const struct unidata st215[] = {
+static const struct unidata st217[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9121,7 +9273,7 @@ static const struct unidata st215[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 12C0-12CF */
-static const struct unidata st216[] = {
+static const struct unidata st218[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9140,7 +9292,7 @@ static const struct unidata st216[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 12D0-12DF */
-static const struct unidata st217[] = {
+static const struct unidata st219[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9159,7 +9311,7 @@ static const struct unidata st217[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1350-135F */
-static const struct unidata st218[] = {
+static const struct unidata st220[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9173,12 +9325,12 @@ static const struct unidata st218[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1360-136F */
-static const struct unidata st219[] = {
+static const struct unidata st221[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
@@ -9197,7 +9349,7 @@ static const struct unidata st219[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 1370-137F */
-static const struct unidata st220[] = {
+static const struct unidata st222[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -9216,7 +9368,7 @@ static const struct unidata st220[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1390-139F */
-static const struct unidata st221[] = {
+static const struct unidata st223[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -9235,7 +9387,7 @@ static const struct unidata st221[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 13F0-13FF */
-static const struct unidata st222[] = {
+static const struct unidata st224[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9254,8 +9406,8 @@ static const struct unidata st222[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1400-140F */
-static const struct unidata st223[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st225[] = {
+{0,0,0,0,Pd,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9273,7 +9425,7 @@ static const struct unidata st223[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1660-166F */
-static const struct unidata st224[] = {
+static const struct unidata st226[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9291,27 +9443,8 @@ static const struct unidata st224[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
-/* 1670-167F */
-static const struct unidata st225[] = {
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
 /* 1680-168F */
-static const struct unidata st226[] = {
+static const struct unidata st227[] = {
 {0,0,0,0,Zs,0,GBOther,WBOther,SBSp},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9330,7 +9463,7 @@ static const struct unidata st226[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1690-169F */
-static const struct unidata st227[] = {
+static const struct unidata st228[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9349,7 +9482,7 @@ static const struct unidata st227[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 16E0-16EF */
-static const struct unidata st228[] = {
+static const struct unidata st229[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9368,7 +9501,7 @@ static const struct unidata st228[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter}
 };
 /* 16F0-16FF */
-static const struct unidata st229[] = {
+static const struct unidata st230[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -9387,7 +9520,7 @@ static const struct unidata st229[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1700-170F */
-static const struct unidata st230[] = {
+static const struct unidata st231[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9406,7 +9539,7 @@ static const struct unidata st230[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1710-171F */
-static const struct unidata st231[] = {
+static const struct unidata st232[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9425,14 +9558,14 @@ static const struct unidata st231[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1730-173F */
-static const struct unidata st232[] = {
+static const struct unidata st233[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -9444,7 +9577,7 @@ static const struct unidata st232[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1750-175F */
-static const struct unidata st233[] = {
+static const struct unidata st234[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9463,7 +9596,7 @@ static const struct unidata st233[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1770-177F */
-static const struct unidata st234[] = {
+static const struct unidata st235[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9482,7 +9615,7 @@ static const struct unidata st234[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 17B0-17BF */
-static const struct unidata st235[] = {
+static const struct unidata st236[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -9501,7 +9634,7 @@ static const struct unidata st235[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 17C0-17CF */
-static const struct unidata st236[] = {
+static const struct unidata st237[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -9520,7 +9653,7 @@ static const struct unidata st236[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 17D0-17DF */
-static const struct unidata st237[] = {
+static const struct unidata st238[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9539,7 +9672,7 @@ static const struct unidata st237[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 17E0-17EF */
-static const struct unidata st238[] = {
+static const struct unidata st239[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -9558,7 +9691,7 @@ static const struct unidata st238[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 17F0-17FF */
-static const struct unidata st239[] = {
+static const struct unidata st240[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -9577,7 +9710,7 @@ static const struct unidata st239[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1800-180F */
-static const struct unidata st240[] = {
+static const struct unidata st241[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSContinue},
@@ -9596,7 +9729,7 @@ static const struct unidata st240[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1840-184F */
-static const struct unidata st241[] = {
+static const struct unidata st242[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9615,7 +9748,7 @@ static const struct unidata st241[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1870-187F */
-static const struct unidata st242[] = {
+static const struct unidata st243[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9634,7 +9767,7 @@ static const struct unidata st242[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 18A0-18AF */
-static const struct unidata st243[] = {
+static const struct unidata st244[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9652,8 +9785,27 @@ static const struct unidata st243[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
+/* 18F0-18FF */
+static const struct unidata st245[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* 1910-191F */
-static const struct unidata st244[] = {
+static const struct unidata st246[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9672,7 +9824,7 @@ static const struct unidata st244[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1920-192F */
-static const struct unidata st245[] = {
+static const struct unidata st247[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9691,7 +9843,7 @@ static const struct unidata st245[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1930-193F */
-static const struct unidata st246[] = {
+static const struct unidata st248[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -9710,7 +9862,7 @@ static const struct unidata st246[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1940-194F */
-static const struct unidata st247[] = {
+static const struct unidata st249[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -9729,7 +9881,7 @@ static const struct unidata st247[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric}
 };
 /* 1960-196F */
-static const struct unidata st248[] = {
+static const struct unidata st250[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -9748,7 +9900,7 @@ static const struct unidata st248[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1970-197F */
-static const struct unidata st249[] = {
+static const struct unidata st251[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -9767,7 +9919,9 @@ static const struct unidata st249[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 19A0-19AF */
-static const struct unidata st250[] = {
+static const struct unidata st252[] = {
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -9778,15 +9932,13 @@ static const struct unidata st250[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 19B0-19BF */
-static const struct unidata st251[] = {
+static const struct unidata st253[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -9805,7 +9957,7 @@ static const struct unidata st251[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 19C0-19CF */
-static const struct unidata st252[] = {
+static const struct unidata st254[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -9824,7 +9976,7 @@ static const struct unidata st252[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 19D0-19DF */
-static const struct unidata st253[] = {
+static const struct unidata st255[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -9835,15 +9987,15 @@ static const struct unidata st253[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 19E0-19EF */
-static const struct unidata st254[] = {
+static const struct unidata st256[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -9862,7 +10014,7 @@ static const struct unidata st254[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 1A10-1A1F */
-static const struct unidata st255[] = {
+static const struct unidata st257[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9880,29 +10032,105 @@ static const struct unidata st255[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
+/* 1A50-1A5F */
+static const struct unidata st258[] = {
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1A60-1A6F */
+static const struct unidata st259[] = {
+{0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
+};
+/* 1A70-1A7F */
+static const struct unidata st260[] = {
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* 1AA0-1AAF */
+static const struct unidata st261[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* 1B00-1B0F */
-static const struct unidata st256[] = {
+static const struct unidata st262[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3788,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3887,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd480,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3789,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3888,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd481,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3790,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3889,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd482,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3791,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3890,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd483,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3792,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3891,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd484,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1B10-1B1F */
-static const struct unidata st257[] = {
+static const struct unidata st263[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,dd3793,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd3892,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd485,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9919,7 +10147,7 @@ static const struct unidata st257[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1B30-1B3F */
-static const struct unidata st258[] = {
+static const struct unidata st264[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9930,18 +10158,18 @@ static const struct unidata st258[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,dd3794,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,dd3893,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd486,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3795,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,dd3894,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd487,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3796,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3797,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
+{0,0,dd3895,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,dd3896,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* 1B40-1B4F */
-static const struct unidata st259[] = {
+static const struct unidata st265[] = {
 {dd488,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {dd489,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,dd3798,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,dd3897,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {dd490,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,9,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -9957,7 +10185,7 @@ static const struct unidata st259[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1B50-1B5F */
-static const struct unidata st260[] = {
+static const struct unidata st266[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -9976,7 +10204,7 @@ static const struct unidata st260[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
 /* 1B60-1B6F */
-static const struct unidata st261[] = {
+static const struct unidata st267[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -9995,7 +10223,7 @@ static const struct unidata st261[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1B70-1B7F */
-static const struct unidata st262[] = {
+static const struct unidata st268[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10014,7 +10242,7 @@ static const struct unidata st262[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1B80-1B8F */
-static const struct unidata st263[] = {
+static const struct unidata st269[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -10033,7 +10261,7 @@ static const struct unidata st263[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1BA0-1BAF */
-static const struct unidata st264[] = {
+static const struct unidata st270[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10051,8 +10279,46 @@ static const struct unidata st264[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
+/* 1BE0-1BEF */
+static const struct unidata st271[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,7,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* 1BF0-1BFF */
+static const struct unidata st272[] = {
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,9,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,9,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+};
 /* 1C20-1C2F */
-static const struct unidata st265[] = {
+static const struct unidata st273[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -10071,7 +10337,7 @@ static const struct unidata st265[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1C30-1C3F */
-static const struct unidata st266[] = {
+static const struct unidata st274[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10090,7 +10356,7 @@ static const struct unidata st266[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 1C40-1C4F */
-static const struct unidata st267[] = {
+static const struct unidata st275[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -10109,7 +10375,7 @@ static const struct unidata st267[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 1C70-1C7F */
-static const struct unidata st268[] = {
+static const struct unidata st276[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -10127,46 +10393,103 @@ static const struct unidata st268[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
-/* 1D20-1D2F */
-static const struct unidata st269[] = {
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd491,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd492,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd493,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{0,0,0,0,Lm,0,GBOther,WBALetter,SBLower}
+/* 1CD0-1CDF */
+static const struct unidata st277[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
-/* 1D30-1D3F */
-static const struct unidata st270[] = {
-{dd494,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd495,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd496,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd497,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd498,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd499,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd500,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd501,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd502,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd503,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd504,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{0,0,0,0,Lm,0,GBOther,WBALetter,SBLower},
-{dd505,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{dd506,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+/* 1CE0-1CEF */
+static const struct unidata st278[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+};
+/* 1CF0-1CFF */
+static const struct unidata st279[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1D20-1D2F */
+static const struct unidata st280[] = {
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd491,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd492,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd493,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBLower}
+};
+/* 1D30-1D3F */
+static const struct unidata st281[] = {
+{dd494,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd495,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd496,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd497,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd498,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd499,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd500,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd501,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd502,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd503,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd504,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBLower},
+{dd505,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{dd506,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd507,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd508,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D40-1D4F */
-static const struct unidata st271[] = {
+static const struct unidata st282[] = {
 {dd509,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd510,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd511,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
@@ -10185,7 +10508,7 @@ static const struct unidata st271[] = {
 {dd522,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D50-1D5F */
-static const struct unidata st272[] = {
+static const struct unidata st283[] = {
 {dd523,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd524,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
@@ -10204,7 +10527,7 @@ static const struct unidata st272[] = {
 {dd536,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D60-1D6F */
-static const struct unidata st273[] = {
+static const struct unidata st284[] = {
 {dd337,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd537,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd538,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -10223,7 +10546,7 @@ static const struct unidata st273[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1D70-1D7F */
-static const struct unidata st274[] = {
+static const struct unidata st285[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -10242,7 +10565,7 @@ static const struct unidata st274[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1D90-1D9F */
-static const struct unidata st275[] = {
+static const struct unidata st286[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -10261,7 +10584,7 @@ static const struct unidata st275[] = {
 {dd520,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1DA0-1DAF */
-static const struct unidata st276[] = {
+static const struct unidata st287[] = {
 {dd544,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd545,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd546,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
@@ -10280,7 +10603,7 @@ static const struct unidata st276[] = {
 {dd559,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1DB0-1DBF */
-static const struct unidata st277[] = {
+static const struct unidata st288[] = {
 {dd560,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd561,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd562,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
@@ -10299,7 +10622,7 @@ static const struct unidata st277[] = {
 {dd333,0,0,0,Lm,CD,GBOther,WBALetter,SBLower}
 };
 /* 1DC0-1DCF */
-static const struct unidata st278[] = {
+static const struct unidata st289[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10318,7 +10641,7 @@ static const struct unidata st278[] = {
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1DD0-1DDF */
-static const struct unidata st279[] = {
+static const struct unidata st290[] = {
 {0,0,0,202,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10337,7 +10660,7 @@ static const struct unidata st279[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1DE0-1DEF */
-static const struct unidata st280[] = {
+static const struct unidata st291[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -10356,9 +10679,7 @@ static const struct unidata st280[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1DF0-1DFF */
-static const struct unidata st281[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st292[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -10371,453 +10692,455 @@ static const struct unidata st281[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,233,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1E00-1E0F */
-static const struct unidata st282[] = {
-{dd575,dd4373,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st293[] = {
+{dd575,dd4476,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd576,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd577,dd4374,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd577,dd4477,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd578,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd579,dd4375,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd579,dd4478,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd580,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd581,dd4376,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd581,dd4479,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd582,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd583,dd3678,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd583,dd3777,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd584,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd585,dd4377,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd585,dd4480,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd586,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd587,dd4378,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd587,dd4481,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd588,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd589,dd4379,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd589,dd4482,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd590,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E10-1E1F */
-static const struct unidata st283[] = {
-{dd591,dd4380,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st294[] = {
+{dd591,dd4483,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd592,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd593,dd4381,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd593,dd4484,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd594,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd595,dd4382,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd595,dd4485,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd596,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd597,dd4383,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd597,dd4486,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd598,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd599,dd4384,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd599,dd4487,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd600,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd601,dd4385,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd601,dd4488,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd602,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd603,dd3711,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd603,dd3810,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd604,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd605,dd3641,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd605,dd3740,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd606,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E20-1E2F */
-static const struct unidata st284[] = {
-{dd607,dd4386,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st295[] = {
+{dd607,dd4489,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd608,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd609,dd4387,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd609,dd4490,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd610,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd611,dd4388,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd611,dd4491,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd612,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd613,dd4389,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd613,dd4492,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd614,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd615,dd4390,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd615,dd4493,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd616,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd617,dd4391,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd617,dd4494,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd618,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd619,dd4392,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd619,dd4495,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd620,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd621,dd3680,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd621,dd3779,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd622,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E30-1E3F */
-static const struct unidata st285[] = {
-{dd623,dd4393,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st296[] = {
+{dd623,dd4496,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd624,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd625,dd4394,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd625,dd4497,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd626,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd627,dd4395,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd627,dd4498,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd628,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd629,dd4396,dd3799,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd630,0,dd3800,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd631,dd3800,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd629,dd4499,dd3898,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd630,0,dd3899,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd631,dd3899,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd632,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd633,dd4397,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd633,dd4500,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd634,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd635,dd4398,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd635,dd4501,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd636,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd637,dd4399,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd637,dd4502,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd638,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E40-1E4F */
-static const struct unidata st286[] = {
-{dd639,dd4400,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st297[] = {
+{dd639,dd4503,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd640,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd641,dd4401,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd641,dd4504,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd642,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd643,dd4402,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd643,dd4505,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd644,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd645,dd4403,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd645,dd4506,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd646,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd647,dd4404,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd647,dd4507,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd648,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd649,dd4405,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd649,dd4508,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd650,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd651,dd4406,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd651,dd4509,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd652,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd653,dd4407,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd653,dd4510,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd654,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E50-1E5F */
-static const struct unidata st287[] = {
-{dd655,dd4408,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st298[] = {
+{dd655,dd4511,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd656,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd657,dd4409,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd657,dd4512,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd658,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd659,dd4410,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd659,dd4513,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd660,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd661,dd4411,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd661,dd4514,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd662,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd663,dd4412,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd663,dd4515,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd664,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd665,dd4413,dd3801,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd666,0,dd3802,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd667,dd3802,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd665,dd4516,dd3900,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd666,0,dd3901,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd667,dd3901,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd668,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd669,dd4414,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd669,dd4517,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd670,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E60-1E6F */
-static const struct unidata st288[] = {
-{dd671,dd4415,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st299[] = {
+{dd671,dd4518,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd672,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd673,dd4416,dd3803,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd674,0,dd3804,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd675,dd3693,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd673,dd4519,dd3902,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd674,0,dd3903,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd675,dd3792,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd676,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd677,dd3695,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd677,dd3794,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd678,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd679,dd3804,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd679,dd3903,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd680,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd681,dd4417,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd681,dd4520,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd682,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd683,dd4418,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd683,dd4521,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd684,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd685,dd4419,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd685,dd4522,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd686,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E70-1E7F */
-static const struct unidata st289[] = {
-{dd687,dd4420,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st300[] = {
+{dd687,dd4523,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd688,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd689,dd4421,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd689,dd4524,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd690,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd691,dd4422,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd691,dd4525,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd692,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd693,dd4423,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd693,dd4526,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd694,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd695,dd3697,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd695,dd3796,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd696,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd697,dd3699,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd697,dd3798,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd698,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd699,dd4424,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd699,dd4527,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd700,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd701,dd4425,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd701,dd4528,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd702,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E80-1E8F */
-static const struct unidata st290[] = {
-{dd703,dd4426,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st301[] = {
+{dd703,dd4529,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd704,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd705,dd4427,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd705,dd4530,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd706,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd707,dd4428,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd707,dd4531,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd708,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd709,dd4429,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd709,dd4532,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd710,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd711,dd4430,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd711,dd4533,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd712,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd713,dd4431,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd713,dd4534,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd714,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd715,dd4432,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd715,dd4535,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd716,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd717,dd4433,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd717,dd4536,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd718,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1E90-1E9F */
-static const struct unidata st291[] = {
-{dd719,dd4434,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st302[] = {
+{dd719,dd4537,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd720,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd721,dd4435,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd721,dd4538,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd722,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd723,dd4436,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd723,dd4539,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd724,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd725,dd725,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd726,dd726,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd727,dd727,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd728,dd728,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd729,dd729,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd730,dd4415,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd730,dd4518,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4000,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4101,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1EA0-1EAF */
-static const struct unidata st292[] = {
-{dd731,dd4437,dd3805,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd732,0,dd3806,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd733,dd4438,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st303[] = {
+{dd731,dd4540,dd3904,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd732,0,dd3905,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd733,dd4541,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd734,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd735,dd4439,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd735,dd4542,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd736,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd737,dd4440,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd737,dd4543,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd738,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd739,dd4441,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd739,dd4544,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd740,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd741,dd4442,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd741,dd4545,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd742,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd743,dd4443,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd743,dd4546,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd744,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd745,dd4444,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd745,dd4547,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd746,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1EB0-1EBF */
-static const struct unidata st293[] = {
-{dd747,dd4445,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st304[] = {
+{dd747,dd4548,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd748,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd749,dd4446,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd749,dd4549,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd750,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd751,dd4447,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd751,dd4550,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd752,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd753,dd4448,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd753,dd4551,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd754,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd755,dd4449,dd3807,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd756,0,dd3808,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd757,dd4450,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd755,dd4552,dd3906,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd756,0,dd3907,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd757,dd4553,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd758,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd759,dd4451,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd759,dd4554,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd760,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd761,dd4452,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd761,dd4555,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd762,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1EC0-1ECF */
-static const struct unidata st294[] = {
-{dd763,dd4453,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st305[] = {
+{dd763,dd4556,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd764,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd765,dd4454,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd765,dd4557,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd766,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd767,dd4455,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd767,dd4558,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd768,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd769,dd3808,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd769,dd3907,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd770,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd771,dd4456,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd771,dd4559,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd772,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd773,dd4457,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd773,dd4560,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd774,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd775,dd4458,dd3809,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd776,0,dd3810,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd777,dd4459,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd775,dd4561,dd3908,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd776,0,dd3909,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd777,dd4562,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd778,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1ED0-1EDF */
-static const struct unidata st295[] = {
-{dd779,dd4460,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st306[] = {
+{dd779,dd4563,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd780,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd781,dd4461,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd781,dd4564,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd782,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd783,dd4462,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd783,dd4565,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd784,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd785,dd4463,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd785,dd4566,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd786,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd787,dd3810,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd787,dd3909,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd788,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd789,dd4464,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd789,dd4567,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd790,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd791,dd4465,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd791,dd4568,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd792,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd793,dd4466,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd793,dd4569,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd794,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1EE0-1EEF */
-static const struct unidata st296[] = {
-{dd795,dd4467,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st307[] = {
+{dd795,dd4570,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd796,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd797,dd4468,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd797,dd4571,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd798,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd799,dd4469,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd799,dd4572,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd800,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd801,dd4470,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd801,dd4573,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd802,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd803,dd4471,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd803,dd4574,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd804,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd805,dd4472,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd805,dd4575,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd806,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd807,dd4473,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd807,dd4576,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd808,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd809,dd4474,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd809,dd4577,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd810,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1EF0-1EFF */
-static const struct unidata st297[] = {
-{dd811,dd4475,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st308[] = {
+{dd811,dd4578,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd812,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd813,dd4476,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd813,dd4579,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd814,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd815,dd4477,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd815,dd4580,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd816,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd817,dd4478,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd817,dd4581,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd818,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd819,dd4479,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd819,dd4582,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd820,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4480,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4583,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4481,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4584,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4482,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4585,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 1F00-1F0F */
-static const struct unidata st298[] = {
-{dd821,0,dd3811,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd822,0,dd3812,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd823,0,dd3813,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd824,0,dd3814,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd825,0,dd3815,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd826,0,dd3816,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd827,0,dd3817,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd828,0,dd3818,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd829,dd4483,dd3819,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd830,dd4484,dd3820,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd831,dd4485,dd3821,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd832,dd4486,dd3822,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd833,dd4487,dd3823,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd834,dd4488,dd3824,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd835,dd4489,dd3825,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd836,dd4490,dd3826,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st309[] = {
+{dd821,0,dd3910,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd822,0,dd3911,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd823,0,dd3912,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd824,0,dd3913,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd825,0,dd3914,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd826,0,dd3915,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd827,0,dd3916,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd828,0,dd3917,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd829,dd4586,dd3918,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd830,dd4587,dd3919,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd831,dd4588,dd3920,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd832,dd4589,dd3921,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd833,dd4590,dd3922,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd834,dd4591,dd3923,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd835,dd4592,dd3924,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd836,dd4593,dd3925,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F10-1F1F */
-static const struct unidata st299[] = {
-{dd837,0,dd3827,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd838,0,dd3828,0,Ll,0,GBOther,WBALetter,SBLower},
+static const struct unidata st310[] = {
+{dd837,0,dd3926,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd838,0,dd3927,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd839,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd840,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd841,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd842,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd843,dd4491,dd3829,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd844,dd4492,dd3830,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd845,dd4493,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd846,dd4494,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd847,dd4495,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd848,dd4496,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd843,dd4594,dd3928,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd844,dd4595,dd3929,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd845,dd4596,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd846,dd4597,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd847,dd4598,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd848,dd4599,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1F20-1F2F */
-static const struct unidata st300[] = {
-{dd849,0,dd3831,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd850,0,dd3832,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd851,0,dd3833,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd852,0,dd3834,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd853,0,dd3835,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd854,0,dd3836,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd855,0,dd3837,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd856,0,dd3838,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd857,dd4497,dd3839,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd858,dd4498,dd3840,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd859,dd4499,dd3841,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd860,dd4500,dd3842,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd861,dd4501,dd3843,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd862,dd4502,dd3844,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd863,dd4503,dd3845,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd864,dd4504,dd3846,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st311[] = {
+{dd849,0,dd3930,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd850,0,dd3931,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd851,0,dd3932,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd852,0,dd3933,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd853,0,dd3934,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd854,0,dd3935,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd855,0,dd3936,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd856,0,dd3937,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd857,dd4600,dd3938,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd858,dd4601,dd3939,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd859,dd4602,dd3940,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd860,dd4603,dd3941,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd861,dd4604,dd3942,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd862,dd4605,dd3943,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd863,dd4606,dd3944,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd864,dd4607,dd3945,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F30-1F3F */
-static const struct unidata st301[] = {
-{dd865,0,dd3847,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd866,0,dd3848,0,Ll,0,GBOther,WBALetter,SBLower},
+static const struct unidata st312[] = {
+{dd865,0,dd3946,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd866,0,dd3947,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd867,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd868,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd869,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd870,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd871,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd872,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd873,dd4505,dd3849,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd874,dd4506,dd3850,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd875,dd4507,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd876,dd4508,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd877,dd4509,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd878,dd4510,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd879,dd4511,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd880,dd4512,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd873,dd4608,dd3948,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd874,dd4609,dd3949,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd875,dd4610,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd876,dd4611,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd877,dd4612,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd878,dd4613,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd879,dd4614,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd880,dd4615,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F40-1F4F */
-static const struct unidata st302[] = {
-{dd881,0,dd3851,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd882,0,dd3852,0,Ll,0,GBOther,WBALetter,SBLower},
+static const struct unidata st313[] = {
+{dd881,0,dd3950,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd882,0,dd3951,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd883,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd884,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd885,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd886,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd887,dd4513,dd3853,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd888,dd4514,dd3854,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd889,dd4515,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd890,dd4516,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd891,dd4517,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd892,dd4518,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd887,dd4616,dd3952,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd888,dd4617,dd3953,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd889,dd4618,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd890,dd4619,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd891,dd4620,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd892,dd4621,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1F50-1F5F */
-static const struct unidata st303[] = {
-{dd893,dd893,dd3855,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd894,0,dd3856,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd895,dd4519,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+static const struct unidata st314[] = {
+{dd893,dd893,dd3954,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd894,0,dd3955,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd895,dd4622,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd896,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd897,dd4520,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd897,dd4623,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd898,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd899,dd4521,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd899,dd4624,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd900,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd901,dd4522,dd3857,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd901,dd4625,dd3956,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd902,dd4523,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd902,dd4626,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd903,dd4524,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd903,dd4627,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd904,dd4525,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+{dd904,dd4628,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F60-1F6F */
-static const struct unidata st304[] = {
-{dd905,0,dd3858,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd906,0,dd3859,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd907,0,dd3860,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd908,0,dd3861,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd909,0,dd3862,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd910,0,dd3863,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd911,0,dd3864,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd912,0,dd3865,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd913,dd4526,dd3866,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd914,dd4527,dd3867,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd915,dd4528,dd3868,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd916,dd4529,dd3869,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd917,dd4530,dd3870,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd918,dd4531,dd3871,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd919,dd4532,dd3872,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd920,dd4533,dd3873,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st315[] = {
+{dd905,0,dd3957,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd906,0,dd3958,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd907,0,dd3959,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd908,0,dd3960,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd909,0,dd3961,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd910,0,dd3962,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd911,0,dd3963,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd912,0,dd3964,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd913,dd4629,dd3965,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd914,dd4630,dd3966,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd915,dd4631,dd3967,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd916,dd4632,dd3968,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd917,dd4633,dd3969,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd918,dd4634,dd3970,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd919,dd4635,dd3971,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd920,dd4636,dd3972,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F70-1F7F */
-static const struct unidata st305[] = {
-{dd921,0,dd3874,0,Ll,0,GBOther,WBALetter,SBLower},
+static const struct unidata st316[] = {
+{dd921,0,dd3973,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd922,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd923,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd924,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd925,0,dd3875,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd925,0,dd3974,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd926,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd927,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd928,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -10825,165 +11148,165 @@ static const struct unidata st305[] = {
 {dd930,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd931,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd932,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd933,0,dd3876,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd933,0,dd3975,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd934,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1F80-1F8F */
-static const struct unidata st306[] = {
-{dd935,dd4534,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd936,dd4535,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd937,dd4536,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd938,dd4537,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd939,dd4538,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd940,dd4539,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd941,dd4540,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd942,dd4541,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd943,dd4534,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd944,dd4535,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd945,dd4536,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd946,dd4537,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd947,dd4538,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd948,dd4539,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd949,dd4540,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd950,dd4541,0,0,Lt,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st317[] = {
+{dd935,dd4637,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd936,dd4638,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd937,dd4639,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd938,dd4640,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd939,dd4641,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd940,dd4642,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd941,dd4643,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd942,dd4644,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd943,dd4637,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd944,dd4638,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd945,dd4639,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd946,dd4640,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd947,dd4641,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd948,dd4642,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd949,dd4643,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd950,dd4644,0,0,Lt,0,GBOther,WBALetter,SBUpper}
 };
 /* 1F90-1F9F */
-static const struct unidata st307[] = {
-{dd951,dd4542,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd952,dd4543,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd953,dd4544,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd954,dd4545,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd955,dd4546,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd956,dd4547,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd957,dd4548,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd958,dd4549,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd959,dd4542,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd960,dd4543,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd961,dd4544,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd962,dd4545,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd963,dd4546,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd964,dd4547,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd965,dd4548,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd966,dd4549,0,0,Lt,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st318[] = {
+{dd951,dd4645,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd952,dd4646,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd953,dd4647,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd954,dd4648,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd955,dd4649,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd956,dd4650,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd957,dd4651,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd958,dd4652,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd959,dd4645,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd960,dd4646,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd961,dd4647,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd962,dd4648,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd963,dd4649,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd964,dd4650,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd965,dd4651,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd966,dd4652,0,0,Lt,0,GBOther,WBALetter,SBUpper}
 };
 /* 1FA0-1FAF */
-static const struct unidata st308[] = {
-{dd967,dd4550,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd968,dd4551,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd969,dd4552,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd970,dd4553,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd971,dd4554,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd972,dd4555,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd973,dd4556,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd974,dd4557,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd975,dd4550,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd976,dd4551,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd977,dd4552,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd978,dd4553,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd979,dd4554,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd980,dd4555,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd981,dd4556,0,0,Lt,0,GBOther,WBALetter,SBUpper},
-{dd982,dd4557,0,0,Lt,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st319[] = {
+{dd967,dd4653,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd968,dd4654,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd969,dd4655,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd970,dd4656,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd971,dd4657,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd972,dd4658,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd973,dd4659,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd974,dd4660,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd975,dd4653,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd976,dd4654,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd977,dd4655,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd978,dd4656,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd979,dd4657,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd980,dd4658,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd981,dd4659,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd982,dd4660,0,0,Lt,0,GBOther,WBALetter,SBUpper}
 };
 /* 1FB0-1FBF */
-static const struct unidata st309[] = {
+static const struct unidata st320[] = {
 {dd983,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd984,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd985,dd4558,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd986,dd4559,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd987,dd4560,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd988,dd988,dd3877,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd989,dd4561,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd990,dd4562,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd991,dd4563,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd992,dd4564,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd993,dd4565,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd994,dd4559,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd985,dd4661,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd986,dd4662,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd987,dd4663,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd988,dd988,dd3976,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd989,dd4664,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd990,dd4665,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd991,dd4666,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd992,dd4667,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd993,dd4668,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd994,dd4662,0,0,Lt,0,GBOther,WBALetter,SBUpper},
 {dd995,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
 {dd996,dd996,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd995,0,dd3878,0,Sk,CD,GBOther,WBOther,SBOther}
+{dd995,0,dd3977,0,Sk,CD,GBOther,WBOther,SBOther}
 };
 /* 1FC0-1FCF */
-static const struct unidata st310[] = {
+static const struct unidata st321[] = {
 {dd997,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
 {dd998,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{dd999,dd4566,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1000,dd4567,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1001,dd4568,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1002,dd1002,dd3879,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1003,dd4569,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1004,dd4570,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1005,dd4571,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1006,dd4572,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1007,dd4573,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1008,dd4567,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd999,dd4669,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd1000,dd4670,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd1001,dd4671,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd1002,dd1002,dd3978,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1003,dd4672,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1004,dd4673,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1005,dd4674,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1006,dd4675,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1007,dd4676,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1008,dd4670,0,0,Lt,0,GBOther,WBALetter,SBUpper},
 {dd1009,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1010,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1011,0,0,0,Sk,0,GBOther,WBOther,SBOther}
 };
 /* 1FD0-1FDF */
-static const struct unidata st311[] = {
+static const struct unidata st322[] = {
 {dd1012,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd1013,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1014,dd4574,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1015,dd4145,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1014,dd4677,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1015,dd4246,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd1016,dd1016,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1017,dd4575,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1018,dd4576,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1019,dd4577,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1020,dd4578,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1021,dd4579,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1017,dd4678,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1018,dd4679,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1019,dd4680,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1020,dd4681,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1021,dd4682,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd1022,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1023,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1024,0,0,0,Sk,0,GBOther,WBOther,SBOther}
 };
 /* 1FE0-1FEF */
-static const struct unidata st312[] = {
+static const struct unidata st323[] = {
 {dd1025,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd1026,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1027,dd4580,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1028,dd4148,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1027,dd4683,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1028,dd4249,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd1029,dd1029,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
 {dd1030,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd1031,dd1031,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1032,dd4581,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1033,dd4582,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1034,dd4583,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1035,dd4584,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1036,dd4585,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1037,dd4586,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1032,dd4684,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1033,dd4685,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1034,dd4686,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1035,dd4687,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1036,dd4688,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1037,dd4689,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd1038,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1039,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {dd1040,0,0,0,Sk,0,GBOther,WBOther,SBOther}
 };
 /* 1FF0-1FFF */
-static const struct unidata st313[] = {
+static const struct unidata st324[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1041,dd4587,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1042,dd4588,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{dd1043,dd4589,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd1041,dd4690,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd1042,dd4691,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{dd1043,dd4692,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1044,dd1044,dd3880,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1045,dd4590,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
-{dd1046,dd4591,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1047,dd4592,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1048,dd4593,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1049,dd4594,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1050,dd4588,0,0,Lt,0,GBOther,WBALetter,SBUpper},
+{dd1044,dd1044,dd3979,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1045,dd4693,0,0,Ll,NBC,GBOther,WBALetter,SBLower},
+{dd1046,dd4694,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1047,dd4695,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1048,dd4696,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1049,dd4697,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1050,dd4691,0,0,Lt,0,GBOther,WBALetter,SBUpper},
 {dd1051,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{dd1052,0,dd3881,0,Sk,CD,GBOther,WBOther,SBOther},
+{dd1052,0,dd3980,0,Sk,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2000-200F */
-static const struct unidata st314[] = {
+static const struct unidata st325[] = {
 {dd1053,0,0,0,Zs,0,GBOther,WBOther,SBSp},
 {dd1054,0,0,0,Zs,0,GBOther,WBOther,SBSp},
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp},
@@ -10995,14 +11318,14 @@ static const struct unidata st314[] = {
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp},
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp},
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp},
-{0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
+{0,0,0,0,Cf,0,GBControl,WBOther,SBFormat},
 {0,0,0,0,Cf,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cf,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat}
 };
 /* 2010-201F */
-static const struct unidata st315[] = {
+static const struct unidata st326[] = {
 {0,0,0,0,Pd,0,GBOther,WBOther,SBOther},
 {dd1055,0,0,0,Pd,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Pd,0,GBOther,WBOther,SBOther},
@@ -11021,7 +11344,7 @@ static const struct unidata st315[] = {
 {0,0,0,0,Pi,0,GBOther,WBOther,SBClose}
 };
 /* 2020-202F */
-static const struct unidata st316[] = {
+static const struct unidata st327[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -11040,7 +11363,7 @@ static const struct unidata st316[] = {
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp}
 };
 /* 2030-203F */
-static const struct unidata st317[] = {
+static const struct unidata st328[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -11059,7 +11382,7 @@ static const struct unidata st317[] = {
 {0,0,0,0,Pc,0,GBOther,WBExtendNumLet,SBOther}
 };
 /* 2040-204F */
-static const struct unidata st318[] = {
+static const struct unidata st329[] = {
 {0,0,0,0,Pc,0,GBOther,WBExtendNumLet,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -11078,7 +11401,7 @@ static const struct unidata st318[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 2050-205F */
-static const struct unidata st319[] = {
+static const struct unidata st330[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11097,7 +11420,7 @@ static const struct unidata st319[] = {
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp}
 };
 /* 2060-206F */
-static const struct unidata st320[] = {
+static const struct unidata st331[] = {
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
@@ -11116,9 +11439,9 @@ static const struct unidata st320[] = {
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat}
 };
 /* 2070-207F */
-static const struct unidata st321[] = {
+static const struct unidata st332[] = {
 {dd1070,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd538,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd538,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd1071,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11132,10 +11455,10 @@ static const struct unidata st321[] = {
 {dd1079,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {dd1080,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd1081,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd1082,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter}
 };
 /* 2080-208F */
-static const struct unidata st322[] = {
+static const struct unidata st333[] = {
 {dd1070,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd9,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd4,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11154,26 +11477,26 @@ static const struct unidata st322[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2090-209F */
-static const struct unidata st323[] = {
+static const struct unidata st334[] = {
 {dd2,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd517,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd301,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {dd518,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd284,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd522,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd300,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd523,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd1082,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd528,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd180,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
+{dd529,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 20A0-20AF */
-static const struct unidata st324[] = {
+static const struct unidata st335[] = {
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
@@ -11192,17 +11515,17 @@ static const struct unidata st324[] = {
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther}
 };
 /* 20B0-20BF */
-static const struct unidata st325[] = {
+static const struct unidata st336[] = {
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -11211,7 +11534,7 @@ static const struct unidata st325[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 20D0-20DF */
-static const struct unidata st326[] = {
+static const struct unidata st337[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -11230,7 +11553,7 @@ static const struct unidata st326[] = {
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend}
 };
 /* 20E0-20EF */
-static const struct unidata st327[] = {
+static const struct unidata st338[] = {
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
@@ -11249,7 +11572,7 @@ static const struct unidata st327[] = {
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 20F0-20FF */
-static const struct unidata st328[] = {
+static const struct unidata st339[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -11268,7 +11591,7 @@ static const struct unidata st328[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2100-210F */
-static const struct unidata st329[] = {
+static const struct unidata st340[] = {
 {dd1084,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1085,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1086,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -11287,7 +11610,7 @@ static const struct unidata st329[] = {
 {dd1092,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 2110-211F */
-static const struct unidata st330[] = {
+static const struct unidata st341[] = {
 {dd499,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd499,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd502,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -11296,7 +11619,7 @@ static const struct unidata st330[] = {
 {dd504,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1093,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd508,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -11306,29 +11629,29 @@ static const struct unidata st330[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2120-212F */
-static const struct unidata st331[] = {
+static const struct unidata st342[] = {
 {dd1095,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1096,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1097,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1099,dd3129,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1099,dd3142,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {dd501,dd522,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{dd1100,dd3976,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{dd1100,dd4077,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd493,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1086,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {dd517,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 2130-213F */
-static const struct unidata st332[] = {
+static const struct unidata st343[] = {
 {dd495,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{0,dd4595,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4698,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {dd503,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd1102,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -11344,7 +11667,7 @@ static const struct unidata st332[] = {
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 2140-214F */
-static const struct unidata st333[] = {
+static const struct unidata st344[] = {
 {dd1109,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11363,10 +11686,7 @@ static const struct unidata st333[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2150-215F */
-static const struct unidata st334[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st345[] = {
 {dd1110,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1111,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1112,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11379,58 +11699,61 @@ static const struct unidata st334[] = {
 {dd1119,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1120,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1121,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1122,0,0,0,No,CD,GBOther,WBOther,SBOther}
+{dd1122,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1123,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1124,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1125,0,0,0,No,CD,GBOther,WBOther,SBOther}
 };
 /* 2160-216F */
-static const struct unidata st335[] = {
-{dd499,dd4596,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1123,dd4597,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1124,dd4598,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1125,dd4599,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1126,dd4600,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1127,dd4601,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1128,dd4602,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1129,dd4603,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1130,dd4604,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1131,dd4605,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1132,dd4606,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1133,dd4607,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd502,dd4608,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd1086,dd4609,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd494,dd4610,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
-{dd503,dd4611,0,0,Nl,CD,GBOther,WBALetter,SBUpper}
+static const struct unidata st346[] = {
+{dd499,dd4699,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1126,dd4700,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1127,dd4701,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1128,dd4702,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1129,dd4703,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1130,dd4704,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1131,dd4705,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1132,dd4706,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1133,dd4707,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1134,dd4708,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1135,dd4709,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1136,dd4710,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd502,dd4711,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd1086,dd4712,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd494,dd4713,0,0,Nl,CD,GBOther,WBALetter,SBUpper},
+{dd503,dd4714,0,0,Nl,CD,GBOther,WBALetter,SBUpper}
 };
 /* 2170-217F */
-static const struct unidata st336[] = {
+static const struct unidata st347[] = {
 {dd538,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
-{dd1134,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
-{dd1135,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
-{dd1136,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
-{dd533,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1137,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1138,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1139,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
+{dd533,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1140,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
-{dd301,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1141,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd1142,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
+{dd1143,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
+{dd301,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
+{dd1144,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
+{dd1145,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd300,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd541,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd516,0,0,0,Nl,CD,GBOther,WBALetter,SBLower},
 {dd523,0,0,0,Nl,CD,GBOther,WBALetter,SBLower}
 };
 /* 2180-218F */
-static const struct unidata st337[] = {
+static const struct unidata st348[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
-{0,dd4612,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4715,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd1146,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -11439,26 +11762,26 @@ static const struct unidata st337[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2190-219F */
-static const struct unidata st338[] = {
-{0,0,dd3882,0,Sm,0,GBOther,WBOther,SBOther},
+static const struct unidata st349[] = {
+{0,0,dd3981,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3883,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3982,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3884,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3983,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1143,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1144,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1147,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1148,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 21A0-21AF */
-static const struct unidata st339[] = {
+static const struct unidata st350[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11473,11 +11796,11 @@ static const struct unidata st339[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1145,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1149,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 21C0-21CF */
-static const struct unidata st340[] = {
+static const struct unidata st351[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11491,17 +11814,17 @@ static const struct unidata st340[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1146,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1147,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1148,0,0,0,Sm,0,GBOther,WBOther,SBOther}
+{dd1150,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd1151,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1152,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 21D0-21DF */
-static const struct unidata st341[] = {
-{0,0,dd3885,0,So,0,GBOther,WBOther,SBOther},
+static const struct unidata st352[] = {
+{0,0,dd3984,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,dd3886,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3985,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,dd3887,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3986,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11515,7 +11838,7 @@ static const struct unidata st341[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 21F0-21FF */
-static const struct unidata st342[] = {
+static const struct unidata st353[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11534,26 +11857,26 @@ static const struct unidata st342[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2200-220F */
-static const struct unidata st343[] = {
+static const struct unidata st354[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3888,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1149,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3987,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1153,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3889,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1150,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3988,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1154,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3890,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1151,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3989,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1155,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2210-221F */
-static const struct unidata st344[] = {
+static const struct unidata st355[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11572,27 +11895,27 @@ static const struct unidata st344[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2220-222F */
-static const struct unidata st345[] = {
+static const struct unidata st356[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3891,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1152,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3892,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1153,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3990,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1156,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3991,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1157,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1154,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd1155,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1158,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1159,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1156,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
+{dd1160,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
 };
 /* 2230-223F */
-static const struct unidata st346[] = {
-{dd1157,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+static const struct unidata st357[] = {
+{dd1161,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11604,38 +11927,38 @@ static const struct unidata st346[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3893,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3992,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2240-224F */
-static const struct unidata st347[] = {
+static const struct unidata st358[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1158,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1162,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3894,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1159,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3895,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3993,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1163,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3994,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1160,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3896,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1161,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1164,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3995,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1165,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3897,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3996,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2260-226F */
-static const struct unidata st348[] = {
-{dd1162,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3898,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1163,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+static const struct unidata st359[] = {
+{dd1166,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3997,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1167,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3899,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3900,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3998,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd3999,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11643,41 +11966,41 @@ static const struct unidata st348[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1164,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1165,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1166,0,0,0,Sm,0,GBOther,WBOther,SBOther}
-};
-/* 2270-227F */
-static const struct unidata st349[] = {
-{dd1167,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1168,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3901,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3902,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1169,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1170,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3903,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3904,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1170,0,0,0,Sm,0,GBOther,WBOther,SBOther}
+};
+/* 2270-227F */
+static const struct unidata st360[] = {
 {dd1171,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1172,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3905,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3906,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3907,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3908,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
-};
-/* 2280-228F */
-static const struct unidata st350[] = {
+{0,0,dd4000,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4001,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1173,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1174,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3909,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3910,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4002,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4003,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1175,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1176,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3911,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3912,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4004,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4005,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4006,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4007,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
+};
+/* 2280-228F */
+static const struct unidata st361[] = {
 {dd1177,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {dd1178,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4008,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4009,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1179,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1180,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4010,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4011,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1181,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1182,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11686,10 +12009,10 @@ static const struct unidata st350[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2290-229F */
-static const struct unidata st351[] = {
+static const struct unidata st362[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3913,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3914,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4012,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4013,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11705,32 +12028,32 @@ static const struct unidata st351[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 22A0-22AF */
-static const struct unidata st352[] = {
+static const struct unidata st363[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3915,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4014,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3916,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3917,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4015,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4016,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3918,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1179,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1180,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1181,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1182,0,0,0,Sm,0,GBOther,WBOther,SBOther}
+{0,0,dd4017,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1183,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1184,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1185,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1186,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 22B0-22BF */
-static const struct unidata st353[] = {
+static const struct unidata st364[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3919,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3920,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3921,0,Sm,0,GBOther,WBOther,SBOther},
-{0,0,dd3922,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4018,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4019,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4020,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,dd4021,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11743,26 +12066,26 @@ static const struct unidata st353[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 22E0-22EF */
-static const struct unidata st354[] = {
-{dd1183,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1184,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1185,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1186,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+static const struct unidata st365[] = {
+{dd1187,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1188,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1189,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1190,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1187,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1188,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1189,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1190,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1191,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1192,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1193,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1194,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2300-230F */
-static const struct unidata st355[] = {
+static const struct unidata st366[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11781,7 +12104,7 @@ static const struct unidata st355[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2320-232F */
-static const struct unidata st356[] = {
+static const struct unidata st367[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11791,8 +12114,8 @@ static const struct unidata st356[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1191,0,0,0,Ps,0,GBOther,WBOther,SBClose},
-{dd1192,0,0,0,Pe,0,GBOther,WBOther,SBClose},
+{dd1195,0,0,0,Ps,0,GBOther,WBOther,SBClose},
+{dd1196,0,0,0,Pe,0,GBOther,WBOther,SBClose},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11800,7 +12123,7 @@ static const struct unidata st356[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2370-237F */
-static const struct unidata st357[] = {
+static const struct unidata st368[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11819,7 +12142,7 @@ static const struct unidata st357[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2390-239F */
-static const struct unidata st358[] = {
+static const struct unidata st369[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11838,7 +12161,7 @@ static const struct unidata st358[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 23B0-23BF */
-static const struct unidata st359[] = {
+static const struct unidata st370[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -11857,7 +12180,7 @@ static const struct unidata st359[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 23D0-23DF */
-static const struct unidata st360[] = {
+static const struct unidata st371[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11876,7 +12199,7 @@ static const struct unidata st360[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 23E0-23EF */
-static const struct unidata st361[] = {
+static const struct unidata st372[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11885,6 +12208,25 @@ static const struct unidata st361[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 23F0-23FF */
+static const struct unidata st373[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -11895,7 +12237,7 @@ static const struct unidata st361[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2420-242F */
-static const struct unidata st362[] = {
+static const struct unidata st374[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11914,7 +12256,7 @@ static const struct unidata st362[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2440-244F */
-static const struct unidata st363[] = {
+static const struct unidata st375[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -11933,7 +12275,7 @@ static const struct unidata st363[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2460-246F */
-static const struct unidata st364[] = {
+static const struct unidata st376[] = {
 {dd9,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd4,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd5,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11943,20 +12285,16 @@ static const struct unidata st364[] = {
 {dd1074,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1075,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1076,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1193,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1194,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1195,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1196,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1197,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1198,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1199,0,0,0,No,CD,GBOther,WBOther,SBOther}
-};
-/* 2470-247F */
-static const struct unidata st365[] = {
+{dd1199,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1200,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1201,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1202,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1203,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1203,0,0,0,No,CD,GBOther,WBOther,SBOther}
+};
+/* 2470-247F */
+static const struct unidata st377[] = {
 {dd1204,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1205,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1206,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11968,14 +12306,14 @@ static const struct unidata st365[] = {
 {dd1212,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1213,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1214,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1215,0,0,0,No,CD,GBOther,WBOther,SBOther}
-};
-/* 2480-248F */
-static const struct unidata st366[] = {
+{dd1215,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1216,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1217,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1218,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1219,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1219,0,0,0,No,CD,GBOther,WBOther,SBOther}
+};
+/* 2480-248F */
+static const struct unidata st378[] = {
 {dd1220,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1221,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1222,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -11987,14 +12325,14 @@ static const struct unidata st366[] = {
 {dd1228,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1229,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1230,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1231,0,0,0,No,CD,GBOther,WBOther,SBOther}
-};
-/* 2490-249F */
-static const struct unidata st367[] = {
+{dd1231,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1232,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1233,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1234,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1235,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1235,0,0,0,No,CD,GBOther,WBOther,SBOther}
+};
+/* 2490-249F */
+static const struct unidata st379[] = {
 {dd1236,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1237,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1238,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -12003,17 +12341,17 @@ static const struct unidata st367[] = {
 {dd1241,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1242,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1243,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1244,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1245,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1246,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1247,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 24A0-24AF */
-static const struct unidata st368[] = {
+{dd1244,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1245,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1246,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1247,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1248,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1249,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1250,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1251,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1251,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 24A0-24AF */
+static const struct unidata st380[] = {
 {dd1252,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1253,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1254,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -12025,48 +12363,52 @@ static const struct unidata st368[] = {
 {dd1260,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1261,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1262,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1263,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 24B0-24BF */
-static const struct unidata st369[] = {
+{dd1263,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1264,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1265,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1266,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1267,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1267,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 24B0-24BF */
+static const struct unidata st381[] = {
 {dd1268,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1269,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd491,dd4613,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd493,dd4614,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1086,dd4615,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd494,dd4616,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd495,dd4617,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1101,dd4618,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd497,dd4619,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd498,dd4620,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd499,dd4621,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd500,dd4622,0,0,So,CD,GBOther,WBALetter,SBUpper}
+{dd1270,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1271,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1272,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1273,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd491,dd4716,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd493,dd4717,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1086,dd4718,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd494,dd4719,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd495,dd4720,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1101,dd4721,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd497,dd4722,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd498,dd4723,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd499,dd4724,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd500,dd4725,0,0,So,CD,GBOther,WBALetter,SBUpper}
 };
 /* 24C0-24CF */
-static const struct unidata st370[] = {
-{dd501,dd4623,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd502,dd4624,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd503,dd4625,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd504,dd4626,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd505,dd4627,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd507,dd4628,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1094,dd4629,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd508,dd4630,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1270,dd4631,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd509,dd4632,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd510,dd4633,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1126,dd4634,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd511,dd4635,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1131,dd4636,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1271,dd4637,0,0,So,CD,GBOther,WBALetter,SBUpper},
-{dd1098,dd4638,0,0,So,CD,GBOther,WBALetter,SBUpper}
+static const struct unidata st382[] = {
+{dd501,dd4726,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd502,dd4727,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd503,dd4728,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd504,dd4729,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd505,dd4730,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd507,dd4731,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1094,dd4732,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd508,dd4733,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1274,dd4734,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd509,dd4735,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd510,dd4736,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1129,dd4737,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd511,dd4738,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1134,dd4739,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1275,dd4740,0,0,So,CD,GBOther,WBALetter,SBUpper},
+{dd1098,dd4741,0,0,So,CD,GBOther,WBALetter,SBUpper}
 };
 /* 24D0-24DF */
-static const struct unidata st371[] = {
+static const struct unidata st383[] = {
 {dd2,0,0,0,So,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,So,CD,GBOther,WBALetter,SBLower},
 {dd541,0,0,0,So,CD,GBOther,WBALetter,SBLower},
@@ -12085,8 +12427,8 @@ static const struct unidata st371[] = {
 {dd528,0,0,0,So,CD,GBOther,WBALetter,SBLower}
 };
 /* 24E0-24EF */
-static const struct unidata st372[] = {
-{dd1272,0,0,0,So,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st384[] = {
+{dd1276,0,0,0,So,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,So,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,So,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,So,CD,GBOther,WBALetter,SBLower},
@@ -12104,7 +12446,7 @@ static const struct unidata st372[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 24F0-24FF */
-static const struct unidata st373[] = {
+static const struct unidata st385[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -12123,7 +12465,7 @@ static const struct unidata st373[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 25B0-25BF */
-static const struct unidata st374[] = {
+static const struct unidata st386[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12142,7 +12484,7 @@ static const struct unidata st374[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 25C0-25CF */
-static const struct unidata st375[] = {
+static const struct unidata st387[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12161,7 +12503,7 @@ static const struct unidata st375[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 25F0-25FF */
-static const struct unidata st376[] = {
+static const struct unidata st388[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12180,7 +12522,7 @@ static const struct unidata st376[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2660-266F */
-static const struct unidata st377[] = {
+static const struct unidata st389[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12198,93 +12540,17 @@ static const struct unidata st377[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
-/* 2690-269F */
-static const struct unidata st378[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 26B0-26BF */
-static const struct unidata st379[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 26C0-26CF */
-static const struct unidata st380[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
 /* 2700-270F */
-static const struct unidata st381[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st390[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther}
-};
-/* 2720-272F */
-static const struct unidata st382[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12293,35 +12559,16 @@ static const struct unidata st382[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
-/* 2740-274F */
-static const struct unidata st383[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+/* 2750-275F */
+static const struct unidata st391[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther}
-};
-/* 2750-275F */
-static const struct unidata st384[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12329,11 +12576,11 @@ static const struct unidata st384[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBClose},
 {0,0,0,0,So,0,GBOther,WBOther,SBClose},
 {0,0,0,0,So,0,GBOther,WBOther,SBClose},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 2760-276F */
-static const struct unidata st385[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st392[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12351,7 +12598,7 @@ static const struct unidata st385[] = {
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
 };
 /* 2770-277F */
-static const struct unidata st386[] = {
+static const struct unidata st393[] = {
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
@@ -12370,31 +12617,12 @@ static const struct unidata st386[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 2790-279F */
-static const struct unidata st387[] = {
+static const struct unidata st394[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther}
-};
-/* 27B0-27BF */
-static const struct unidata st388[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12405,10 +12633,10 @@ static const struct unidata st388[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 27C0-27CF */
-static const struct unidata st389[] = {
+static const struct unidata st395[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12423,11 +12651,11 @@ static const struct unidata st389[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 27E0-27EF */
-static const struct unidata st390[] = {
+static const struct unidata st396[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12446,7 +12674,7 @@ static const struct unidata st390[] = {
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
 };
 /* 2980-298F */
-static const struct unidata st391[] = {
+static const struct unidata st397[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12465,7 +12693,7 @@ static const struct unidata st391[] = {
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose}
 };
 /* 2990-299F */
-static const struct unidata st392[] = {
+static const struct unidata st398[] = {
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
@@ -12484,7 +12712,7 @@ static const struct unidata st392[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 29D0-29DF */
-static const struct unidata st393[] = {
+static const struct unidata st399[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12503,7 +12731,7 @@ static const struct unidata st393[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 29F0-29FF */
-static const struct unidata st394[] = {
+static const struct unidata st400[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12522,7 +12750,7 @@ static const struct unidata st394[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2A00-2A0F */
-static const struct unidata st395[] = {
+static const struct unidata st401[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12535,20 +12763,20 @@ static const struct unidata st395[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1273,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1277,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2A70-2A7F */
-static const struct unidata st396[] = {
+static const struct unidata st402[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1274,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd1275,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd1276,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1278,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1279,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd1280,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12560,7 +12788,7 @@ static const struct unidata st396[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2AD0-2ADF */
-static const struct unidata st397[] = {
+static const struct unidata st403[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12573,13 +12801,13 @@ static const struct unidata st397[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
-{dd1277,0,0,0,Sm,0,GBOther,WBOther,SBOther},
+{dd1281,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther}
 };
 /* 2B40-2B4F */
-static const struct unidata st398[] = {
+static const struct unidata st404[] = {
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sm,0,GBOther,WBOther,SBOther},
@@ -12597,84 +12825,65 @@ static const struct unidata st398[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2B50-2B5F */
-static const struct unidata st399[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
 /* 2C00-2C0F */
-static const struct unidata st400[] = {
-{0,dd4639,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4640,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4641,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4642,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4643,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4644,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4645,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4646,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4647,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4648,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4649,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4650,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4651,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4652,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4653,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4654,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st405[] = {
+{0,dd4742,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4743,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4744,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4745,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4746,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4747,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4748,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4749,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4750,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4751,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4752,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4753,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4754,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4755,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4756,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4757,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 2C10-2C1F */
-static const struct unidata st401[] = {
-{0,dd4655,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4656,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4657,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4658,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4659,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4660,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4661,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4662,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4663,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4664,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4665,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4666,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4667,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4668,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4669,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4670,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st406[] = {
+{0,dd4758,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4759,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4760,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4761,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4762,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4763,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4764,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4765,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4766,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4767,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4768,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4769,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4770,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4771,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4772,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4773,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 2C20-2C2F */
-static const struct unidata st402[] = {
-{0,dd4671,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4672,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4673,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4674,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4675,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4676,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4677,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4678,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4679,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4680,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4681,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4682,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4683,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4684,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4685,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st407[] = {
+{0,dd4774,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4775,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4776,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4777,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4778,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4779,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4780,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4781,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4782,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4783,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4784,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4785,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4786,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4787,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4788,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2C50-2C5F */
-static const struct unidata st403[] = {
+static const struct unidata st408[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -12693,32 +12902,32 @@ static const struct unidata st403[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2C60-2C6F */
-static const struct unidata st404[] = {
-{0,dd4686,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st409[] = {
+{0,dd4789,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4687,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4688,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4689,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4790,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4791,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4792,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4690,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4793,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4691,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4794,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4692,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4795,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,dd513,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd556,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,dd512,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 2C70-2C7F */
-static const struct unidata st405[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st410[] = {
+{0,dd540,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4693,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4796,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4694,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4797,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -12726,129 +12935,129 @@ static const struct unidata st405[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {dd286,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1126,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{dd1129,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+{0,dd4798,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4799,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 2C80-2C8F */
-static const struct unidata st406[] = {
-{0,dd4695,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st411[] = {
+{0,dd4800,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4696,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4801,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4697,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4802,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4698,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4803,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4699,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4804,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4700,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4805,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4701,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4806,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4702,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4807,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2C90-2C9F */
-static const struct unidata st407[] = {
-{0,dd4703,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st412[] = {
+{0,dd4808,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4704,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4809,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4705,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4810,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4706,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4811,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4707,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4812,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4708,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4813,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4709,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4814,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4710,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4815,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2CA0-2CAF */
-static const struct unidata st408[] = {
-{0,dd4711,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st413[] = {
+{0,dd4816,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4712,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4817,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4713,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4818,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4714,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4819,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4715,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4820,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4716,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4821,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4717,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4822,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4718,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4823,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2CB0-2CBF */
-static const struct unidata st409[] = {
-{0,dd4719,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st414[] = {
+{0,dd4824,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4720,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4825,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4721,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4826,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4722,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4827,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4723,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4828,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4724,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4829,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4725,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4830,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4726,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4831,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2CC0-2CCF */
-static const struct unidata st410[] = {
-{0,dd4727,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st415[] = {
+{0,dd4832,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4728,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4833,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4729,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4834,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4730,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4835,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4731,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4836,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4732,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4837,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4733,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4838,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4734,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4839,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2CD0-2CDF */
-static const struct unidata st411[] = {
-{0,dd4735,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st416[] = {
+{0,dd4840,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4736,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4841,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4737,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4842,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4738,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4843,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4739,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4844,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4740,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4845,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4741,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4846,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4742,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4847,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 2CE0-2CEF */
-static const struct unidata st412[] = {
-{0,dd4743,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st417[] = {
+{0,dd4848,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4744,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4849,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -12857,16 +13066,16 @@ static const struct unidata st412[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{0,dd4850,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4851,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 2CF0-2CFF */
-static const struct unidata st413[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+static const struct unidata st418[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -12883,7 +13092,7 @@ static const struct unidata st413[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 2D20-2D2F */
-static const struct unidata st414[] = {
+static const struct unidata st419[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -12902,7 +13111,7 @@ static const struct unidata st414[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2D60-2D6F */
-static const struct unidata st415[] = {
+static const struct unidata st420[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -12918,10 +13127,48 @@ static const struct unidata st415[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1278,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter}
+{dd1282,0,0,0,Lm,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 2D70-2D7F */
+static const struct unidata st421[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* 2D90-2D9F */
+static const struct unidata st422[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2DA0-2DAF */
-static const struct unidata st416[] = {
+static const struct unidata st423[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -12940,7 +13187,7 @@ static const struct unidata st416[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2E00-2E0F */
-static const struct unidata st417[] = {
+static const struct unidata st424[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Po,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Pi,0,GBOther,WBOther,SBClose},
@@ -12959,7 +13206,7 @@ static const struct unidata st417[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 2E10-2E1F */
-static const struct unidata st418[] = {
+static const struct unidata st425[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -12978,7 +13225,7 @@ static const struct unidata st418[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 2E20-2E2F */
-static const struct unidata st419[] = {
+static const struct unidata st426[] = {
 {0,0,0,0,Pi,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Pf,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
@@ -12997,9 +13244,9 @@ static const struct unidata st419[] = {
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter}
 };
 /* 2E30-2E3F */
-static const struct unidata st420[] = {
+static const struct unidata st427[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -13016,7 +13263,7 @@ static const struct unidata st420[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2E90-2E9F */
-static const struct unidata st421[] = {
+static const struct unidata st428[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -13032,14 +13279,14 @@ static const struct unidata st421[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1279,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1283,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 2EF0-2EFF */
-static const struct unidata st422[] = {
+static const struct unidata st429[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1280,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1284,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -13054,11 +13301,7 @@ static const struct unidata st422[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2F00-2F0F */
-static const struct unidata st423[] = {
-{dd1281,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1282,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1283,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1284,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st430[] = {
 {dd1285,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1286,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1287,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13070,14 +13313,14 @@ static const struct unidata st423[] = {
 {dd1293,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1294,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1295,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1296,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F10-2F1F */
-static const struct unidata st424[] = {
+{dd1296,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1297,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1298,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1299,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1300,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1300,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F10-2F1F */
+static const struct unidata st431[] = {
 {dd1301,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1302,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1303,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13089,14 +13332,14 @@ static const struct unidata st424[] = {
 {dd1309,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1310,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1311,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1312,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F20-2F2F */
-static const struct unidata st425[] = {
+{dd1312,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1313,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1314,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1315,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1316,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1316,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F20-2F2F */
+static const struct unidata st432[] = {
 {dd1317,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1318,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1319,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13108,14 +13351,14 @@ static const struct unidata st425[] = {
 {dd1325,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1326,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1327,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1328,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F30-2F3F */
-static const struct unidata st426[] = {
+{dd1328,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1329,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1330,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1331,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1332,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1332,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F30-2F3F */
+static const struct unidata st433[] = {
 {dd1333,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1334,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1335,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13127,14 +13370,14 @@ static const struct unidata st426[] = {
 {dd1341,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1342,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1343,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1344,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F40-2F4F */
-static const struct unidata st427[] = {
+{dd1344,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1345,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1346,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1347,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1348,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1348,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F40-2F4F */
+static const struct unidata st434[] = {
 {dd1349,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1350,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1351,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13146,14 +13389,14 @@ static const struct unidata st427[] = {
 {dd1357,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1358,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1359,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1360,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F50-2F5F */
-static const struct unidata st428[] = {
+{dd1360,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1361,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1362,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1363,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1364,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1364,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F50-2F5F */
+static const struct unidata st435[] = {
 {dd1365,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1366,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1367,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13165,14 +13408,14 @@ static const struct unidata st428[] = {
 {dd1373,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1374,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1375,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1376,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F60-2F6F */
-static const struct unidata st429[] = {
+{dd1376,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1377,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1378,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1379,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1380,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1380,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F60-2F6F */
+static const struct unidata st436[] = {
 {dd1381,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1382,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1383,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13184,14 +13427,14 @@ static const struct unidata st429[] = {
 {dd1389,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1390,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1391,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1392,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F70-2F7F */
-static const struct unidata st430[] = {
+{dd1392,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1393,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1394,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1395,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1396,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1396,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F70-2F7F */
+static const struct unidata st437[] = {
 {dd1397,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1398,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1399,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13203,14 +13446,14 @@ static const struct unidata st430[] = {
 {dd1405,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1406,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1407,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1408,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F80-2F8F */
-static const struct unidata st431[] = {
+{dd1408,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1409,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1410,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1411,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1412,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1412,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F80-2F8F */
+static const struct unidata st438[] = {
 {dd1413,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1414,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1415,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13222,14 +13465,14 @@ static const struct unidata st431[] = {
 {dd1421,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1422,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1423,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1424,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2F90-2F9F */
-static const struct unidata st432[] = {
+{dd1424,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1425,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1426,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1427,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1428,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1428,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2F90-2F9F */
+static const struct unidata st439[] = {
 {dd1429,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1430,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1431,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13241,14 +13484,14 @@ static const struct unidata st432[] = {
 {dd1437,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1438,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1439,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1440,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2FA0-2FAF */
-static const struct unidata st433[] = {
+{dd1440,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1441,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1442,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1443,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1444,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1444,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2FA0-2FAF */
+static const struct unidata st440[] = {
 {dd1445,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1446,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1447,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13260,14 +13503,14 @@ static const struct unidata st433[] = {
 {dd1453,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1454,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1455,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1456,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2FB0-2FBF */
-static const struct unidata st434[] = {
+{dd1456,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1457,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1458,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1459,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1460,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1460,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2FB0-2FBF */
+static const struct unidata st441[] = {
 {dd1461,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1462,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1463,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13279,14 +13522,14 @@ static const struct unidata st434[] = {
 {dd1469,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1470,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1471,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1472,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2FC0-2FCF */
-static const struct unidata st435[] = {
+{dd1472,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1473,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1474,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1475,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1476,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1476,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2FC0-2FCF */
+static const struct unidata st442[] = {
 {dd1477,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1478,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1479,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13298,16 +13541,20 @@ static const struct unidata st435[] = {
 {dd1485,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1486,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1487,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1488,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 2FD0-2FDF */
-static const struct unidata st436[] = {
+{dd1488,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1489,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1490,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1491,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1492,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1492,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 2FD0-2FDF */
+static const struct unidata st443[] = {
 {dd1493,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1494,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1495,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1496,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1497,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1498,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -13320,7 +13567,7 @@ static const struct unidata st436[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 2FF0-2FFF */
-static const struct unidata st437[] = {
+static const struct unidata st444[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -13339,7 +13586,7 @@ static const struct unidata st437[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 3000-300F */
-static const struct unidata st438[] = {
+static const struct unidata st445[] = {
 {dd0,0,0,0,Zs,CD,GBOther,WBOther,SBSp},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSContinue},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
@@ -13358,7 +13605,7 @@ static const struct unidata st438[] = {
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
 };
 /* 3010-301F */
-static const struct unidata st439[] = {
+static const struct unidata st446[] = {
 {0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -13377,7 +13624,7 @@ static const struct unidata st439[] = {
 {0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
 };
 /* 3020-302F */
-static const struct unidata st440[] = {
+static const struct unidata st447[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Nl,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBOther,SBOLetter},
@@ -13396,18 +13643,18 @@ static const struct unidata st440[] = {
 {0,0,0,224,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 3030-303F */
-static const struct unidata st441[] = {
+static const struct unidata st448[] = {
 {0,0,0,0,Pd,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
-{dd1495,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1499,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1304,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
-{dd1496,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
-{dd1497,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
+{dd1308,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
+{dd1500,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
+{dd1501,0,0,0,Nl,CD,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
@@ -13415,178 +13662,178 @@ static const struct unidata st441[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 3040-304F */
-static const struct unidata st442[] = {
+static const struct unidata st449[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3923,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4022,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3924,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1498,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3925,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1499,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3926,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 3050-305F */
-static const struct unidata st443[] = {
-{dd1500,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3927,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1501,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3928,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4023,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1502,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3929,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4024,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1503,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3930,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4025,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 3050-305F */
+static const struct unidata st450[] = {
 {dd1504,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3931,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4026,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1505,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3932,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4027,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1506,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3933,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4028,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1507,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3934,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 3060-306F */
-static const struct unidata st444[] = {
+{0,0,dd4029,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1508,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3935,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4030,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1509,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3936,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4031,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1510,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3937,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4032,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1511,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3938,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4033,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 3060-306F */
+static const struct unidata st451[] = {
 {dd1512,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4034,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1513,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4035,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1514,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4036,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1515,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4037,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1516,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3939,0,Lo,0,GBOther,WBOther,SBOLetter}
+{0,0,dd4038,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 3070-307F */
-static const struct unidata st445[] = {
-{dd1513,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1514,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3940,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1515,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1516,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3941,0,Lo,0,GBOther,WBOther,SBOLetter},
+static const struct unidata st452[] = {
 {dd1517,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1518,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3942,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4039,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1519,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1520,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,dd3943,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4040,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1521,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd1522,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4041,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1524,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,dd4042,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1525,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1526,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
 /* 3090-309F */
-static const struct unidata st446[] = {
+static const struct unidata st453[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1527,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,8,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,8,Mn,0,GBExtend,WBExtend,SBExtend},
-{dd1524,0,0,0,Sk,CD,GBOther,WBKatakana,SBOther},
-{dd1525,0,0,0,Sk,CD,GBOther,WBKatakana,SBOther},
-{0,0,dd3944,0,Lm,0,GBOther,WBOther,SBOLetter},
-{dd1526,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
-{dd1527,0,0,0,Lo,CD,GBOther,WBOther,SBOLetter}
+{dd1528,0,0,0,Sk,CD,GBOther,WBKatakana,SBOther},
+{dd1529,0,0,0,Sk,CD,GBOther,WBKatakana,SBOther},
+{0,0,dd4043,0,Lm,0,GBOther,WBOther,SBOLetter},
+{dd1530,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
+{dd1531,0,0,0,Lo,CD,GBOther,WBOther,SBOLetter}
 };
 /* 30A0-30AF */
-static const struct unidata st447[] = {
+static const struct unidata st454[] = {
 {0,0,0,0,Pd,0,GBOther,WBKatakana,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3945,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4044,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3946,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1528,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3947,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1529,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3948,0,Lo,0,GBOther,WBKatakana,SBOLetter}
-};
-/* 30B0-30BF */
-static const struct unidata st448[] = {
-{dd1530,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3949,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1531,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3950,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4045,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1532,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3951,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4046,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1533,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3952,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4047,0,Lo,0,GBOther,WBKatakana,SBOLetter}
+};
+/* 30B0-30BF */
+static const struct unidata st455[] = {
 {dd1534,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3953,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4048,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1535,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3954,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4049,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1536,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3955,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4050,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1537,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3956,0,Lo,0,GBOther,WBKatakana,SBOLetter}
-};
-/* 30C0-30CF */
-static const struct unidata st449[] = {
+{0,0,dd4051,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1538,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3957,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4052,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1539,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3958,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4053,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1540,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3959,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4054,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1541,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3960,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4055,0,Lo,0,GBOther,WBKatakana,SBOLetter}
+};
+/* 30C0-30CF */
+static const struct unidata st456[] = {
 {dd1542,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4056,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1543,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4057,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1544,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd3202,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1545,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4058,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1546,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3961,0,Lo,0,GBOther,WBKatakana,SBOLetter}
+{0,0,dd4059,0,Lo,0,GBOther,WBKatakana,SBOLetter}
 };
 /* 30D0-30DF */
-static const struct unidata st450[] = {
-{dd1543,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1544,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3962,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1545,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1546,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3963,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+static const struct unidata st457[] = {
 {dd1547,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1548,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3964,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4060,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1549,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1550,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3965,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4061,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1551,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {dd1552,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4062,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1553,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1554,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4063,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1555,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1556,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter}
 };
 /* 30E0-30EF */
-static const struct unidata st451[] = {
+static const struct unidata st458[] = {
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
@@ -13602,29 +13849,29 @@ static const struct unidata st451[] = {
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3966,0,Lo,0,GBOther,WBKatakana,SBOLetter}
+{0,0,dd4064,0,Lo,0,GBOther,WBKatakana,SBOLetter}
 };
 /* 30F0-30FF */
-static const struct unidata st452[] = {
-{0,0,dd3967,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3968,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3969,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+static const struct unidata st459[] = {
+{0,0,dd4065,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4066,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,dd4067,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1553,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1557,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1554,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1555,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1556,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
-{dd1557,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1558,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1559,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1560,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{dd1561,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
-{0,0,dd3970,0,Lm,0,GBOther,WBKatakana,SBOLetter},
-{dd1558,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
-{dd1559,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
+{0,0,dd4068,0,Lm,0,GBOther,WBKatakana,SBOLetter},
+{dd1562,0,0,0,Lm,0,GBOther,WBKatakana,SBOLetter},
+{dd1563,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
 };
 /* 3100-310F */
-static const struct unidata st453[] = {
+static const struct unidata st460[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -13643,7 +13890,7 @@ static const struct unidata st453[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 3120-312F */
-static const struct unidata st454[] = {
+static const struct unidata st461[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -13662,12 +13909,8 @@ static const struct unidata st454[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 3130-313F */
-static const struct unidata st455[] = {
+static const struct unidata st462[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1560,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1561,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1562,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1563,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1564,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1565,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1566,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13678,14 +13921,14 @@ static const struct unidata st455[] = {
 {dd1571,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1572,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1573,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1574,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* 3140-314F */
-static const struct unidata st456[] = {
+{dd1574,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1575,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1576,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1577,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1578,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1578,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 3140-314F */
+static const struct unidata st463[] = {
 {dd1579,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1580,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1581,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13697,14 +13940,14 @@ static const struct unidata st456[] = {
 {dd1587,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1588,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1589,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* 3150-315F */
-static const struct unidata st457[] = {
+{dd1590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1591,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1592,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1593,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 3150-315F */
+static const struct unidata st464[] = {
 {dd1595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1596,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1597,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13716,14 +13959,14 @@ static const struct unidata st457[] = {
 {dd1603,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1604,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1606,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* 3160-316F */
-static const struct unidata st458[] = {
+{dd1606,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1607,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1609,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 3160-316F */
+static const struct unidata st465[] = {
 {dd1611,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1612,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1613,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13735,14 +13978,14 @@ static const struct unidata st458[] = {
 {dd1619,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1621,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* 3170-317F */
-static const struct unidata st459[] = {
+{dd1622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 3170-317F */
+static const struct unidata st466[] = {
 {dd1627,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1628,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1629,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13754,14 +13997,14 @@ static const struct unidata st459[] = {
 {dd1635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1636,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1638,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* 3180-318F */
-static const struct unidata st460[] = {
+{dd1638,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1639,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1640,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1641,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd1642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* 3180-318F */
+static const struct unidata st467[] = {
 {dd1643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1645,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -13773,29 +14016,33 @@ static const struct unidata st460[] = {
 {dd1651,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1653,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1654,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1655,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1656,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd1657,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 3190-319F */
-static const struct unidata st461[] = {
+static const struct unidata st468[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd1281,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1287,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1654,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1655,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1656,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1657,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1658,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1659,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1285,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1285,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1291,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1658,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1659,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1660,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1661,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1662,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1663,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1289,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1289,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1664,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1665,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1666,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1667,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1293,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 31F0-31FF */
-static const struct unidata st462[] = {
+static const struct unidata st469[] = {
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
@@ -13814,11 +14061,7 @@ static const struct unidata st462[] = {
 {0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter}
 };
 /* 3200-320F */
-static const struct unidata st463[] = {
-{dd1664,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1665,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1666,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1667,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st470[] = {
 {dd1668,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1669,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1670,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13830,14 +14073,14 @@ static const struct unidata st463[] = {
 {dd1676,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1677,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1678,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1679,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3210-321F */
-static const struct unidata st464[] = {
+{dd1679,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1680,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1681,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1682,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1683,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1683,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3210-321F */
+static const struct unidata st471[] = {
 {dd1684,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1685,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1686,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13849,33 +14092,33 @@ static const struct unidata st464[] = {
 {dd1692,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1693,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1694,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1695,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1696,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1697,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1698,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 3220-322F */
-static const struct unidata st465[] = {
-{dd1695,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1696,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1697,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1698,0,0,0,No,CD,GBOther,WBOther,SBOther},
+static const struct unidata st472[] = {
 {dd1699,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1700,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1701,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1702,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1703,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1704,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1705,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1706,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1707,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1708,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1705,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1706,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1707,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1708,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1709,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1710,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3230-323F */
-static const struct unidata st466[] = {
+{dd1710,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1711,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1712,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1713,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1714,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1714,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3230-323F */
+static const struct unidata st473[] = {
 {dd1715,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1716,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1717,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13887,37 +14130,34 @@ static const struct unidata st466[] = {
 {dd1723,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1724,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1725,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1726,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3240-324F */
-static const struct unidata st467[] = {
+{dd1726,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1727,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1728,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1729,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1730,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{dd1730,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
-/* 3250-325F */
-static const struct unidata st468[] = {
+/* 3240-324F */
+static const struct unidata st474[] = {
 {dd1731,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1732,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1733,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1734,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1735,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1736,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1737,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1738,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1732,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1733,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1734,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1735,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1736,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1351,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1737,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 3250-325F */
+static const struct unidata st475[] = {
+{dd1738,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1739,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1740,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1741,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -13925,36 +14165,36 @@ static const struct unidata st468[] = {
 {dd1743,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1744,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1745,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1746,0,0,0,No,CD,GBOther,WBOther,SBOther}
+{dd1746,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1747,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1748,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1749,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1750,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1751,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1752,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1753,0,0,0,No,CD,GBOther,WBOther,SBOther}
 };
 /* 3260-326F */
-static const struct unidata st469[] = {
-{dd1560,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1563,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1566,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1568,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1576,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1577,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st476[] = {
+{dd1564,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1567,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1570,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1572,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1580,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1582,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1583,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1585,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1581,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1584,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1586,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1587,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1588,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1589,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1747,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1748,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1590,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1591,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1592,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1593,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1754,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1755,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 3270-327F */
-static const struct unidata st470[] = {
-{dd1749,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1750,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1751,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1752,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1753,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1754,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1755,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st477[] = {
 {dd1756,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1757,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1758,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -13963,75 +14203,75 @@ static const struct unidata st470[] = {
 {dd1761,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1762,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1763,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1764,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1765,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1766,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1767,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1768,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1769,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1770,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 3280-328F */
-static const struct unidata st471[] = {
-{dd1281,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1287,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1654,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1655,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1764,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1765,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1766,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1292,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1767,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1304,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1354,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1366,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1365,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1355,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1447,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1312,0,0,0,So,CD,GBOther,WBOther,SBOther}
+static const struct unidata st478[] = {
+{dd1285,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1291,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1658,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1659,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1771,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1772,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1773,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1296,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1774,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1308,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1358,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1370,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1369,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1359,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1451,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1316,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 3290-329F */
-static const struct unidata st472[] = {
-{dd1352,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1768,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1769,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1770,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1771,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1772,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1773,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1774,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st479[] = {
+{dd1356,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1775,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1776,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1777,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1318,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1778,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1779,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1780,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1781,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 32A0-32AF */
-static const struct unidata st473[] = {
+{dd1781,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1782,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1783,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1784,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1322,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1785,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1656,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1657,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1658,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1786,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1787,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1788,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1788,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 32A0-32AF */
+static const struct unidata st480[] = {
 {dd1789,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1790,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1791,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1792,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1660,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1661,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1662,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1793,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1794,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1794,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1795,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1796,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1797,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1798,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1799,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1800,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1801,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 32B0-32BF */
-static const struct unidata st474[] = {
-{dd1795,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1796,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1797,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1798,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1799,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1800,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1801,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1802,0,0,0,No,CD,GBOther,WBOther,SBOther},
+static const struct unidata st481[] = {
+{dd1802,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1803,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1804,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1805,0,0,0,No,CD,GBOther,WBOther,SBOther},
@@ -14039,17 +14279,17 @@ static const struct unidata st474[] = {
 {dd1807,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1808,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {dd1809,0,0,0,No,CD,GBOther,WBOther,SBOther},
-{dd1810,0,0,0,No,CD,GBOther,WBOther,SBOther}
+{dd1810,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1811,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1812,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1813,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1814,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1815,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1816,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd1817,0,0,0,No,CD,GBOther,WBOther,SBOther}
 };
 /* 32C0-32CF */
-static const struct unidata st475[] = {
-{dd1811,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1812,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1813,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1814,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1815,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1816,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1817,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st482[] = {
 {dd1818,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1819,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1820,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14058,17 +14298,17 @@ static const struct unidata st475[] = {
 {dd1823,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1824,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1825,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1826,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1826,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1827,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1828,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1829,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1830,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1831,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1832,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1833,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 32D0-32DF */
-static const struct unidata st476[] = {
-{dd1827,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1828,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1829,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1830,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1831,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1832,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1833,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+static const struct unidata st483[] = {
 {dd1834,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1835,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1836,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14077,17 +14317,17 @@ static const struct unidata st476[] = {
 {dd1839,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1840,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1841,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1842,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 32E0-32EF */
-static const struct unidata st477[] = {
+{dd1842,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1843,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1844,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1845,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1846,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1847,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1848,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1849,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1849,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 32E0-32EF */
+static const struct unidata st484[] = {
 {dd1850,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1851,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1852,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14096,17 +14336,17 @@ static const struct unidata st477[] = {
 {dd1855,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1856,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1857,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1858,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 32F0-32FF */
-static const struct unidata st478[] = {
+{dd1858,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1859,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1860,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1861,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1862,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1863,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1864,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1865,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1865,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 32F0-32FF */
+static const struct unidata st485[] = {
 {dd1866,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1867,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1868,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14115,10 +14355,6 @@ static const struct unidata st478[] = {
 {dd1871,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1872,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1873,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 3300-330F */
-static const struct unidata st479[] = {
 {dd1874,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1875,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1876,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14126,6 +14362,10 @@ static const struct unidata st479[] = {
 {dd1878,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1879,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1880,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 3300-330F */
+static const struct unidata st486[] = {
 {dd1881,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1882,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1883,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14134,17 +14374,17 @@ static const struct unidata st479[] = {
 {dd1886,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1887,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1888,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1889,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 3310-331F */
-static const struct unidata st480[] = {
+{dd1889,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1890,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1891,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1892,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1893,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1894,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1895,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1896,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1896,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 3310-331F */
+static const struct unidata st487[] = {
 {dd1897,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1898,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1899,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14153,17 +14393,17 @@ static const struct unidata st480[] = {
 {dd1902,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1903,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1904,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1905,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 3320-332F */
-static const struct unidata st481[] = {
+{dd1905,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1906,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1907,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1908,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1909,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1910,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1911,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1912,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1912,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 3320-332F */
+static const struct unidata st488[] = {
 {dd1913,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1914,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1915,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14172,17 +14412,17 @@ static const struct unidata st481[] = {
 {dd1918,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1919,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1920,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1921,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 3330-333F */
-static const struct unidata st482[] = {
+{dd1921,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1922,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1923,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1924,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1925,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1926,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1927,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1928,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1928,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 3330-333F */
+static const struct unidata st489[] = {
 {dd1929,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1930,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1931,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14191,17 +14431,17 @@ static const struct unidata st482[] = {
 {dd1934,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1935,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1936,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1937,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 3340-334F */
-static const struct unidata st483[] = {
+{dd1937,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1938,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1939,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1940,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1941,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1942,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1943,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1944,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1944,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
+};
+/* 3340-334F */
+static const struct unidata st490[] = {
 {dd1945,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1946,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1947,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
@@ -14210,36 +14450,36 @@ static const struct unidata st483[] = {
 {dd1950,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1951,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1952,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1953,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
-};
-/* 3350-335F */
-static const struct unidata st484[] = {
+{dd1953,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1954,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1955,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1956,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1957,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1958,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
 {dd1959,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1960,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1961,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
-{dd1962,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1963,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1964,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1965,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1966,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1967,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1968,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1969,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd1960,0,0,0,So,CD,GBOther,WBKatakana,SBOther}
 };
-/* 3360-336F */
-static const struct unidata st485[] = {
+/* 3350-335F */
+static const struct unidata st491[] = {
+{dd1961,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1962,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1963,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1964,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1965,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1966,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1967,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1968,0,0,0,So,CD,GBOther,WBKatakana,SBOther},
+{dd1969,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1970,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1971,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1972,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1973,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1974,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1975,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1976,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1976,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3360-336F */
+static const struct unidata st492[] = {
 {dd1977,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1978,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1979,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14248,17 +14488,17 @@ static const struct unidata st485[] = {
 {dd1982,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1983,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1984,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1985,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3370-337F */
-static const struct unidata st486[] = {
+{dd1985,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1986,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1987,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1988,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1989,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1990,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1991,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd1992,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1992,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3370-337F */
+static const struct unidata st493[] = {
 {dd1993,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1994,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1995,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14267,17 +14507,17 @@ static const struct unidata st486[] = {
 {dd1998,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd1999,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2000,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2001,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3380-338F */
-static const struct unidata st487[] = {
+{dd2001,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2002,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2003,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2004,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2005,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2006,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2007,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2008,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2008,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3380-338F */
+static const struct unidata st494[] = {
 {dd2009,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2010,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2011,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14286,17 +14526,17 @@ static const struct unidata st487[] = {
 {dd2014,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2015,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2016,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2017,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 3390-339F */
-static const struct unidata st488[] = {
+{dd2017,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2018,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2019,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2020,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2021,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2022,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2023,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2024,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2024,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 3390-339F */
+static const struct unidata st495[] = {
 {dd2025,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2026,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2027,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14305,17 +14545,17 @@ static const struct unidata st488[] = {
 {dd2030,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2031,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2032,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2033,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33A0-33AF */
-static const struct unidata st489[] = {
+{dd2033,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2034,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2035,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2036,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2037,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2038,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2039,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2040,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2040,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33A0-33AF */
+static const struct unidata st496[] = {
 {dd2041,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2042,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2043,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14324,17 +14564,17 @@ static const struct unidata st489[] = {
 {dd2046,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2047,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2048,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2049,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33B0-33BF */
-static const struct unidata st490[] = {
+{dd2049,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2050,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2051,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2052,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2053,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2054,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2055,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2056,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2056,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33B0-33BF */
+static const struct unidata st497[] = {
 {dd2057,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2058,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2059,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14343,17 +14583,17 @@ static const struct unidata st490[] = {
 {dd2062,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2063,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2064,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2065,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33C0-33CF */
-static const struct unidata st491[] = {
+{dd2065,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2066,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2067,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2068,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2069,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2070,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2071,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2072,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2072,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33C0-33CF */
+static const struct unidata st498[] = {
 {dd2073,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2074,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2075,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14362,17 +14602,17 @@ static const struct unidata st491[] = {
 {dd2078,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2079,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2080,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2081,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33D0-33DF */
-static const struct unidata st492[] = {
+{dd2081,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2082,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2083,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2084,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2085,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2086,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2087,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2088,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2088,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33D0-33DF */
+static const struct unidata st499[] = {
 {dd2089,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2090,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2091,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14381,17 +14621,17 @@ static const struct unidata st492[] = {
 {dd2094,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2095,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2096,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2097,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33E0-33EF */
-static const struct unidata st493[] = {
+{dd2097,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2098,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2099,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2100,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2101,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2102,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2103,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2104,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2104,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33E0-33EF */
+static const struct unidata st500[] = {
 {dd2105,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2106,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2107,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14400,17 +14640,17 @@ static const struct unidata st493[] = {
 {dd2110,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2111,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2112,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2113,0,0,0,So,CD,GBOther,WBOther,SBOther}
-};
-/* 33F0-33FF */
-static const struct unidata st494[] = {
+{dd2113,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2114,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2115,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2116,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2117,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2118,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2119,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2120,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2120,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 33F0-33FF */
+static const struct unidata st501[] = {
 {dd2121,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2122,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2123,0,0,0,So,CD,GBOther,WBOther,SBOther},
@@ -14419,29 +14659,19 @@ static const struct unidata st494[] = {
 {dd2126,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2127,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {dd2128,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd2129,0,0,0,So,CD,GBOther,WBOther,SBOther}
+{dd2129,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2130,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2131,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2132,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2133,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2134,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2135,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2136,0,0,0,So,CD,GBOther,WBOther,SBOther}
 };
 /* 4DB0-4DBF */
-static const struct unidata st495[] = {
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+static const struct unidata st502[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 9FC0-9FCF */
-static const struct unidata st496[] = {
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -14455,12 +14685,10 @@ static const struct unidata st496[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* A010-A01F */
-static const struct unidata st497[] = {
+static const struct unidata st503[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14478,8 +14706,27 @@ static const struct unidata st497[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
+/* A4F0-A4FF */
+static const struct unidata st504[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
+};
 /* A600-A60F */
-static const struct unidata st498[] = {
+static const struct unidata st505[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14498,7 +14745,7 @@ static const struct unidata st498[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
 /* A620-A62F */
-static const struct unidata st499[] = {
+static const struct unidata st506[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -14517,64 +14764,64 @@ static const struct unidata st499[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* A640-A64F */
-static const struct unidata st500[] = {
-{0,dd4745,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st507[] = {
+{0,dd4852,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4746,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4853,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4747,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4854,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4748,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4855,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4749,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4856,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4750,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4857,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4751,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4858,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4752,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4859,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A650-A65F */
-static const struct unidata st501[] = {
-{0,dd4753,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st508[] = {
+{0,dd4860,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4754,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4861,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4755,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4862,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4756,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4863,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4757,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4864,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4758,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4865,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4759,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4866,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4760,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4867,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A660-A66F */
-static const struct unidata st502[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,dd4761,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st509[] = {
+{0,dd4868,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4762,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4869,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4763,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4870,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4764,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4871,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4765,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4872,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4766,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4873,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4874,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* A670-A67F */
-static const struct unidata st503[] = {
+static const struct unidata st510[] = {
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Me,0,GBExtend,WBExtend,SBExtend},
@@ -14593,33 +14840,33 @@ static const struct unidata st503[] = {
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter}
 };
 /* A680-A68F */
-static const struct unidata st504[] = {
-{0,dd4767,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st511[] = {
+{0,dd4875,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4768,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4876,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4769,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4877,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4770,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4878,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4771,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4879,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4772,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4880,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4773,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4881,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4774,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4882,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A690-A69F */
-static const struct unidata st505[] = {
-{0,dd4775,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st512[] = {
+{0,dd4883,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4776,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4884,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4777,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4885,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4778,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4886,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -14630,8 +14877,46 @@ static const struct unidata st505[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
+/* A6E0-A6EF */
+static const struct unidata st513[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter}
+};
+/* A6F0-A6FF */
+static const struct unidata st514[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* A710-A71F */
-static const struct unidata st506[] = {
+static const struct unidata st515[] = {
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
@@ -14650,103 +14935,103 @@ static const struct unidata st506[] = {
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter}
 };
 /* A720-A72F */
-static const struct unidata st507[] = {
+static const struct unidata st516[] = {
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{0,dd4779,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4887,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4780,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4888,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4781,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4889,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4782,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4890,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4783,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4891,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4784,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4892,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4785,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4893,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A730-A73F */
-static const struct unidata st508[] = {
+static const struct unidata st517[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4786,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4894,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4787,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4895,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4788,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4896,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4789,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4897,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4790,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4898,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4791,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4899,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4792,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4900,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A740-A74F */
-static const struct unidata st509[] = {
-{0,dd4793,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st518[] = {
+{0,dd4901,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4794,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4902,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4795,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4903,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4796,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4904,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4797,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4905,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4798,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4906,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4799,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4907,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4800,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4908,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A750-A75F */
-static const struct unidata st510[] = {
-{0,dd4801,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st519[] = {
+{0,dd4909,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4802,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4910,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4803,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4911,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4804,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4912,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4805,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4913,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4806,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4914,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4807,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4915,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4808,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4916,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A760-A76F */
-static const struct unidata st511[] = {
-{0,dd4809,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st520[] = {
+{0,dd4917,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4810,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4918,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4811,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4919,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4812,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4920,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4813,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4921,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4814,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4922,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4815,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4923,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd2130,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd2137,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A770-A77F */
-static const struct unidata st512[] = {
-{dd2130,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st521[] = {
+{dd2137,0,0,0,Lm,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -14755,39 +15040,73 @@ static const struct unidata st512[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4816,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4924,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4817,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4925,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4818,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4819,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4926,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4927,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* A780-A78F */
-static const struct unidata st513[] = {
-{0,dd4820,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st522[] = {
+{0,dd4928,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4821,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4929,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4822,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4930,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
-{0,dd4823,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4931,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
-{0,dd4824,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4932,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd547,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* A790-A79F */
+static const struct unidata st523[] = {
+{0,dd4933,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* A7F0-A7FF */
-static const struct unidata st514[] = {
+/* A7A0-A7AF */
+static const struct unidata st524[] = {
+{0,dd4934,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4935,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4936,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4937,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,dd4938,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* A7F0-A7FF */
+static const struct unidata st525[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -14795,6 +15114,10 @@ static const struct unidata st514[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14802,7 +15125,7 @@ static const struct unidata st514[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* A800-A80F */
-static const struct unidata st515[] = {
+static const struct unidata st526[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -14821,7 +15144,7 @@ static const struct unidata st515[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* A820-A82F */
-static const struct unidata st516[] = {
+static const struct unidata st527[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14839,8 +15162,27 @@ static const struct unidata st516[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
+/* A830-A83F */
+static const struct unidata st528[] = {
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sc,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* A870-A87F */
-static const struct unidata st517[] = {
+static const struct unidata st529[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14859,7 +15201,7 @@ static const struct unidata st517[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* A880-A88F */
-static const struct unidata st518[] = {
+static const struct unidata st530[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14878,7 +15220,7 @@ static const struct unidata st518[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* A8B0-A8BF */
-static const struct unidata st519[] = {
+static const struct unidata st531[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14897,7 +15239,7 @@ static const struct unidata st519[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
 };
 /* A8C0-A8CF */
-static const struct unidata st520[] = {
+static const struct unidata st532[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -14915,8 +15257,27 @@ static const struct unidata st520[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
+/* A8F0-A8FF */
+static const struct unidata st533[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* A920-A92F */
-static const struct unidata st521[] = {
+static const struct unidata st534[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14935,7 +15296,7 @@ static const struct unidata st521[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
 /* A940-A94F */
-static const struct unidata st522[] = {
+static const struct unidata st535[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -14954,7 +15315,7 @@ static const struct unidata st522[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* A950-A95F */
-static const struct unidata st523[] = {
+static const struct unidata st536[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
@@ -14972,36 +15333,112 @@ static const struct unidata st523[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
-/* AA20-AA2F */
-static const struct unidata st524[] = {
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+/* A970-A97F */
+static const struct unidata st537[] = {
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBL,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* A9B0-A9BF */
+static const struct unidata st538[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,7,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
-};
-/* AA30-AA3F */
-static const struct unidata st525[] = {
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
+};
+/* A9C0-A9CF */
+static const struct unidata st539[] = {
+{0,0,0,9,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lm,0,GBOther,WBALetter,SBOLetter}
+};
+/* A9D0-A9DF */
+static const struct unidata st540[] = {
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+};
+/* AA20-AA2F */
+static const struct unidata st541[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend}
+};
+/* AA30-AA3F */
+static const struct unidata st542[] = {
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -15011,7 +15448,7 @@ static const struct unidata st525[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* AA40-AA4F */
-static const struct unidata st526[] = {
+static const struct unidata st543[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -15030,7 +15467,7 @@ static const struct unidata st526[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* AA50-AA5F */
-static const struct unidata st527[] = {
+static const struct unidata st544[] = {
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
 {0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
@@ -15048,8 +15485,141 @@ static const struct unidata st527[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
 };
+/* AA70-AA7F */
+static const struct unidata st545[] = {
+{0,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* AAB0-AABF */
+static const struct unidata st546[] = {
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBPrepend,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* AAC0-AACF */
+static const struct unidata st547[] = {
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* AAD0-AADF */
+static const struct unidata st548[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lm,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+};
+/* AB00-AB0F */
+static const struct unidata st549[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* AB10-AB1F */
+static const struct unidata st550[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* ABE0-ABEF */
+static const struct unidata st551[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* AC00-AC0F */
-static const struct unidata st528[] = {
+static const struct unidata st552[] = {
 {0,0,0,0,Lo,0,GBLV,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15068,7 +15638,7 @@ static const struct unidata st528[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter}
 };
 /* AC10-AC1F */
-static const struct unidata st529[] = {
+static const struct unidata st553[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15087,7 +15657,7 @@ static const struct unidata st529[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter}
 };
 /* AC20-AC2F */
-static const struct unidata st530[] = {
+static const struct unidata st554[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15106,7 +15676,7 @@ static const struct unidata st530[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter}
 };
 /* AC30-AC3F */
-static const struct unidata st531[] = {
+static const struct unidata st555[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15125,7 +15695,7 @@ static const struct unidata st531[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter}
 };
 /* AC50-AC5F */
-static const struct unidata st532[] = {
+static const struct unidata st556[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15144,7 +15714,7 @@ static const struct unidata st532[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter}
 };
 /* D7A0-D7AF */
-static const struct unidata st533[] = {
+static const struct unidata st557[] = {
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBLVT,WBALetter,SBOLetter},
@@ -15162,8 +15732,46 @@ static const struct unidata st533[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
+/* D7C0-D7CF */
+static const struct unidata st558[] = {
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBV,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter}
+};
+/* D7F0-D7FF */
+static const struct unidata st559[] = {
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBT,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* D800-D80F */
-static const struct unidata st534[] = {
+static const struct unidata st560[] = {
 {0,0,0,0,Cs,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cs,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cs,0,GBOther,WBOther,SBOther},
@@ -15182,7 +15790,7 @@ static const struct unidata st534[] = {
 {0,0,0,0,Cs,0,GBOther,WBOther,SBOther}
 };
 /* E000-E00F */
-static const struct unidata st535[] = {
+static const struct unidata st561[] = {
 {0,0,0,0,Co,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Co,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Co,0,GBOther,WBOther,SBOther},
@@ -15201,33 +15809,26 @@ static const struct unidata st535[] = {
 {0,0,0,0,Co,0,GBOther,WBOther,SBOther}
 };
 /* F900-F90F */
-static const struct unidata st536[] = {
-{dd2131,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2132,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1439,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2133,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2134,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2135,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2136,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2137,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1447,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+static const struct unidata st562[] = {
 {dd2138,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2139,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1443,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2140,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2141,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2142,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F910-F91F */
-static const struct unidata st537[] = {
+{dd2142,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2143,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2144,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1451,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2145,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2146,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2147,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2148,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2149,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2149,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F910-F91F */
+static const struct unidata st563[] = {
 {dd2150,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2151,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2152,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15236,17 +15837,17 @@ static const struct unidata st537[] = {
 {dd2155,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2156,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2157,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2158,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F920-F92F */
-static const struct unidata st538[] = {
+{dd2158,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2159,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2160,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2161,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2162,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2163,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2164,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2165,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2165,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F920-F92F */
+static const struct unidata st564[] = {
 {dd2166,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2167,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2168,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15255,37 +15856,37 @@ static const struct unidata st538[] = {
 {dd2171,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2172,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2173,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2174,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F930-F93F */
-static const struct unidata st539[] = {
+{dd2174,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2175,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2176,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2177,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2178,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1405,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2179,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2180,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2181,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2181,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F930-F93F */
+static const struct unidata st565[] = {
 {dd2182,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2183,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2184,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2185,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1409,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2186,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2187,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2188,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2189,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F940-F94F */
-static const struct unidata st540[] = {
-{dd1478,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2189,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2190,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2191,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2192,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2193,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2194,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2195,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2196,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2196,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F940-F94F */
+static const struct unidata st566[] = {
+{dd1482,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2197,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2198,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2199,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15293,36 +15894,36 @@ static const struct unidata st540[] = {
 {dd2201,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2202,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2203,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2204,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F950-F95F */
-static const struct unidata st541[] = {
+{dd2204,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2205,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2206,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2207,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2208,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2209,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2210,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2211,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2211,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F950-F95F */
+static const struct unidata st567[] = {
 {dd2212,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2213,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2214,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2215,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2216,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2147,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2217,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2218,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2219,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F960-F96F */
-static const struct unidata st542[] = {
+{dd2219,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2220,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2221,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2222,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2223,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2154,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2224,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2225,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2226,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2226,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F960-F96F */
+static const struct unidata st568[] = {
 {dd2227,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2228,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2229,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15331,55 +15932,55 @@ static const struct unidata st542[] = {
 {dd2232,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2233,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2234,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2235,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F970-F97F */
-static const struct unidata st543[] = {
+{dd2235,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2236,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1441,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2237,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2238,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2239,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2240,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2241,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2242,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2242,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F970-F97F */
+static const struct unidata st569[] = {
 {dd2243,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1445,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2244,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2245,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2246,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2247,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2248,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2249,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2250,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F980-F98F */
-static const struct unidata st544[] = {
+{dd2250,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2251,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1318,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2252,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2253,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2254,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2255,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2256,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2257,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2257,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F980-F98F */
+static const struct unidata st570[] = {
 {dd2258,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1322,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2259,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1299,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2260,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2261,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2262,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2263,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2264,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F990-F99F */
-static const struct unidata st545[] = {
+{dd2264,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2265,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2266,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1303,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2267,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2268,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2269,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2270,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2271,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2271,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F990-F99F */
+static const struct unidata st571[] = {
 {dd2272,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2273,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2274,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15388,36 +15989,36 @@ static const struct unidata st545[] = {
 {dd2277,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2278,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2279,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2280,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9A0-F9AF */
-static const struct unidata st546[] = {
+{dd2280,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2281,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2235,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2282,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2283,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2284,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2285,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2286,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2287,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2287,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9A0-F9AF */
+static const struct unidata st572[] = {
 {dd2288,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2242,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2289,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2219,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2290,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2291,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2292,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2293,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2294,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9B0-F9BF */
-static const struct unidata st547[] = {
+{dd2294,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2295,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2296,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2226,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2297,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2298,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2299,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2300,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2301,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2301,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9B0-F9BF */
+static const struct unidata st573[] = {
 {dd2302,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2303,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2304,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15426,75 +16027,74 @@ static const struct unidata st547[] = {
 {dd2307,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2308,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2309,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2147,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9C0-F9CF */
-static const struct unidata st548[] = {
 {dd2310,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2311,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2312,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2313,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1492,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2314,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2315,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2316,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2154,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9C0-F9CF */
+static const struct unidata st574[] = {
 {dd2317,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2318,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2319,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2320,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1496,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2321,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2322,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2323,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2324,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9D0-F9DF */
-static const struct unidata st549[] = {
+{dd2324,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2325,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1765,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2326,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2327,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2328,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2329,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2330,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2331,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2331,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9D0-F9DF */
+static const struct unidata st575[] = {
 {dd2332,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1772,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2333,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2334,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2221,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2335,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2336,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2337,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2338,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9E0-F9EF */
-static const struct unidata st550[] = {
+{dd2338,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2339,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2340,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2341,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2228,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2342,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2343,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2344,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2345,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2345,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9E0-F9EF */
+static const struct unidata st576[] = {
 {dd2346,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2347,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2348,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2349,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2350,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2351,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2352,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2353,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* F9F0-F9FF */
-static const struct unidata st551[] = {
+{dd2353,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2354,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1450,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2355,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2356,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2357,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2358,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2359,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2360,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1397,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2360,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* F9F0-F9FF */
+static const struct unidata st577[] = {
 {dd2361,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2362,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2363,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -15502,267 +16102,275 @@ static const struct unidata st551[] = {
 {dd2365,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2366,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2367,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2368,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA00-FA0F */
-static const struct unidata st552[] = {
+{dd1401,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2368,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2369,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2370,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2371,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2372,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2373,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2374,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2375,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2375,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA00-FA0F */
+static const struct unidata st578[] = {
 {dd2376,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1424,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2377,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1427,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2378,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2379,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2380,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA10-FA1F */
-static const struct unidata st553[] = {
 {dd2381,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2382,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2383,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1428,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2384,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1431,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2385,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2386,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2387,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA10-FA1F */
+static const struct unidata st579[] = {
 {dd2388,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2389,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2390,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2391,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1404,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA20-FA2F */
-static const struct unidata st554[] = {
 {dd2392,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2393,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2394,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2395,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2396,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2397,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2398,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2399,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+{dd1408,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* FA30-FA3F */
-static const struct unidata st555[] = {
+/* FA20-FA2F */
+static const struct unidata st580[] = {
+{dd2399,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2400,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2401,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2402,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2403,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2404,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2405,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2406,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* FA30-FA3F */
+static const struct unidata st581[] = {
 {dd2407,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2408,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2409,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2410,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2411,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1325,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2412,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2413,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA40-FA4F */
-static const struct unidata st556[] = {
+{dd2414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2415,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2416,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2417,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2418,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1329,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2419,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2420,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2421,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2421,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA40-FA4F */
+static const struct unidata st582[] = {
 {dd2422,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2423,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2424,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2425,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2426,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1770,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2427,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2428,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2429,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA50-FA5F */
-static const struct unidata st557[] = {
+{dd2429,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2430,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1774,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2431,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2432,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2433,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1777,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2434,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2435,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2271,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2436,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2436,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA50-FA5F */
+static const struct unidata st583[] = {
 {dd2437,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1781,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2438,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2439,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2440,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2441,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2441,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2442,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA60-FA6F */
-static const struct unidata st558[] = {
+{dd2442,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2278,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2443,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2444,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2445,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2447,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2448,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2449,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2394,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2448,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2449,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA60-FA6F */
+static const struct unidata st584[] = {
 {dd2450,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2451,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2452,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* FA70-FA7F */
-static const struct unidata st559[] = {
 {dd2453,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2454,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2455,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2456,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2401,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2457,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2458,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2459,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2460,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2406,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2461,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2462,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* FA70-FA7F */
+static const struct unidata st585[] = {
 {dd2463,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2381,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2464,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2465,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2466,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA80-FA8F */
-static const struct unidata st560[] = {
+{dd2466,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2467,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2468,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2469,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2470,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2413,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2471,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2472,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2473,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2388,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2474,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2475,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2476,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2415,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2476,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FA80-FA8F */
+static const struct unidata st586[] = {
 {dd2477,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2478,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2479,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2480,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FA90-FA9F */
-static const struct unidata st561[] = {
+{dd2480,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2481,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2382,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2168,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2482,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2483,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1358,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2236,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2319,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2484,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2485,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2422,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2421,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2486,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2423,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2422,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2487,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2488,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2489,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd2489,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2490,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* FAA0-FAAF */
-static const struct unidata st562[] = {
-{dd2384,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2490,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* FA90-FA9F */
+static const struct unidata st587[] = {
 {dd2491,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2389,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2175,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2492,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1362,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2243,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2326,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2494,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2385,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2495,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2429,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2496,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2430,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2498,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2499,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2499,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FAA0-FAAF */
+static const struct unidata st588[] = {
+{dd2391,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2500,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2435,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2501,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2502,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* FAB0-FABF */
-static const struct unidata st563[] = {
-{dd2271,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2502,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2503,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2439,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2504,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2392,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2505,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2506,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2507,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2508,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2444,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2509,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2393,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2510,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2445,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2217,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2442,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2511,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd2512,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* FAC0-FACF */
-static const struct unidata st564[] = {
-{dd2512,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2448,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* FAB0-FABF */
+static const struct unidata st589[] = {
+{dd2278,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2513,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2514,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2515,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2516,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2517,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2450,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2390,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2518,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2451,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2519,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2452,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2400,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2520,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2521,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd2452,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2224,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2521,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2453,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* FAD0-FADF */
-static const struct unidata st565[] = {
+/* FAC0-FACF */
+static const struct unidata st590[] = {
 {dd2522,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2455,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2524,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2525,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2526,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2527,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2457,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2397,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2528,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2458,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2529,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2459,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd2530,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2531,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2531,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* FAD0-FADF */
+static const struct unidata st591[] = {
+{dd2532,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2533,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2534,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2535,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2536,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2537,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2538,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2539,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2540,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2541,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -15771,14 +16379,14 @@ static const struct unidata st565[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FB00-FB0F */
-static const struct unidata st566[] = {
-{dd2532,dd2532,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2533,dd2533,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2534,dd2534,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2535,dd2535,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2536,dd2536,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2537,dd2538,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2538,dd2538,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st592[] = {
+{dd2542,dd2542,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2543,dd2543,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2544,dd2544,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2545,dd2545,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2546,dd2546,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2547,dd2548,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2548,dd2548,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -15790,67 +16398,50 @@ static const struct unidata st566[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FB10-FB1F */
-static const struct unidata st567[] = {
+static const struct unidata st593[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2539,dd2539,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2540,dd2540,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2541,dd2541,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2542,dd2542,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2543,dd2543,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2549,dd2549,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2550,dd2550,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2551,dd2551,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2552,dd2552,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd2553,dd2553,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2544,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2554,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,26,Mn,0,GBExtend,WBExtend,SBExtend},
-{dd2545,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+{dd2555,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* FB20-FB2F */
-static const struct unidata st568[] = {
-{dd2546,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st594[] = {
+{dd2556,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1102,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1105,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2547,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2548,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2549,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2550,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2551,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2552,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2557,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2558,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2559,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2560,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2561,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2562,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd1077,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2553,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2554,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2555,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2556,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2557,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2558,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
-};
-/* FB30-FB3F */
-static const struct unidata st569[] = {
-{dd2559,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2560,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2561,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2562,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2563,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2564,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2565,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2566,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2567,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2568,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2568,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+};
+/* FB30-FB3F */
+static const struct unidata st595[] = {
 {dd2569,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2570,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2571,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* FB40-FB4F */
-static const struct unidata st570[] = {
 {dd2572,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2573,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2574,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2575,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -15859,60 +16450,31 @@ static const struct unidata st570[] = {
 {dd2578,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2579,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2580,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2581,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* FB40-FB4F */
+static const struct unidata st596[] = {
 {dd2582,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {dd2583,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2584,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2585,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2585,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd2586,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2587,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2588,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2589,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2590,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2591,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2592,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2593,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2594,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
 /* FB50-FB5F */
-static const struct unidata st571[] = {
-{dd2586,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2586,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2587,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2587,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2587,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2587,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2588,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2588,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2588,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2588,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2589,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2589,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2589,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2589,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FB60-FB6F */
-static const struct unidata st572[] = {
-{dd2590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2590,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2591,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2591,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2591,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2591,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2592,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2592,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2592,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2592,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2593,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2593,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2593,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2593,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FB70-FB7F */
-static const struct unidata st573[] = {
-{dd2594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2594,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2595,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2596,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2596,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st597[] = {
 {dd2596,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2596,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2597,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -15920,29 +16482,41 @@ static const struct unidata st573[] = {
 {dd2597,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2597,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2598,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2598,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FB80-FB8F */
-static const struct unidata st574[] = {
 {dd2598,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2598,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2598,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2599,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2599,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2599,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2599,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2600,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2600,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FB60-FB6F */
+static const struct unidata st598[] = {
 {dd2600,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2600,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2601,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2601,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2601,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2601,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2602,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2602,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2602,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2602,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2603,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2603,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2603,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2603,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2604,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2604,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FB70-FB7F */
+static const struct unidata st599[] = {
 {dd2604,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2604,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FB90-FB9F */
-static const struct unidata st575[] = {
+{dd2605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2605,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2606,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -15954,35 +16528,88 @@ static const struct unidata st575[] = {
 {dd2607,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2607,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FB80-FB8F */
+static const struct unidata st600[] = {
 {dd2608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2608,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2609,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2609,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FBA0-FBAF */
-static const struct unidata st576[] = {
-{dd2610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2609,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2610,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2611,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2611,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2612,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2612,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2612,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2612,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2613,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2613,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2613,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2613,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2614,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2614,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2614,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2615,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2615,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FBB0-FBBF */
-static const struct unidata st577[] = {
+/* FB90-FB9F */
+static const struct unidata st601[] = {
 {dd2615,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2615,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2619,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2619,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FBA0-FBAF */
+static const struct unidata st602[] = {
+{dd2620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2621,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2621,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FBB0-FBBF */
+static const struct unidata st603[] = {
+{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther}
+};
+/* FBC0-FBCF */
+static const struct unidata st604[] = {
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Sk,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -15999,83 +16626,70 @@ static const struct unidata st577[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FBD0-FBDF */
-static const struct unidata st578[] = {
+static const struct unidata st605[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2616,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2617,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2618,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2619,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2619,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2620,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2621,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2621,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FBE0-FBEF */
-static const struct unidata st579[] = {
-{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2622,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2623,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2624,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2626,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2627,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2627,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2628,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2628,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FBF0-FBFF */
-static const struct unidata st580[] = {
+{dd2628,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2629,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2629,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2630,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2630,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2631,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2631,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2632,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2631,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FBE0-FBEF */
+static const struct unidata st606[] = {
 {dd2632,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2632,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2633,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2633,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2633,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2634,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2634,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2634,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2634,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC00-FC0F */
-static const struct unidata st581[] = {
+{dd2634,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2636,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2636,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2633,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2638,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2638,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FBF0-FBFF */
+static const struct unidata st607[] = {
 {dd2639,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2639,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2640,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2640,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2641,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2641,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC00-FC0F */
+static const struct unidata st608[] = {
 {dd2645,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2646,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2647,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2648,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2649,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC10-FC1F */
-static const struct unidata st582[] = {
+{dd2649,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2650,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2651,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16085,16 +16699,16 @@ static const struct unidata st582[] = {
 {dd2656,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2657,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2658,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2659,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2659,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC10-FC1F */
+static const struct unidata st609[] = {
 {dd2660,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2661,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2662,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2663,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2664,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2665,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC20-FC2F */
-static const struct unidata st583[] = {
+{dd2665,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2666,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2667,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2668,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16104,16 +16718,16 @@ static const struct unidata st583[] = {
 {dd2672,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2673,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2674,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2675,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2675,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC20-FC2F */
+static const struct unidata st610[] = {
 {dd2676,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2677,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2678,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2679,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2680,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2681,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC30-FC3F */
-static const struct unidata st584[] = {
+{dd2681,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2682,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2683,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2684,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16123,16 +16737,16 @@ static const struct unidata st584[] = {
 {dd2688,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2689,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2690,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2691,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2691,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC30-FC3F */
+static const struct unidata st611[] = {
 {dd2692,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2693,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2694,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2695,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2696,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2697,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC40-FC4F */
-static const struct unidata st585[] = {
+{dd2697,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2698,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2699,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2700,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16142,16 +16756,16 @@ static const struct unidata st585[] = {
 {dd2704,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2705,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2706,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2707,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2707,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC40-FC4F */
+static const struct unidata st612[] = {
 {dd2708,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2709,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2710,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2711,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2712,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2713,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC50-FC5F */
-static const struct unidata st586[] = {
+{dd2713,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2714,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2715,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2716,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16161,206 +16775,206 @@ static const struct unidata st586[] = {
 {dd2720,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2721,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2723,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2723,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC50-FC5F */
+static const struct unidata st613[] = {
 {dd2724,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2725,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2726,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2727,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2728,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2729,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC60-FC6F */
-static const struct unidata st587[] = {
+{dd2729,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2730,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2731,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2732,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2733,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2734,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2735,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2736,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2633,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2638,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2737,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2738,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2739,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2644,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2739,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FC70-FC7F */
-static const struct unidata st588[] = {
+/* FC60-FC6F */
+static const struct unidata st614[] = {
 {dd2740,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2741,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2648,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2742,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2649,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2650,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2743,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2744,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2745,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2653,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2654,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2683,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2684,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2687,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2688,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FC80-FC8F */
-static const struct unidata st589[] = {
-{dd2689,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2693,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2694,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2695,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2696,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2700,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2701,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2702,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2647,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2746,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2706,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2643,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2648,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2747,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2748,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2712,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2749,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2713,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2714,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2653,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2654,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FC90-FC9F */
-static const struct unidata st590[] = {
-{dd2727,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+/* FC70-FC7F */
+static const struct unidata st615[] = {
 {dd2750,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2751,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2658,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2752,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2723,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2724,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2636,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2659,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2660,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2753,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2754,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2639,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2640,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2641,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FCA0-FCAF */
-static const struct unidata st591[] = {
+{dd2662,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2755,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2663,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2664,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2693,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2694,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2697,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2698,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC80-FC8F */
+static const struct unidata st616[] = {
+{dd2699,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2703,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2704,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2705,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2706,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2710,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2711,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2712,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2756,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2716,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2757,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2758,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2759,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2723,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2724,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FC90-FC9F */
+static const struct unidata st617[] = {
+{dd2737,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2760,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2761,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2732,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2762,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2733,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2734,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2645,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2646,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2763,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2647,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2648,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2756,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2764,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2649,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2650,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2651,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FCA0-FCAF */
+static const struct unidata st618[] = {
+{dd2765,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2655,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2656,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2657,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2658,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2659,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2661,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2766,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2662,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2663,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2664,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FCB0-FCBF */
-static const struct unidata st592[] = {
 {dd2665,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2666,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2757,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2667,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2668,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2669,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2670,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2671,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2672,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2674,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2673,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2674,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FCB0-FCBF */
+static const struct unidata st619[] = {
 {dd2675,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2676,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2767,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2677,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2678,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2679,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2680,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FCC0-FCCF */
-static const struct unidata st593[] = {
+{dd2680,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2681,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2682,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2684,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2685,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2686,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2690,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2687,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2688,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2689,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2690,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FCC0-FCCF */
+static const struct unidata st620[] = {
 {dd2691,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2692,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2693,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2694,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2697,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2698,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2699,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2695,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2696,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2700,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2758,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2701,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2702,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2703,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2704,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FCD0-FCDF */
-static const struct unidata st594[] = {
-{dd2705,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2706,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2704,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2707,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2708,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2709,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2710,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2711,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2712,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2759,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2768,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2713,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2714,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FCD0-FCDF */
+static const struct unidata st621[] = {
 {dd2715,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2716,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2760,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2719,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2720,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2721,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2761,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2637,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2769,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2725,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2726,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2770,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2729,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2730,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2731,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2732,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2771,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2647,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
 /* FCE0-FCEF */
-static const struct unidata st595[] = {
-{dd2754,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2642,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2755,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2648,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2756,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2762,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2665,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2763,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st622[] = {
 {dd2764,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2652,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2765,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2693,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2694,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2700,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2712,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2759,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FCF0-FCFF */
-static const struct unidata st596[] = {
-{dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2761,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2658,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2766,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2767,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2768,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2769,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2770,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2771,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2662,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2772,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2675,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2773,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2774,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2775,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2703,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2704,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2710,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2722,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2769,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FCF0-FCFF */
+static const struct unidata st623[] = {
+{dd2732,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2771,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2776,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2777,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2778,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2779,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD00-FD0F */
-static const struct unidata st597[] = {
+{dd2779,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2780,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2781,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2782,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16370,35 +16984,35 @@ static const struct unidata st597[] = {
 {dd2786,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2787,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2788,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2789,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2789,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD00-FD0F */
+static const struct unidata st624[] = {
 {dd2790,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2791,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2764,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2792,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2793,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2794,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD10-FD1F */
-static const struct unidata st598[] = {
+{dd2794,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2795,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2769,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2770,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2771,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2772,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2773,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2796,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2797,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2798,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2799,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2800,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2801,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2774,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2775,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2776,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2777,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2778,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2802,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2803,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2804,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD10-FD1F */
+static const struct unidata st625[] = {
+{dd2805,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2779,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2780,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2781,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2782,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2783,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD20-FD2F */
-static const struct unidata st599[] = {
+{dd2783,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2784,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2785,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2786,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16407,177 +17021,190 @@ static const struct unidata st599[] = {
 {dd2789,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2790,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2791,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2764,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2792,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2793,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2793,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD20-FD2F */
+static const struct unidata st626[] = {
 {dd2794,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2795,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2789,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2790,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2791,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD30-FD3F */
-static const struct unidata st600[] = {
-{dd2764,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2763,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2765,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2673,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2662,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2663,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2664,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2789,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2790,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2791,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2673,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2674,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2796,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2796,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
-{0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
-};
-/* FD50-FD5F */
-static const struct unidata st601[] = {
 {dd2797,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2798,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2798,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2799,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2800,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2801,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2774,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2802,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2803,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2804,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2804,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2805,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2799,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2800,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2801,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD30-FD3F */
+static const struct unidata st627[] = {
+{dd2774,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2773,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2775,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2683,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2672,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2673,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2674,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2799,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2800,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2801,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2683,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2684,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2806,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2806,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Ps,0,GBOther,WBOther,SBClose},
+{0,0,0,0,Pe,0,GBOther,WBOther,SBClose}
+};
+/* FD50-FD5F */
+static const struct unidata st628[] = {
 {dd2807,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2808,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2808,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2809,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2810,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD60-FD6F */
-static const struct unidata st602[] = {
 {dd2810,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2811,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2812,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2812,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2813,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2813,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2814,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2815,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2814,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2815,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2816,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2817,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2817,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2818,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2818,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2819,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2820,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FD70-FD7F */
-static const struct unidata st603[] = {
+/* FD60-FD6F */
+static const struct unidata st629[] = {
 {dd2820,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2821,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2821,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2822,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2822,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2823,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2823,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2824,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2825,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2825,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2826,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2827,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2827,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2828,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2828,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2829,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2830,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2830,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD70-FD7F */
+static const struct unidata st630[] = {
 {dd2830,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2831,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2832,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD80-FD8F */
-static const struct unidata st604[] = {
+{dd2831,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2832,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2833,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2834,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2835,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2835,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2836,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2836,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2837,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2837,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2838,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2838,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2839,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2840,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2840,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2841,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2842,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2842,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FD80-FD8F */
+static const struct unidata st631[] = {
 {dd2843,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2844,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2845,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FD90-FD9F */
-static const struct unidata st605[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd2845,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2846,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2846,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2847,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2847,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2848,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2848,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2849,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2850,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2851,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2851,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2852,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2853,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2854,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2855,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2855,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2856,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2857,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2855,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FDA0-FDAF */
-static const struct unidata st606[] = {
+/* FD90-FD9F */
+static const struct unidata st632[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd2856,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2857,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2858,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2859,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2860,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2861,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2861,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2862,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2863,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2864,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2865,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2865,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2866,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2867,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2867,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FDA0-FDAF */
+static const struct unidata st633[] = {
 {dd2868,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2869,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2870,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2871,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2872,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2873,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FDB0-FDBF */
-static const struct unidata st607[] = {
+{dd2873,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2874,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2875,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2876,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2877,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2831,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2833,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2878,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2879,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2880,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2881,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2882,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2883,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2882,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2880,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2884,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2885,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{dd2883,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FDC0-FDCF */
-static const struct unidata st608[] = {
+/* FDB0-FDBF */
+static const struct unidata st634[] = {
+{dd2884,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2885,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2886,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2887,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2841,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2843,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2888,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2883,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2824,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2814,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2889,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2890,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2891,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2892,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2893,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2892,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2890,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2894,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2895,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FDC0-FDCF */
+static const struct unidata st635[] = {
+{dd2896,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2897,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2898,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2893,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2834,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2824,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2899,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2900,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -16588,26 +17215,26 @@ static const struct unidata st608[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FDF0-FDFF */
-static const struct unidata st609[] = {
-{dd2891,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2892,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2893,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2894,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2895,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2896,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2897,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2898,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2899,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2900,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st636[] = {
 {dd2901,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2902,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2903,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd2903,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2904,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2905,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2906,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2907,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2908,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2909,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2910,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2911,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2912,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2913,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FE00-FE0F */
-static const struct unidata st610[] = {
+static const struct unidata st637[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -16626,17 +17253,17 @@ static const struct unidata st610[] = {
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* FE10-FE1F */
-static const struct unidata st611[] = {
-{dd2904,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
-{dd2905,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
-{dd2906,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2907,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
+static const struct unidata st638[] = {
+{dd2914,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
+{dd2915,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
+{dd2916,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2917,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
 {dd309,0,0,0,Po,CD,GBOther,WBMidNum,SBOther},
-{dd2908,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2909,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2910,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2911,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2912,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2918,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2919,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2920,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2921,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2922,0,0,0,Po,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -16645,162 +17272,124 @@ static const struct unidata st611[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FE30-FE3F */
-static const struct unidata st612[] = {
-{dd2913,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2914,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
-{dd2915,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
+static const struct unidata st639[] = {
+{dd2923,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2924,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
+{dd2925,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
 {dd1080,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd1081,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2917,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2918,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2919,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2920,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2921,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2922,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2923,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2924,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd1191,0,0,0,Ps,CD,GBOther,WBOther,SBClose}
-};
-/* FE40-FE4F */
-static const struct unidata st613[] = {
-{dd1192,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2925,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2926,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
 {dd2927,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd2928,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {dd2929,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd2930,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2931,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2931,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2931,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2931,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther}
+{dd2931,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2932,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2933,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2934,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd1195,0,0,0,Ps,CD,GBOther,WBOther,SBClose}
+};
+/* FE40-FE4F */
+static const struct unidata st640[] = {
+{dd1196,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2935,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2936,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2937,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2938,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{dd2939,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2940,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther}
 };
 /* FE50-FE5F */
-static const struct unidata st614[] = {
-{dd2904,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
-{dd2905,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
+static const struct unidata st641[] = {
+{dd2914,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
+{dd2915,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
 {dd1057,0,0,0,Po,CD,GBOther,WBMidNumLet,SBATerm},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd309,0,0,0,Po,CD,GBOther,WBMidNum,SBOther},
-{dd2907,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
-{dd2909,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
-{dd2908,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
-{dd2914,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
+{dd2917,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
+{dd2919,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
+{dd2918,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
+{dd2924,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
 {dd1080,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd1081,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2917,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2918,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2919,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2920,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2932,0,0,0,Po,CD,GBOther,WBOther,SBOther}
+{dd2927,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2928,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2929,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2930,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2942,0,0,0,Po,CD,GBOther,WBOther,SBOther}
 };
 /* FE60-FE6F */
-static const struct unidata st615[] = {
-{dd2933,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2934,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+static const struct unidata st642[] = {
+{dd2943,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2944,0,0,0,Po,CD,GBOther,WBOther,SBOther},
 {dd1077,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2935,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
-{dd2936,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2937,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd2945,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
+{dd2946,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd2947,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {dd1079,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2938,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2939,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{dd2940,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2948,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2949,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd2950,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2951,0,0,0,Po,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FE70-FE7F */
-static const struct unidata st616[] = {
-{dd2942,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2943,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2944,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
-{dd2945,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2946,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2947,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2948,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2949,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2950,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2951,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st643[] = {
 {dd2952,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2953,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2954,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2955,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FE80-FE8F */
-static const struct unidata st617[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd2955,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2956,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2957,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2957,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2958,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2958,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2959,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2959,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2960,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2960,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2961,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2961,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2961,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2961,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2962,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2962,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2963,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FE90-FE9F */
-static const struct unidata st618[] = {
-{dd2963,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2963,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2963,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2964,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2964,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2965,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2965,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2965,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2965,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2966,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2966,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2966,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2965,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FE80-FE8F */
+static const struct unidata st644[] = {
 {dd2966,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2967,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2967,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2967,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FEA0-FEAF */
-static const struct unidata st619[] = {
-{dd2967,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2968,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2968,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2968,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2968,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2969,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2969,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2969,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2969,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2970,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2970,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2971,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2971,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2971,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2971,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2972,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2972,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2973,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FEB0-FEBF */
-static const struct unidata st620[] = {
+/* FE90-FE9F */
+static const struct unidata st645[] = {
+{dd2973,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2973,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2973,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2974,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2974,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2974,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2974,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2975,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16815,8 +17404,8 @@ static const struct unidata st620[] = {
 {dd2977,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2977,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
 };
-/* FEC0-FECF */
-static const struct unidata st621[] = {
+/* FEA0-FEAF */
+static const struct unidata st646[] = {
 {dd2977,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2978,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2978,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16828,22 +17417,14 @@ static const struct unidata st621[] = {
 {dd2979,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2980,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2980,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2980,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2980,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2981,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2981,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2981,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FED0-FEDF */
-static const struct unidata st622[] = {
-{dd2981,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2982,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2982,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2982,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2982,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2983,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2983,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2983,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2983,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FEB0-FEBF */
+static const struct unidata st647[] = {
 {dd2983,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2984,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2984,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16851,10 +17432,7 @@ static const struct unidata st622[] = {
 {dd2984,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2985,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2985,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2985,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FEE0-FEEF */
-static const struct unidata st623[] = {
+{dd2985,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2985,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2986,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2986,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16862,7 +17440,10 @@ static const struct unidata st623[] = {
 {dd2986,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2987,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2987,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2987,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2987,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FEC0-FECF */
+static const struct unidata st648[] = {
 {dd2987,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2988,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2988,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -16870,48 +17451,94 @@ static const struct unidata st623[] = {
 {dd2988,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2989,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2989,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FEF0-FEFF */
-static const struct unidata st624[] = {
-{dd2625,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2989,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2989,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2990,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2990,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2990,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2990,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2991,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2991,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2991,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FED0-FEDF */
+static const struct unidata st649[] = {
+{dd2991,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2992,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2992,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2992,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2992,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2993,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2993,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2993,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2993,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2994,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2994,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2994,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd2994,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2995,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2995,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2995,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FEE0-FEEF */
+static const struct unidata st650[] = {
+{dd2995,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2996,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2996,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2996,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2996,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2997,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2997,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2997,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2997,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2998,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2998,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2998,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2998,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2999,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2999,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd2635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FEF0-FEFF */
+static const struct unidata st651[] = {
+{dd2635,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3000,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3000,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3000,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3000,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3001,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3001,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3002,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3002,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3003,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3003,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3004,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3004,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat}
 };
 /* FF00-FF0F */
-static const struct unidata st625[] = {
+static const struct unidata st652[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd2908,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
-{dd2995,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2932,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2939,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{dd2940,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2933,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2996,0,0,0,Po,CD,GBOther,WBMidNumLet,SBOther},
+{dd2918,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
+{dd3005,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2942,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2949,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd2950,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2943,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd3006,0,0,0,Po,CD,GBOther,WBMidNumLet,SBOther},
 {dd1080,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
 {dd1081,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2934,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2944,0,0,0,Po,CD,GBOther,WBOther,SBOther},
 {dd1077,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2904,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
-{dd2935,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
+{dd2914,0,0,0,Po,CD,GBOther,WBMidNum,SBSContinue},
+{dd2945,0,0,0,Pd,CD,GBOther,WBOther,SBSContinue},
 {dd1057,0,0,0,Po,CD,GBOther,WBMidNumLet,SBATerm},
-{dd2997,0,0,0,Po,CD,GBOther,WBOther,SBOther}
+{dd3007,0,0,0,Po,CD,GBOther,WBOther,SBOther}
 };
 /* FF10-FF1F */
-static const struct unidata st626[] = {
+static const struct unidata st653[] = {
 {dd1070,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
 {dd9,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
 {dd4,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
@@ -16922,53 +17549,53 @@ static const struct unidata st626[] = {
 {dd1074,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
 {dd1075,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
 {dd1076,0,0,0,Nd,CD,GBOther,WBOther,SBOther},
-{dd2907,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
+{dd2917,0,0,0,Po,CD,GBOther,WBMidLetter,SBSContinue},
 {dd309,0,0,0,Po,CD,GBOther,WBMidNum,SBOther},
-{dd2936,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd2946,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
 {dd1079,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2937,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2909,0,0,0,Po,CD,GBOther,WBOther,SBSTerm}
+{dd2947,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd2919,0,0,0,Po,CD,GBOther,WBOther,SBSTerm}
 };
 /* FF20-FF2F */
-static const struct unidata st627[] = {
-{dd2941,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd491,dd4825,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd493,dd4826,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1086,dd4827,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd494,dd4828,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd495,dd4829,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1101,dd4830,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd497,dd4831,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd498,dd4832,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd499,dd4833,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd500,dd4834,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd501,dd4835,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd502,dd4836,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd503,dd4837,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd504,dd4838,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd505,dd4839,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+static const struct unidata st654[] = {
+{dd2951,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd491,dd4939,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd493,dd4940,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1086,dd4941,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd494,dd4942,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd495,dd4943,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1101,dd4944,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd497,dd4945,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd498,dd4946,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd499,dd4947,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd500,dd4948,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd501,dd4949,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd502,dd4950,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd503,dd4951,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd504,dd4952,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd505,dd4953,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* FF30-FF3F */
-static const struct unidata st628[] = {
-{dd507,dd4840,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1094,dd4841,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd508,dd4842,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1270,dd4843,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd509,dd4844,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd510,dd4845,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,dd4846,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd511,dd4847,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,dd4848,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,dd4849,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1098,dd4850,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd2929,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2938,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd2930,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2998,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
-{dd2916,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther}
+static const struct unidata st655[] = {
+{dd507,dd4954,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1094,dd4955,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd508,dd4956,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,dd4957,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd509,dd4958,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd510,dd4959,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,dd4960,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd511,dd4961,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,dd4962,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,dd4963,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1098,dd4964,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd2939,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2948,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd2940,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd3008,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
+{dd2926,0,0,0,Pc,CD,GBOther,WBExtendNumLet,SBOther}
 };
 /* FF40-FF4F */
-static const struct unidata st629[] = {
+static const struct unidata st656[] = {
 {dd1040,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -16987,9 +17614,9 @@ static const struct unidata st629[] = {
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* FF50-FF5F */
-static const struct unidata st630[] = {
+static const struct unidata st657[] = {
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -16999,41 +17626,34 @@ static const struct unidata st630[] = {
 {dd301,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd292,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd571,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd2917,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2999,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd2918,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd3000,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3001,0,0,0,Ps,CD,GBOther,WBOther,SBClose}
+{dd2927,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd3009,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd2928,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd3010,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3011,0,0,0,Ps,CD,GBOther,WBOther,SBClose}
 };
 /* FF60-FF6F */
-static const struct unidata st631[] = {
-{dd3002,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2906,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
-{dd2925,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
-{dd2926,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
-{dd2905,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
-{dd3003,0,0,0,Po,CD,GBOther,WBOther,SBOther},
-{dd1873,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3004,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3005,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3006,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3007,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3008,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3009,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3010,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3011,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3012,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
+static const struct unidata st658[] = {
+{dd3012,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2916,0,0,0,Po,CD,GBOther,WBOther,SBSTerm},
+{dd2935,0,0,0,Ps,CD,GBOther,WBOther,SBClose},
+{dd2936,0,0,0,Pe,CD,GBOther,WBOther,SBClose},
+{dd2915,0,0,0,Po,CD,GBOther,WBOther,SBSContinue},
+{dd3013,0,0,0,Po,CD,GBOther,WBOther,SBOther},
+{dd1880,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3014,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3015,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3016,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3017,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3018,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3019,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3020,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3021,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3022,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
 };
 /* FF70-FF7F */
-static const struct unidata st632[] = {
-{dd3013,0,0,0,Lm,CD,GBOther,WBKatakana,SBOLetter},
-{dd1827,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1828,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1829,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1830,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1831,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1832,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1833,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+static const struct unidata st659[] = {
+{dd3023,0,0,0,Lm,CD,GBOther,WBKatakana,SBOLetter},
 {dd1834,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1835,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1836,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
@@ -17041,17 +17661,17 @@ static const struct unidata st632[] = {
 {dd1838,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1839,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1840,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1841,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
-};
-/* FF80-FF8F */
-static const struct unidata st633[] = {
+{dd1841,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1842,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1843,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1844,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1845,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1846,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1847,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1848,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1848,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
+};
+/* FF80-FF8F */
+static const struct unidata st660[] = {
 {dd1849,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1850,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1851,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
@@ -17060,48 +17680,42 @@ static const struct unidata st633[] = {
 {dd1854,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1855,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1856,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1857,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
-};
-/* FF90-FF9F */
-static const struct unidata st634[] = {
+{dd1857,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1858,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1859,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1860,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1861,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1862,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1863,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd1864,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1864,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter}
+};
+/* FF90-FF9F */
+static const struct unidata st661[] = {
 {dd1865,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1866,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1867,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1868,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1869,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
 {dd1870,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3014,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
-{dd3015,0,0,0,Lm,CD,GBExtend,WBExtend,SBExtend},
-{dd3016,0,0,0,Lm,CD,GBExtend,WBExtend,SBExtend}
+{dd1871,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1872,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1873,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1874,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1875,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1876,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd1877,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3024,0,0,0,Lo,CD,GBOther,WBKatakana,SBOLetter},
+{dd3025,0,0,0,Lm,CD,GBExtend,WBExtend,SBExtend},
+{dd3026,0,0,0,Lm,CD,GBExtend,WBExtend,SBExtend}
 };
 /* FFA0-FFAF */
-static const struct unidata st635[] = {
-{dd3017,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3018,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3019,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3020,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3021,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3022,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3023,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3024,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3025,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3026,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+static const struct unidata st662[] = {
 {dd3027,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3028,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3029,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3030,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3031,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3032,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
-};
-/* FFB0-FFBF */
-static const struct unidata st636[] = {
+{dd3032,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3033,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3034,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3035,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
@@ -17111,73 +17725,86 @@ static const struct unidata st636[] = {
 {dd3039,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3040,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3041,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3042,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3042,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FFB0-FFBF */
+static const struct unidata st663[] = {
 {dd3043,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3044,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3045,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3046,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3047,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* FFC0-FFCF */
-static const struct unidata st637[] = {
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd3048,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3049,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3050,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3051,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3052,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3053,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd3054,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3055,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3056,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3057,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3058,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3059,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* FFD0-FFDF */
-static const struct unidata st638[] = {
+/* FFC0-FFCF */
+static const struct unidata st664[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd3058,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3059,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3060,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3061,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3062,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3063,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3064,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
-{dd3065,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd3064,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3065,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3066,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3067,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {dd3068,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3069,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter}
+};
+/* FFD0-FFDF */
+static const struct unidata st665[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd3070,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3071,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3072,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3073,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3074,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3075,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd3076,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3077,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
+{dd3078,0,0,0,Lo,CD,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FFE0-FFEF */
-static const struct unidata st639[] = {
-{dd3069,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{dd3070,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{dd3071,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3072,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
-{dd3073,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd3074,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{dd3075,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd3076,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd3077,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3078,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3079,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3080,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3081,0,0,0,So,CD,GBOther,WBOther,SBOther},
-{dd3082,0,0,0,So,CD,GBOther,WBOther,SBOther},
+static const struct unidata st666[] = {
+{dd3079,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd3080,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd3081,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3082,0,0,0,Sk,CD,GBOther,WBOther,SBOther},
+{dd3083,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3084,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{dd3085,0,0,0,Sc,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{dd3086,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3087,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3088,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3089,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3090,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3091,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3092,0,0,0,So,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* FFF0-FFFF */
-static const struct unidata st640[] = {
+static const struct unidata st667[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -17196,7 +17823,7 @@ static const struct unidata st640[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10000-1000F */
-static const struct unidata st641[] = {
+static const struct unidata st668[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17215,7 +17842,7 @@ static const struct unidata st641[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 10030-1003F */
-static const struct unidata st642[] = {
+static const struct unidata st669[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17234,7 +17861,7 @@ static const struct unidata st642[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 10100-1010F */
-static const struct unidata st643[] = {
+static const struct unidata st670[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17253,7 +17880,7 @@ static const struct unidata st643[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther}
 };
 /* 10130-1013F */
-static const struct unidata st644[] = {
+static const struct unidata st671[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -17272,7 +17899,7 @@ static const struct unidata st644[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 10140-1014F */
-static const struct unidata st645[] = {
+static const struct unidata st672[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
@@ -17291,7 +17918,7 @@ static const struct unidata st645[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter}
 };
 /* 10170-1017F */
-static const struct unidata st646[] = {
+static const struct unidata st673[] = {
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
@@ -17310,7 +17937,7 @@ static const struct unidata st646[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 10180-1018F */
-static const struct unidata st647[] = {
+static const struct unidata st674[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17329,7 +17956,7 @@ static const struct unidata st647[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 101F0-101FF */
-static const struct unidata st648[] = {
+static const struct unidata st675[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17348,7 +17975,7 @@ static const struct unidata st648[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10310-1031F */
-static const struct unidata st649[] = {
+static const struct unidata st676[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17367,7 +17994,7 @@ static const struct unidata st649[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10320-1032F */
-static const struct unidata st650[] = {
+static const struct unidata st677[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -17386,7 +18013,7 @@ static const struct unidata st650[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10340-1034F */
-static const struct unidata st651[] = {
+static const struct unidata st678[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17405,7 +18032,7 @@ static const struct unidata st651[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10390-1039F */
-static const struct unidata st652[] = {
+static const struct unidata st679[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17424,7 +18051,7 @@ static const struct unidata st652[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 103C0-103CF */
-static const struct unidata st653[] = {
+static const struct unidata st680[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17443,7 +18070,7 @@ static const struct unidata st653[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 103D0-103DF */
-static const struct unidata st654[] = {
+static const struct unidata st681[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
@@ -17462,53 +18089,53 @@ static const struct unidata st654[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10400-1040F */
-static const struct unidata st655[] = {
-{0,dd4851,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4852,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4853,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4854,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4855,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4856,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4857,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4858,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4859,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4860,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4861,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4862,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4863,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4864,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4865,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4866,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st682[] = {
+{0,dd4965,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4966,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4967,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4968,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4969,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4970,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4971,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4972,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4973,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4974,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4975,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4976,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4977,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4978,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4979,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4980,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 10410-1041F */
-static const struct unidata st656[] = {
-{0,dd4867,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4868,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4869,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4870,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4871,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4872,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4873,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4874,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4875,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4876,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4877,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4878,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4879,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4880,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4881,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4882,0,0,Lu,0,GBOther,WBALetter,SBUpper}
+static const struct unidata st683[] = {
+{0,dd4981,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4982,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4983,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4984,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4985,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4986,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4987,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4988,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4989,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4990,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4991,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4992,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4993,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4994,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4995,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4996,0,0,Lu,0,GBOther,WBALetter,SBUpper}
 };
 /* 10420-1042F */
-static const struct unidata st657[] = {
-{0,dd4883,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4884,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4885,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4886,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4887,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4888,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4889,0,0,Lu,0,GBOther,WBALetter,SBUpper},
-{0,dd4890,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+static const struct unidata st684[] = {
+{0,dd4997,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4998,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd4999,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd5000,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd5001,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd5002,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd5003,0,0,Lu,0,GBOther,WBALetter,SBUpper},
+{0,dd5004,0,0,Lu,0,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower},
@@ -17519,7 +18146,7 @@ static const struct unidata st657[] = {
 {0,0,0,0,Ll,0,GBOther,WBALetter,SBLower}
 };
 /* 10800-1080F */
-static const struct unidata st658[] = {
+static const struct unidata st685[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17538,7 +18165,7 @@ static const struct unidata st658[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 10830-1083F */
-static const struct unidata st659[] = {
+static const struct unidata st686[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17556,8 +18183,27 @@ static const struct unidata st659[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
+/* 10850-1085F */
+static const struct unidata st687[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther}
+};
 /* 10910-1091F */
-static const struct unidata st660[] = {
+static const struct unidata st688[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17568,15 +18214,15 @@ static const struct unidata st660[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 10930-1093F */
-static const struct unidata st661[] = {
+static const struct unidata st689[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17595,7 +18241,7 @@ static const struct unidata st661[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther}
 };
 /* 10A00-10A0F */
-static const struct unidata st662[] = {
+static const struct unidata st690[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -17614,7 +18260,7 @@ static const struct unidata st662[] = {
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 10A10-10A1F */
-static const struct unidata st663[] = {
+static const struct unidata st691[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17633,7 +18279,7 @@ static const struct unidata st663[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
 };
 /* 10A30-10A3F */
-static const struct unidata st664[] = {
+static const struct unidata st692[] = {
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
@@ -17652,7 +18298,7 @@ static const struct unidata st664[] = {
 {0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 10A40-10A4F */
-static const struct unidata st665[] = {
+static const struct unidata st693[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
@@ -17671,15 +18317,15 @@ static const struct unidata st665[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 10A50-10A5F */
-static const struct unidata st666[] = {
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+static const struct unidata st694[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -17689,37 +18335,94 @@ static const struct unidata st666[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 12460-1246F */
-static const struct unidata st667[] = {
-{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+/* 10A70-10A7F */
+static const struct unidata st695[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+};
+/* 10B30-10B3F */
+static const struct unidata st696[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
-};
-/* 12470-1247F */
-static const struct unidata st668[] = {
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther}
+};
+/* 10B50-10B5F */
+static const struct unidata st697[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther}
+};
+/* 10B70-10B7F */
+static const struct unidata st698[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther}
+};
+/* 10C40-10C4F */
+static const struct unidata st699[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -17727,14 +18430,185 @@ static const struct unidata st668[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 1D0F0-1D0FF */
-static const struct unidata st669[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+/* 10E70-10E7F */
+static const struct unidata st700[] = {
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 11000-1100F */
+static const struct unidata st701[] = {
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+};
+/* 11030-1103F */
+static const struct unidata st702[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend}
+};
+/* 11040-1104F */
+static const struct unidata st703[] = {
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 11050-1105F */
+static const struct unidata st704[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther}
+};
+/* 11060-1106F */
+static const struct unidata st705[] = {
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,No,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric},
+{0,0,0,0,Nd,0,GBOther,WBNumeric,SBNumeric}
+};
+/* 11090-1109F */
+static const struct unidata st706[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd4069,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd3093,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd4070,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd3094,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+};
+/* 110A0-110AF */
+static const struct unidata st707[] = {
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,dd4071,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{dd3095,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBALetter,SBOLetter}
+};
+/* 110B0-110BF */
+static const struct unidata st708[] = {
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,0,Mc,0,GBSpacingMark,WBExtend,SBExtend},
+{0,0,0,9,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,7,Mn,0,GBExtend,WBExtend,SBExtend},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm}
+};
+/* 110C0-110CF */
+static const struct unidata st709[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Po,0,GBOther,WBOther,SBSTerm},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -17746,51 +18620,127 @@ static const struct unidata st669[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 1D120-1D12F */
-static const struct unidata st670[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+/* 12460-1246F */
+static const struct unidata st710[] = {
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
+{0,0,0,0,Nl,0,GBOther,WBALetter,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther}
-};
-/* 1D150-1D15F */
-static const struct unidata st671[] = {
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3083,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3084,0,0,0,So,0,GBOther,WBOther,SBOther}
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 1D160-1D16F */
-static const struct unidata st672[] = {
-{dd3085,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3086,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3087,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3088,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3089,0,0,0,So,0,GBOther,WBOther,SBOther},
+/* 12470-1247F */
+static const struct unidata st711[] = {
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Po,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1B000-1B00F */
+static const struct unidata st712[] = {
+{0,0,0,0,Lo,0,GBOther,WBKatakana,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1D0F0-1D0FF */
+static const struct unidata st713[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1D120-1D12F */
+static const struct unidata st714[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 1D150-1D15F */
+static const struct unidata st715[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3096,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3097,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 1D160-1D16F */
+static const struct unidata st716[] = {
+{dd3098,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3099,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3100,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3101,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3102,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,216,Mc,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,216,Mc,0,GBSpacingMark,WBExtend,SBExtend},
 {0,0,0,1,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -17804,7 +18754,7 @@ static const struct unidata st672[] = {
 {0,0,0,216,Mc,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1D170-1D17F */
-static const struct unidata st673[] = {
+static const struct unidata st717[] = {
 {0,0,0,216,Mc,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,216,Mc,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,216,Mc,0,GBExtend,WBExtend,SBExtend},
@@ -17823,7 +18773,7 @@ static const struct unidata st673[] = {
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend}
 };
 /* 1D180-1D18F */
-static const struct unidata st674[] = {
+static const struct unidata st718[] = {
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
 {0,0,0,220,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -17842,7 +18792,7 @@ static const struct unidata st674[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 1D1A0-1D1AF */
-static const struct unidata st675[] = {
+static const struct unidata st719[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17861,7 +18811,7 @@ static const struct unidata st675[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 1D1B0-1D1BF */
-static const struct unidata st676[] = {
+static const struct unidata st720[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17873,15 +18823,15 @@ static const struct unidata st676[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3090,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3091,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3092,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3093,0,0,0,So,0,GBOther,WBOther,SBOther},
-{dd3094,0,0,0,So,0,GBOther,WBOther,SBOther}
+{dd3103,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3104,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3105,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3106,0,0,0,So,0,GBOther,WBOther,SBOther},
+{dd3107,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
 /* 1D1C0-1D1CF */
-static const struct unidata st677[] = {
-{dd3095,0,0,0,So,0,GBOther,WBOther,SBOther},
+static const struct unidata st721[] = {
+{dd3108,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
@@ -17898,8 +18848,27 @@ static const struct unidata st677[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
+/* 1D1D0-1D1DF */
+static const struct unidata st722[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
 /* 1D240-1D24F */
-static const struct unidata st678[] = {
+static const struct unidata st723[] = {
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,230,Mn,0,GBExtend,WBExtend,SBExtend},
@@ -17918,7 +18887,7 @@ static const struct unidata st678[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1D370-1D37F */
-static const struct unidata st679[] = {
+static const struct unidata st724[] = {
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,No,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -17937,7 +18906,7 @@ static const struct unidata st679[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1D400-1D40F */
-static const struct unidata st680[] = {
+static const struct unidata st725[] = {
 {dd491,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd493,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1086,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -17956,16 +18925,16 @@ static const struct unidata st680[] = {
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D410-1D41F */
-static const struct unidata st681[] = {
+static const struct unidata st726[] = {
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd508,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -17975,7 +18944,7 @@ static const struct unidata st681[] = {
 {dd544,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D420-1D42F */
-static const struct unidata st682[] = {
+static const struct unidata st727[] = {
 {dd521,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd284,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd538,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -17986,7 +18955,7 @@ static const struct unidata st682[] = {
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -17994,7 +18963,7 @@ static const struct unidata st682[] = {
 {dd533,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D430-1D43F */
-static const struct unidata st683[] = {
+static const struct unidata st728[] = {
 {dd291,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd301,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd292,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18013,26 +18982,26 @@ static const struct unidata st683[] = {
 {dd502,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D440-1D44F */
-static const struct unidata st684[] = {
+static const struct unidata st729[] = {
 {dd503,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd504,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd505,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd508,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D450-1D45F */
-static const struct unidata st685[] = {
+static const struct unidata st730[] = {
 {dd541,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd516,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd517,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18047,11 +19016,11 @@ static const struct unidata st685[] = {
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D460-1D46F */
-static const struct unidata st686[] = {
+static const struct unidata st731[] = {
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd530,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18070,7 +19039,7 @@ static const struct unidata st686[] = {
 {dd498,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D470-1D47F */
-static const struct unidata st687[] = {
+static const struct unidata st732[] = {
 {dd499,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd500,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd501,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -18081,16 +19050,16 @@ static const struct unidata st687[] = {
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd508,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D480-1D48F */
-static const struct unidata st688[] = {
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st733[] = {
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18108,10 +19077,10 @@ static const struct unidata st688[] = {
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D490-1D49F */
-static const struct unidata st689[] = {
+static const struct unidata st734[] = {
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18127,7 +19096,7 @@ static const struct unidata st689[] = {
 {dd494,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D4A0-1D4AF */
-static const struct unidata st690[] = {
+static const struct unidata st735[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd497,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -18142,16 +19111,16 @@ static const struct unidata st690[] = {
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D4B0-1D4BF */
-static const struct unidata st691[] = {
+static const struct unidata st736[] = {
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18165,14 +19134,14 @@ static const struct unidata st691[] = {
 {dd286,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D4C0-1D4CF */
-static const struct unidata st692[] = {
+static const struct unidata st737[] = {
 {dd522,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd300,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd523,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18184,7 +19153,7 @@ static const struct unidata st692[] = {
 {dd571,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D500-1D50F */
-static const struct unidata st693[] = {
+static const struct unidata st738[] = {
 {dd291,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd301,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd292,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18203,26 +19172,26 @@ static const struct unidata st693[] = {
 {dd502,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D510-1D51F */
-static const struct unidata st694[] = {
+static const struct unidata st739[] = {
 {dd503,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd504,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd505,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D520-1D52F */
-static const struct unidata st695[] = {
+static const struct unidata st740[] = {
 {dd541,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd516,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd517,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18237,11 +19206,11 @@ static const struct unidata st695[] = {
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D530-1D53F */
-static const struct unidata st696[] = {
+static const struct unidata st741[] = {
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd530,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18260,7 +19229,7 @@ static const struct unidata st696[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* 1D540-1D54F */
-static const struct unidata st697[] = {
+static const struct unidata st742[] = {
 {dd499,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd500,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd501,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -18271,16 +19240,16 @@ static const struct unidata st697[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D550-1D55F */
-static const struct unidata st698[] = {
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st743[] = {
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18298,10 +19267,10 @@ static const struct unidata st698[] = {
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D560-1D56F */
-static const struct unidata st699[] = {
+static const struct unidata st744[] = {
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18317,7 +19286,7 @@ static const struct unidata st699[] = {
 {dd494,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D570-1D57F */
-static const struct unidata st700[] = {
+static const struct unidata st745[] = {
 {dd495,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd497,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
@@ -18332,16 +19301,16 @@ static const struct unidata st700[] = {
 {dd507,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1094,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd508,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1270,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1274,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd509,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D580-1D58F */
-static const struct unidata st701[] = {
+static const struct unidata st746[] = {
 {dd510,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd511,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1131,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd1271,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1134,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd1275,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd2,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd515,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18355,14 +19324,14 @@ static const struct unidata st701[] = {
 {dd286,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D590-1D59F */
-static const struct unidata st702[] = {
+static const struct unidata st747[] = {
 {dd522,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd300,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd523,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd1082,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd10,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd528,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd1272,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd1276,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd287,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd180,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd529,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
@@ -18374,368 +19343,368 @@ static const struct unidata st702[] = {
 {dd571,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D6A0-1D6AF */
-static const struct unidata st703[] = {
+static const struct unidata st748[] = {
 {dd291,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd301,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd292,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd571,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3096,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3097,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3109,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3110,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
-{dd3098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3100,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3102,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3103,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd342,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D6B0-1D6BF */
-static const struct unidata st704[] = {
-{dd3104,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3105,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3106,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3109,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3110,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st749[] = {
+{dd3117,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3118,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3119,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3120,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3121,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3122,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3123,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3124,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3125,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd344,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd334,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd3127,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3128,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D6C0-1D6CF */
-static const struct unidata st705[] = {
+static const struct unidata st750[] = {
 {dd1099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3117,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3118,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd332,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd535,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd536,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd343,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3119,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3120,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd996,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd339,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3121,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd7,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3122,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3123,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D6D0-1D6DF */
-static const struct unidata st706[] = {
-{dd3124,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st751[] = {
+{dd3137,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd340,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd341,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3126,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3127,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3139,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3140,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd337,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd537,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3128,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3129,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd3141,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3142,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3143,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3144,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3145,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3146,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3147,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D6E0-1D6EF */
-static const struct unidata st707[] = {
-{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st752[] = {
+{dd3148,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3149,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3100,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3102,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3103,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd342,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3104,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3105,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3106,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3109,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd3117,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3118,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3119,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3120,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3121,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3122,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D6F0-1D6FF */
-static const struct unidata st708[] = {
-{dd3110,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st753[] = {
+{dd3123,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3124,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3125,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd344,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd334,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3127,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3128,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3117,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3118,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd332,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd535,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd536,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D700-1D70F */
-static const struct unidata st709[] = {
+static const struct unidata st754[] = {
 {dd343,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3119,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3120,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd996,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd339,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3121,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd7,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3122,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3123,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3124,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3137,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd340,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd341,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3126,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3139,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D710-1D71F */
-static const struct unidata st710[] = {
-{dd3127,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st755[] = {
+{dd3140,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd337,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd537,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3128,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3129,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3141,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3142,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3143,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3144,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3145,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3146,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3147,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3148,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3149,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3100,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D720-1D72F */
-static const struct unidata st711[] = {
-{dd3101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3102,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3103,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st756[] = {
+{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd342,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3104,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3105,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3106,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3109,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3110,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3117,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3118,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3119,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3120,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3121,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3122,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3123,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3124,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3125,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd344,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd3126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D730-1D73F */
-static const struct unidata st712[] = {
+static const struct unidata st757[] = {
 {dd334,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3127,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3128,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3117,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3118,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd332,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd535,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd536,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd343,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3119,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3120,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd996,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd339,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D740-1D74F */
-static const struct unidata st713[] = {
-{dd3121,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st758[] = {
+{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd7,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3122,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3123,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3124,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3137,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd340,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd341,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3126,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3127,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3139,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3140,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd337,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd537,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3128,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3129,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
+{dd3141,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3142,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3143,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
 };
 /* 1D750-1D75F */
-static const struct unidata st714[] = {
-{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st759[] = {
+{dd3144,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3145,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3146,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3147,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3148,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3149,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3100,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3102,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3103,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd342,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3104,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3105,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
+{dd3117,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3118,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D760-1D76F */
-static const struct unidata st715[] = {
-{dd3106,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3109,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3110,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st760[] = {
+{dd3119,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3120,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3121,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3122,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3123,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3124,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3125,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd344,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd334,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3127,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3128,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3117,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
+{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther}
 };
 /* 1D770-1D77F */
-static const struct unidata st716[] = {
-{dd3118,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st761[] = {
+{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd332,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd535,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd536,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd343,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3119,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3120,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd996,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd339,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3121,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd7,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3122,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3123,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3124,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3137,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D780-1D78F */
-static const struct unidata st717[] = {
+static const struct unidata st762[] = {
 {dd340,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd341,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3126,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3127,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3139,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3140,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd337,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd537,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3128,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3129,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd3141,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3142,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3143,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3144,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3145,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3146,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3147,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3148,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3149,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D790-1D79F */
-static const struct unidata st718[] = {
-{dd3098,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st763[] = {
+{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3100,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3101,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3102,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3103,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd342,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3104,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3105,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3106,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3107,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3109,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3110,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3117,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3118,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3119,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3120,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3121,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3122,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3123,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1108,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper}
 };
 /* 1D7A0-1D7AF */
-static const struct unidata st719[] = {
-{dd3111,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3112,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+static const struct unidata st764[] = {
+{dd3124,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3125,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd344,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3113,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3126,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd334,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3114,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3115,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3116,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3127,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3128,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3129,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
 {dd1099,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3117,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3118,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd332,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd535,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd536,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd343,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3119,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
+{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D7B0-1D7BF */
-static const struct unidata st720[] = {
-{dd3120,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+static const struct unidata st765[] = {
+{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd333,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd996,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd339,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3121,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd7,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3122,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3123,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3124,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3137,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd338,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd340,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd341,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3125,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3126,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3127,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3139,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3140,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {dd337,0,0,0,Ll,CD,GBOther,WBALetter,SBLower}
 };
 /* 1D7C0-1D7CF */
-static const struct unidata st721[] = {
+static const struct unidata st766[] = {
 {dd537,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3128,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3129,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3130,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
-{dd3131,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3132,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3133,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3134,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3135,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3136,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
-{dd3137,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
-{dd3138,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3141,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3142,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3143,0,0,0,Sm,CD,GBOther,WBOther,SBOther},
+{dd3144,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3145,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3146,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3147,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3148,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3149,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
+{dd3150,0,0,0,Lu,CD,GBOther,WBALetter,SBUpper},
+{dd3151,0,0,0,Ll,CD,GBOther,WBALetter,SBLower},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {dd1070,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd9,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric}
 };
 /* 1D7D0-1D7DF */
-static const struct unidata st722[] = {
+static const struct unidata st767[] = {
 {dd4,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd5,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1071,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
@@ -18754,7 +19723,7 @@ static const struct unidata st722[] = {
 {dd1074,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric}
 };
 /* 1D7E0-1D7EF */
-static const struct unidata st723[] = {
+static const struct unidata st768[] = {
 {dd1075,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1076,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1070,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
@@ -18773,7 +19742,7 @@ static const struct unidata st723[] = {
 {dd5,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric}
 };
 /* 1D7F0-1D7FF */
-static const struct unidata st724[] = {
+static const struct unidata st769[] = {
 {dd1071,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1072,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1073,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
@@ -18791,318 +19760,694 @@ static const struct unidata st724[] = {
 {dd1075,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric},
 {dd1076,0,0,0,Nd,CD,GBOther,WBNumeric,SBNumeric}
 };
-/* 2A6D0-2A6DF */
-static const struct unidata st725[] = {
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* 1F0A0-1F0AF */
+static const struct unidata st770[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F0B0-1F0BF */
+static const struct unidata st771[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F100-1F10F */
+static const struct unidata st772[] = {
+{dd3152,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3153,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3154,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3155,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3156,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3157,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3158,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3159,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3160,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3161,0,0,0,No,CD,GBOther,WBOther,SBOther},
+{dd3162,0,0,0,No,CD,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F110-1F11F */
+static const struct unidata st773[] = {
+{dd3163,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3164,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3165,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3166,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3167,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3168,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3169,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3170,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3171,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3172,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3173,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3174,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3175,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3176,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3177,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3178,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 1F120-1F12F */
+static const struct unidata st774[] = {
+{dd3179,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3180,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3181,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3182,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3183,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3184,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3185,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3186,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3187,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3188,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3189,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1086,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd508,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3190,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3191,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F130-1F13F */
+static const struct unidata st775[] = {
+{dd491,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd493,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1086,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd494,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd495,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1101,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd497,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd498,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd499,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd500,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd501,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd502,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd503,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd504,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd505,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd507,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 1F140-1F14F */
+static const struct unidata st776[] = {
+{dd1094,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd508,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1274,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd509,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd510,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1129,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd511,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1134,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1275,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1098,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3192,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2066,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3193,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3194,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3195,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3196,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 1F190-1F19F */
+static const struct unidata st777[] = {
+{dd3197,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F800-2F80F */
-static const struct unidata st726[] = {
-{dd3139,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3140,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3141,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3142,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3143,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2400,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3144,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3145,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3146,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3147,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2401,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3148,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3149,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3150,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2402,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3151,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F1E0-1F1EF */
+static const struct unidata st778[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
-/* 2F810-2F81F */
-static const struct unidata st727[] = {
-{dd3152,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3153,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3154,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3155,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3156,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3157,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3158,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3159,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3160,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3161,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3162,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2454,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3163,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1297,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3164,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3165,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F200-1F20F */
+static const struct unidata st779[] = {
+{dd3198,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3199,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1844,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F820-2F82F */
-static const struct unidata st728[] = {
-{dd3166,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3167,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3168,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3169,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3170,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2459,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2403,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2404,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2460,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3171,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3172,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2223,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3173,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2405,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3174,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3175,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F210-1F21F */
+static const struct unidata st780[] = {
+{dd1348,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3200,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3201,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3202,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1291,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3203,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3204,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1666,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3205,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3206,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3207,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd2316,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3208,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3209,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3210,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3211,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 1F220-1F22F */
+static const struct unidata st781[] = {
+{dd3212,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3213,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1384,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3214,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3215,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3216,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3217,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3218,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3219,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1285,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1658,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3220,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1793,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1661,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1794,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3221,0,0,0,So,CD,GBOther,WBOther,SBOther}
+};
+/* 1F230-1F23F */
+static const struct unidata st782[] = {
+{dd1440,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3222,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3223,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3224,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3225,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3226,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1776,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd1358,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3227,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3228,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3229,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F830-2F83F */
-static const struct unidata st729[] = {
-{dd3176,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3177,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3177,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3177,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3178,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3179,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3180,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3181,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3182,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3183,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3184,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3185,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3186,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3187,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3188,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3189,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F240-1F24F */
+static const struct unidata st783[] = {
+{dd3230,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3231,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3232,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3233,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3234,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3235,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3236,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3237,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3238,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F840-2F84F */
-static const struct unidata st730[] = {
-{dd3190,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3191,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3192,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3193,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3194,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3195,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3195,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2462,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3196,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3197,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3198,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3199,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2407,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3200,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3201,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3202,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F250-1F25F */
+static const struct unidata st784[] = {
+{dd3239,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{dd3240,0,0,0,So,CD,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F850-2F85F */
-static const struct unidata st731[] = {
-{dd2369,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3203,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3204,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3205,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3206,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3207,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3208,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3209,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3210,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3211,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3212,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3213,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3214,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3215,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3216,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3217,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F320-1F32F */
+static const struct unidata st785[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
-/* 2F860-2F86F */
-static const struct unidata st732[] = {
-{dd3218,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3219,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3220,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3221,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3222,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3223,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3224,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3225,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3226,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3227,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3228,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3228,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3229,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3230,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3231,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2219,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+/* 1F330-1F33F */
+static const struct unidata st786[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
 };
-/* 2F870-2F87F */
-static const struct unidata st733[] = {
-{dd3232,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3233,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3234,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3235,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3236,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1323,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3237,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3238,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1325,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3239,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3240,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* 1F370-1F37F */
+static const struct unidata st787[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F3C0-1F3CF */
+static const struct unidata st788[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F440-1F44F */
+static const struct unidata st789[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 1F4F0-1F4FF */
+static const struct unidata st790[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F560-1F56F */
+static const struct unidata st791[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F5F0-1F5FF */
+static const struct unidata st792[] = {
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 1F610-1F61F */
+static const struct unidata st793[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F620-1F62F */
+static const struct unidata st794[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 1F630-1F63F */
+static const struct unidata st795[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 1F640-1F64F */
+static const struct unidata st796[] = {
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther},
+{0,0,0,0,So,0,GBOther,WBOther,SBOther}
+};
+/* 2A6D0-2A6DF */
+static const struct unidata st797[] = {
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
+{0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
+};
+/* 2F800-2F80F */
+static const struct unidata st798[] = {
 {dd3241,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3242,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3243,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3244,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3245,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F880-2F88F */
-static const struct unidata st734[] = {
+{dd3245,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2407,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3246,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3247,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3248,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3249,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2408,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3250,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3251,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3252,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3253,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2409,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3253,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F810-2F81F */
+static const struct unidata st799[] = {
 {dd3254,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3255,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3256,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3257,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3258,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3210,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3259,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2167,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3260,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F890-2F89F */
-static const struct unidata st735[] = {
-{dd1335,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3261,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3260,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3261,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3262,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3263,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3263,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2464,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3264,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1301,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3265,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3266,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3266,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F820-2F82F */
+static const struct unidata st800[] = {
 {dd3267,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3268,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3228,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3269,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3270,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2469,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2410,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2411,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2470,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3271,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3272,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3273,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8A0-2F8AF */
-static const struct unidata st736[] = {
+{dd2230,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3273,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2412,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3274,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3275,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3275,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F830-2F83F */
+static const struct unidata st801[] = {
 {dd3276,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2412,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3277,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3277,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3277,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3278,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3279,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3280,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2474,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3280,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3281,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3282,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3283,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3284,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3285,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8B0-2F8BF */
-static const struct unidata st737[] = {
-{dd2415,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2140,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3285,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3286,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3287,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3288,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3289,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3289,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F840-2F84F */
+static const struct unidata st802[] = {
 {dd3290,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3291,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3292,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3293,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3294,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3295,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3295,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2472,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3296,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3297,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3298,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3299,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8C0-2F8CF */
-static const struct unidata st738[] = {
+{dd3299,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3300,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3301,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3302,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3302,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F850-2F85F */
+static const struct unidata st803[] = {
+{dd2376,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3303,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3304,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3305,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3306,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3307,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2416,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3308,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3309,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3310,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3311,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3312,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3313,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2418,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8D0-2F8DF */
-static const struct unidata st739[] = {
 {dd3314,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3203,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3315,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3316,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3316,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F860-2F86F */
+static const struct unidata st804[] = {
 {dd3317,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3318,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3319,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3320,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3321,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2168,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2482,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3322,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3323,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3324,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3325,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3326,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3327,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8E0-2F8EF */
-static const struct unidata st740[] = {
+{dd3327,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3327,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3328,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3329,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2419,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3330,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2226,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F870-2F87F */
+static const struct unidata st805[] = {
 {dd3331,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3332,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3333,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2524,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3334,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3335,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1327,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3336,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3337,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1329,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3338,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3339,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3340,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3341,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F8F0-2F8FF */
-static const struct unidata st741[] = {
+{dd3341,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3342,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3343,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3344,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3344,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F880-2F88F */
+static const struct unidata st806[] = {
 {dd3345,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3346,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2236,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3347,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3348,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3349,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19112,50 +20457,55 @@ static const struct unidata st741[] = {
 {dd3353,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3354,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3355,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3356,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F900-2F90F */
-static const struct unidata st742[] = {
+{dd3356,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3357,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2420,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2319,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3358,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3359,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2174,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3359,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F890-2F89F */
+static const struct unidata st807[] = {
+{dd1339,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3360,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3360,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3361,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3362,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3362,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3363,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3364,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3365,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2485,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3366,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3367,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3368,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3369,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F910-2F91F */
-static const struct unidata st743[] = {
+{dd3369,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3370,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3371,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3372,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3372,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F8A0-2F8AF */
+static const struct unidata st808[] = {
 {dd3373,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2486,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3374,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3375,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2419,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3376,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3377,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3378,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3379,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2484,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3379,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3380,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2421,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3381,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3382,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3383,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3384,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* 2F920-2F92F */
-static const struct unidata st744[] = {
+/* 2F8B0-2F8BF */
+static const struct unidata st809[] = {
+{dd2422,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2147,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3385,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2488,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3386,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3387,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3388,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19167,13 +20517,11 @@ static const struct unidata st744[] = {
 {dd3394,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3395,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3396,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3396,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3397,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3398,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* 2F930-2F93F */
-static const struct unidata st745[] = {
-{dd2490,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* 2F8C0-2F8CF */
+static const struct unidata st810[] = {
 {dd3399,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3400,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3401,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19181,134 +20529,133 @@ static const struct unidata st745[] = {
 {dd3403,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3404,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3405,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2222,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3406,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2423,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3407,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3408,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3409,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3410,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3411,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3412,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd3412,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2425,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* 2F940-2F94F */
-static const struct unidata st746[] = {
-{dd2496,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* 2F8D0-2F8DF */
+static const struct unidata st811[] = {
 {dd3413,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3414,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3415,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3416,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3417,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3418,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3418,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2526,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3419,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3420,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2175,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2492,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3421,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3422,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3423,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2185,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F950-2F95F */
-static const struct unidata st747[] = {
-{dd2499,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3424,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3425,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2430,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3426,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3426,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F8E0-2F8EF */
+static const struct unidata st812[] = {
 {dd3427,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2389,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3428,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2426,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3429,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2433,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3430,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3431,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3432,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2534,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3433,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3433,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3434,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F960-2F96F */
-static const struct unidata st748[] = {
+{dd3434,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3435,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3436,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3437,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3438,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3439,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3440,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3440,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F8F0-2F8FF */
+static const struct unidata st813[] = {
 {dd3441,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3442,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3443,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3444,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3445,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2243,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3447,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3448,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3449,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3450,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F970-2F97F */
-static const struct unidata st749[] = {
+{dd3450,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3451,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3452,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3453,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3454,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3455,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3455,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F900-2F90F */
+static const struct unidata st814[] = {
 {dd3456,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2427,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2326,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3457,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3458,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3459,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3460,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2439,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3461,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3462,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3463,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3464,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3465,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F980-2F98F */
-static const struct unidata st750[] = {
+{dd2495,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3465,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3466,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3467,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3468,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3468,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F910-2F91F */
+static const struct unidata st815[] = {
 {dd3469,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3470,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3471,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3472,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2496,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3473,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3474,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3475,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3476,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3262,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3477,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3478,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3479,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3480,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F990-2F99F */
-static const struct unidata st751[] = {
+{dd3480,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3481,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3482,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3483,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3483,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F920-2F92F */
+static const struct unidata st816[] = {
 {dd3484,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2498,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3485,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3486,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3487,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3488,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2239,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3489,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3490,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3491,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3492,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3494,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2442,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F9A0-2F9AF */
-static const struct unidata st752[] = {
+{dd3495,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3495,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3496,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3497,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F930-2F93F */
+static const struct unidata st817[] = {
+{dd2500,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3498,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3499,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3500,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19316,56 +20663,61 @@ static const struct unidata st752[] = {
 {dd3502,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3503,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3504,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2229,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3505,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3506,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3507,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3508,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3509,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3510,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd3510,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3511,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* 2F9B0-2F9BF */
-static const struct unidata st753[] = {
-{dd3511,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+/* 2F940-2F94F */
+static const struct unidata st818[] = {
+{dd2506,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3512,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3513,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3514,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2180,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3515,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3516,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3517,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3517,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2507,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2536,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3518,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3519,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3520,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2506,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3521,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3522,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3524,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+{dd2192,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
 };
-/* 2F9C0-2F9CF */
-static const struct unidata st754[] = {
+/* 2F950-2F95F */
+static const struct unidata st819[] = {
+{dd2509,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3524,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2437,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3525,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3526,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2396,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3527,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3528,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1425,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2440,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3529,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3530,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3531,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3532,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3533,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3532,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3533,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F960-2F96F */
+static const struct unidata st820[] = {
 {dd3534,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3535,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3536,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3537,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3538,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3539,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F9D0-2F9DF */
-static const struct unidata st755[] = {
-{dd2511,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2512,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1432,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3539,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3540,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3541,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3542,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19375,13 +20727,12 @@ static const struct unidata st755[] = {
 {dd3546,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3547,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3548,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3549,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3549,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F970-2F97F */
+static const struct unidata st821[] = {
 {dd3550,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3551,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2513,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F9E0-2F9EF */
-static const struct unidata st756[] = {
 {dd3552,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3553,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3554,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19390,17 +20741,18 @@ static const struct unidata st756[] = {
 {dd3557,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3558,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3559,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2446,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3560,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3561,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3562,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3563,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3564,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3564,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F980-2F98F */
+static const struct unidata st822[] = {
 {dd3565,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3566,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3567,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2F9F0-2F9FF */
-static const struct unidata st757[] = {
+{dd3567,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3568,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3569,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3570,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
@@ -19409,55 +20761,185 @@ static const struct unidata st757[] = {
 {dd3573,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3574,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3575,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3361,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3576,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3577,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3578,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3579,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3579,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F990-2F99F */
+static const struct unidata st823[] = {
 {dd3580,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3581,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2519,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2519,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2FA00-2FA0F */
-static const struct unidata st758[] = {
 {dd3582,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3583,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3584,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3585,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3586,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3587,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2246,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3588,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3589,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3590,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3591,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd2520,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3592,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3593,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2449,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9A0-2F9AF */
+static const struct unidata st824[] = {
 {dd3594,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3595,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd3596,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
-};
-/* 2FA10-2FA1F */
-static const struct unidata st759[] = {
+{dd3596,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3597,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3598,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3599,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3600,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3601,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1480,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3602,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1484,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3603,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3604,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3605,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3606,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
-{dd1489,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {dd3607,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3608,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3609,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9B0-2F9BF */
+static const struct unidata st825[] = {
+{dd3610,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3611,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3612,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3613,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2187,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3614,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3615,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3616,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3617,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3618,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3619,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2516,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3620,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3621,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3622,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3623,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9C0-2F9CF */
+static const struct unidata st826[] = {
+{dd3624,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3625,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3626,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3627,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1429,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3628,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3629,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3630,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3631,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3632,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3633,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3634,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3635,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3636,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3637,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3638,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9D0-2F9DF */
+static const struct unidata st827[] = {
+{dd2521,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2522,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1436,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3639,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3640,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3641,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3642,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3643,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3644,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3645,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3646,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3647,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3648,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3649,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3650,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2523,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9E0-2F9EF */
+static const struct unidata st828[] = {
+{dd3651,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3652,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3653,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3654,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3655,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3656,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3657,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3658,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3659,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3660,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3661,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3662,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3663,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3664,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3665,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3666,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2F9F0-2F9FF */
+static const struct unidata st829[] = {
+{dd3667,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3668,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3669,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3670,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3671,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3672,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3673,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3674,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3675,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3676,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3677,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3678,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3679,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3680,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2529,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2529,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2FA00-2FA0F */
+static const struct unidata st830[] = {
+{dd3681,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3682,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3683,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3684,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3685,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3686,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3687,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3688,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3689,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3690,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd2530,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3691,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3692,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3693,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3694,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3695,0,0,0,Lo,0,GBOther,WBOther,SBOLetter}
+};
+/* 2FA10-2FA1F */
+static const struct unidata st831[] = {
+{dd3696,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3697,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3698,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3699,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3700,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1484,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3701,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1488,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3702,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3703,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3704,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3705,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd1493,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
+{dd3706,0,0,0,Lo,0,GBOther,WBOther,SBOLetter},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* E0000-E000F */
-static const struct unidata st760[] = {
+static const struct unidata st832[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther},
@@ -19476,7 +20958,7 @@ static const struct unidata st760[] = {
 {0,0,0,0,Cn,0,GBOther,WBOther,SBOther}
 };
 /* E0020-E002F */
-static const struct unidata st761[] = {
+static const struct unidata st833[] = {
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
 {0,0,0,0,Cf,0,GBControl,WBFormat,SBFormat},
@@ -19623,28 +21105,24 @@ st107,
 st87,
 st108,
 st109,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
+st87,
 st110,
 st111,
-st87,
 st112,
+st87,
 st113,
 st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
 st115,
+st87,
 st116,
 st117,
 st118,
@@ -19656,89 +21134,89 @@ st123,
 st124,
 st125,
 st126,
-st119,
-st120,
 st127,
 st128,
 st129,
 st130,
+st123,
+st124,
 st131,
 st132,
 st133,
-st120,
 st134,
 st135,
 st136,
-st124,
 st137,
-st118,
-st119,
-st120,
+st124,
 st138,
 st139,
 st140,
-st124,
+st128,
 st141,
+st122,
+st123,
+st124,
 st142,
 st143,
 st144,
+st128,
 st145,
 st146,
 st147,
-st130,
 st148,
 st149,
 st150,
-st120,
 st151,
+st134,
 st152,
 st153,
-st124,
 st154,
+st124,
 st155,
-st150,
-st120,
 st156,
 st157,
+st128,
 st158,
-st124,
 st159,
-st155,
-st150,
-st120,
+st154,
+st124,
 st160,
 st161,
 st162,
-st124,
+st128,
 st163,
+st159,
+st154,
+st87,
 st164,
 st165,
-st87,
 st166,
+st128,
 st167,
 st168,
-st110,
 st169,
+st87,
 st170,
 st171,
-st171,
 st172,
+st114,
 st173,
 st174,
-st110,
-st110,
+st175,
 st175,
 st176,
 st177,
 st178,
+st114,
+st114,
 st179,
 st180,
-st110,
-st110,
 st181,
 st182,
 st183,
 st184,
+st114,
+st114,
 st185,
 st186,
 st187,
@@ -19749,14 +21227,14 @@ st191,
 st192,
 st193,
 st194,
-st110,
-st110,
-st171,
-st171,
 st195,
 st196,
 st197,
 st198,
+st114,
+st114,
+st175,
+st175,
 st199,
 st200,
 st201,
@@ -19764,63 +21242,67 @@ st202,
 st203,
 st204,
 st205,
-st87,
-st87,
 st206,
 st207,
-st207,
-st207,
-st207,
-st207,
 st208,
 st209,
-st209,
-st209,
-st209,
+st87,
+st87,
 st210,
 st211,
 st211,
 st211,
 st211,
+st211,
+st211,
+st212,
+st212,
+st212,
 st212,
-st87,
-st87,
-st87,
-st87,
 st213,
 st214,
+st214,
+st214,
+st214,
+st214,
 st87,
 st87,
-st213,
 st87,
 st87,
 st215,
 st216,
-st217,
-st87,
-st87,
 st87,
-st216,
 st87,
+st215,
 st87,
 st87,
+st217,
 st218,
 st219,
-st220,
 st87,
-st221,
 st87,
 st87,
+st218,
 st87,
 st87,
 st87,
+st220,
+st221,
 st222,
+st87,
 st223,
 st87,
 st87,
 st87,
 st87,
 st87,
+st224,
+st225,
+st87,
+st87,
+st87,
+st87,
+st87,
 st87,
 st87,
 st87,
@@ -19853,132 +21335,121 @@ st87,
 st87,
 st87,
 st87,
-st224,
-st225,
 st226,
+st87,
 st227,
+st228,
 st87,
 st87,
 st87,
 st87,
-st228,
 st229,
 st230,
 st231,
-st87,
 st232,
 st87,
 st233,
-st230,
+st87,
 st234,
-st171,
-st171,
-st171,
+st231,
 st235,
+st175,
+st175,
+st175,
 st236,
 st237,
 st238,
 st239,
 st240,
-st238,
-st87,
-st87,
 st241,
+st239,
 st87,
 st87,
 st242,
 st87,
 st87,
 st243,
-st110,
-st110,
-st110,
-st110,
-st110,
+st87,
 st87,
 st244,
+st87,
+st87,
+st87,
+st87,
 st245,
+st87,
 st246,
 st247,
-st171,
 st248,
 st249,
-st171,
-st171,
+st175,
 st250,
 st251,
+st175,
+st175,
 st252,
 st253,
 st254,
-st254,
-st87,
 st255,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
 st256,
-st257,
+st256,
 st87,
+st257,
+st175,
+st175,
+st175,
 st258,
 st259,
 st260,
+st239,
+st239,
 st261,
+st114,
+st114,
+st114,
+st114,
+st114,
 st262,
 st263,
 st87,
 st264,
-st238,
-st110,
-st110,
-st110,
-st110,
-st87,
-st87,
 st265,
 st266,
 st267,
-st107,
-st87,
 st268,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st36,
-st36,
 st269,
+st87,
 st270,
+st239,
+st87,
+st87,
 st271,
 st272,
+st87,
+st87,
 st273,
 st274,
-st36,
 st275,
+st107,
+st87,
 st276,
+st114,
+st114,
+st114,
+st114,
+st114,
 st277,
 st278,
 st279,
+st36,
+st36,
 st280,
 st281,
 st282,
 st283,
 st284,
 st285,
+st36,
 st286,
 st287,
 st288,
@@ -20019,7 +21490,6 @@ st322,
 st323,
 st324,
 st325,
-st110,
 st326,
 st327,
 st328,
@@ -20031,228 +21501,233 @@ st333,
 st334,
 st335,
 st336,
+st114,
 st337,
 st338,
 st339,
-st254,
 st340,
 st341,
-st254,
 st342,
 st343,
 st344,
 st345,
 st346,
 st347,
-st344,
 st348,
 st349,
 st350,
+st256,
 st351,
 st352,
+st256,
 st353,
-st344,
-st344,
 st354,
-st344,
 st355,
-st254,
 st356,
-st254,
-st254,
-st254,
-st254,
 st357,
-st254,
 st358,
-st344,
+st355,
 st359,
-st254,
 st360,
 st361,
-st110,
-st254,
-st254,
 st362,
-st110,
 st363,
-st110,
 st364,
+st355,
+st355,
 st365,
+st355,
 st366,
+st256,
 st367,
+st256,
+st256,
+st256,
+st256,
 st368,
+st256,
 st369,
+st355,
 st370,
+st256,
 st371,
 st372,
 st373,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
+st256,
+st256,
 st374,
+st114,
 st375,
-st254,
-st254,
+st114,
 st376,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
 st377,
-st254,
-st254,
 st378,
-st254,
 st379,
 st380,
-st110,
-st110,
-st110,
 st381,
-st254,
 st382,
-st254,
 st383,
 st384,
 st385,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
 st386,
-st373,
 st387,
-st254,
+st256,
+st256,
 st388,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
 st389,
-st344,
-st390,
-st344,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st344,
-st344,
-st344,
-st344,
-st344,
-st344,
-st344,
-st344,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st390,
+st256,
+st256,
+st256,
+st256,
 st391,
 st392,
-st344,
-st344,
-st344,
 st393,
-st344,
+st385,
 st394,
+st256,
+st256,
 st395,
-st344,
-st344,
-st344,
-st344,
-st344,
-st344,
+st355,
 st396,
-st344,
-st344,
-st344,
-st344,
-st344,
+st355,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st355,
+st355,
+st355,
+st355,
+st355,
+st355,
+st355,
+st355,
 st397,
-st344,
-st344,
-st254,
-st254,
-st254,
-st344,
 st398,
+st355,
+st355,
+st355,
 st399,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
+st355,
 st400,
 st401,
+st355,
+st355,
+st355,
+st355,
+st355,
+st355,
 st402,
-st36,
-st36,
+st355,
+st355,
+st355,
+st355,
+st355,
 st403,
+st355,
+st355,
+st256,
+st256,
+st256,
+st355,
 st404,
+st223,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
 st405,
 st406,
 st407,
+st36,
+st36,
 st408,
 st409,
 st410,
 st411,
 st412,
 st413,
-st36,
-st36,
 st414,
-st87,
-st87,
-st87,
 st415,
-st110,
-st87,
-st225,
-st416,
-st416,
-st416,
 st416,
-st43,
-st43,
 st417,
 st418,
+st36,
+st36,
 st419,
+st87,
+st87,
+st87,
 st420,
-st110,
-st110,
-st110,
-st110,
-st254,
 st421,
-st254,
-st254,
-st254,
-st254,
-st254,
+st87,
 st422,
 st423,
+st423,
+st423,
+st423,
+st43,
+st43,
 st424,
 st425,
 st426,
 st427,
+st114,
+st114,
+st114,
+st114,
+st256,
 st428,
+st256,
+st256,
+st256,
+st256,
+st256,
 st429,
 st430,
 st431,
@@ -20261,7 +21736,6 @@ st433,
 st434,
 st435,
 st436,
-st110,
 st437,
 st438,
 st439,
@@ -20269,9 +21743,9 @@ st440,
 st441,
 st442,
 st443,
+st114,
 st444,
 st445,
-st171,
 st446,
 st447,
 st448,
@@ -20279,8 +21753,8 @@ st449,
 st450,
 st451,
 st452,
+st175,
 st453,
-st87,
 st454,
 st455,
 st456,
@@ -20288,12 +21762,8 @@ st457,
 st458,
 st459,
 st460,
-st461,
 st87,
-st242,
-st254,
-st254,
-st380,
+st461,
 st462,
 st463,
 st464,
@@ -20301,6 +21771,11 @@ st465,
 st466,
 st467,
 st468,
+st87,
+st88,
+st256,
+st256,
+st373,
 st469,
 st470,
 st471,
 st492,
 st493,
 st494,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st495,
-st254,
-st254,
-st254,
-st254,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st496,
-st110,
-st110,
-st110,
-st87,
-st497,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st244,
-st254,
-st254,
-st254,
-st362,
-st110,
-st110,
-st110,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st498,
-st87,
-st499,
-st110,
-st500,
-st501,
-st502,
-st503,
-st504,
-st505,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st42,
-st506,
-st507,
-st508,
-st509,
-st510,
-st511,
-st512,
-st513,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st514,
-st515,
-st87,
-st516,
-st110,
-st87,
-st87,
-st87,
-st517,
-st518,
-st87,
-st87,
-st519,
-st520,
-st238,
-st110,
-st110,
-st107,
-st87,
-st521,
-st87,
-st522,
-st523,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st87,
-st87,
-st524,
-st525,
-st526,
-st527,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st532,
-st530,
-st528,
-st529,
-st530,
-st531,
-st530,
-st533,
-st110,
-st110,
-st110,
-st110,
-st110,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st534,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st535,
-st536,
-st537,
-st538,
-st539,
-st540,
-st541,
-st542,
-st543,
-st544,
-st545,
-st546,
-st547,
-st548,
-st549,
-st550,
-st551,
-st552,
-st553,
-st554,
-st555,
-st556,
-st557,
-st558,
-st559,
-st560,
-st561,
-st562,
-st563,
-st564,
-st565,
-st110,
-st110,
-st566,
-st567,
-st568,
-st569,
-st570,
-st571,
-st572,
-st573,
-st574,
-st575,
-st576,
-st577,
-st110,
-st578,
-st579,
-st580,
-st581,
-st582,
-st583,
-st584,
-st585,
-st586,
-st587,
-st588,
-st589,
-st590,
-st591,
-st592,
-st593,
-st594,
-st595,
-st596,
-st597,
-st598,
-st599,
-st600,
-st110,
-st601,
-st602,
-st603,
-st604,
-st605,
-st606,
-st607,
-st608,
-st110,
-st110,
-st609,
-st610,
-st611,
-st280,
-st612,
-st613,
-st614,
-st615,
-st616,
-st617,
-st618,
-st619,
-st620,
-st621,
-st622,
-st623,
-st624,
-st625,
-st626,
-st627,
-st628,
-st629,
-st630,
-st631,
-st632,
-st633,
-st634,
-st635,
-st636,
-st637,
-st638,
-st639,
-st640,
-st641,
-st87,
-st217,
-st642,
-st454,
-st454,
-st110,
-st110,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st88,
-st643,
-st373,
-st373,
-st644,
-st645,
-st645,
-st645,
-st646,
-st647,
-st437,
-st110,
-st110,
-st110,
-st254,
-st254,
-st648,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st87,
-st244,
-st87,
-st87,
-st87,
-st136,
-st110,
-st110,
-st87,
-st649,
-st650,
-st87,
-st651,
-st110,
-st110,
-st110,
-st87,
-st652,
-st87,
-st87,
-st653,
-st654,
-st110,
-st110,
-st655,
-st656,
-st657,
-st36,
-st36,
-st87,
-st87,
-st87,
-st87,
-st454,
-st238,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st658,
-st87,
-st87,
-st659,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st87,
-st660,
-st87,
-st661,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st662,
-st663,
-st87,
-st664,
-st665,
-st666,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st87,
-st649,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st645,
-st645,
-st645,
-st645,
-st645,
-st645,
-st667,
-st668,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st669,
-st254,
-st254,
-st670,
-st254,
-st254,
-st671,
-st672,
-st673,
-st674,
-st254,
-st675,
-st676,
-st677,
-st378,
-st110,
-st110,
-st254,
-st254,
-st254,
-st254,
-st678,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st254,
-st254,
-st254,
-st254,
-st254,
-st362,
-st373,
-st679,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st680,
-st681,
-st682,
-st683,
-st684,
-st685,
-st686,
-st687,
-st688,
-st689,
-st690,
-st691,
-st692,
-st680,
-st681,
-st682,
-st693,
-st694,
-st695,
-st696,
-st697,
-st698,
-st699,
-st700,
-st701,
-st702,
-st680,
-st681,
-st682,
-st683,
-st684,
-st695,
-st686,
-st687,
-st688,
-st699,
-st700,
-st701,
-st702,
-st680,
-st681,
-st682,
-st703,
-st704,
-st705,
-st706,
-st707,
-st708,
-st709,
-st710,
-st711,
-st712,
-st713,
-st714,
-st715,
-st716,
-st717,
-st718,
-st719,
-st720,
-st721,
-st722,
-st723,
-st724,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st254,
-st254,
-st437,
-st254,
-st254,
-st254,
-st254,
-st254,
-st254,
-st380,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st171,
-st725,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
+st495,
+st496,
+st497,
+st498,
+st499,
+st500,
+st501,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st502,
+st256,
+st256,
+st256,
+st256,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st252,
+st114,
+st114,
+st114,
+st87,
+st503,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st246,
+st256,
+st256,
+st256,
+st374,
+st87,
+st87,
+st504,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st505,
+st87,
+st506,
+st114,
+st507,
+st508,
+st509,
+st510,
+st511,
+st512,
+st87,
+st87,
+st87,
+st87,
+st513,
+st514,
+st42,
+st515,
+st516,
+st517,
+st518,
+st519,
+st520,
+st521,
+st522,
+st523,
+st524,
+st114,
+st114,
+st114,
+st114,
+st525,
+st526,
+st87,
+st527,
+st528,
+st87,
+st87,
+st87,
+st529,
+st530,
+st87,
+st87,
+st531,
+st532,
+st239,
+st43,
+st533,
+st107,
+st87,
+st534,
+st87,
+st535,
+st536,
+st211,
+st537,
+st115,
+st87,
+st87,
+st538,
+st539,
+st540,
+st114,
+st114,
+st87,
+st87,
+st541,
+st542,
+st543,
+st544,
+st175,
+st545,
+st175,
+st175,
+st175,
+st546,
+st547,
+st548,
+st114,
+st114,
+st549,
+st550,
+st423,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st551,
+st239,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st556,
+st554,
+st552,
+st553,
+st554,
+st555,
+st554,
+st557,
+st212,
+st558,
+st214,
+st214,
+st559,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st560,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st561,
+st562,
+st563,
+st564,
+st565,
+st566,
+st567,
+st568,
+st569,
+st570,
+st571,
+st572,
+st573,
+st574,
+st575,
+st576,
+st577,
+st578,
+st579,
+st580,
+st581,
+st582,
+st583,
+st584,
+st585,
+st586,
+st587,
+st588,
+st589,
+st590,
+st591,
+st114,
+st114,
+st592,
+st593,
+st594,
+st595,
+st596,
+st597,
+st598,
+st599,
+st600,
+st601,
+st602,
+st603,
+st604,
+st605,
+st606,
+st607,
+st608,
+st609,
+st610,
+st611,
+st612,
+st613,
+st614,
+st615,
+st616,
+st617,
+st618,
+st619,
+st620,
+st621,
+st622,
+st623,
+st624,
+st625,
+st626,
+st627,
+st114,
+st628,
+st629,
+st630,
+st631,
+st632,
+st633,
+st634,
+st635,
+st114,
+st114,
+st636,
+st637,
+st638,
+st291,
+st639,
+st640,
+st641,
+st642,
+st643,
+st644,
+st645,
+st646,
+st647,
+st648,
+st649,
+st650,
+st651,
+st652,
+st653,
+st654,
+st655,
+st656,
+st657,
+st658,
+st659,
+st660,
+st661,
+st662,
+st663,
+st664,
+st665,
+st666,
+st667,
+st668,
+st87,
+st219,
+st669,
+st461,
+st461,
+st114,
+st114,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st88,
+st670,
+st385,
+st385,
+st671,
+st672,
+st672,
+st672,
+st673,
+st674,
+st444,
+st114,
+st114,
+st114,
+st256,
+st256,
+st675,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st246,
+st87,
+st87,
+st87,
+st140,
+st114,
+st114,
+st87,
+st676,
+st677,
+st87,
+st678,
+st114,
+st114,
+st114,
+st87,
+st679,
+st87,
+st87,
+st680,
+st681,
+st114,
+st114,
+st682,
+st683,
+st684,
+st36,
+st36,
+st87,
+st87,
+st87,
+st87,
+st461,
+st239,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st685,
+st87,
+st87,
+st686,
+st87,
+st687,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st688,
+st87,
+st689,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st690,
+st691,
+st87,
+st692,
+st693,
+st694,
+st87,
+st695,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st87,
+st696,
+st87,
+st697,
+st87,
+st698,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st87,
+st87,
+st699,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st385,
+st700,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st701,
+st87,
+st87,
+st702,
+st703,
+st704,
+st705,
+st114,
+st269,
+st706,
+st707,
+st708,
+st709,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st676,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st672,
+st672,
+st672,
+st672,
+st672,
+st672,
+st710,
+st711,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st676,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st87,
+st699,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st712,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st713,
+st256,
+st256,
+st714,
+st256,
+st256,
+st715,
+st716,
+st717,
+st718,
+st256,
+st719,
+st720,
+st721,
+st722,
+st114,
+st114,
+st256,
+st256,
+st256,
+st256,
+st723,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st256,
+st256,
+st256,
+st256,
+st256,
+st374,
+st385,
+st724,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st725,
 st726,
 st727,
 st728,
@@ -31667,6 +28478,9 @@ st734,
 st735,
 st736,
 st737,
+st725,
+st726,
+st727,
 st738,
 st739,
 st740,
@@ -31677,6 +28491,22 @@ st744,
 st745,
 st746,
 st747,
+st725,
+st726,
+st727,
+st728,
+st729,
+st740,
+st731,
+st732,
+st733,
+st744,
+st745,
+st746,
+st747,
+st725,
+st726,
+st727,
 st748,
 st749,
 st750,
@@ -31689,132 +28519,4784 @@ st756,
 st757,
 st758,
 st759,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
 st760,
-st110,
-st761,
-st761,
 st761,
-st761,
-st761,
-st761,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st110,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st610,
-st110,
+st762,
+st763,
+st764,
+st765,
+st766,
+st767,
+st768,
+st769,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st256,
+st256,
+st444,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st373,
+st770,
+st771,
+st390,
+st390,
+st114,
+st114,
+st772,
+st773,
+st774,
+st775,
+st776,
+st256,
+st223,
+st256,
+st256,
+st777,
+st114,
+st114,
+st114,
+st114,
+st778,
+st256,
+st779,
+st780,
+st781,
+st782,
+st783,
+st784,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st256,
+st256,
+st785,
+st786,
+st256,
+st256,
+st256,
+st787,
+st256,
+st373,
+st256,
+st256,
+st788,
+st114,
+st256,
+st785,
+st256,
+st256,
+st256,
+st770,
+st789,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st790,
+st256,
+st256,
+st256,
+st722,
+st114,
+st256,
+st791,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st792,
+st390,
+st793,
+st794,
+st795,
+st796,
+st114,
+st114,
+st114,
+st256,
+st256,
+st256,
+st256,
+st713,
+st114,
+st114,
+st114,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st256,
+st373,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st797,
+st114,
+st114,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st251,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st175,
+st250,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st798,
+st799,
+st800,
+st801,
+st802,
+st803,
+st804,
+st805,
+st806,
+st807,
+st808,
+st809,
+st810,
+st811,
+st812,
+st813,
+st814,
+st815,
+st816,
+st817,
+st818,
+st819,
+st820,
+st821,
+st822,
+st823,
+st824,
+st825,
+st826,
+st827,
+st828,
+st829,
+st830,
+st831,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st832,
+st114,
+st833,
+st833,
+st833,
+st833,
+st833,
+st833,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st114,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st637,
+st114,
 };
 const struct unicode_utf8_row unicode_utf8_valid[] = {
  { 1, 0, 0 }, /* 0 */
index 100da166ab62c93ff1641623d19bb208ea6b782f..d6b47aaaea450e86433f98a0cc54414f7d283be2 100644 (file)
@@ -44,6 +44,9 @@ void become_mortal(void) {
     if(!(pw = getpwnam(config->user)))
       disorder_fatal(0, "cannot find user %s", config->user);
     if(pw->pw_uid != getuid()) {
+      disorder_info("becoming user %u group %u",
+                    (unsigned)pw->pw_uid,
+                    (unsigned)pw->pw_gid);
       if(initgroups(config->user, pw->pw_gid))
        disorder_fatal(errno, "error calling initgroups");
       if(setgid(pw->pw_gid) < 0)
index 4d798f1b31037554a22a466a1271e8cb1f1e8bba..fa8f9e388df6d0c90f157eacc94c7e14d6db4cd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2007-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -38,6 +38,19 @@ void dynstr_append_bytes(struct dynstr *v, const char *ptr, size_t n) {
   }
 }
 
+/** @brief Free a string list */
+void free_strings(int nvec, char **vec) {
+  for(int n = 0; n < nvec; ++n)
+    xfree(vec[n]);
+  xfree(vec);
+}
+
+/** @brief Free and re-initialize a vector */
+void vector_clear(struct vector *v) {
+  free_strings(v->nvec, v->vec);
+  vector_init(v);
+}
+
 /*
 Local Variables:
 c-basic-offset:2
index 31dfeda5e86ffee911719a8e901a1e927f781cdc..da84784e39ab0e45be79cff6b85a2a86b325cee1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2007-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -94,6 +94,9 @@ static inline void dynstr_append_string(struct dynstr *v, const char *ptr) {
   dynstr_append_bytes(v, ptr, strlen(ptr));
 }
 
+void free_strings(int nvec, char **vec);
+void vector_clear(struct vector *v);
+
 #endif /* VECTOR_H */
 
 /*
index 455bb729275ea66bcfae8efb4080aff735fc132d..fe7ffbbf0443289018bf2852dbc5c364f5f5e764 100644 (file)
--- a/lib/wav.c
+++ b/lib/wav.c
@@ -128,9 +128,8 @@ int wav_init(struct wavfile *f, const char *path) {
   off_t where;
   
   memset(f, 0, sizeof *f);
-  f->fd = -1;
   f->data = -1;
-  if((f->fd = open(path, O_RDONLY)) < 0) goto error_errno;
+  if(hreader_init(path, f->input)) goto error_errno;
   /* Read the file header
    *
    *  offset  size  meaning
@@ -138,7 +137,7 @@ int wav_init(struct wavfile *f, const char *path) {
    *  04      4     length of rest of file
    *  08      4     'WAVE'
    * */
-  if((n = pread(f->fd, header, 12, 0)) < 0) goto error_errno;
+  if((n = hreader_pread(f->input, header, 12, 0)) < 0) goto error_errno;
   else if(n < 12) goto einval;
   if(strncmp(header, "RIFF", 4) || strncmp(header + 8, "WAVE", 4))
     goto einval;
@@ -151,7 +150,7 @@ int wav_init(struct wavfile *f, const char *path) {
      *  00      4     chunk ID
      *  04      4     length of rest of chunk
      */
-    if((n = pread(f->fd, header, 8, where)) < 0) goto error_errno;
+    if((n = hreader_pread(f->input, header, 8, where)) < 0) goto error_errno;
     else if(n < 8) goto einval;
     if(!strncmp(header,"fmt ", 4)) {
       /* This is the format chunk
@@ -168,7 +167,8 @@ int wav_init(struct wavfile *f, const char *path) {
        *  18      ?     extra undocumented rubbish
        */
       if(get32(header + 4) < 16) goto einval;
-      if((n = pread(f->fd, header + 8, 16, where + 8)) < 0) goto error_errno;
+      if((n = hreader_pread(f->input, header + 8, 16, where + 8)) < 0)
+        goto error_errno;
       else if(n < 16) goto einval;
       f->channels = get16(header + 0x0A);
       f->rate = get32(header + 0x0C);
@@ -197,13 +197,7 @@ error:
 
 /** @brief Close a WAV file */
 void wav_destroy(struct wavfile *f) {
-  if(f) {
-    const int save_errno = errno;
-
-    if(f->fd >= 0)
-      close(f->fd);
-    errno = save_errno;
-  }
+  hreader_close(f->input);
 }
 
 /** @brief Visit all the data in a WAV file
@@ -227,7 +221,7 @@ int wav_data(struct wavfile *f,
     size_t want = (off_t)sizeof buffer > left ? (size_t)left : sizeof buffer;
 
     want -= want % bytes_per_frame;
-    if((n = pread(f->fd, buffer, want, where)) < 0) return errno;
+    if((n = hreader_pread(f->input, buffer, want, where)) < 0) return errno;
     if((size_t)n < want) return EINVAL;
     if((err = callback(f, buffer, n, u))) return err;
     where += n;
index d2de912b280ff9b16d8d4d9a96784bbe7ce25311..3c9c477bc5a2975559891126bd010cdb7a6b153c 100644 (file)
--- a/lib/wav.h
+++ b/lib/wav.h
 #ifndef WAV_H
 #define WAV_H
 
+#include "hreader.h"
+
 /** @brief WAV file access structure */
 struct wavfile {
-  /** @brief File descriptor onto file */
-  int fd;
+  /** @brief File read handle */
+  struct hreader input[1];
 
   /** @brief File length */
   off_t length;
index de3562b15506c47eaaaa89dea206597f289e29f2..bc1a0d935e5881d55570c082fc37c3edcc23650d 100644 (file)
@@ -1,6 +1,6 @@
 #
 # This file is part of DisOrder.
-# Copyright (C) 2009 Richard Kettlewell
+# Copyright (C) 2009-2011 Richard Kettlewell
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@ TESTS=t-addr t-arcfour t-basen t-bits t-cache t-casefold t-charset    \
        t-kvp t-mime t-printf t-regsub t-selection t-signame t-sink     \
        t-split t-syscalls t-trackname t-unicode t-url t-utf8 t-vector  \
        t-words t-wstat t-macros t-cgi t-eventdist t-resample           \
-       t-configuration
+       t-configuration t-timeval
 
 noinst_PROGRAMS=$(TESTS)
 
@@ -66,6 +66,7 @@ t_resample_SOURCES=t-resample.c test.c test.h
 t_resample_LDFLAGS=$(LIBSAMPLERATE)
 t_configuration_SOURCES=t-configuration.c test.c test.h
 t_configuration_LDFLAGS=$(LIBGCRYPT)
+t_timeval_SOURCES=t-timeval.c test.c test.h
 
 check-report: before-check check make-coverage-reports
 before-check:
index 4d8b68aaa4afa348367aaef3f397e85bcef7d35d..e23ee1a961879a55445ab3560f52d53f01bd0e40 100644 (file)
@@ -50,8 +50,10 @@ static void test_hash(void) {
   
   for(i = 0; i < 10000; ++i) {
     insist((ip = hash_find(h, do_printf("%d", i))) != 0);
-    check_integer(*ip, i);
-    insist(hash_add(h, do_printf("%d", i), &i, HASH_REPLACE) == 0);
+    if(ip) {
+      check_integer(*ip, i);
+      insist(hash_add(h, do_printf("%d", i), &i, HASH_REPLACE) == 0);
+    }
   }
   check_integer(hash_count(h), 10000);
   keys = hash_keys(h);
index a6f1b32c6f9a67518041d8871f63b01249075f22..f2d599408ea151d5cfa8e09a06814006c359720a 100644 (file)
@@ -52,12 +52,15 @@ static void test_hex(void) {
   check_string(hex(h, sizeof h), "00ff807f");
   check_string(hex(0, 0), "");
   u = unhex("00ff807f", &ul);
+  insist(u != 0);
   insist(ul == 4);
   insist(memcmp(u, h, 4) == 0);
   u = unhex("00FF807F", &ul);
+  insist(u != 0);
   insist(ul == 4);
   insist(memcmp(u, h, 4) == 0);
   u = unhex("", &ul);
+  insist(u != 0);
   insist(ul == 0);
   fprintf(stderr, "2 ERROR reports expected {\n");
   insist(unhex("F", 0) == 0);
diff --git a/libtests/t-timeval.c b/libtests/t-timeval.c
new file mode 100644 (file)
index 0000000..3f7beb6
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2011 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "test.h"
+#include "timeval.h"
+
+static struct timeval tv(time_t s, unsigned long us) {
+  struct timeval r;
+  r.tv_sec = s;
+  r.tv_usec = us;
+  return r;
+}
+
+static void test_timeval(void) {
+  check_integer(tvsub_us(tv(0, 0), 
+                         tv(0, 0)),
+                0);
+  check_integer(tvsub_us(tv(1, 0), 
+                         tv(0, 0)),
+                1000000);
+  check_integer(tvsub_us(tv(0, 0), 
+                         tv(1, 0)),
+                -1000000);
+  check_integer(tvsub_us(tv(1397621862, 1), 
+                         tv(1397621861, 2)),
+                999999);
+  check_integer(tvsub_us(tv(1397621861, 2), 
+                         tv(1397621862, 1)),
+                -999999);
+}
+
+TEST(timeval);
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index 150584419961c80f4f8d190637d37d531857e404..85fe7ecca4f4812e023f42ca0d17970f308942b9 100644 (file)
@@ -30,7 +30,7 @@ static FILE *open_unicode_test(const char *path) {
     base = path;
   if(!(fp = fopen(base, "r"))) {
     snprintf(buffer, sizeof buffer,
-             "wget http://www.unicode.org/Public/5.1.0/ucd/%s", path);
+             "wget http://www.unicode.org/Public/6.0.0/ucd/%s", path);
     if((w = system(buffer)))
       disorder_fatal(0, "%s: %s", buffer, wstat(w));
     if(chmod(base, 0444) < 0)
index cada395ad03dcf55c8f0fcbc73d4775d928d7d7b..87f0224cf60de01d6bb23504b0277b198275546b 100644 (file)
@@ -95,7 +95,7 @@ extern int skipped;
   const char *got = GOT;                                                \
   const char *want = WANT;                                              \
                                                                         \
-  if(want == 0) {                                                       \
+  if(got == 0) {                                                       \
     fprintf(stderr, "%s:%d: %s returned 0\n",                           \
             __FILE__, __LINE__, #GOT);                                  \
     count_error();                                                      \
index 7852152a2a81f30d09fafac385ea89dcda784828..76d792331da87483acdfab71c81984ebc1e06b37 100644 (file)
@@ -23,7 +23,10 @@ AM_CPPFLAGS=-I${top_srcdir}/lib
 notify_la_SOURCES=notify.c
 notify_la_LDFLAGS=-module
 
-disorder_tracklength_la_SOURCES=tracklength.c mad.c madshim.h ../lib/wav.h ../lib/wav.c
+disorder_tracklength_la_SOURCES=tracklength.c tracklength.h    \
+tracklength-mp3.c tracklength-ogg.c tracklength-wav.c          \
+tracklength-flac.c mad.c madshim.h ../lib/wav.h ../lib/wav.c   \
+../lib/hreader.h ../lib/hreader.c
 disorder_tracklength_la_LDFLAGS=-module
 disorder_tracklength_la_LIBADD=$(LIBVORBISFILE) $(LIBMAD) $(LIBFLAC) -lm
 
index f6ed8b37d4c8b1eeb6e75658a74b19bc67121826..e2e712c9b4f32eb171c8fe97d3f77f642839ea78 100644 (file)
@@ -39,7 +39,6 @@ void disorder_play_track(const char *const *parameters,
   const char **vec;
 
   vec = disorder_malloc((nparameters + 2) * sizeof (char *));
-  i = 0;
   j = 0;
   for(i = 0; i < nparameters; ++i)
     vec[j++] = parameters[i];
diff --git a/plugins/tracklength-flac.c b/plugins/tracklength-flac.c
new file mode 100644 (file)
index 0000000..a838966
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file plugins/tracklength-flac.c
+ * @brief Compute track lengths for FLAC files
+ */
+#include "tracklength.h"
+#include <FLAC/stream_decoder.h>
+
+/* libFLAC's "simplified" interface is rather heavyweight... */
+
+struct flac_state {
+  long duration;
+  const char *path;
+};
+
+static void flac_metadata(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                         const FLAC__StreamMetadata *metadata,
+                         void *client_data) {
+  struct flac_state *const state = client_data;
+  const FLAC__StreamMetadata_StreamInfo *const stream_info
+    = &metadata->data.stream_info;
+
+  if(metadata->type == FLAC__METADATA_TYPE_STREAMINFO)
+    /* FLAC uses 0 to mean unknown and conveniently so do we */
+    state->duration = (stream_info->total_samples
+                      + stream_info->sample_rate - 1)
+           / stream_info->sample_rate;
+}
+
+static void flac_error(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                      FLAC__StreamDecoderErrorStatus status,
+                      void *client_data) {
+  const struct flac_state *const state = client_data;
+
+  disorder_error(0, "error decoding %s: %s", state->path,
+                FLAC__StreamDecoderErrorStatusString[status]);
+}
+
+static FLAC__StreamDecoderWriteStatus flac_write
+    (const FLAC__StreamDecoder attribute((unused)) *decoder,
+     const FLAC__Frame attribute((unused)) *frame,
+     const FLAC__int32 attribute((unused)) *const buffer_[],
+     void attribute((unused)) *client_data) {
+  const struct flac_state *const state = client_data;
+
+  if(state->duration >= 0)
+    return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
+  else
+    return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
+}
+
+long tl_flac(const char *path) {
+  FLAC__StreamDecoder *sd = 0;
+  FLAC__StreamDecoderInitStatus is;
+  struct flac_state state[1];
+
+  state->duration = -1;                        /* error */
+  state->path = path;
+  if(!(sd = FLAC__stream_decoder_new())) {
+    disorder_error(0, "FLAC__stream_decoder_new failed");
+    goto fail;
+  }
+  if((is = FLAC__stream_decoder_init_file(sd, path, flac_write, flac_metadata,
+                                         flac_error, state))) {
+    disorder_error(0, "FLAC__stream_decoder_init_file %s: %s",
+                  path, FLAC__StreamDecoderInitStatusString[is]);
+    goto fail;
+  }
+  FLAC__stream_decoder_process_until_end_of_metadata(sd);
+fail:
+  if(sd)
+    FLAC__stream_decoder_delete(sd);
+  return state->duration;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+End:
+*/
diff --git a/plugins/tracklength-mp3.c b/plugins/tracklength-mp3.c
new file mode 100644 (file)
index 0000000..ecd1c1e
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file plugins/tracklength-mp3.c
+ * @brief Compute track lengths for MP3 files
+ */
+#include "tracklength.h"
+#include <mad.h>
+#include "madshim.h"
+
+static void *mmap_file(const char *path, size_t *lengthp) {
+  int fd;
+  void *base;
+  struct stat sb;
+  
+  if((fd = open(path, O_RDONLY)) < 0) {
+    disorder_error(errno, "error opening %s", path);
+    return 0;
+  }
+  if(fstat(fd, &sb) < 0) {
+    disorder_error(errno, "error calling stat on %s", path);
+    goto error;
+  }
+  if(sb.st_size == 0)                  /* can't map 0-length files */
+    goto error;
+  if((base = mmap(0, sb.st_size, PROT_READ,
+                 MAP_SHARED, fd, 0)) == (void *)-1) {
+    disorder_error(errno, "error calling mmap on %s", path);
+    goto error;
+  }
+  *lengthp = sb.st_size;
+  close(fd);
+  return base;
+error:
+  close(fd);
+  return 0;
+}
+
+long tl_mp3(const char *path) {
+  size_t length;
+  void *base;
+  buffer b;
+
+  if(!(base = mmap_file(path, &length))) return -1;
+  b.duration = mad_timer_zero;
+  scan_mp3(base, length, &b);
+  munmap(base, length);
+  return b.duration.seconds + !!b.duration.fraction;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+End:
+*/
diff --git a/plugins/tracklength-ogg.c b/plugins/tracklength-ogg.c
new file mode 100644 (file)
index 0000000..c5c90c6
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file plugins/tracklength-ogg.c
+ * @brief Compute track lengths for OGG files
+ */
+#include "tracklength.h"
+#include <vorbis/vorbisfile.h>
+
+long tl_ogg(const char *path) {
+  OggVorbis_File vf;
+  FILE *fp = 0;
+  double length;
+
+  if(!path) goto error;
+  if(!(fp = fopen(path, "rb"))) goto error;
+  if(ov_open(fp, &vf, 0, 0)) goto error;
+  fp = 0;
+  length = ov_time_total(&vf, -1);
+  ov_clear(&vf);
+  return ceil(length);
+error:
+  if(fp) fclose(fp);
+  return -1;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+End:
+*/
diff --git a/plugins/tracklength-wav.c b/plugins/tracklength-wav.c
new file mode 100644 (file)
index 0000000..bf501c5
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file plugins/tracklength-wav.c
+ * @brief Compute track lengths for WAV files
+ */
+#include "tracklength.h"
+#include "wav.h"
+
+long tl_wav(const char *path) {
+  struct wavfile f[1];
+  int err, sample_frame_size;
+  long duration;
+
+  if((err = wav_init(f, path))) {
+    disorder_error(err, "error opening %s", path); 
+    return -1;
+  }
+  sample_frame_size = (f->bits + 7) / 8 * f->channels;
+  if(sample_frame_size) {
+    const long long n_samples = f->datasize / sample_frame_size;
+    duration = (n_samples + f->rate - 1) / f->rate;
+  } else
+    duration = -1;
+  wav_destroy(f);
+  return duration;
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+End:
+*/
index 86a1fc8a26667b94ef5393be51536c37342557d9..24d22b64b709f3a0fcde2e913812ca1c7c7967d5 100644 (file)
  *
  * Currently implements MP3, OGG, FLAC and WAV.
  */
-
-#include <config.h>
-
-#include <string.h>
-#include <stdio.h>
-#include <math.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <errno.h>
-
-#include <vorbis/vorbisfile.h>
-#include <mad.h>
-/* libFLAC has had an API change and stupidly taken away the old API */
-#if HAVE_FLAC_FILE_DECODER_H
-# include <FLAC/file_decoder.h>
-#else
-# include <FLAC/stream_decoder.h>
-#define FLAC__FileDecoder FLAC__StreamDecoder
-#define FLAC__FileDecoderState FLAC__StreamDecoderState
-#endif
-
-
-#include <disorder.h>
-
-#include "madshim.h"
-#include "wav.h"
-
-static void *mmap_file(const char *path, size_t *lengthp) {
-  int fd;
-  void *base;
-  struct stat sb;
-  
-  if((fd = open(path, O_RDONLY)) < 0) {
-    disorder_error(errno, "error opening %s", path);
-    return 0;
-  }
-  if(fstat(fd, &sb) < 0) {
-    disorder_error(errno, "error calling stat on %s", path);
-    goto error;
-  }
-  if(sb.st_size == 0)                  /* can't map 0-length files */
-    goto error;
-  if((base = mmap(0, sb.st_size, PROT_READ,
-                 MAP_SHARED, fd, 0)) == (void *)-1) {
-    disorder_error(errno, "error calling mmap on %s", path);
-    goto error;
-  }
-  *lengthp = sb.st_size;
-  close(fd);
-  return base;
-error:
-  close(fd);
-  return 0;
-}
-
-static long tl_mp3(const char *path) {
-  size_t length;
-  void *base;
-  buffer b;
-
-  if(!(base = mmap_file(path, &length))) return -1;
-  b.duration = mad_timer_zero;
-  scan_mp3(base, length, &b);
-  munmap(base, length);
-  return b.duration.seconds + !!b.duration.fraction;
-}
-
-static long tl_ogg(const char *path) {
-  OggVorbis_File vf;
-  FILE *fp = 0;
-  double length;
-
-  if(!path) goto error;
-  if(!(fp = fopen(path, "rb"))) goto error;
-  if(ov_open(fp, &vf, 0, 0)) goto error;
-  fp = 0;
-  length = ov_time_total(&vf, -1);
-  ov_clear(&vf);
-  return ceil(length);
-error:
-  if(fp) fclose(fp);
-  return -1;
-}
-
-static long tl_wav(const char *path) {
-  struct wavfile f[1];
-  int err, sample_frame_size;
-  long duration;
-
-  if((err = wav_init(f, path))) {
-    disorder_error(err, "error opening %s", path); 
-    return -1;
-  }
-  sample_frame_size = (f->bits + 7) / 8 * f->channels;
-  if(sample_frame_size) {
-    const long long n_samples = f->datasize / sample_frame_size;
-    duration = (n_samples + f->rate - 1) / f->rate;
-  } else
-    duration = -1;
-  wav_destroy(f);
-  return duration;
-}
-
-/* libFLAC's "simplified" interface is rather heavyweight... */
-
-struct flac_state {
-  long duration;
-  const char *path;
-};
-
-static void flac_metadata(const FLAC__FileDecoder attribute((unused)) *decoder,
-                         const FLAC__StreamMetadata *metadata,
-                         void *client_data) {
-  struct flac_state *const state = client_data;
-  const FLAC__StreamMetadata_StreamInfo *const stream_info
-    = &metadata->data.stream_info;
-
-  if(metadata->type == FLAC__METADATA_TYPE_STREAMINFO)
-    /* FLAC uses 0 to mean unknown and conveniently so do we */
-    state->duration = (stream_info->total_samples
-                      + stream_info->sample_rate - 1)
-           / stream_info->sample_rate;
-}
-
-static void flac_error(const FLAC__FileDecoder attribute((unused)) *decoder,
-                      FLAC__StreamDecoderErrorStatus status,
-                      void *client_data) {
-  const struct flac_state *const state = client_data;
-
-  disorder_error(0, "error decoding %s: %s", state->path,
-                FLAC__StreamDecoderErrorStatusString[status]);
-}
-
-static FLAC__StreamDecoderWriteStatus flac_write
-    (const FLAC__FileDecoder attribute((unused)) *decoder,
-     const FLAC__Frame attribute((unused)) *frame,
-     const FLAC__int32 attribute((unused)) *const buffer_[],
-     void attribute((unused)) *client_data) {
-  const struct flac_state *const state = client_data;
-
-  if(state->duration >= 0)
-    return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
-  else
-    return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
-}
-
-static long tl_flac(const char *path) {
-  struct flac_state state[1];
-
-  state->duration = -1;                        /* error */
-  state->path = path;
-#if HAVE_FLAC_FILE_DECODER_H 
-  {
-    FLAC__FileDecoder *fd = 0;
-    FLAC__FileDecoderState fs;
-    
-    if(!(fd = FLAC__file_decoder_new())) {
-      disorder_error(0, "FLAC__file_decoder_new failed");
-      goto fail;
-    }
-    if(!(FLAC__file_decoder_set_filename(fd, path))) {
-      disorder_error(0, "FLAC__file_set_filename failed");
-      goto fail;
-    }
-    FLAC__file_decoder_set_metadata_callback(fd, flac_metadata);
-    FLAC__file_decoder_set_error_callback(fd, flac_error);
-    FLAC__file_decoder_set_write_callback(fd, flac_write);
-    FLAC__file_decoder_set_client_data(fd, state);
-    if((fs = FLAC__file_decoder_init(fd))) {
-      disorder_error(0, "FLAC__file_decoder_init: %s",
-                    FLAC__FileDecoderStateString[fs]);
-      goto fail;
-    }
-    FLAC__file_decoder_process_until_end_of_metadata(fd);
-fail:
-    if(fd)
-      FLAC__file_decoder_delete(fd);
-  }
-#else
-  {
-    FLAC__StreamDecoder *sd = 0;
-    FLAC__StreamDecoderInitStatus is;
-    
-    if(!(sd = FLAC__stream_decoder_new())) {
-      disorder_error(0, "FLAC__stream_decoder_new failed");
-      goto fail;
-    }
-    if((is = FLAC__stream_decoder_init_file(sd, path, flac_write, flac_metadata,
-                                           flac_error, state))) {
-      disorder_error(0, "FLAC__stream_decoder_init_file %s: %s",
-                    path, FLAC__StreamDecoderInitStatusString[is]);
-      goto fail;
-    }
-    FLAC__stream_decoder_process_until_end_of_metadata(sd);
-fail:
-    if(sd)
-      FLAC__stream_decoder_delete(sd);
-  }
-#endif
-  return state->duration;
-}
+#include "tracklength.h"
 
 static const struct {
   const char *ext;
diff --git a/plugins/tracklength.h b/plugins/tracklength.h
new file mode 100644 (file)
index 0000000..c8e22a4
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2004, 2005, 2007 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef TRACKLENGTH_H
+#define TRACKLENGTH_H
+
+#include <config.h>
+
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <errno.h>
+
+#include <disorder.h>
+
+long tl_ogg(const char *path);
+long tl_wav(const char *path);
+long tl_mp3(const char *path);
+long tl_flac(const char *path);
+
+#endif /* TRACKLENGTH_H */
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index f428eef1977f7851aea03e81c97baf8a0dac0b1d..c77f33ebbf18974ecbbe65c61a8e3eab4d825a38 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/bash
 #
 # This file is part of DisOrder
-# Copyright (C) 2005-2009 Richard Kettlewell
+# Copyright (C) 2005-2009, 2011 Richard Kettlewell
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 
 set -e
 web=$HOME/public_html/web/disorder
+chroots=/srv/chroot
 
 make
-make distcheck
+#make distcheck
 make dist-bzip2
 v=$(make echo-version)
 d=$(make echo-distdir)
 src=$d.tar.bz2
 
-# Report and execute a command remotely
+v() {
+  echo ">" "$@"
+  "$@"
+}
+
+# Execute a command in the build environment
 remote() {
   local h=$1
-  shift
-  echo "$h:" "$@"
-  ssh $h "$@"
+  local cmd="$2"
+  target=${h#*:}
+  case $h in
+  ssh:* )
+    v ssh ${target} "$cmd"
+    ;;
+  chroot:* )
+    v schroot -c${target} -- bash -c "cd && $cmd"
+    ;;
+  local:* )
+    cd
+    v "$cmd"
+    cd -
+    ;;
+  esac
 }
 
-# Build .debs and copy to the right place
+# Put files into the build environment
+put() {
+  local src="$1"
+  local h=$2
+  local dst="$3"
+  target=${h#*:}
+  case $h in
+  ssh:* )
+    v scp $src ${target}:$dst
+    ;;
+  chroot:* )
+    v cp $src ${chroots}/${target}/home/${LOGNAME}/$dst
+    ;;
+  local:* )
+    v cp $src $dst
+    ;;
+  esac
+}
+
+# Retrieve files form the build environment
+get() {
+  local h=$1
+  local src="$2"
+  local dst="$3"
+  target=${h#*:}
+  case $h in
+  ssh:* )
+    v scp ${target}:$src $dst
+    ;;
+  chroot:* )
+    v cp ${chroots}/${target}/home/${LOGNAME}/$src $dst
+    ;;
+  local:* )
+    v cp $src $dst
+    ;;
+  esac
+}
+
+# Build a .deb in some build environment, and copy it to the distribution
+# location
 build() {
   local h=$1                   # build host
-  local f=$2
-  local vs=$3
-  local dist=$4
+  local f=$2                    # distribution directory ("for")
+  local vs=$3                   # version suffix
+  local dist=$4                 # distribution (stable/oldstable)
 
   remote $h "mkdir -p _builds"
   remote $h "rm -rf _builds/*.deb _builds/$d"
-  scp $src $h:_builds
+  put $src $h _builds/$src
   remote $h "cd _builds && tar xfj $src"
   if [ "$vs" != "" ]; then
     remote $h "cd _builds/$d && scripts/setversion $v~$vs 'Backport to $vs' $dist"
   fi
   remote $h "cd _builds/$d && fakeroot debian/rules binary"
   mkdir -p $web/$f
-  scp $h:_builds/*.deb $web/$f/.
+  get $h _builds/\*.deb $web/$f/.
 }
 
 # Build various debs
-
-# Debian lenny (32-bit)
-build leucomorph lenny "" stable
-
-# Debian lenny (64-bit)
-build araminta lenny "" stable
+#build chroot:lenny64 lenny lenny oldstable
+#build ssh:leucomorph lenny lenny oldstable
+build ssh:araminta squeeze "" stable
+build ssh:sandestin squeeze "" stable
 
 # Update the web
-cp $src $web
+cp $src README README.developers CHANGES.html $web
 cd doc
 for f in *.[1-9].html; do
   echo $f
index d43533e3cb3f49e1561131621738b871cbf1f344..28532a94d8977cfb6b765a19e6b3cbc656fd33cb 100755 (executable)
@@ -92,7 +92,7 @@ sub input {
     my $path = shift;
     my $lpath = basename($path);
     if(!-e $lpath) {
-       system("wget http://www.unicode.org/Public/5.1.0/ucd/$path");
+       system("wget http://www.unicode.org/Public/6.0.0/ucd/$path");
        chmod(0444, $lpath) or die "$lpath: $!\n";
     }
     open(STDIN, "<$lpath") or die "$lpath: $!\n";
@@ -562,9 +562,11 @@ for(my $base = 0; $base <= $max; $base += $modulus) {
     my @t;
     for(my $c = $base; $c < $base + $modulus; ++$c) {
        my $d = $data{$c};
-       my $decompsym = ($data{$c}->{decompsym} or "0");
-       my $cfsym = ($data{$c}->{cfsym} or "0");
-       my $compsym = ($data{$c}->{compsym} or "0");
+       my $decompsym = ($d->{decompsym} or "0");
+       my $cfsym = ($d->{cfsym} or "0");
+       my $compsym = ($d->{compsym} or "0");
+        my $ccc = ($d->{ccc} or "0");
+        my $gc = ($d->{gc} or "Cn");
        my @flags = ();
        if($data{$c}->{ypogegrammeni}) {
            push(@flags, "NBC");
@@ -573,15 +575,15 @@ for(my $base = 0; $base <= $max; $base += $modulus) {
            push(@flags, "CD");
        }
        my $flags = @flags ? join("|", @flags) : 0;
-       push(@t, "{".
+       push(@t, "{".
             join(",",
                  $decompsym,
                  $cfsym,
                  $compsym,
 #                $d->{ud},
 #                $d->{ld},
-                 $d->{ccc},
-                 $d->{gc},
+                 $ccc,
+                 $gc,
                  $flags,
                  "GB$d->{gbreak}",
                  "WB$d->{wbreak}",
index 41a7115c1882462515ed7ab4203d3e4a7f799590..f7109c738982baa8e20b08d43e887967f23e7707 100755 (executable)
@@ -25,7 +25,7 @@ if(exists $ENV{CC}) {
 }
 die "no version found\n" unless defined $version;
 output("%s (DisOrder) $version\n");
-output("Copyright (C) 2003-2008 Richard Kettlewell et al\n");
+output("Copyright (C) 2003-2011 Richard Kettlewell et al\n");
 output("License GPLv3+: GNU GPL version 3 or later:\n");
 output("        http://www.gnu.org/licenses/gpl-3.0.html\n");
 output("This is free software: you are free to change and redistribute it.\n");
index fc7e1d9cf537992cd407f63208d7e1e042c0b9de..c6febdca6370c73125caebf1ca7cd754656c6f24 100644 (file)
@@ -1,6 +1,6 @@
 #
 # This file is part of DisOrder.
-# Copyright (C) 2004-2009 Richard Kettlewell
+# Copyright (C) 2004-2011 Richard Kettlewell
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,11 +25,11 @@ AM_CPPFLAGS=-I${top_srcdir}/lib -I../lib
 
 disorderd_SOURCES=disorderd.c api.c api-server.c daemonize.c play.c    \
        server.c server-queue.c queue-ops.c state.c plugin.c            \
-       schedule.c dbparams.c background.c \
+       schedule.c dbparams.c background.c mount.c \
        exports.c ../lib/memgc.c disorder-server.h
 disorderd_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBPCRE) $(LIBDB) $(LIBAO) $(LIBGC) $(LIBGCRYPT) $(LIBICONV) \
-       $(LIBASOUND) $(COREAUDIO)
+       $(LIBASOUND) $(COREAUDIO) $(LIBPTHREAD) $(LIBDL)
 disorderd_LDFLAGS=-export-dynamic
 disorderd_DEPENDENCIES=../lib/libdisorder.a
 
@@ -44,7 +44,8 @@ disorder_speaker_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBPTHREAD)
 disorder_speaker_DEPENDENCIES=../lib/libdisorder.a
 
-disorder_decode_SOURCES=decode.c disorder-server.h
+disorder_decode_SOURCES=decode.c decode.h disorder-server.h    \
+decode-mp3.c decode-ogg.c decode-wav.c decode-flac.c
 disorder_decode_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
        $(LIBMAD) $(LIBVORBISFILE) $(LIBFLAC)
 disorder_decode_DEPENDENCIES=../lib/libdisorder.a
@@ -57,7 +58,7 @@ disorder_normalize_DEPENDENCIES=../lib/libdisorder.a
 disorder_rescan_SOURCES=rescan.c plugin.c api.c api-server.c exports.c \
        ../lib/memgc.c disorder-server.h
 disorder_rescan_LDADD=$(LIBOBJS) ../lib/libdisorder.a \
-       $(LIBDB) $(LIBGC) $(LIBPCRE) $(LIBICONV) $(LIBGCRYPT)
+       $(LIBDB) $(LIBGC) $(LIBPCRE) $(LIBICONV) $(LIBGCRYPT) $(LIBDL)
 disorder_rescan_LDFLAGS=-export-dynamic
 disorder_rescan_DEPENDENCIES=../lib/libdisorder.a
 
@@ -87,9 +88,6 @@ trackname_SOURCES=trackname.c disorder-server.h
 trackname_LDADD=../lib/libdisorder.a $(LIBPCRE) $(LIBICONV) $(LIBGCRYPT)
 trackname_DEPENDENCIES=../lib/libdisorder.a
 
-install-exec-hook:
-       $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir)
-
 check: check-help check-decode
 
 # check everything has working --help and --version
diff --git a/server/decode-flac.c b/server/decode-flac.c
new file mode 100644 (file)
index 0000000..f1399fb
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2007-2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/decode.c
+ * @brief General-purpose decoder for use by speaker process
+ */
+#include "decode.h"
+#include <FLAC/stream_decoder.h>
+
+/** @brief Metadata callback for FLAC decoder
+ *
+ * This is a no-op here.
+ */
+static void flac_metadata(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                         const FLAC__StreamMetadata attribute((unused)) *metadata,
+                         void attribute((unused)) *client_data) {
+}
+
+/** @brief Error callback for FLAC decoder */
+static void flac_error(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                      FLAC__StreamDecoderErrorStatus status,
+                      void attribute((unused)) *client_data) {
+  disorder_fatal(0, "error decoding %s: %s", path,
+                 FLAC__StreamDecoderErrorStatusString[status]);
+}
+
+/** @brief Write callback for FLAC decoder */
+static FLAC__StreamDecoderWriteStatus flac_write
+    (const FLAC__StreamDecoder attribute((unused)) *decoder,
+     const FLAC__Frame *frame,
+     const FLAC__int32 *const buffer[],
+     void attribute((unused)) *client_data) {
+  size_t n, c;
+
+  output_header(frame->header.sample_rate,
+                frame->header.channels,
+                frame->header.bits_per_sample,
+                (frame->header.channels * frame->header.blocksize
+                 * frame->header.bits_per_sample) / 8,
+                ENDIAN_BIG);
+  for(n = 0; n < frame->header.blocksize; ++n) {
+    for(c = 0; c < frame->header.channels; ++c) {
+      switch(frame->header.bits_per_sample) {
+      case 8: output_8(buffer[c][n]); break;
+      case 16: output_16(buffer[c][n]); break;
+      case 24: output_24(buffer[c][n]); break;
+      case 32: output_32(buffer[c][n]); break;
+      }
+    }
+  }
+  return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
+}
+
+static FLAC__StreamDecoderReadStatus flac_read(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                                               FLAC__byte buffer[],
+                                               size_t *bytes,
+                                               void *client_data) {
+  struct hreader *flacinput = client_data;
+  int n = hreader_read(flacinput, buffer, *bytes);
+  if(n == 0) {
+    *bytes = 0;
+    return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+  }
+  if(n < 0) {
+    *bytes = 0;
+    return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
+  }
+  *bytes = n;
+  return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+}
+
+static FLAC__StreamDecoderSeekStatus flac_seek(const FLAC__StreamDecoder attribute((unused)) *decoder,
+                                               FLAC__uint64 absolute_byte_offset, 
+                                               void *client_data) {
+  struct hreader *flacinput = client_data;
+  if(hreader_seek(flacinput, absolute_byte_offset, SEEK_SET) < 0)
+    return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+  else
+    return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
+}
+
+static FLAC__StreamDecoderTellStatus flac_tell(const FLAC__StreamDecoder attribute((unused)) *decoder, 
+                                               FLAC__uint64 *absolute_byte_offset,
+                                               void *client_data) {
+  struct hreader *flacinput = client_data;
+  off_t offset = hreader_seek(flacinput, 0, SEEK_CUR);
+  if(offset < 0)
+    return FLAC__STREAM_DECODER_TELL_STATUS_ERROR;
+  *absolute_byte_offset = offset;
+  return FLAC__STREAM_DECODER_TELL_STATUS_OK;
+}
+
+static FLAC__StreamDecoderLengthStatus flac_length(const FLAC__StreamDecoder attribute((unused)) *decoder, 
+                                                   FLAC__uint64 *stream_length, 
+                                                   void *client_data) {
+  struct hreader *flacinput = client_data;
+  *stream_length = hreader_size(flacinput);
+  return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
+}
+
+static FLAC__bool flac_eof(const FLAC__StreamDecoder attribute((unused)) *decoder, 
+                           void *client_data) {
+  struct hreader *flacinput = client_data;
+  return hreader_eof(flacinput);
+}
+
+/** @brief FLAC file decoder */
+void decode_flac(void) {
+  FLAC__StreamDecoder *sd = FLAC__stream_decoder_new();
+  FLAC__StreamDecoderInitStatus is;
+  struct hreader flacinput[1];
+
+  if (!sd)
+    disorder_fatal(0, "FLAC__stream_decoder_new failed");
+  if(hreader_init(path, flacinput))
+    disorder_fatal(errno, "error opening %s", path);
+
+  if((is = FLAC__stream_decoder_init_stream(sd,
+                                            flac_read,
+                                            flac_seek,
+                                            flac_tell,
+                                            flac_length,
+                                            flac_eof,
+                                            flac_write, flac_metadata,
+                                            flac_error, 
+                                            flacinput)))
+    disorder_fatal(0, "FLAC__stream_decoder_init_stream %s: %s",
+                   path, FLAC__StreamDecoderInitStatusString[is]);
+
+  FLAC__stream_decoder_process_until_end_of_stream(sd);
+  FLAC__stream_decoder_finish(sd);
+  FLAC__stream_decoder_delete(sd);
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
diff --git a/server/decode-mp3.c b/server/decode-mp3.c
new file mode 100644 (file)
index 0000000..6837beb
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2007-2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/decode-mp3.c
+ * @brief Decode MP3 files.
+ */
+#include "decode.h"
+#include <mad.h>
+
+static struct hreader input[1];
+
+/** @brief Dithering state
+ * Filched from mpg321, which credits it to Robert Leslie */
+struct audio_dither {
+  mad_fixed_t error[3];
+  mad_fixed_t random;
+};
+
+/** @brief 32-bit PRNG
+ * Filched from mpg321, which credits it to Robert Leslie */
+static inline unsigned long prng(unsigned long state)
+{
+  return (state * 0x0019660dL + 0x3c6ef35fL) & 0xffffffffL;
+}
+
+/** @brief Generic linear sample quantize and dither routine
+ * Filched from mpg321, which credits it to Robert Leslie */
+static long audio_linear_dither(mad_fixed_t sample,
+                               struct audio_dither *dither) {
+  unsigned int scalebits;
+  mad_fixed_t output, mask, rnd;
+  const int bits = 16;
+
+  enum {
+    MIN = -MAD_F_ONE,
+    MAX =  MAD_F_ONE - 1
+  };
+
+  /* noise shape */
+  sample += dither->error[0] - dither->error[1] + dither->error[2];
+
+  dither->error[2] = dither->error[1];
+  dither->error[1] = dither->error[0] / 2;
+
+  /* bias */
+  output = sample + (1L << (MAD_F_FRACBITS + 1 - bits - 1));
+
+  scalebits = MAD_F_FRACBITS + 1 - bits;
+  mask = (1L << scalebits) - 1;
+
+  /* dither */
+  rnd  = prng(dither->random);
+  output += (rnd & mask) - (dither->random & mask);
+
+  dither->random = rnd;
+
+  /* clip */
+  if (output > MAX) {
+    output = MAX;
+
+    if (sample > MAX)
+      sample = MAX;
+  }
+  else if (output < MIN) {
+    output = MIN;
+
+    if (sample < MIN)
+      sample = MIN;
+  }
+
+  /* quantize */
+  output &= ~mask;
+
+  /* error feedback */
+  dither->error[0] = sample - output;
+
+  /* scale */
+  return output >> scalebits;
+}
+
+/** @brief MP3 output callback */
+static enum mad_flow mp3_output(void attribute((unused)) *data,
+                               struct mad_header const *header,
+                               struct mad_pcm *pcm) {
+  size_t n = pcm->length;
+  const mad_fixed_t *l = pcm->samples[0], *r = pcm->samples[1];
+  static struct audio_dither ld[1], rd[1];
+
+  output_header(header->samplerate,
+               pcm->channels,
+               16,
+                2 * pcm->channels * pcm->length,
+                ENDIAN_BIG);
+  switch(pcm->channels) {
+  case 1:
+    while(n--)
+      output_16(audio_linear_dither(*l++, ld));
+    break;
+  case 2:
+    while(n--) {
+      output_16(audio_linear_dither(*l++, ld));
+      output_16(audio_linear_dither(*r++, rd));
+    }
+    break;
+  }
+  return MAD_FLOW_CONTINUE;
+}
+
+/** @brief MP3 input callback */
+static enum mad_flow mp3_input(void attribute((unused)) *data,
+                              struct mad_stream *stream) {
+  int used, remain, n;
+
+  /* libmad requires its caller to do ALL the buffering work, including coping
+   * with partial frames.  Given that it appears to be completely undocumented
+   * you could perhaps be forgiven for not discovering this...  */
+  if(input_count) {
+    /* Compute total number of bytes consumed */
+    used = (char *)stream->next_frame - input_buffer;
+    /* Compute number of bytes left to consume */
+    remain = input_count - used;
+    memmove(input_buffer, input_buffer + used, remain);
+  } else {
+    remain = 0;
+  }
+  /* Read new data */
+  n = hreader_read(input,
+                   input_buffer + remain, 
+                   (sizeof input_buffer) - remain);
+  if(n < 0)
+    disorder_fatal(errno, "reading from %s", path);
+  /* Compute total number of bytes available */
+  input_count = remain + n;
+  if(input_count)
+    mad_stream_buffer(stream, (unsigned char *)input_buffer, input_count);
+  if(n)
+    return MAD_FLOW_CONTINUE;
+  else
+    return MAD_FLOW_STOP;
+}
+
+/** @brief MP3 error callback */
+static enum mad_flow mp3_error(void attribute((unused)) *data,
+                              struct mad_stream *stream,
+                              struct mad_frame attribute((unused)) *frame) {
+  if(0)
+    /* Just generates pointless verbosity l-( */
+    disorder_error(0, "decoding %s: %s (%#04x)",
+                   path, mad_stream_errorstr(stream), stream->error);
+  return MAD_FLOW_CONTINUE;
+}
+
+/** @brief MP3 decoder */
+void decode_mp3(void) {
+  struct mad_decoder mad[1];
+
+  if(hreader_init(path, input))
+    disorder_fatal(errno, "opening %s", path);
+  mad_decoder_init(mad, 0/*data*/, mp3_input, 0/*header*/, 0/*filter*/,
+                  mp3_output, mp3_error, 0/*message*/);
+  if(mad_decoder_run(mad, MAD_DECODER_MODE_SYNC))
+    exit(1);
+  mad_decoder_finish(mad);
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
diff --git a/server/decode-ogg.c b/server/decode-ogg.c
new file mode 100644 (file)
index 0000000..d499955
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2007-2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/decode.c
+ * @brief General-purpose decoder for use by speaker process
+ */
+#include "decode.h"
+
+#include <vorbis/vorbisfile.h>
+
+static size_t ogg_read_func(void *ptr, size_t size, size_t nmemb, void *datasource) {
+  struct hreader *h = datasource;
+  
+  int n = hreader_read(h, ptr, size * nmemb);
+  if(n < 0) n = 0;
+  return n / size;
+}
+
+static int ogg_seek_func(void *datasource, ogg_int64_t offset, int whence) {
+  struct hreader *h = datasource;
+  
+  return hreader_seek(h, offset, whence) < 0 ? -1 : 0;
+}
+
+static int ogg_close_func(void attribute((unused)) *datasource) {
+  return 0;
+}
+
+static long ogg_tell_func(void *datasource) {
+  struct hreader *h = datasource;
+  
+  return hreader_seek(h, 0, SEEK_CUR);
+}
+
+static const ov_callbacks ogg_callbacks = {
+  ogg_read_func,
+  ogg_seek_func,
+  ogg_close_func,
+  ogg_tell_func,
+};
+
+/** @brief OGG decoder */
+void decode_ogg(void) {
+  struct hreader ogginput[1];
+  OggVorbis_File vf[1];
+  int err;
+  long n;
+  int bitstream;
+  vorbis_info *vi;
+
+  hreader_init(path, ogginput);
+  /* There doesn't seem to be any standard function for mapping the error codes
+   * to strings l-( */
+  if((err = ov_open_callbacks(ogginput, vf, 0/*initial*/, 0/*ibytes*/,
+                              ogg_callbacks)))
+    disorder_fatal(0, "ov_open_callbacks %s: %d", path, err);
+  if(!(vi = ov_info(vf, 0/*link*/)))
+    disorder_fatal(0, "ov_info %s: failed", path);
+  while((n = ov_read(vf, input_buffer, sizeof input_buffer, 1/*bigendianp*/,
+                     2/*bytes/word*/, 1/*signed*/, &bitstream))) {
+    if(n < 0)
+      disorder_fatal(0, "ov_read %s: %ld", path, n);
+    if(bitstream > 0)
+      disorder_fatal(0, "only single-bitstream ogg files are supported");
+    output_header(vi->rate, vi->channels, 16/*bits*/, n, ENDIAN_BIG);
+    if(fwrite(input_buffer, 1, n, outputfp) < (size_t)n)
+      disorder_fatal(errno, "decoding %s: writing sample data", path);
+  }
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
diff --git a/server/decode-wav.c b/server/decode-wav.c
new file mode 100644 (file)
index 0000000..fd58a14
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2007-2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/decode.c
+ * @brief General-purpose decoder for use by speaker process
+ */
+#include "decode.h"
+#include "wav.h"
+
+/** @brief Sample data callback used by decode_wav() */
+static int wav_write(struct wavfile attribute((unused)) *f,
+                     const char *data,
+                     size_t nbytes,
+                     void attribute((unused)) *u) {
+  if(fwrite(data, 1, nbytes, outputfp) < nbytes)
+    disorder_fatal(errno, "decoding %s: writing sample data", path);
+  return 0;
+}
+
+/** @brief WAV file decoder */
+void decode_wav(void) {
+  struct wavfile f[1];
+  int err;
+
+  if((err = wav_init(f, path)))
+    disorder_fatal(err, "opening %s", path);
+  output_header(f->rate, f->channels, f->bits, f->datasize, ENDIAN_LITTLE);
+  if((err = wav_data(f, wav_write, 0)))
+    disorder_fatal(err, "error decoding %s", path);
+}
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index 11a05928038f86658dd8a2ef129493eee7246bc2..8a09013b23666533acbe299859cd128c9fa43ff3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2007-2009 Richard Kettlewell
+ * Copyright (C) 2007-2010 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 /** @file server/decode.c
  * @brief General-purpose decoder for use by speaker process
  */
-
-#include "disorder-server.h"
+#include "decode.h"
 
 #include <mad.h>
 #include <vorbis/vorbisfile.h>
 
-/* libFLAC has had an API change and stupidly taken away the old API */
-#if HAVE_FLAC_FILE_DECODER_H
-# include <FLAC/file_decoder.h>
-#else
-# include <FLAC/stream_decoder.h>
-#define FLAC__FileDecoder FLAC__StreamDecoder
-#define FLAC__FileDecoderState FLAC__StreamDecoderState
-#endif
+#include <FLAC/stream_decoder.h>
 
 #include "wav.h"
-#include "speaker-protocol.h"
 
 
 /** @brief Encoding lookup table type */
@@ -45,50 +36,10 @@ struct decoder {
   void (*decode)(void);
 };
 
-/** @brief Input file */
-static int inputfd;
-
-/** @brief Output file */
-static FILE *outputfp;
-
-/** @brief Filename */
-static const char *path;
-
-/** @brief Input buffer */
-static char input_buffer[1048576];
-
-/** @brief Number of bytes read into buffer */
-static int input_count;
-
-/** @brief Write an 8-bit word */
-static inline void output_8(int n) {
-  if(putc(n, outputfp) < 0)
-    disorder_fatal(errno, "decoding %s: output error", path);
-}
-
-/** @brief Write a 16-bit word in bigendian format */
-static inline void output_16(uint16_t n) {
-  if(putc(n >> 8, outputfp) < 0
-     || putc(n, outputfp) < 0)
-    disorder_fatal(errno, "decoding %s: output error", path);
-}
-
-/** @brief Write a 24-bit word in bigendian format */
-static inline void output_24(uint32_t n) {
-  if(putc(n >> 16, outputfp) < 0
-     || putc(n >> 8, outputfp) < 0
-     || putc(n, outputfp) < 0)
-    disorder_fatal(errno, "decoding %s: output error", path);
-}
-
-/** @brief Write a 32-bit word in bigendian format */
-static inline void output_32(uint32_t n) {
-  if(putc(n >> 24, outputfp) < 0
-     || putc(n >> 16, outputfp) < 0
-     || putc(n >> 8, outputfp) < 0
-     || putc(n, outputfp) < 0)
-    disorder_fatal(errno, "decoding %s: output error", path);
-}
+FILE *outputfp;
+const char *path;
+char input_buffer[INPUT_BUFFER_SIZE];
+int input_count;
 
 /** @brief Write a block header
  * @param rate Sample rate in Hz
@@ -100,11 +51,11 @@ static inline void output_32(uint32_t n) {
  * Checks that the sample format is a supported one (so other calls do not have
  * to) and calls disorder_fatal() on error.
  */
-static void output_header(int rate,
-                         int channels,
-                         int bits,
-                          int nbytes,
-                          int endian) {
+void output_header(int rate,
+                   int channels,
+                   int bits,
+                   int nbytes,
+                   int endian) {
   struct stream_header header;
 
   if(bits <= 0 || bits % 8 || bits > 64)
@@ -124,288 +75,6 @@ static void output_header(int rate,
     disorder_fatal(errno, "decoding %s: writing format header", path);
 }
 
-/** @brief Dithering state
- * Filched from mpg321, which credits it to Robert Leslie */
-struct audio_dither {
-  mad_fixed_t error[3];
-  mad_fixed_t random;
-};
-
-/** @brief 32-bit PRNG
- * Filched from mpg321, which credits it to Robert Leslie */
-static inline unsigned long prng(unsigned long state)
-{
-  return (state * 0x0019660dL + 0x3c6ef35fL) & 0xffffffffL;
-}
-
-/** @brief Generic linear sample quantize and dither routine
- * Filched from mpg321, which credits it to Robert Leslie */
-static long audio_linear_dither(mad_fixed_t sample,
-                               struct audio_dither *dither) {
-  unsigned int scalebits;
-  mad_fixed_t output, mask, rnd;
-  const int bits = 16;
-
-  enum {
-    MIN = -MAD_F_ONE,
-    MAX =  MAD_F_ONE - 1
-  };
-
-  /* noise shape */
-  sample += dither->error[0] - dither->error[1] + dither->error[2];
-
-  dither->error[2] = dither->error[1];
-  dither->error[1] = dither->error[0] / 2;
-
-  /* bias */
-  output = sample + (1L << (MAD_F_FRACBITS + 1 - bits - 1));
-
-  scalebits = MAD_F_FRACBITS + 1 - bits;
-  mask = (1L << scalebits) - 1;
-
-  /* dither */
-  rnd  = prng(dither->random);
-  output += (rnd & mask) - (dither->random & mask);
-
-  dither->random = rnd;
-
-  /* clip */
-  if (output > MAX) {
-    output = MAX;
-
-    if (sample > MAX)
-      sample = MAX;
-  }
-  else if (output < MIN) {
-    output = MIN;
-
-    if (sample < MIN)
-      sample = MIN;
-  }
-
-  /* quantize */
-  output &= ~mask;
-
-  /* error feedback */
-  dither->error[0] = sample - output;
-
-  /* scale */
-  return output >> scalebits;
-}
-
-/** @brief MP3 output callback */
-static enum mad_flow mp3_output(void attribute((unused)) *data,
-                               struct mad_header const *header,
-                               struct mad_pcm *pcm) {
-  size_t n = pcm->length;
-  const mad_fixed_t *l = pcm->samples[0], *r = pcm->samples[1];
-  static struct audio_dither ld[1], rd[1];
-
-  output_header(header->samplerate,
-               pcm->channels,
-               16,
-                2 * pcm->channels * pcm->length,
-                ENDIAN_BIG);
-  switch(pcm->channels) {
-  case 1:
-    while(n--)
-      output_16(audio_linear_dither(*l++, ld));
-    break;
-  case 2:
-    while(n--) {
-      output_16(audio_linear_dither(*l++, ld));
-      output_16(audio_linear_dither(*r++, rd));
-    }
-    break;
-  }
-  return MAD_FLOW_CONTINUE;
-}
-
-/** @brief MP3 input callback */
-static enum mad_flow mp3_input(void attribute((unused)) *data,
-                              struct mad_stream *stream) {
-  int used, remain, n;
-
-  /* libmad requires its caller to do ALL the buffering work, including coping
-   * with partial frames.  Given that it appears to be completely undocumented
-   * you could perhaps be forgiven for not discovering this...  */
-  if(input_count) {
-    /* Compute total number of bytes consumed */
-    used = (char *)stream->next_frame - input_buffer;
-    /* Compute number of bytes left to consume */
-    remain = input_count - used;
-    memmove(input_buffer, input_buffer + used, remain);
-  } else {
-    remain = 0;
-  }
-  /* Read new data */
-  n = read(inputfd, input_buffer + remain, (sizeof input_buffer) - remain);
-  if(n < 0)
-    disorder_fatal(errno, "reading from %s", path);
-  /* Compute total number of bytes available */
-  input_count = remain + n;
-  if(input_count)
-    mad_stream_buffer(stream, (unsigned char *)input_buffer, input_count);
-  if(n)
-    return MAD_FLOW_CONTINUE;
-  else
-    return MAD_FLOW_STOP;
-}
-
-/** @brief MP3 error callback */
-static enum mad_flow mp3_error(void attribute((unused)) *data,
-                              struct mad_stream *stream,
-                              struct mad_frame attribute((unused)) *frame) {
-  if(0)
-    /* Just generates pointless verbosity l-( */
-    disorder_error(0, "decoding %s: %s (%#04x)",
-                   path, mad_stream_errorstr(stream), stream->error);
-  return MAD_FLOW_CONTINUE;
-}
-
-/** @brief MP3 decoder */
-static void decode_mp3(void) {
-  struct mad_decoder mad[1];
-
-  if((inputfd = open(path, O_RDONLY)) < 0)
-    disorder_fatal(errno, "opening %s", path);
-  mad_decoder_init(mad, 0/*data*/, mp3_input, 0/*header*/, 0/*filter*/,
-                  mp3_output, mp3_error, 0/*message*/);
-  if(mad_decoder_run(mad, MAD_DECODER_MODE_SYNC))
-    exit(1);
-  mad_decoder_finish(mad);
-}
-
-/** @brief OGG decoder */
-static void decode_ogg(void) {
-  FILE *fp;
-  OggVorbis_File vf[1];
-  int err;
-  long n;
-  int bitstream;
-  vorbis_info *vi;
-
-  if(!(fp = fopen(path, "rb")))
-    disorder_fatal(errno, "cannot open %s", path);
-  /* There doesn't seem to be any standard function for mapping the error codes
-   * to strings l-( */
-  if((err = ov_open(fp, vf, 0/*initial*/, 0/*ibytes*/)))
-    disorder_fatal(0, "ov_fopen %s: %d", path, err);
-  if(!(vi = ov_info(vf, 0/*link*/)))
-    disorder_fatal(0, "ov_info %s: failed", path);
-  while((n = ov_read(vf, input_buffer, sizeof input_buffer, 1/*bigendianp*/,
-                     2/*bytes/word*/, 1/*signed*/, &bitstream))) {
-    if(n < 0)
-      disorder_fatal(0, "ov_read %s: %ld", path, n);
-    if(bitstream > 0)
-      disorder_fatal(0, "only single-bitstream ogg files are supported");
-    output_header(vi->rate, vi->channels, 16/*bits*/, n, ENDIAN_BIG);
-    if(fwrite(input_buffer, 1, n, outputfp) < (size_t)n)
-      disorder_fatal(errno, "decoding %s: writing sample data", path);
-  }
-}
-
-/** @brief Sample data callback used by decode_wav() */
-static int wav_write(struct wavfile attribute((unused)) *f,
-                     const char *data,
-                     size_t nbytes,
-                     void attribute((unused)) *u) {
-  if(fwrite(data, 1, nbytes, outputfp) < nbytes)
-    disorder_fatal(errno, "decoding %s: writing sample data", path);
-  return 0;
-}
-
-/** @brief WAV file decoder */
-static void decode_wav(void) {
-  struct wavfile f[1];
-  int err;
-
-  if((err = wav_init(f, path)))
-    disorder_fatal(err, "opening %s", path);
-  output_header(f->rate, f->channels, f->bits, f->datasize, ENDIAN_LITTLE);
-  if((err = wav_data(f, wav_write, 0)))
-    disorder_fatal(err, "error decoding %s", path);
-}
-
-/** @brief Metadata callback for FLAC decoder
- *
- * This is a no-op here.
- */
-static void flac_metadata(const FLAC__FileDecoder attribute((unused)) *decoder,
-                         const FLAC__StreamMetadata attribute((unused)) *metadata,
-                         void attribute((unused)) *client_data) {
-}
-
-/** @brief Error callback for FLAC decoder */
-static void flac_error(const FLAC__FileDecoder attribute((unused)) *decoder,
-                      FLAC__StreamDecoderErrorStatus status,
-                      void attribute((unused)) *client_data) {
-  disorder_fatal(0, "error decoding %s: %s", path,
-                 FLAC__StreamDecoderErrorStatusString[status]);
-}
-
-/** @brief Write callback for FLAC decoder */
-static FLAC__StreamDecoderWriteStatus flac_write
-    (const FLAC__FileDecoder attribute((unused)) *decoder,
-     const FLAC__Frame *frame,
-     const FLAC__int32 *const buffer[],
-     void attribute((unused)) *client_data) {
-  size_t n, c;
-
-  output_header(frame->header.sample_rate,
-                frame->header.channels,
-                frame->header.bits_per_sample,
-                (frame->header.channels * frame->header.blocksize
-                 * frame->header.bits_per_sample) / 8,
-                ENDIAN_BIG);
-  for(n = 0; n < frame->header.blocksize; ++n) {
-    for(c = 0; c < frame->header.channels; ++c) {
-      switch(frame->header.bits_per_sample) {
-      case 8: output_8(buffer[c][n]); break;
-      case 16: output_16(buffer[c][n]); break;
-      case 24: output_24(buffer[c][n]); break;
-      case 32: output_32(buffer[c][n]); break;
-      }
-    }
-  }
-  return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
-}
-
-
-/** @brief FLAC file decoder */
-static void decode_flac(void) {
-#if HAVE_FLAC_FILE_DECODER_H
-  FLAC__FileDecoder *fd = 0;
-  FLAC__FileDecoderState fs;
-
-  if(!(fd = FLAC__file_decoder_new()))
-    disorder_fatal(0, "FLAC__file_decoder_new failed");
-  if(!(FLAC__file_decoder_set_filename(fd, path)))
-    disorder_fatal(0, "FLAC__file_set_filename failed");
-  FLAC__file_decoder_set_metadata_callback(fd, flac_metadata);
-  FLAC__file_decoder_set_error_callback(fd, flac_error);
-  FLAC__file_decoder_set_write_callback(fd, flac_write);
-  if((fs = FLAC__file_decoder_init(fd)))
-    disorder_fatal(0, "FLAC__file_decoder_init: %s", FLAC__FileDecoderStateString[fs]);
-  FLAC__file_decoder_process_until_end_of_file(fd);
-#else
-  FLAC__StreamDecoder *sd = FLAC__stream_decoder_new();
-  FLAC__StreamDecoderInitStatus is;
-
-  if (!sd)
-    disorder_fatal(0, "FLAC__stream_decoder_new failed");
-
-  if((is = FLAC__stream_decoder_init_file(sd, path, flac_write, flac_metadata,
-                                          flac_error, 0)))
-    disorder_fatal(0, "FLAC__stream_decoder_init_file %s: %s",
-                   path, FLAC__StreamDecoderInitStatusString[is]);
-
-  FLAC__stream_decoder_process_until_end_of_stream(sd);
-  FLAC__stream_decoder_finish(sd);
-  FLAC__stream_decoder_delete(sd);
-#endif
-}
-
 /** @brief Lookup table of decoders */
 static const struct decoder decoders[] = {
   { "*.mp3", decode_mp3 },
diff --git a/server/decode.h b/server/decode.h
new file mode 100644 (file)
index 0000000..97bf687
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * This file is part of DisOrder
+ * Copyright (C) 2007-2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/decode.h
+ * @brief General-purpose decoder for use by speaker process
+ */
+#ifndef DECODE_H
+#define DECODE_H
+
+#include "disorder-server.h"
+#include "hreader.h"
+#include "speaker-protocol.h"
+
+#define INPUT_BUFFER_SIZE 1048576
+  
+/** @brief Output file */
+extern FILE *outputfp;
+
+/** @brief Input filename */
+extern const char *path;
+
+/** @brief Input buffer */
+extern char input_buffer[INPUT_BUFFER_SIZE];
+
+/** @brief Number of bytes read into buffer */
+extern int input_count;
+
+/** @brief Write an 8-bit word */
+static inline void output_8(int n) {
+  if(putc(n, outputfp) < 0)
+    disorder_fatal(errno, "decoding %s: output error", path);
+}
+
+/** @brief Write a 16-bit word in bigendian format */
+static inline void output_16(uint16_t n) {
+  if(putc(n >> 8, outputfp) < 0
+     || putc(n, outputfp) < 0)
+    disorder_fatal(errno, "decoding %s: output error", path);
+}
+
+/** @brief Write a 24-bit word in bigendian format */
+static inline void output_24(uint32_t n) {
+  if(putc(n >> 16, outputfp) < 0
+     || putc(n >> 8, outputfp) < 0
+     || putc(n, outputfp) < 0)
+    disorder_fatal(errno, "decoding %s: output error", path);
+}
+
+/** @brief Write a 32-bit word in bigendian format */
+static inline void output_32(uint32_t n) {
+  if(putc(n >> 24, outputfp) < 0
+     || putc(n >> 16, outputfp) < 0
+     || putc(n >> 8, outputfp) < 0
+     || putc(n, outputfp) < 0)
+    disorder_fatal(errno, "decoding %s: output error", path);
+}
+
+void output_header(int rate,
+                   int channels,
+                   int bits,
+                   int nbytes,
+                   int endian);
+
+void decode_mp3(void);
+void decode_ogg(void);
+void decode_wav(void);
+void decode_flac(void);
+
+#endif /* DECODE_H */
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index e8f4dabd17c6aea1a3df02eb623766a0bbe82d7e..bc90c9b046548d167042551a8bd04fcf5c8e4677 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2008, 2009 Richard Kettlewell
+ * Copyright (C) 2008-2010 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -179,13 +179,16 @@ void play(ev_source *ev);
 /* try to play something, if playing is enabled and nothing is playing
  * already */
 
+/** @brief Return true if @p represents a true flag */
+int flag_enabled(const char *s);
+
 int playing_is_enabled(void);
 /* return true iff playing is enabled */
 
 void enable_playing(const char *who, ev_source *ev);
 /* enable playing */
 
-void disable_playing(const char *who);
+void disable_playing(const char *who, ev_source *ev);
 /* disable playing. */
 
 int random_is_enabled(void);
@@ -194,7 +197,7 @@ int random_is_enabled(void);
 void enable_random(const char *who, ev_source *ev);
 /* enable random play */
 
-void disable_random(const char *who);
+void disable_random(const char *who, ev_source *ev);
 /* disable random play */
 
 void scratch(const char *who, const char *id);
@@ -372,6 +375,11 @@ int play_background(ev_source *ev,
 #define START_HARDFAIL 1   /**< @brief Track is broken. */
 #define START_SOFTFAIL 2   /**< @brief Track OK, system (temporarily?) broken */
 
+void periodic_mount_check(ev_source *ev_);
+
+/** @brief How often to check for new (or old) filesystems */
+# define MOUNT_CHECK_INTERVAL 5         /* seconds */
+
 #endif /* DISORDER_SERVER_H */
 
 /*
index 14b459f861524a7d66d9ff9b8ded1fc2c59f6403..2000a2f2d55aefafb732f30346605d7df2259da9 100644 (file)
@@ -302,6 +302,8 @@ int main(int argc, char **argv) {
   create_periodic(ev, periodic_play_check, 1, 0);
   /* Try adding a random track immediately and once every two seconds */
   create_periodic(ev, periodic_add_random, 2, 1);
+  /* Issue a rescan when devices are mounted or unmouted */
+  create_periodic(ev, periodic_mount_check, MOUNT_CHECK_INTERVAL, 1);
   /* enter the event loop */
   n = ev_run(ev);
   /* if we exit the event loop, something must have gone wrong */
index cdc3a44fc72a57e70eb1f60d823afda31a9e209e..a28387c7103963d022085c1d63d86fb6fbb3e148 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2007, 2008, 2011 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  */
 #include "disorder-server.h"
 
+enum {
+  NO_SETUID = UCHAR_MAX + 1,
+};
+
 static const struct option options[] = {
   { "help", no_argument, 0, 'h' },
   { "version", no_argument, 0, 'V' },
@@ -31,6 +35,7 @@ static const struct option options[] = {
   { "recover-fatal", no_argument, 0, 'R' },
   { "recompute-aliases", no_argument, 0, 'a' },
   { "remove-pathless", no_argument, 0, 'P' },
+  { "no-setuid", no_argument, 0, NO_SETUID },
   { 0, 0, 0, 0 }
 };
 
@@ -48,6 +53,7 @@ static void help(void) {
          "  --recover, -r            Run database recovery\n"
          "  --recompute-aliases, -a  Recompute aliases\n"
          "  --remove-pathless, -P    Remove pathless tracks\n"
+          "  --no-setuid              Do not become jukebox user\n"
          "  --debug                  Debug mode\n");
   xfclose(stdout);
   exit(0);
@@ -365,12 +371,13 @@ fail:
 int main(int argc, char **argv) {
   int n, dump = 0, undump = 0, recover = TRACKDB_NO_RECOVER, recompute = 0;
   int remove_pathless = 0, fd;
+  int changeuid = !getuid();
   const char *path;
   char *tmp;
   FILE *fp;
 
   mem_init();
-  while((n = getopt_long(argc, argv, "hVc:dDurRaP", options, 0)) >= 0) {
+  while((n = getopt_long(argc, argv, "hVc:dDurRaPR", options, 0)) >= 0) {
     switch(n) {
     case 'h': help();
     case 'V': version("disorder-dump");
@@ -378,10 +385,11 @@ int main(int argc, char **argv) {
     case 'd': dump = 1; break;
     case 'u': undump = 1; break;
     case 'D': debugging = 1; break;
-    case 'r': recover = TRACKDB_NORMAL_RECOVER;
-    case 'R': recover = TRACKDB_FATAL_RECOVER;
+    case 'r': recover = TRACKDB_NORMAL_RECOVER; break;
+    case 'R': recover = TRACKDB_FATAL_RECOVER; break;
     case 'a': recompute = 1; break;
     case 'P': remove_pathless = 1; break;
+    case NO_SETUID: changeuid = 0; break;
     default: disorder_fatal(0, "invalid option");
     }
   }
@@ -400,8 +408,6 @@ int main(int argc, char **argv) {
   }
   if(config_read(0, NULL))
     disorder_fatal(0, "cannot read configuration");
-  trackdb_init(recover|TRACKDB_MAY_CREATE);
-  trackdb_open(TRACKDB_NO_UPGRADE);
   if(dump) {
     /* We write to a temporary file and rename into place.  We make
      * sure the permissions are tight from the start. */
@@ -410,17 +416,24 @@ int main(int argc, char **argv) {
       disorder_fatal(errno, "error opening %s", tmp);
     if(!(fp = fdopen(fd, "w")))
       disorder_fatal(errno, "fdopen on %s", tmp);
+    trackdb_init(recover|TRACKDB_MAY_CREATE);
+    trackdb_open(TRACKDB_NO_UPGRADE);
     do_dump(fp, tmp);
     if(fclose(fp) < 0) disorder_fatal(errno, "error closing %s", tmp);
     if(rename(tmp, path) < 0)
       disorder_fatal(errno, "error renaming %s to %s", tmp, path);
   } else if(undump) {
+    /* Open the dump file before changing UID */
+    if(!(fp = fopen(path, "r")))
+      disorder_fatal(errno, "error opening %s", path);
+    if(changeuid)
+      become_mortal();
     /* the databases or logfiles might end up with wrong permissions
      * if new ones are created */
     if(getuid() == 0)
       disorder_info("you might need to chown database files");
-    if(!(fp = fopen(path, "r")))
-      disorder_fatal(errno, "error opening %s", path);
+    trackdb_init(recover|TRACKDB_MAY_CREATE);
+    trackdb_open(TRACKDB_NO_UPGRADE);
     do_undump(fp, path, remove_pathless);
     xfclose(fp);
   } else if(recompute) {
diff --git a/server/mount.c b/server/mount.c
new file mode 100644 (file)
index 0000000..6c3da7a
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * This file is part of DisOrder.
+ * Copyright (C) 2010 Richard Kettlewell
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+/** @file server/mount.c
+ * @brief Periodically check for devices being mounted and unmounted
+ */
+#include "disorder-server.h"
+#if HAVE_GETFSSTAT
+# include <sys/param.h>
+# include <sys/ucred.h>
+# include <sys/mount.h>
+#endif
+
+#if HAVE_GETFSSTAT
+static int compare_fsstat(const void *av, const void *bv) {
+  const struct statfs *a = av, *b = bv;
+  int c;
+  c = memcmp(&a->f_fsid, &b->f_fsid, sizeof a->f_fsid);
+  if(c)
+    return c;
+  c = strcmp(a->f_mntonname, b->f_mntonname);
+  if(c)
+    return c;
+  return 0;
+}
+#endif
+
+#if HAVE_GETFSSTAT || defined PATH_MTAB
+void periodic_mount_check(ev_source *ev_) {
+  if(!config->mount_rescan)
+    return;
+#if HAVE_GETFSSTAT
+  /* On OS X, we keep track of the hash of the kernel's mounted
+   * filesystem list */
+  static int first = 1;
+  static unsigned char last[20];
+  unsigned char *current;
+  int nfilesystems, space;
+  struct statfs *buf;
+  gcrypt_hash_handle h;
+  gcry_error_t e;
+
+  space = getfsstat(NULL, 0, MNT_NOWAIT);
+  buf = xcalloc(space, sizeof *buf);
+  nfilesystems = getfsstat(buf, space * sizeof *buf, MNT_NOWAIT);
+  if(nfilesystems > space)
+    // The array grew between check and use!  We just give up and try later.
+    return;
+  // Put into order so we get a bit of consistency
+  qsort(buf, nfilesystems, sizeof *buf, compare_fsstat);
+  if((e = gcry_md_open(&h, GCRY_MD_SHA1, 0))) {
+    disorder_error(0, "gcry_md_open: %s", gcry_strerror(e));
+    return;
+  }
+  for(int n = 0; n < nfilesystems; ++n) {
+    gcry_md_write(h, &buf[n].f_fsid, sizeof buf[n].f_fsid);
+    gcry_md_write(h, buf[n].f_mntonname, 1 + strlen(buf[n].f_mntonname));
+  }
+  current = gcry_md_read(h, GCRY_MD_SHA1);
+  if(!first && memcmp(current, last, sizeof last))
+    trackdb_rescan(ev_, 1/*check*/, 0, 0);
+  memcpy(last, current, sizeof last);
+  first = 0;
+  gcry_md_close(h);
+#elif defined PATH_PROC_MOUNTS
+  /* On Linux we hash /proc/mounts */
+  static int first = 1;
+  static unsigned char last[20];
+
+  unsigned char *current;
+  int fd = -1, n;
+  gcrypt_hash_handle h = 0;
+  gcry_error_t e;
+  char buffer[1024];
+
+  if((e = gcry_md_open(&h, GCRY_MD_SHA1, 0))) {
+    disorder_error(0, "gcry_md_open: %s", gcry_strerror(e));
+    goto done;
+  }
+  if((fd = open(PATH_PROC_MOUNTS, O_RDONLY)) < 0) {
+    disorder_error(errno, "open %s", PATH_PROC_MOUNTS);
+    goto done;
+  }
+  for(;;) {
+    n = read(fd, buffer, sizeof buffer);
+    if(n > 0)
+      gcry_md_write(h, buffer, n);
+    else if(n == 0)
+      break;
+    else if(errno != EINTR) {
+      disorder_error(errno, "reading %s", PATH_PROC_MOUNTS);
+      goto done;
+    }
+  }
+  current = gcry_md_read(h, GCRY_MD_SHA1);
+  if(!first && memcmp(current, last, sizeof last))
+    trackdb_rescan(ev_, 1/*check*/, 0, 0);
+  memcpy(last, current, sizeof last);
+  first = 0;
+ done:
+  if(h) gcry_md_close(h);
+  if(fd != -1) close(fd);
+#elif defined PATH_MTAB
+  /* As a further alternative we track the modification time of /etc/mtab */
+  static time_t last_mount;
+  struct stat sb;
+  
+  if(stat(PATH_MTAB, &sb) >= 0) {
+    if(last_mount != 0 && last_mount != sb.st_mtime)
+      trackdb_rescan(ev_, 1/*check*/, 0, 0);
+    last_mount = sb.st_mtime;
+  }
+#endif
+}
+#else
+void periodic_mount_check(ev_source attribute((unused)) *ev_ ) {
+}
+#endif
+
+/*
+Local Variables:
+c-basic-offset:2
+comment-column:40
+fill-column:79
+indent-tabs-mode:nil
+End:
+*/
index 99ef4837326d5acf1229b840a381d5a251736f76..9b919d1d13c301509d969b1568a1fdf671557598 100644 (file)
@@ -300,7 +300,7 @@ static int start(ev_source *ev,
 
   D(("start %s", q->id));
   /* Find the player plugin. */
-  if(!(player = find_player(q)) < 0)
+  if(!(player = find_player(q)))
     return START_HARDFAIL;              /* No player */
   if(!(q->pl = open_plugin(player->s[1], 0)))
     return START_HARDFAIL;
@@ -395,7 +395,7 @@ int prepare(ev_source *ev,
   if(q->prepared || q->preparing)
     return START_OK;
   /* Find the player plugin */
-  if(!(player = find_player(q)) < 0
+  if(!(player = find_player(q))) 
     return START_HARDFAIL;              /* No player */
   q->pl = open_plugin(player->s[1], 0);
   q->type = play_get_type(q->pl);
@@ -640,11 +640,13 @@ void play(ev_source *ev) {
 
 /* Miscelleneous ------------------------------------------------------------ */
 
+int flag_enabled(const char *s) {
+  return !s || !strcmp(s, "yes");
+}
+
 /** @brief Return true if play is enabled */
 int playing_is_enabled(void) {
-  const char *s = trackdb_get_global("playing");
-
-  return !s || !strcmp(s, "yes");
+  return flag_enabled(trackdb_get_global("playing"));
 }
 
 /** @brief Enable play */
@@ -656,15 +658,13 @@ void enable_playing(const char *who, ev_source *ev) {
 }
 
 /** @brief Disable play */
-void disable_playing(const char *who) {
+void disable_playing(const char *who, ev_source attribute((unused)) *ev) {
   trackdb_set_global("playing", "no", who);
 }
 
 /** @brief Return true if random play is enabled */
 int random_is_enabled(void) {
-  const char *s = trackdb_get_global("random-play");
-
-  return !s || !strcmp(s, "yes");
+  return flag_enabled(trackdb_get_global("random-play"));
 }
 
 /** @brief Enable random play */
@@ -675,7 +675,7 @@ void enable_random(const char *who, ev_source *ev) {
 }
 
 /** @brief Disable random play */
-void disable_random(const char *who) {
+void disable_random(const char *who, ev_source attribute((unused)) *ev) {
   trackdb_set_global("random-play", "no", who);
 }
 
index bc99681db8297a40d42c69a7116f7276e0a844f9..7cb24b6a3c1ef75538916a8519cf37698e3a562f 100644 (file)
@@ -160,7 +160,7 @@ done:
   if(fp)
     xfclose(fp);
   if(pid)
-    while((r = waitpid(pid, &w, 0)) == -1 && errno == EINTR)
+    while((waitpid(pid, &w, 0)) == -1 && errno == EINTR)
       ;
 }
 
index f1b20a123d96433188d70bef0286f60fcf8406c5..c7b4eede3be0691d5b444cc57453bbbf06873b57 100644 (file)
@@ -471,14 +471,12 @@ static int schedule_lookup(const char *id,
 static int schedule_trigger(ev_source *ev,
                            const struct timeval attribute((unused)) *now,
                            void *u) {
-  const char *action, *id = u;
+  const char *id = u;
   struct kvp *actiondata = schedule_get(id);
   int n;
 
   if(!actiondata)
     return 0;
-  /* schedule_get() enforces these being present */
-  action = kvp_get(actiondata, "action");
   /* Look up the action */
   n = schedule_lookup(id, actiondata);
   if(n < 0)
index 0ebfb4f0782fb8c4d5d8f91184928a4eb6606c5b..53a351bc455c181981f6150ba9ff557a95eb134a 100644 (file)
@@ -201,9 +201,9 @@ static int reader_error(ev_source attribute((unused)) *ev,
 
 static int c_disable(struct conn *c, char **vec, int nvec) {
   if(nvec == 0)
-    disable_playing(c->who);
+    disable_playing(c->who, c->ev);
   else if(nvec == 1 && !strcmp(vec[0], "now"))
-    disable_playing(c->who);
+    disable_playing(c->who, c->ev);
   else {
     sink_writes(ev_writer_sink(c->w), "550 invalid argument\n");
     return 1;                  /* completed */
@@ -866,7 +866,7 @@ static int c_random_enable(struct conn *c,
 static int c_random_disable(struct conn *c,
                            char attribute((unused)) **vec,
                            int attribute((unused)) nvec) {
-  disable_random(c->who);
+  disable_random(c->who, c->ev);
   sink_writes(ev_writer_sink(c->w), "250 OK\n");
   return 1;                    /* completed */
 }
@@ -1150,8 +1150,19 @@ static int c_set_global(struct conn *c,
     sink_writes(ev_writer_sink(c->w), "550 cannot set internal global preferences\n");
     return 1;
   }
-  trackdb_set_global(vec[0], vec[1], c->who);
-  sink_printf(ev_writer_sink(c->w), "250 OK\n");
+  /* We special-case the 'magic' preferences here. */
+  if(!strcmp(vec[0], "playing")) {
+    (flag_enabled(vec[1]) ? enable_playing : disable_playing)(c->who, c->ev);
+    sink_printf(ev_writer_sink(c->w), "250 OK\n");
+  } else if(!strcmp(vec[0], "random-play")) {
+    (flag_enabled(vec[1]) ? enable_random : disable_random)(c->who, c->ev);
+    sink_printf(ev_writer_sink(c->w), "250 OK\n");
+  } else {
+    if(trackdb_set_global(vec[0], vec[1], c->who))
+      sink_printf(ev_writer_sink(c->w), "250 OK\n");
+    else
+      sink_writes(ev_writer_sink(c->w), "550 not found\n");
+  }
   return 1;
 }
 
@@ -1177,7 +1188,7 @@ static int c_nop(struct conn *c,
 static int c_new(struct conn *c,
                 char **vec,
                 int nvec) {
-  int max, n;
+  int max;
   char **tracks;
 
   if(nvec > 0)
@@ -1188,7 +1199,6 @@ static int c_new(struct conn *c,
     max = config->new_max;
   tracks = trackdb_new(0, max);
   sink_printf(ev_writer_sink(c->w), "253 New track list follows\n");
-  n = 0;
   while(*tracks) {
     sink_printf(ev_writer_sink(c->w), "%s%s\n",
                **tracks == '.' ? "." : "", *tracks);
index a2c2e7c7650a8b45a7f5de5b0a406d5a360e1fca..5100958023501200e00631a56cc0346c63bea525 100644 (file)
@@ -36,8 +36,8 @@
  * assumed that the main server won't start outrageously many decoders.
  *
  * Audio is supplied from this buffer to the uaudio play callback.  Playback is
- * enabled when a track is to be played and disabled when the its last bytes
- * have been return by the callback; pause and resume is implemneted the
+ * enabled when a track is to be played and disabled when its last bytes
+ * have been returned by the callback; pause and resume is implemented the
  * obvious way.  If the callback finds itself required to play when there is no
  * playing track it returns dead air.
  *
@@ -75,7 +75,6 @@
 #include <syslog.h>
 #include <unistd.h>
 #include <errno.h>
-#include <ao/ao.h>
 #include <sys/select.h>
 #include <sys/wait.h>
 #include <time.h>
@@ -117,7 +116,7 @@ struct track {
   struct track *next;
 
   /** @brief Input file descriptor */
-  int fd;                               /* input FD */
+  int fd;
 
   /** @brief Track ID */
   char id[24];
@@ -173,26 +172,37 @@ struct track {
  */
 static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
 
-/** @brief Linked list of all prepared tracks */
+/** @brief Linked list of all prepared tracks
+ *
+ * This includes @ref playing and @ref pending_playing.
+ */
 static struct track *tracks;
 
 /** @brief Playing track, or NULL
  *
  * This means the track the speaker process intends to play.  It does not
  * reflect any other state (e.g. activation of uaudio backend).
+ *
+ * This track remains on @ref track.
  */
 static struct track *playing;
 
 /** @brief Pending playing track, or NULL
  *
  * This means the track the server wants the speaker to play.
+ *
+ * This track remains on @p track.
  */
 static struct track *pending_playing;
 
 /** @brief Array of file descriptors for poll() */
 static struct pollfd fds[NFDS];
 
-/** @brief Next free slot in @ref fds */
+/** @brief Next free slot in @ref fds
+ *
+ * This is used when filling in the @ref fds array each iteration through the
+ * event loop.
+ */
 static int fdno;
 
 /** @brief Listen socket */
@@ -243,7 +253,7 @@ static void help(void) {
 
 /** @brief Find track @p id, maybe creating it if not found
  * @param id Track ID to find
- * @param create If nonzero, create track structure of @p id not found
+ * @param create If nonzero, create track structure of @p id if not found
  * @return Pointer to track structure or NULL
  */
 static struct track *findtrack(const char *id, int create) {
@@ -294,6 +304,8 @@ static void destroy(struct track *t) {
  * This is effectively the read callback on @c t->fd.  It is called from the
  * main loop whenever the track's file descriptor is readable, assuming the
  * buffer has not reached the maximum allowed occupancy.
+ *
+ * Errors count as EOF.
  */
 static int speaker_fill(struct track *t) {
   size_t where, left;
@@ -340,7 +352,8 @@ static int speaker_fill(struct track *t) {
         t->playable = 1;
       rc = 0;
     }
-  }
+  } else
+    rc = 0;
   return rc;
 }
 
@@ -352,7 +365,9 @@ static int speaker_fill(struct track *t) {
  * We don't allow tracks to be paused if we've already told the server we've
  * finished them; that would cause such tracks to survive much longer than the
  * few samples they're supposed to, with report() remaining silent for the
- * duration.
+ * duration.  The effect is that if you hit pause towards the end of a track,
+ * what should happen is that it finished but the next one is paused right at
+ * its start.
  */
 static int playable(void) {
   return playing
@@ -429,7 +444,8 @@ static size_t speaker_callback(void *buffer,
       /* Wrap around to start of buffer */
       if(playing->start == sizeof playing->buffer)
         playing->start = 0;
-      /* See if we've reached the end of the track */
+      /* See if we've reached the end of the track; if so make sure the event
+       * loop wakes up. */
       if(playing->used == 0 && playing->eof) {
         int ignored = write(sigpipe[1], "", 1);
         (void) ignored;
@@ -459,8 +475,8 @@ static void mainloop(void) {
   struct speaker_message sm;
   int n, fd, stdin_slot, timeout, listen_slot, sigpipe_slot;
 
-  /* Keep going while our parent process is alive */
   pthread_mutex_lock(&lock);
+  /* Keep going while our parent process is alive */
   while(getppid() != 1) {
     int force_report = 0;
 
@@ -481,6 +497,8 @@ static void mainloop(void) {
       playing->slot = addfd(playing->fd, POLLIN);
     else if(playing)
       playing->slot = -1;
+    /* Allow the poll() to be interrupted at the end of a track */
+    sigpipe_slot = addfd(sigpipe[0], POLLIN);
     /* If any other tracks don't have a full buffer, try to read sample data
      * from them.  We do this last of all, so that if we run out of slots,
      * nothing important can't be monitored. */
@@ -493,7 +511,6 @@ static void mainloop(void) {
         } else
           t->slot = -1;
       }
-    sigpipe_slot = addfd(sigpipe[0], POLLIN);
     /* Wait for something interesting to happen */
     pthread_mutex_unlock(&lock);
     n = poll(fds, fdno, timeout);
@@ -510,6 +527,10 @@ static void mainloop(void) {
       char id[24];
 
       if((fd = accept(listenfd, (struct sockaddr *)&addr, &addrlen)) >= 0) {
+        /* We do blocking reads for the header.  In theory this means that the
+         * connecting process could wedge the speaker indefinitely.  In
+         * practice that would mean that the main server was broken anyway.
+         * Still, this is ugly, and a rewrite would be nice. */
         blocking(fd);
         if(read(fd, &l, sizeof l) < 4) {
           disorder_error(errno, "reading length from inbound connection");
@@ -668,6 +689,10 @@ static void mainloop(void) {
     }
     /* When the track is actually finished, deconfigure it */
     if(playing && playing->eof && !playing->used) {
+      if(!playing->finished) {
+        /* should never happen but we'd like to know if it does */
+        disorder_fatal(0, "track finish state inconsistent");
+      }
       removetrack(playing->id);
       destroy(playing);
       playing = 0;