]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Merge branch 'old-maint' into maint
authorTheodore Ts'o <tytso@mit.edu>
Sun, 17 Mar 2019 22:50:20 +0000 (18:50 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 17 Mar 2019 22:50:20 +0000 (18:50 -0400)
118 files changed:
MCONFIG.in
Makefile.in
README
RELEASE-NOTES
acinclude.m4
config/ltmain.sh [new file with mode: 0644]
configure
configure.ac
debian/changelog
debian/compat
debian/control
debian/e2fsprogs.files
debian/e2fsprogs.postinst.dh9 [new file with mode: 0644]
debian/e2fsprogs.postrm.dh9 [new file with mode: 0644]
debian/libext2fs2.symbols
debian/rules
debugfs/Makefile.in
debugfs/debugfs.c
debugfs/debugfs.h
debugfs/do_journal.c
debugfs/dump.c
debugfs/extent_inode.c
debugfs/filefrag.c
debugfs/htree.c
debugfs/icheck.c
debugfs/logdump.c
debugfs/ls.c
debugfs/lsdel.c
debugfs/ncheck.c
debugfs/quota.c
debugfs/set_fields.c
debugfs/unused.c
debugfs/util.c
debugfs/xattrs.c
debugfs/zap.c
doc/RelNotes/v1.45.0.txt [new file with mode: 0644]
doc/libext2fs.texinfo
e2fsck/Makefile.in
e2fsck/dx_dirinfo.c
e2fsck/e2fsck.h
e2fsck/jfs_user.h
e2fsck/pass1.c
e2fsck/pass2.c
e2fsck/rehash.c
e2fsck/unix.c
e2fsprogs.lsm
e2fsprogs.spec
lib/config.h.in
lib/e2p/Makefile.in
lib/e2p/e2p.h
lib/e2p/encoding.c [new file with mode: 0644]
lib/e2p/feature.c
lib/e2p/pf.c
lib/ext2fs/Makefile.in
lib/ext2fs/bitmaps.c
lib/ext2fs/blkmap64_ba.c
lib/ext2fs/blkmap64_rb.c
lib/ext2fs/bmap64.h
lib/ext2fs/dirhash.c
lib/ext2fs/ext2_fs.h
lib/ext2fs/ext2fs.h
lib/ext2fs/extent.c
lib/ext2fs/gen_bitmap.c
lib/ext2fs/gen_bitmap64.c
lib/ext2fs/initialize.c
lib/ext2fs/inode.c
lib/ext2fs/nls.h [new file with mode: 0644]
lib/ext2fs/nls_ascii.c [new file with mode: 0644]
lib/ext2fs/nls_utf8-norm.c [new file with mode: 0644]
lib/ext2fs/nls_utf8.c [new file with mode: 0644]
lib/ext2fs/swapfs.c
lib/ext2fs/tst_bitmaps.c
lib/ext2fs/tst_libext2fs.c
lib/ext2fs/tst_super_size.c
lib/ext2fs/unix_io.c
lib/ext2fs/utf8data.h [new file with mode: 0644]
lib/ext2fs/utf8n.h [new file with mode: 0644]
misc/chattr.1.in
misc/chattr.c
misc/e2freefrag.c
misc/e2image.8.in
misc/e2image.c
misc/ext4.5.in
misc/fuse2fs.1.in
misc/fuse2fs.c
misc/mke2fs.8.in
misc/mke2fs.c
misc/mke2fs.conf.5.in
misc/mke2fs.conf.in
misc/tune2fs.8.in
misc/tune2fs.c
po/e2fsprogs.pot
resize/resize2fs.c
scrub/Makefile.in [new file with mode: 0644]
scrub/e2scrub.8.in [new file with mode: 0644]
scrub/e2scrub.conf.in [new file with mode: 0644]
scrub/e2scrub.in [new file with mode: 0644]
scrub/e2scrub.rules.in [new file with mode: 0644]
scrub/e2scrub@.service.in [new file with mode: 0644]
scrub/e2scrub_all.8.in [new file with mode: 0644]
scrub/e2scrub_all.cron.in [new file with mode: 0644]
scrub/e2scrub_all.in [new file with mode: 0644]
scrub/e2scrub_all.service.in [new file with mode: 0644]
scrub/e2scrub_all.timer.in [new file with mode: 0644]
scrub/e2scrub_all_cron.in [new file with mode: 0644]
scrub/e2scrub_fail.in [new file with mode: 0644]
scrub/e2scrub_fail@.service.in [new file with mode: 0644]
scrub/e2scrub_reap.service.in [new file with mode: 0644]
tests/i_zero_super/expect.1 [new file with mode: 0644]
tests/i_zero_super/image.gz [new file with mode: 0644]
tests/i_zero_super/script [new file with mode: 0644]
tests/progs/test_icount.c
tests/progs/test_icount.h
util/Makefile.in
util/mkutf8data.c [new file with mode: 0644]
util/subst.conf.in
util/ucd/README [new file with mode: 0644]
version.h

index 852286a69c5e21e170320239badf7dd6f1ff1703..d24f7ef2cb7cd3330297989712d45f8f031fcb6d 100644 (file)
@@ -32,6 +32,14 @@ man8dir = $(mandir)/man8
 infodir = @infodir@
 datadir = @datadir@
 pkgconfigdir = $(libdir)/pkgconfig
+pkglibdir = $(libdir)/e2fsprogs
+
+HAVE_UDEV = @have_udev@
+UDEV_RULES_DIR = @pkg_udev_rules_dir@
+HAVE_CROND = @have_crond@
+CROND_DIR = @crond_dir@
+HAVE_SYSTEMD = @have_systemd@
+SYSTEMD_SYSTEM_UNIT_DIR = @systemd_system_unit_dir@
 
 @SET_MAKE@
 
@@ -73,21 +81,24 @@ pkgconfigdir = $(libdir)/pkgconfig
 @ifNotGNUmake@ CHECK_CMD=true
 @ifNotGNUmake@ CPPCHECK_CMD=true
 
+SANITIZER_CFLAGS = @lto_cflags@ @ubsan_cflags@ @addrsan_cflags@ @threadsan_cflags@
+SANITIZER_LDFLAGS = @lto_ldflags@ @ubsan_ldflags@ @addrsan_ldflags@ @threadsan_ldflags@
+
 CC = @CC@
 BUILD_CC = @BUILD_CC@
 CFLAGS = @CFLAGS@
 CFLAGS_SHLIB = @CFLAGS_SHLIB@
 CFLAGS_STLIB = @CFLAGS_STLIB@
 CPPFLAGS = @INCLUDES@
-ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(CFLAGS_SHLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-ALL_CFLAGS_STLIB = $(CPPFLAGS) $(CFLAGS_STLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
-LDFLAGS = @LDFLAGS@
-LDFLAGS_SHLIB = @LDFLAGS_SHLIB@
+ALL_CFLAGS = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_SHLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_SHLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+ALL_CFLAGS_STLIB = $(CPPFLAGS) $(SANITIZER_CFLAGS) $(CFLAGS_STLIB) $(CFLAGS_WARN) @DEFS@ $(LOCAL_CFLAGS)
+LDFLAGS = $(SANITIZER_LDFLAGS) @LDFLAGS@
+LDFLAGS_SHLIB = $(SANITIZER_LDFLAGS) @LDFLAGS_SHLIB@
 ALL_LDFLAGS = $(LDFLAGS) @LDFLAG_DYNAMIC@
-LDFLAGS_STATIC = @LDFLAGS_STATIC@
-BUILD_CFLAGS = @BUILD_CFLAGS@
-BUILD_LDFLAGS = @BUILD_LDFLAGS@
+LDFLAGS_STATIC = $(SANITIZER_LDFLAGS) @LDFLAGS_STATIC@
+BUILD_CFLAGS = $(SANITIZER_CFLAGS) @BUILD_CFLAGS@
+BUILD_LDFLAGS = $(SANITIZER_LDFLAGS) @BUILD_LDFLAGS@
 RDYNAMIC = @RDYNAMIC@
 LINK_BUILD_FLAGS = @LINK_BUILD_FLAGS@
 LINK_INSTALL_FLAGS = @LINK_INSTALL_FLAGS@
@@ -171,6 +182,14 @@ DEP_SUBSTITUTE= $(top_builddir)/util/subst $(SUBST_CONF)
 $(top_builddir)/util/subst:
        cd $(top_builddir)/util ; $(MAKE) subst
 
+#
+# Script for generating utf8data.h
+#
+MKUTF8DATA=$(top_builddir)/util/mkutf8data
+
+$(top_builddir)/util/mkutf8data:
+        $(MAKE) -C $(top_builddir)/util mkutf8data
+
 #
 # Script for installing symlinks (for shared libraries)
 #
index 4627314528db3e6c47d911880c44c92a6ccc3384..b951c0174cc3d3f15c3d7803cba8a0fc5a80ebd2 100644 (file)
@@ -13,6 +13,7 @@ INSTALL = @INSTALL@
 @DEBUGFS_CMT@DEBUGFS_DIR= debugfs
 @UUID_CMT@UUID_LIB_SUBDIR= lib/uuid
 @BLKID_CMT@BLKID_LIB_SUBDIR= lib/blkid
+@E2SCRUB_CMT@E2SCRUB_DIR= scrub
 @ALL_CMT@SUPPORT_LIB_SUBDIR= lib/support
 @ALL_CMT@E2P_LIB_SUBDIR= lib/e2p
 @ALL_CMT@EXT2FS_LIB_SUBDIR= lib/ext2fs
@@ -20,7 +21,9 @@ INSTALL = @INSTALL@
 LIB_SUBDIRS=lib/et lib/ss $(E2P_LIB_SUBDIR) $(UUID_LIB_SUBDIR) \
        $(BLKID_LIB_SUBDIR) $(SUPPORT_LIB_SUBDIR) $(EXT2FS_LIB_SUBDIR) intl
 
-PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po
+PROG_SUBDIRS=e2fsck $(DEBUGFS_DIR) misc $(RESIZE_DIR) tests/progs po \
+       $(E2SCRUB_DIR)
+
 SUBDIRS=util $(LIB_SUBDIRS) $(PROG_SUBDIRS) tests
 
 SUBS= util/subst.conf lib/config.h $(top_builddir)/lib/dirpaths.h \
diff --git a/README b/README
index 2cd9016c515c0bfd0c530ba58c6051e90089a4e5..7e800e8179e96939dfcd6859717a3ffd414a1e2d 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-       This is the new version (1.44.6) of the second extended file
+       This is the new version (1.45.0) of the second extended file
 system management programs.
 
        From time to time, I release new versions of e2fsprogs, to fix
index 27d57ed779aa1cb1f690df8f9c87593886c6a0da..3734e10aa4ebe046c585f0084c8acabe9df868e2 120000 (symlink)
@@ -1 +1 @@
-doc/RelNotes/v1.44.6.txt
\ No newline at end of file
+doc/RelNotes/v1.45.0.txt
\ No newline at end of file
index e9890f7501fecfff543101abc890a402841a0fa5..0b91745e260b7108b107c4ea1c1e4d6e10bc0a2d 100644 (file)
@@ -133,3 +133,50 @@ dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' ot
         AC_SUBST(ifGNUmake)
         AC_SUBST(ifNotGNUmake)
 ] )
+
+# AX_CHECK_MOUNT_OPT: an autoconf macro to check for generic filesystem-
+# agnostic 'mount' options. Written by Nicholas Clark. Looks for constants in
+# sys/mount.h to predict whether the 'mount' utility will support a specific
+# mounting option.
+#
+# This macro can be used to check for the presence of 'nodev' (or other mount
+# options), which isn't uniformly implemented in the BSD family at the time of
+# this writing. Tested on FreeBSD, NetBSD, OpenBSD, and Linux.
+#
+# Usage:
+#
+# AX_CHECK_MOUNT_OPT(option)
+#
+# Defines HAVE_MOUNT_$OPTION (in uppercase) if the option exists, and sets
+# ac_cv_mount_$option (in original case) otherwise.
+#
+# Copyright (c) 2018 Nicholas Clark <nicholas.clark@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty or attribution requirement.
+
+AC_DEFUN([AX_CHECK_MOUNT_OPT], [__AX_CHECK_MOUNT_OPT(m4_tolower([$1]),m4_toupper([$1]))])
+AC_DEFUN([__AX_CHECK_MOUNT_OPT],
+[
+    AS_IF([test "x$ac_cv_header_sys_mount_h" = x],
+          [AC_CHECK_HEADERS([sys/mount.h])])
+    AS_IF([test "x$ac_cv_header_sys_mount_h" = xno],
+          [AC_MSG_FAILURE([error: sys/mount.h not present on your system!])])
+    AS_ECHO_N("checking for mount '$1' option... ")
+    AC_TRY_COMPILE(
+        [#include <sys/mount.h>],
+        [void *temp = (void *)(MS_$2); (void) temp;],
+        [AC_DEFINE(HAVE_MOUNT_$2, 1, [Define to 1 if mount supports $1.])
+         AS_VAR_SET(ac_cv_mount_$1, yes)
+         AS_ECHO("yes")],
+        [AC_TRY_COMPILE(
+            [#include <sys/mount.h>],
+            [void *temp = (void *)(MNT_$2); (void) temp;],
+            [AC_DEFINE(HAVE_MOUNT_$2, 1, [Define to 1 if mount supports $1.])
+             AS_VAR_SET(ac_cv_mount_$1, yes)
+             AS_ECHO("yes")],
+            [AS_VAR_SET(ac_cv_mount_$1, no)
+             AS_ECHO("no")]
+        )]
+    )
+])
diff --git a/config/ltmain.sh b/config/ltmain.sh
new file mode 100644 (file)
index 0000000..c12c197
--- /dev/null
@@ -0,0 +1,11249 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
+
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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/>.
+
+
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.6 Debian-2.4.6-9"
+package_revision=2.4.6
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# 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.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES 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/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
+fi
+
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+         export $_G_var
+         _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+         _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
+       fi"
+done
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp       $nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+                  func_path_progs_result=$func_check_prog_result
+                  ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=`cd "$progdir" && pwd`
+     progpath=$progdir/$progname
+     ;;
+  *)
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS=$_G_IFS
+       test -x "$progdir/$progname" && break
+     done
+     IFS=$_G_IFS
+     test -n "$progdir" || progdir=`pwd`
+     progpath=$progdir/$progname
+     ;;
+esac
+
+
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
+
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
+
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
+
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
+
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
+
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
+
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset='\e[0m'
+        tc_bold='\e[1m';   tc_standout='\e[7m'
+        tc_red='\e[31m';   tc_green='\e[32m'
+        tc_blue='\e[34m';  tc_cyan='\e[36m'
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+eval 'func_dirname ()
+{
+    $debug_cmd
+
+    '"$_d"'
+}'
+
+
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+       # list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+       IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
+    fi
+}
+
+
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
+{
+    $debug_cmd
+
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
+
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
+
+# func_normal_abspath PATH
+# ------------------------
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+func_normal_abspath ()
+{
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+               s|/\./|/|g
+               t dotsl
+               s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
+      "")
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
+        ;;
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
+        ;;
+      *)
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+        ;;
+    esac
+
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
+{
+    $debug_cmd
+
+    $opt_quiet || func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
+{
+    $debug_cmd
+
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
+
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
+    :
+}
+
+
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
+func_quote_for_eval ()
+{
+    $debug_cmd
+
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+         _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+       func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \  ]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+         ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+       func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
+      fi
+      shift
+    done
+}
+
+
+# func_quote_for_expand ARG
+# -------------------------
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    $debug_cmd
+
+    case $1 in
+      *[\\\`\"]*)
+       _G_arg=`$ECHO "$1" | $SED \
+           -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        _G_arg=$1 ;;
+    esac
+
+    case $_G_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        _G_arg=\"$_G_arg\"
+        ;;
+    esac
+
+    func_quote_for_expand_result=$_G_arg
+}
+
+
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+       eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    $debug_cmd
+
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    $opt_dry_run || {
+      eval "$_G_user_locale
+           $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+       eval "(exit $_G_status); $_G_fail_exp"
+      fi
+    }
+}
+
+
+# func_tr_sh
+# ----------
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
+}
+
+
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $debug_cmd
+
+    $opt_verbose && func_echo "$*"
+
+    :
+}
+
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
+}
+
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2015-10-07.11; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# 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/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    _G_rc_run_hooks=false
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      if eval $_G_hook '"$@"'; then
+        # store returned options list back into positional
+        # parameters for next 'cmd' execution.
+        eval _G_hook_result=\$${_G_hook}_result
+        eval set dummy "$_G_hook_result"; shift
+        _G_rc_run_hooks=:
+      fi
+    done
+
+    $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, you may remove/edit
+# any options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  In this case you also must return $EXIT_SUCCESS to let the
+# hook's caller know that it should pay attention to
+# '<hooked_function_name>_result'.  Returning $EXIT_FAILURE signalizes that
+# arguments are left untouched by the hook and therefore caller will ignore the
+# result variable.
+#
+# Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#        # No change in '$@' (ignored completely by this hook).  There is
+#        # no need to do the equivalent (but slower) action:
+#        # func_quote_for_eval ${1+"$@"}
+#        # my_options_prep_result=$func_quote_for_eval_result
+#        false
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        args_changed=false
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=:
+#                         args_changed=:
+#                         ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         args_changed=:
+#                         ;;
+#            *)           # Make sure the first unrecognised option "$_G_opt"
+#                         # is added back to "$@", we could need that later
+#                         # if $args_changed is true.
+#                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+#          esac
+#        done
+#
+#        if $args_changed; then
+#          func_quote_for_eval ${1+"$@"}
+#          my_silent_option_result=$func_quote_for_eval_result
+#        fi
+#
+#        $args_changed
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        false
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll also need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options_finish [ARG]...
+# ----------------------------
+# Finishing the option parse loop (call 'func_options' hooks ATM).
+func_options_finish ()
+{
+    $debug_cmd
+
+    _G_func_options_finish_exit=false
+    if func_run_hooks func_options ${1+"$@"}; then
+      func_options_finish_result=$func_run_hooks_result
+      _G_func_options_finish_exit=:
+    fi
+
+    $_G_func_options_finish_exit
+}
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+    $debug_cmd
+
+    _G_rc_options=false
+
+    for my_func in options_prep parse_options validate_options options_finish
+    do
+      if eval func_$my_func '${1+"$@"}'; then
+        eval _G_res_var='$'"func_${my_func}_result"
+        eval set dummy "$_G_res_var" ; shift
+        _G_rc_options=:
+      fi
+    done
+
+    # Save modified positional parameters for caller.  As a top-level
+    # options-parser function we always need to set the 'func_options_result'
+    # variable (regardless the $_G_rc_options value).
+    if $_G_rc_options; then
+      func_options_result=$_G_res_var
+    else
+      func_quote_for_eval ${1+"$@"}
+      func_options_result=$func_quote_for_eval_result
+    fi
+
+    $_G_rc_options
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propagate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned).
+func_hookable func_options_prep
+func_options_prep ()
+{
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    _G_rc_options_prep=false
+    if func_run_hooks func_options_prep ${1+"$@"}; then
+      _G_rc_options_prep=:
+      # save modified positional parameters for caller
+      func_options_prep_result=$func_run_hooks_result
+    fi
+
+    $_G_rc_options_prep
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+    $debug_cmd
+
+    func_parse_options_result=
+
+    _G_rc_parse_options=false
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      if func_run_hooks func_parse_options ${1+"$@"}; then
+        eval set dummy "$func_run_hooks_result"; shift
+        _G_rc_parse_options=:
+      fi
+
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
+
+      _G_match_parse_options=:
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+                     ;;
+
+        --warnings|--warning|-W)
+                      if test $# = 0 && func_missing_arg $_G_opt; then
+                        _G_rc_parse_options=:
+                        break
+                      fi
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+       # Separate optargs to long options (plugins may need this):
+       --*=*)        func_split_equals "$_G_opt"
+                     set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           _G_rc_parse_options=: ; break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift
+                      _G_match_parse_options=false
+                      break
+                      ;;
+      esac
+
+      $_G_match_parse_options && _G_rc_parse_options=:
+    done
+
+
+    if $_G_rc_parse_options; then
+      # save modified positional parameters for caller
+      func_quote_for_eval ${1+"$@"}
+      func_parse_options_result=$func_quote_for_eval_result
+    fi
+
+    $_G_rc_parse_options
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+    $debug_cmd
+
+    _G_rc_validate_options=false
+
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+    if func_run_hooks func_validate_options ${1+"$@"}; then
+      # save modified positional parameters for caller
+      func_validate_options_result=$func_run_hooks_result
+      _G_rc_validate_options=:
+    fi
+
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
+
+    $_G_rc_validate_options
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
+}
+
+
+# func_missing_arg ARGNAME
+# ------------------------
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $debug_cmd
+
+    func_error "Missing argument for '$1'."
+    exit_cmd=exit
+}
+
+
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
+
+
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
+}
+
+
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+       h
+       /^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
+}
+
+
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $debug_cmd
+
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
+
+    exit $?
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
+{
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
+
+
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname $scriptversion Debian-2.4.6-9
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool@gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
+
+
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
+
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
+
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
+
+
+# func_fatal_configuration ARG...
+# -------------------------------
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
+}
+
+
+# func_config
+# -----------
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+
+# func_features
+# -------------
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test yes = "$build_libtool_libs"; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test yes = "$build_old_libs"; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+
+# func_enable_tag TAGNAME
+# -----------------------
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+    # Global variable:
+    tagname=$1
+
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
+
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
+
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
+    *)
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+         taglist="$taglist $tagname"
+
+         # Evaluate the configuration.  Be careful to quote the path
+         # and the sed script, to avoid splitting on whitespace, but
+         # also don't use non-portable quotes within backquotes within
+         # quotes we have to do it in 2 steps:
+         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+         eval "$extractedcf"
+        else
+         func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
+}
+
+
+# func_check_version_match
+# ------------------------
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+        fi
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+      fi
+
+      exit $EXIT_MISMATCH
+    fi
+}
+
+
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
+{
+    $debug_mode
+
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
+
+    nonopt=
+    preserve_args=
+
+    _G_rc_lt_options_prep=:
+
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
+      ;;
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
+    *)
+      _G_rc_lt_options_prep=false
+      ;;
+    esac
+
+    if $_G_rc_lt_options_prep; then
+      # Pass back the list of options.
+      func_quote_for_eval ${1+"$@"}
+      libtool_options_prep_result=$func_quote_for_eval_result
+    fi
+
+    $_G_rc_lt_options_prep
+}
+func_add_hook func_options_prep libtool_options_prep
+
+
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
+{
+    $debug_cmd
+
+    _G_rc_lt_parse_options=false
+
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_match_lt_parse_options=:
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        # An option not handled by this hook function:
+        *)              set dummy "$_G_opt" ${1+"$@"} ; shift
+                        _G_match_lt_parse_options=false
+                        break
+                        ;;
+      esac
+      $_G_match_lt_parse_options && _G_rc_lt_parse_options=:
+    done
+
+    if $_G_rc_lt_parse_options; then
+      # save modified positional parameters for caller
+      func_quote_for_eval ${1+"$@"}
+      libtool_parse_options_result=$func_quote_for_eval_result
+    fi
+
+    $_G_rc_lt_parse_options
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
+    fi
+
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
+    esac
+
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
+
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
+
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
+
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
+      fi
+
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
+
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_validate_options libtool_validate_options
+
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool '.la' library or '.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if 'file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+       for lalib_p_l in 1 2 3 4
+       do
+           read lalib_p_line
+           case $lalib_p_line in
+               \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+           esac
+       done
+       exec 0<&5 5<&-
+    fi
+    test yes = "$lalib_p"
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $debug_cmd
+
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$sp$nl
+      eval cmd=\"$cmd\"
+      IFS=$save_ifs
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# 'FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $debug_cmd
+
+    case $1 in
+    */* | *\\*)        . "$1" ;;
+    *)         . "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case $lt_sysroot:$1 in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result='='$func_stripname_result
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    $debug_cmd
+
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+       func_append_quoted CC_quoted "$arg"
+      done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+       for z in $available_tags; do
+         if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           CC_quoted=
+           for arg in $CC; do
+             # Double-quote args containing other shell metacharacters.
+             func_append_quoted CC_quoted "$arg"
+           done
+           CC_expanded=`func_echo_all $CC`
+           CC_quoted_expanded=`func_echo_all $CC_quoted`
+           case "$@ " in
+           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
+             # The compiler in the base compile command matches
+             # the one in the tagged configuration.
+             # Assume this is the tagged configuration we want.
+             tagname=$z
+             break
+             ;;
+           esac
+         fi
+       done
+       # If $tagname still isn't set, then no tagged configuration
+       # was found and let the user know that the "--tag" command
+       # line option must be used.
+       if test -z "$tagname"; then
+         func_echo "unable to infer tagged configuration"
+         func_fatal_error "specify a tag with '--tag'"
+#      else
+#        func_verbose "using $tagname tagged configuration"
+       fi
+       ;;
+      esac
+    fi
+}
+
+
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
+{
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
+    else
+      write_lobj=none
+    fi
+
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
+    else
+      write_oldobj=none
+    fi
+
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object=$write_lobj
+
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
+
+EOF
+      $MV "${write_libobj}T" "$write_libobj"
+    }
+}
+
+
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
+
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
+
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $debug_cmd
+
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $debug_cmd
+
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $debug_cmd
+
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  '$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result=$1
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $debug_cmd
+
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  '$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result=$3
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $debug_cmd
+
+  case $4 in
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
+
+
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via '$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
+
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $debug_cmd
+
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
+
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $debug_cmd
+
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result=$1
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
+
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
+
+
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_file_result=$1
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_cygpath_result
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via '$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $debug_cmd
+
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $debug_cmd
+
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result=$1
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $debug_cmd
+
+  func_to_host_path_result=$1
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_cygpath_result
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[    ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([      ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
+}
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $debug_cmd
+
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+    pie_flag=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+       # do not "continue".  Instead, add this to base_compile
+       lastarg=$arg
+       arg_mode=normal
+       ;;
+
+      target )
+       libobj=$arg
+       arg_mode=normal
+       continue
+       ;;
+
+      normal )
+       # Accept any command-line options.
+       case $arg in
+       -o)
+         test -n "$libobj" && \
+           func_fatal_error "you cannot specify '-o' more than once"
+         arg_mode=target
+         continue
+         ;;
+
+       -pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+         continue
+         ;;
+
+       -shared | -static | -prefer-pic | -prefer-non-pic)
+         func_append later " $arg"
+         continue
+         ;;
+
+       -no-suppress)
+         suppress_opt=no
+         continue
+         ;;
+
+       -Xcompiler)
+         arg_mode=arg  #  the next one goes into the "base_compile" arg list
+         continue      #  The current "srcfile" will either be retained or
+         ;;            #  replaced later.  I would guess that would be a bug.
+
+       -Wc,*)
+         func_stripname '-Wc,' '' "$arg"
+         args=$func_stripname_result
+         lastarg=
+         save_ifs=$IFS; IFS=,
+         for arg in $args; do
+           IFS=$save_ifs
+           func_append_quoted lastarg "$arg"
+         done
+         IFS=$save_ifs
+         func_stripname ' ' '' "$lastarg"
+         lastarg=$func_stripname_result
+
+         # Add the arguments to base_compile.
+         func_append base_compile " $lastarg"
+         continue
+         ;;
+
+       *)
+         # Accept the current argument as the source file.
+         # The previous "srcfile" becomes the current argument.
+         #
+         lastarg=$srcfile
+         srcfile=$arg
+         ;;
+       esac  #  case $arg
+       ;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      func_append_quoted base_compile "$lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      func_fatal_error "you must specify an argument for -Xcompile"
+      ;;
+    target)
+      func_fatal_error "you must specify a target with '-o'"
+      ;;
+    *)
+      # Get the name of the library object.
+      test -z "$libobj" && {
+       func_basename "$srcfile"
+       libobj=$func_basename_result
+      }
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    case $libobj in
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
+    esac
+
+    case $libobj in
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
+    *)
+      func_fatal_error "cannot determine name of library object from '$libobj'"
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -shared)
+       test yes = "$build_libtool_libs" \
+         || func_fatal_configuration "cannot build a shared library"
+       build_old_libs=no
+       continue
+       ;;
+
+      -static)
+       build_libtool_libs=no
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+      esac
+    done
+
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
+
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
+
+    # Delete any leftover library objects.
+    if test yes = "$build_old_libs"; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
+      pic_mode=default
+      ;;
+    esac
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test yes = "$need_locks"; then
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test warn = "$need_locks"; then
+      if test -f "$lockfile"; then
+       $ECHO "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
+    fi
+
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test yes = "$build_libtool_libs"; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test no != "$pic_mode"; then
+       command="$base_compile $qsrcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $qsrcfile"
+      fi
+
+      func_mkdir_p "$xdir$objdir"
+
+      if test -z "$output_obj"; then
+       # Place PIC objects in $objdir
+       func_append command " -o $lobj"
+      fi
+
+      func_show_eval_locale "$command" \
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+       func_show_eval '$MV "$output_obj" "$lobj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+
+      # Allow error messages only from the first compilation.
+      if test yes = "$suppress_opt"; then
+       suppress_output=' >/dev/null 2>&1'
+      fi
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
+       # Don't build PIC code
+       command="$base_compile $qsrcfile$pie_flag"
+      else
+       command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test yes = "$compiler_c_o"; then
+       func_append command " -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
+
+      if test warn = "$need_locks" &&
+        test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+       $ECHO "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support '-c' and '-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $opt_dry_run || $RM $removelist
+       exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+       func_show_eval '$MV "$output_obj" "$obj"' \
+         'error=$?; $opt_dry_run || $RM $removelist; exit $error'
+      fi
+    fi
+
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
+
+      # Unlock the critical section if it was locked
+      if test no != "$need_locks"; then
+       removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
+
+    exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to '-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the '--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the 'install' or 'cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with '-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in '.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
+
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode '$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try '$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test : = "$opt_help"; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       func_mode_help
+      done
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       echo
+       func_mode_help
+      done
+    } |
+    $SED '1d
+      /^When reporting/,/^Report/{
+       H
+       d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $debug_cmd
+
+    # The first argument is the command name.
+    cmd=$nonopt
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+       || func_fatal_help "'$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "'$lib' is not a valid libtool archive"
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+       func_source "$file"
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && \
+           func_warning "'$file' was not linked with '-export-dynamic'"
+         continue
+       fi
+
+       func_dirname "$file" "" "."
+       dir=$func_dirname_result
+
+       if test -f "$dir/$objdir/$dlname"; then
+         func_append dir "/$objdir"
+       else
+         if test ! -f "$dir/$dlname"; then
+           func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       func_dirname "$file" "" "."
+       dir=$func_dirname_result
+       ;;
+
+      *)
+       func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir=$absdir
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic=$magic
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if func_ltwrapper_script_p "$file"; then
+         func_source "$file"
+         # Transform arg to wrapped name.
+         file=$progdir/$program
+       elif func_ltwrapper_executable_p "$file"; then
+         func_ltwrapper_scriptname "$file"
+         func_source "$func_ltwrapper_scriptname_result"
+         # Transform arg to wrapped name.
+         file=$progdir/$program
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+       echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+             else
+               $lt_unset $lt_var
+             fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd=\$cmd$args
+    fi
+}
+
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $debug_cmd
+
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+       func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+       if func_lalib_unsafe_p "$opt"; then
+         func_append libs " $opt"
+       else
+         func_warning "'$opt' is not a valid libtool archive"
+       fi
+
+      else
+       func_fatal_error "invalid argument '$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+         $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+           > $tmpdir/tmp-la
+         mv -f $tmpdir/tmp-la $lib
+       done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_quiet && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+       $ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+       echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
+       echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+       echo "   - add LIBDIR to the '$runpath_var' environment variable"
+       echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+       libdir=LIBDIR
+       eval flag=\"$hardcode_libdir_flag_spec\"
+
+       $ECHO "   - use the '$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+       $ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+       echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+       solaris2.[6789]|solaris2.1[0-9])
+         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+         echo "pages."
+         ;;
+       *)
+         echo "more information, such as the ld(1) and ld.so(8) manual pages."
+         ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $debug_cmd
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=false
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+       func_append files " $dest"
+       dest=$arg
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=: ;;
+      -f)
+       if $install_cp; then :; else
+         prev=$arg
+       fi
+       ;;
+      -g | -m | -o)
+       prev=$arg
+       ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*)
+       ;;
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         if test X-m = "X$prev" && test -n "$install_override_mode"; then
+           arg2=$install_override_mode
+           no_mode=false
+         fi
+         prev=
+       else
+         dest=$arg
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+       func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+       func_quote_for_eval "$install_override_mode"
+       func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       func_fatal_help "no file or destination specified"
+      else
+       func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir=$func_dirname_result
+      destname=$func_basename_result
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+       func_fatal_help "'$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         func_fatal_help "'$destdir' must be an absolute directory name"
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       func_append staticlibs " $file"
+       ;;
+
+      *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "'$file' is not a valid libtool archive"
+
+       library_names=
+       old_library=
+       relink_command=
+       func_source "$file"
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) func_append current_libdirs " $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) func_append future_libdirs " $libdir" ;;
+         esac
+       fi
+
+       func_dirname "$file" "/" ""
+       dir=$func_dirname_result
+       func_append dir "$objdir"
+
+       if test -n "$relink_command"; then
+         # Determine the prefix the user has applied to our future dir.
+         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+         # Don't allow the user to place us outside of our expected
+         # location b/c this prevents finding dependent libraries that
+         # are installed to the same prefix.
+         # At present, this check doesn't affect windows .dll's that
+         # are installed into $libdir/../bin (currently, that works fine)
+         # but it's something to keep an eye on.
+         test "$inst_prefix_dir" = "$destdir" && \
+           func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
+
+         if test -n "$inst_prefix_dir"; then
+           # Stick the inst_prefix_dir data into the link command.
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+         else
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+         fi
+
+         func_warning "relinking '$file'"
+         func_show_eval "$relink_command" \
+           'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names; shift
+       if test -n "$1"; then
+         realname=$1
+         shift
+
+         srcname=$realname
+         test -n "$relink_command" && srcname=${realname}T
+
+         # Install the shared library and build the symlinks.
+         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+             'exit $?'
+         tstripme=$stripme
+         case $host_os in
+         cygwin* | mingw* | pw32* | cegcc*)
+           case $realname in
+           *.dll.a)
+             tstripme=
+             ;;
+           esac
+           ;;
+         os2*)
+           case $realname in
+           *_dll.a)
+             tstripme=
+             ;;
+           esac
+           ;;
+         esac
+         if test -n "$tstripme" && test -n "$striplib"; then
+           func_show_eval "$striplib $destdir/$realname" 'exit $?'
+         fi
+
+         if test "$#" -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           # Try 'ln -sf' first, because the 'ln' binary might depend on
+           # the symlink we replace!  Solaris /bin/ln does not understand -f,
+           # so we also need to try rm && ln -s.
+           for linkname
+           do
+             test "$linkname" != "$realname" \
+               && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib=$destdir/$realname
+         func_execute_cmds "$postinstall_cmds" 'exit $?'
+       fi
+
+       # Install the pseudo-library for information purposes.
+       func_basename "$file"
+       name=$func_basename_result
+       instname=$dir/${name}i
+       func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile=$destdir/$destname
+       else
+         func_basename "$file"
+         destfile=$func_basename_result
+         destfile=$destdir/$destfile
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         func_lo2o "$destfile"
+         staticdest=$func_lo2o_result
+         ;;
+       *.$objext)
+         staticdest=$destfile
+         destfile=
+         ;;
+       *)
+         func_fatal_help "cannot copy a libtool object to '$destfile'"
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       test -n "$destfile" && \
+         func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+       # Install the old object if enabled.
+       if test yes = "$build_old_libs"; then
+         # Deduce the name of the old-style object file.
+         func_lo2o "$file"
+         staticobj=$func_lo2o_result
+         func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+       fi
+       exit $EXIT_SUCCESS
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile=$destdir/$destname
+       else
+         func_basename "$file"
+         destfile=$func_basename_result
+         destfile=$destdir/$destfile
+       fi
+
+       # If the file is missing, and there is a .exe on the end, strip it
+       # because it is most likely a libtool script we actually want to
+       # install
+       stripped_ext=
+       case $file in
+         *.exe)
+           if test ! -f "$file"; then
+             func_stripname '' '.exe' "$file"
+             file=$func_stripname_result
+             stripped_ext=.exe
+           fi
+           ;;
+       esac
+
+       # Do a test to see if this is really a libtool program.
+       case $host in
+       *cygwin* | *mingw*)
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             wrapper=$func_ltwrapper_scriptname_result
+           else
+             func_stripname '' '.exe' "$file"
+             wrapper=$func_stripname_result
+           fi
+           ;;
+       *)
+           wrapper=$file
+           ;;
+       esac
+       if func_ltwrapper_script_p "$wrapper"; then
+         notinst_deplibs=
+         relink_command=
+
+         func_source "$wrapper"
+
+         # Check the variables that should have been set.
+         test -z "$generated_by_libtool_version" && \
+           func_fatal_error "invalid libtool wrapper script '$wrapper'"
+
+         finalize=:
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             func_source "$lib"
+           fi
+           libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             func_warning "'$lib' has not been installed in '$libdir'"
+             finalize=false
+           fi
+         done
+
+         relink_command=
+         func_source "$wrapper"
+
+         outputname=
+         if test no = "$fast_install" && test -n "$relink_command"; then
+           $opt_dry_run || {
+             if $finalize; then
+               tmpdir=`func_mktempdir`
+               func_basename "$file$stripped_ext"
+               file=$func_basename_result
+               outputname=$tmpdir/$file
+               # Replace the output file specification.
+               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+               $opt_quiet || {
+                 func_quote_for_expand "$relink_command"
+                 eval "func_echo $func_quote_for_expand_result"
+               }
+               if eval "$relink_command"; then :
+                 else
+                 func_error "error: relink '$file' with the above command before installing it"
+                 $opt_dry_run || ${RM}r "$tmpdir"
+                 continue
+               fi
+               file=$outputname
+             else
+               func_warning "cannot relink '$file'"
+             fi
+           }
+         else
+           # Install the binary that we compiled earlier.
+           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyway
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           func_stripname '' '.exe' "$destfile"
+           destfile=$func_stripname_result
+           ;;
+         esac
+         ;;
+       esac
+       func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+       $opt_dry_run || if test -n "$outputname"; then
+         ${RM}r "$tmpdir"
+       fi
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name=$func_basename_result
+
+      # Set up the ranlib parameters.
+      oldlib=$destdir/$name
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run '$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+       my_dlsyms=${my_outputname}S.c
+      else
+       func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+       # Discover the nlist of each of the dlfiles.
+       nlist=$output_objdir/$my_outputname.nm
+
+       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+       # Parse the name list into a source file.
+       func_verbose "creating $output_objdir/$my_dlsyms"
+
+       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined __osf__
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* External symbol declarations for the compiler. */\
+"
+
+       if test yes = "$dlself"; then
+         func_verbose "generating symbol list for '$output'"
+
+         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+         # Add our own program objects to the symbol list.
+         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+         for progfile in $progfiles; do
+           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+           func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -n "$exclude_expsyms"; then
+           $opt_dry_run || {
+             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         if test -n "$export_symbols_regex"; then
+           $opt_dry_run || {
+             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
+         fi
+
+         # Prepare the list of exported symbols
+         if test -z "$export_symbols"; then
+           export_symbols=$output_objdir/$outputname.exp
+           $opt_dry_run || {
+             $RM $export_symbols
+             eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+             case $host in
+             *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+               ;;
+             esac
+           }
+         else
+           $opt_dry_run || {
+             eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+             case $host in
+               *cygwin* | *mingw* | *cegcc* )
+                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                 ;;
+             esac
+           }
+         fi
+       fi
+
+       for dlprefile in $dlprefiles; do
+         func_verbose "extracting global C symbols from '$dlprefile'"
+         func_basename "$dlprefile"
+         name=$func_basename_result
+          case $host in
+           *cygwin* | *mingw* | *cegcc* )
+             # if an import library, we need to obtain dlname
+             if func_win32_import_lib_p "$dlprefile"; then
+               func_tr_sh "$dlprefile"
+               eval "curr_lafile=\$libfile_$func_tr_sh_result"
+               dlprefile_dlbasename=
+               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+                 # Use subshell, to avoid clobbering current variable values
+                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+                 if test -n "$dlprefile_dlname"; then
+                   func_basename "$dlprefile_dlname"
+                   dlprefile_dlbasename=$func_basename_result
+                 else
+                   # no lafile. user explicitly requested -dlpreopen <import library>.
+                   $sharedlib_from_linklib_cmd "$dlprefile"
+                   dlprefile_dlbasename=$sharedlib_from_linklib_result
+                 fi
+               fi
+               $opt_dry_run || {
+                 if test -n "$dlprefile_dlbasename"; then
+                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+                 else
+                   func_warning "Could not compute DLL name from $name"
+                   eval '$ECHO ": $name " >> "$nlist"'
+                 fi
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+               }
+             else # not an import lib
+               $opt_dry_run || {
+                 eval '$ECHO ": $name " >> "$nlist"'
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+               }
+             fi
+           ;;
+           *)
+             $opt_dry_run || {
+               eval '$ECHO ": $name " >> "$nlist"'
+               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+             }
+           ;;
+          esac
+       done
+
+       $opt_dry_run || {
+         # Make sure we have at least an empty file.
+         test -f "$nlist" || : > "$nlist"
+
+         if test -n "$exclude_expsyms"; then
+           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+           $MV "$nlist"T "$nlist"
+         fi
+
+         # Try sorting and uniquifying the output.
+         if $GREP -v "^: " < "$nlist" |
+             if sort -k 3 </dev/null >/dev/null 2>&1; then
+               sort -k 3
+             else
+               sort +2
+             fi |
+             uniq > "$nlist"S; then
+           :
+         else
+           $GREP -v "^: " < "$nlist" > "$nlist"S
+         fi
+
+         if test -f "$nlist"S; then
+           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+         else
+           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+         fi
+
+         func_show_eval '$RM "${nlist}I"'
+         if test -n "$global_symbol_to_import"; then
+           eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+         fi
+
+         echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+         if test -s "$nlist"I; then
+           echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+           $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+           echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+         fi
+         echo >> "$output_objdir/$my_dlsyms" "\
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{ {\"$my_originator\", (void *) 0},"
+
+         if test -s "$nlist"I; then
+           echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+         fi
+
+         case $need_lib_prefix in
+         no)
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         *)
+           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         esac
+         echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+       } # !$opt_dry_run
+
+       pic_flag_for_symtable=
+       case "$compile_command " in
+       *" -static "*) ;;
+       *)
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+         *-*-hpux*)
+           pic_flag_for_symtable=" $pic_flag"  ;;
+         *)
+           $my_pic_p && pic_flag_for_symtable=" $pic_flag"
+           ;;
+         esac
+         ;;
+       esac
+       symtab_cflags=
+       for arg in $LTCFLAGS; do
+         case $arg in
+         -pie | -fpie | -fPIE) ;;
+         *) func_append symtab_cflags " $arg" ;;
+         esac
+       done
+
+       # Now compile the dynamic symbol file.
+       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+       # Clean up the generated files.
+       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
+
+       # Transform the symbol file into the correct name.
+       symfileobj=$output_objdir/${my_outputname}S.$objext
+       case $host in
+       *cygwin* | *mingw* | *cegcc* )
+         if test -f "$output_objdir/$my_outputname.def"; then
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+         else
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         fi
+         ;;
+       *)
+         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         ;;
+       esac
+       ;;
+      *)
+       func_fatal_error "unknown suffix for '$my_dlsyms'"
+       ;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $debug_cmd
+
+  win32_libid_type=unknown
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      case $nm_interface in
+      "MS dumpbin")
+       if func_cygming_ms_implib_p "$1" ||
+          func_cygming_gnu_implib_p "$1"
+       then
+         win32_nmres=import
+       else
+         win32_nmres=
+       fi
+       ;;
+      *)
+       func_to_tool_file "$1" func_convert_file_msys_to_w32
+       win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+         $SED -n -e '
+           1,100{
+               / I /{
+                   s|.*|import|
+                   p
+                   q
+               }
+           }'`
+       ;;
+      esac
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $debug_cmd
+
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $debug_cmd
+
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[         ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1"; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+                  'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test yes = "$lock_old_archive_extraction"; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $debug_cmd
+
+    my_gentop=$1; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib=$func_basename_result
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         func_arith $extracted_serial + 1
+         extracted_serial=$func_arith_result
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+       func_verbose "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       $opt_dry_run || {
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         func_basename "$darwin_archive"
+         darwin_base_archive=$func_basename_result
+         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+         if test -n "$darwin_arches"; then
+           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches; do
+             func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+             $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+             cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+             func_extract_an_archive "`pwd`" "$darwin_base_archive"
+             cd "$darwin_curdir"
+             $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
+           done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+             $LIPO -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           $RM -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           func_extract_an_archive "$my_xdir" "$my_xabs"
+         fi # $darwin_arches
+       } # !$opt_dry_run
+       ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+       ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result=$my_oldobjs
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory where it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+       func_emit_wrapper_arg1=${1-no}
+
+       $ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ that is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options that match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
+
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test yes = "$fast_install"; then
+         $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+         $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       \$ECHO \"\$relink_command_output\" >&2
+       $RM \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+       else
+         $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       $ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # fixup the dll searchpath if we need to.
+       #
+       # Fix the DLL searchpath if we need to.  Do this before prepending
+       # to shlibpath, because on Windows, both are PATH and uninstalled
+       # libraries must come first.
+       if test -n "$dllsearchpath"; then
+         $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       # Export our shlibpath_var if we have one.
+       if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       $ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+       cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+           cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
+/* declarations of non-ANSI functions */
+#if defined __MINGW32__
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined __CYGWIN__
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined other_platform || defined ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined _MSC_VER
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+#elif defined __MINGW32__
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined __CYGWIN__
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined other platforms ... */
+#endif
+
+#if defined PATH_MAX
+# define LT_PATHMAX PATH_MAX
+#elif defined MAXPATHLEN
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free (stale); stale = 0; } \
+} while (0)
+
+#if defined LT_DEBUGWRAPPER
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+           cat <<EOF
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+           if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+             cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+             cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+           fi
+
+           if test yes = "$fast_install"; then
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+           else
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+           fi
+
+
+           cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  int rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, (size_t) argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (STREQ (argv[i], dumpscript_opt))
+       {
+EOF
+           case $host in
+             *mingw* | *cygwin* )
+               # make stdout use "unix" line endings
+               echo "          setmode(1,_O_BINARY);"
+               ;;
+             esac
+
+           cat <<"EOF"
+         lt_dump_script (stdout);
+         return 0;
+       }
+      if (STREQ (argv[i], debug_opt))
+       {
+          lt_debug = 1;
+          continue;
+       }
+      if (STREQ (argv[i], ltwrapper_option_prefix))
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+                   "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+           cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+EOF
+           cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+                 tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+                 actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(main) libtool target name: %s\n",
+                 target_name);
+EOF
+
+           cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+           cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+           case $host_os in
+             mingw*)
+           cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+       *p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+       *p = '/';
+      }
+  }
+EOF
+           ;;
+           esac
+
+           cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+                 nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+                     i, nonnull (newargz[i]));
+    }
+
+EOF
+
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+                     "(main) failed to launch target \"%s\": %s\n",
+                     lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+               ;;
+             *)
+               cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+               ;;
+           esac
+
+           cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+                         string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  size_t tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+       return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+       {
+         concat_name = xstrdup (wrapper);
+         if (check_executable (concat_name))
+           return concat_name;
+         XFREE (concat_name);
+       }
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+       has_slash = 1;
+       break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+       {
+         for (p = path; *p; p = p_next)
+           {
+             const char *q;
+             size_t p_len;
+             for (q = p; *q; q++)
+               if (IS_PATH_SEPARATOR (*q))
+                 break;
+             p_len = (size_t) (q - p);
+             p_next = (*q == '\0' ? q : q + 1);
+             if (p_len == 0)
+               {
+                 /* empty path: current directory */
+                 if (getcwd (tmp, LT_PATHMAX) == NULL)
+                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+                 tmp_len = strlen (tmp);
+                 concat_name =
+                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, tmp, tmp_len);
+                 concat_name[tmp_len] = '/';
+                 strcpy (concat_name + tmp_len + 1, wrapper);
+               }
+             else
+               {
+                 concat_name =
+                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, p, p_len);
+                 concat_name[p_len] = '/';
+                 strcpy (concat_name + p_len + 1, wrapper);
+               }
+             if (check_executable (concat_name))
+               return concat_name;
+             XFREE (concat_name);
+           }
+       }
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+                     "checking path component for symlinks: %s\n",
+                     tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+       {
+         if (S_ISLNK (s.st_mode) != 0)
+           {
+             has_symlinks = 1;
+             break;
+           }
+
+         /* search backwards for last DIR_SEPARATOR */
+         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           p--;
+         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           {
+             /* no more DIR_SEPARATORS left */
+             break;
+           }
+         *p = '\0';
+       }
+      else
+       {
+         lt_fatal (__FILE__, __LINE__,
+                   "error accessing file \"%s\": %s",
+                   tmp_pathspec, nonnull (strerror (errno)));
+       }
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+               "could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (STREQ (str, pat))
+       *str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+              int line, const char *mode,
+              const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[--len] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+       new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+       {
+         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+         size_t length;
+         unsigned int backslashes;
+         const char *s;
+         char *quoted_string;
+         char *p;
+
+         length = 0;
+         backslashes = 0;
+         if (quote_around)
+           length++;
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               length += backslashes + 1;
+             length++;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           length += backslashes + 1;
+
+         quoted_string = XMALLOC (char, length + 1);
+
+         p = quoted_string;
+         backslashes = 0;
+         if (quote_around)
+           *p++ = '"';
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               {
+                 unsigned int j;
+                 for (j = backslashes + 1; j > 0; j--)
+                   *p++ = '\\';
+               }
+             *p++ = c;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           {
+             unsigned int j;
+             for (j = backslashes; j > 0; j--)
+               *p++ = '\\';
+             *p++ = '"';
+           }
+         *p = '\0';
+
+         new_argv[i] = quoted_string;
+       }
+      else
+       new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+               ;;
+           esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+           func_emit_wrapper yes |
+             $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $debug_cmd
+
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $debug_cmd
+
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # what system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll that has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
+
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    os2dllname=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=false
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module=$wl-single_module
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+       test yes != "$build_libtool_libs" \
+         && func_fatal_configuration "cannot build a shared library"
+       build_old_libs=no
+       break
+       ;;
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
+         if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
+           func_warning "complete static linking is impossible in this configuration"
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       -static)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=built
+         ;;
+       -static-libtool-libs)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       esac
+       build_libtool_libs=no
+       build_old_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg=$1
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         func_append compile_command " @OUTPUT@"
+         func_append finalize_command " @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       bindir)
+         bindir=$arg
+         prev=
+         continue
+         ;;
+       dlfiles|dlprefiles)
+         $preload || {
+           # Add the symbol object into the linking commands.
+           func_append compile_command " @SYMFILE@"
+           func_append finalize_command " @SYMFILE@"
+           preload=:
+         }
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test no = "$dlself"; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test dlprefiles = "$prev"; then
+             dlself=yes
+           elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test dlfiles = "$prev"; then
+             func_append dlfiles " $arg"
+           else
+             func_append dlprefiles " $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols=$arg
+         test -f "$arg" \
+           || func_fatal_error "symbol file '$arg' does not exist"
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex=$arg
+         prev=
+         continue
+         ;;
+       framework)
+         case $host in
+           *-*-darwin*)
+             case "$deplibs " in
+               *" $qarg.ltframework "*) ;;
+               *) func_append deplibs " $qarg.ltframework" # this is fixed later
+                  ;;
+             esac
+             ;;
+         esac
+         prev=
+         continue
+         ;;
+       inst_prefix)
+         inst_prefix_dir=$arg
+         prev=
+         continue
+         ;;
+       mllvm)
+         # Clang does not use LLVM to link, so we can simply discard any
+         # '-mllvm $arg' options when doing the link step.
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat "$save_arg"`
+           do
+#            func_append moreargs " $fil"
+             arg=$fil
+             # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if func_lalib_unsafe_p "$arg"; then
+               pic_object=
+               non_pic_object=
+
+               # Read the .lo file
+               func_source "$arg"
+
+               if test -z "$pic_object" ||
+                  test -z "$non_pic_object" ||
+                  test none = "$pic_object" &&
+                  test none = "$non_pic_object"; then
+                 func_fatal_error "cannot find name of object for '$arg'"
+               fi
+
+               # Extract subdirectory from the argument.
+               func_dirname "$arg" "/" ""
+               xdir=$func_dirname_result
+
+               if test none != "$pic_object"; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object=$xdir$pic_object
+
+                 if test dlfiles = "$prev"; then
+                   if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+                     func_append dlfiles " $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test dlprefiles = "$prev"; then
+                   # Preload the old-style object.
+                   func_append dlprefiles " $pic_object"
+                   prev=
+                 fi
+
+                 # A PIC object.
+                 func_append libobjs " $pic_object"
+                 arg=$pic_object
+               fi
+
+               # Non-PIC object.
+               if test none != "$non_pic_object"; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object=$xdir$non_pic_object
+
+                 # A standard non-PIC object
+                 func_append non_pic_objects " $non_pic_object"
+                 if test -z "$pic_object" || test none = "$pic_object"; then
+                   arg=$non_pic_object
+                 fi
+               else
+                 # If the PIC object exists, use it instead.
+                 # $xdir was prepended to $pic_object above.
+                 non_pic_object=$pic_object
+                 func_append non_pic_objects " $non_pic_object"
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if $opt_dry_run; then
+                 # Extract subdirectory from the argument.
+                 func_dirname "$arg" "/" ""
+                 xdir=$func_dirname_result
+
+                 func_lo2o "$arg"
+                 pic_object=$xdir$objdir/$func_lo2o_result
+                 non_pic_object=$xdir$func_lo2o_result
+                 func_append libobjs " $pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               else
+                 func_fatal_error "'$arg' is not a valid libtool object"
+               fi
+             fi
+           done
+         else
+           func_fatal_error "link input file '$arg' does not exist"
+         fi
+         arg=$save_arg
+         prev=
+         continue
+         ;;
+       os2dllname)
+         os2dllname=$arg
+         prev=
+         continue
+         ;;
+       precious_regex)
+         precious_files_regex=$arg
+         prev=
+         continue
+         ;;
+       release)
+         release=-$arg
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           func_fatal_error "only absolute run-paths are allowed"
+           ;;
+         esac
+         if test rpath = "$prev"; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) func_append rpath " $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) func_append xrpath " $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       shrext)
+         shrext_cmds=$arg
+         prev=
+         continue
+         ;;
+       weak)
+         func_append weak_libs " $arg"
+         prev=
+         continue
+         ;;
+       xcclinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xcompiler)
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xlinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $wl$qarg"
+         prev=
+         func_append compile_command " $wl$qarg"
+         func_append finalize_command " $wl$qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
+
+      prevarg=$arg
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         # See comment for -static flag below, for more details.
+         func_append compile_command " $link_static_flag"
+         func_append finalize_command " $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       func_fatal_error "'-allow-undefined' must not be used because it is the default"
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -bindir)
+       prev=bindir
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         func_fatal_error "more than one -exported-symbols argument is not allowed"
+       fi
+       if test X-export-symbols = "X$arg"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      -framework)
+       prev=framework
+       continue
+       ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         func_append compile_command " $arg"
+         func_append finalize_command " $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       func_stripname "-L" '' "$arg"
+       if test -z "$func_stripname_result"; then
+         if test "$#" -gt 0; then
+           func_fatal_error "require no space between '-L' and '$1'"
+         else
+           func_fatal_error "need path for '-L' option"
+         fi
+       fi
+       func_resolve_sysroot "$func_stripname_result"
+       dir=$func_resolve_sysroot_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         test -z "$absdir" && \
+           func_fatal_error "cannot determine absolute directory name of '$dir'"
+         dir=$absdir
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "* | *" $arg "*)
+         # Will only happen for absolute or sysroot arguments
+         ;;
+       *)
+         # Preserve sysroot, but never include relative directories
+         case $dir in
+           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+           *) func_append deplibs " -L$dir" ;;
+         esac
+         func_append lib_search_path " $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         ::) dllsearchpath=$dir;;
+         *) func_append dllsearchpath ":$dir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test X-lc = "X$arg" || test X-lm = "X$arg"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test X-lc = "X$arg" && continue
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+           # Do not include libc due to us having libc/libc_r.
+           test X-lc = "X$arg" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           func_append deplibs " System.ltframework"
+           continue
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           test X-lc = "X$arg" && continue
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           test X-lc = "X$arg" && continue
+           ;;
+         esac
+       elif test X-lc_r = "X$arg"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
+       fi
+       func_append deplibs " $arg"
+       continue
+       ;;
+
+      -mllvm)
+       prev=mllvm
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       prev=xcompiler
+       continue
+       ;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       case "$new_inherited_linker_flags " in
+           *" $arg "*) ;;
+           * ) func_append new_inherited_linker_flags " $arg" ;;
+       esac
+       continue
+       ;;
+
+      -multi_module)
+       single_module=$wl-multi_module
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # and Darwin in order for the loader to find any dlls it needs.
+         func_warning "'-no-install' is ignored for $host"
+         func_warning "assuming '-no-fast-install' instead"
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -os2dllname)
+       prev=os2dllname
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       func_stripname '-R' '' "$arg"
+       dir=$func_stripname_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       =*)
+         func_stripname '=' '' "$dir"
+         dir=$lt_sysroot$func_stripname_result
+         ;;
+       *)
+         func_fatal_error "only absolute run-paths are allowed"
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) func_append xrpath " $dir" ;;
+       esac
+       continue
+       ;;
+
+      -shared)
+       # The effects of -shared are defined in a previous loop.
+       continue
+       ;;
+
+      -shrext)
+       prev=shrext
+       continue
+       ;;
+
+      -static | -static-libtool-libs)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
+
+      -weak)
+        prev=weak
+       continue
+       ;;
+
+      -Wc,*)
+       func_stripname '-Wc,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs=$IFS; IFS=,
+       for flag in $args; do
+         IFS=$save_ifs
+          func_quote_for_eval "$flag"
+         func_append arg " $func_quote_for_eval_result"
+         func_append compiler_flags " $func_quote_for_eval_result"
+       done
+       IFS=$save_ifs
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Wl,*)
+       func_stripname '-Wl,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs=$IFS; IFS=,
+       for flag in $args; do
+         IFS=$save_ifs
+          func_quote_for_eval "$flag"
+         func_append arg " $wl$func_quote_for_eval_result"
+         func_append compiler_flags " $wl$func_quote_for_eval_result"
+         func_append linker_flags " $func_quote_for_eval_result"
+       done
+       IFS=$save_ifs
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # -msg_* for osf cc
+      -msg_*)
+       func_quote_for_eval "$arg"
+       arg=$func_quote_for_eval_result
+       ;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
+      # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
+      # -fuse-ld=*           Linker select flags for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*|-fuse-ld=*)
+        func_quote_for_eval "$arg"
+       arg=$func_quote_for_eval_result
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+         compiler_flags="$compiler_flags $arg"
+         func_append compile_command " $arg"
+         func_append finalize_command " $arg"
+         case $arg in
+         -Zlinker | -Zstack)
+           prev=xcompiler
+           ;;
+         esac
+         continue
+        else
+         # Otherwise treat like 'Some other compiler flag' below
+         func_quote_for_eval "$arg"
+         arg=$func_quote_for_eval_result
+        fi
+       ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+       arg=$func_quote_for_eval_result
+       ;;
+
+      *.$objext)
+       # A standard object.
+       func_append objs " $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if func_lalib_unsafe_p "$arg"; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         func_source "$arg"
+
+         if test -z "$pic_object" ||
+            test -z "$non_pic_object" ||
+            test none = "$pic_object" &&
+            test none = "$non_pic_object"; then
+           func_fatal_error "cannot find name of object for '$arg'"
+         fi
+
+         # Extract subdirectory from the argument.
+         func_dirname "$arg" "/" ""
+         xdir=$func_dirname_result
+
+         test none = "$pic_object" || {
+           # Prepend the subdirectory the object is found in.
+           pic_object=$xdir$pic_object
+
+           if test dlfiles = "$prev"; then
+             if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+               func_append dlfiles " $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test dlprefiles = "$prev"; then
+             # Preload the old-style object.
+             func_append dlprefiles " $pic_object"
+             prev=
+           fi
+
+           # A PIC object.
+           func_append libobjs " $pic_object"
+           arg=$pic_object
+         }
+
+         # Non-PIC object.
+         if test none != "$non_pic_object"; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object=$xdir$non_pic_object
+
+           # A standard non-PIC object
+           func_append non_pic_objects " $non_pic_object"
+           if test -z "$pic_object" || test none = "$pic_object"; then
+             arg=$non_pic_object
+           fi
+         else
+           # If the PIC object exists, use it instead.
+           # $xdir was prepended to $pic_object above.
+           non_pic_object=$pic_object
+           func_append non_pic_objects " $non_pic_object"
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if $opt_dry_run; then
+           # Extract subdirectory from the argument.
+           func_dirname "$arg" "/" ""
+           xdir=$func_dirname_result
+
+           func_lo2o "$arg"
+           pic_object=$xdir$objdir/$func_lo2o_result
+           non_pic_object=$xdir$func_lo2o_result
+           func_append libobjs " $pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         else
+           func_fatal_error "'$arg' is not a valid libtool object"
+         fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       func_append deplibs " $arg"
+       func_append old_deplibs " $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       func_resolve_sysroot "$arg"
+       if test dlfiles = "$prev"; then
+         # This library was specified with -dlopen.
+         func_append dlfiles " $func_resolve_sysroot_result"
+         prev=
+       elif test dlprefiles = "$prev"; then
+         # The library was specified with -dlpreopen.
+         func_append dlprefiles " $func_resolve_sysroot_result"
+         prev=
+       else
+         func_append deplibs " $func_resolve_sysroot_result"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       func_quote_for_eval "$arg"
+       arg=$func_quote_for_eval_result
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
+
+    test -n "$prev" && \
+      func_fatal_help "the '$prevarg' option requires an argument"
+
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
+    func_dirname "$output" "/" ""
+    output_objdir=$func_dirname_result$objdir
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
+
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps; then
+       case "$libs " in
+       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+       esac
+      fi
+      func_append libs " $deplib"
+    done
+
+    if test lib = "$linkmode"; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+         esac
+         func_append pre_post_deps " $pre_post_dep"
+       done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
+    case $linkmode in
+    lib)
+       passes="conv dlpreopen link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=false
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test lib,link = "$linkmode,$pass"; then
+       ## FIXME: Find the place where the list is rebuilt in the wrong
+       ##        order, and fix it there properly
+        tmp_deplibs=
+       for deplib in $deplibs; do
+         tmp_deplibs="$deplib $tmp_deplibs"
+       done
+       deplibs=$tmp_deplibs
+      fi
+
+      if test lib,link = "$linkmode,$pass" ||
+        test prog,scan = "$linkmode,$pass"; then
+       libs=$deplibs
+       deplibs=
+      fi
+      if test prog = "$linkmode"; then
+       case $pass in
+       dlopen) libs=$dlfiles ;;
+       dlpreopen) libs=$dlprefiles ;;
+       link)
+         libs="$deplibs %DEPLIBS%"
+         test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+         ;;
+       esac
+      fi
+      if test lib,dlpreopen = "$linkmode,$pass"; then
+       # Collect and forward deplibs of preopened libtool libs
+       for lib in $dlprefiles; do
+         # Ignore non-libtool-libs
+         dependency_libs=
+         func_resolve_sysroot "$lib"
+         case $lib in
+         *.la) func_source "$func_resolve_sysroot_result" ;;
+         esac
+
+         # Collect preopened libtool deplibs, except any this library
+         # has declared as weak libs
+         for deplib in $dependency_libs; do
+           func_basename "$deplib"
+            deplib_base=$func_basename_result
+           case " $weak_libs " in
+           *" $deplib_base "*) ;;
+           *) func_append deplibs " $deplib" ;;
+           esac
+         done
+       done
+       libs=$dlprefiles
+      fi
+      if test dlopen = "$pass"; then
+       # Collect dlpreopened libraries
+       save_deplibs=$deplibs
+       deplibs=
+      fi
+
+      for deplib in $libs; do
+       lib=
+       found=false
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+         if test prog,link = "$linkmode,$pass"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           func_append compiler_flags " $deplib"
+           if test lib = "$linkmode"; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -l*)
+         if test lib != "$linkmode" && test prog != "$linkmode"; then
+           func_warning "'-l' is ignored for archives/objects"
+           continue
+         fi
+         func_stripname '-l' '' "$deplib"
+         name=$func_stripname_result
+         if test lib = "$linkmode"; then
+           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+         else
+           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+         fi
+         for searchdir in $searchdirs; do
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib=$searchdir/lib$name$search_ext
+             if test -f "$lib"; then
+               if test .la = "$search_ext"; then
+                 found=:
+               else
+                 found=false
+               fi
+               break 2
+             fi
+           done
+         done
+         if $found; then
+           # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if func_lalib_p "$lib"; then
+                 library_names=
+                 old_library=
+                 func_source "$lib"
+                 for l in $old_library $library_names; do
+                   ll=$l
+                 done
+                 if test "X$ll" = "X$old_library"; then # only static version available
+                   found=false
+                   func_dirname "$lib" "" "."
+                   ladir=$func_dirname_result
+                   lib=$ladir/$old_library
+                   if test prog,link = "$linkmode,$pass"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         else
+           # deplib doesn't seem to be a libtool library
+           if test prog,link = "$linkmode,$pass"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         fi
+         ;; # -l
+       *.ltframework)
+         if test prog,link = "$linkmode,$pass"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+           if test lib = "$linkmode"; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test conv = "$pass" && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         prog)
+           if test conv = "$pass"; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test scan = "$pass"; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         *)
+           func_warning "'-L' is ignored for archives/objects"
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test link = "$pass"; then
+           func_stripname '-R' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           dir=$func_resolve_sysroot_result
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) func_append xrpath " $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la)
+         func_resolve_sysroot "$deplib"
+         lib=$func_resolve_sysroot_result
+         ;;
+       *.$libext)
+         if test conv = "$pass"; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           # Linking convenience modules into shared libraries is allowed,
+           # but linking other static libraries is non-portable.
+           case " $dlpreconveniencelibs " in
+           *" $deplib "*) ;;
+           *)
+             valid_a_lib=false
+             case $deplibs_check_method in
+               match_pattern*)
+                 set dummy $deplibs_check_method; shift
+                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                   valid_a_lib=:
+                 fi
+               ;;
+               pass_all)
+                 valid_a_lib=:
+               ;;
+             esac
+             if $valid_a_lib; then
+               echo
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
+             else
+               echo
+               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because the file extensions .$libext of this argument makes me believe"
+               echo "*** that it is just a static archive that I should not use here."
+             fi
+             ;;
+           esac
+           continue
+           ;;
+         prog)
+           if test link != "$pass"; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test conv = "$pass"; then
+           deplibs="$deplib $deplibs"
+         elif test prog = "$linkmode"; then
+           if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             func_append newdlprefiles " $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             func_append newdlfiles " $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=:
+         continue
+         ;;
+       esac # case $deplib
+
+       $found || test -f "$lib" \
+         || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$lib" \
+         || func_fatal_error "'$lib' is not a valid libtool archive"
+
+       func_dirname "$lib" "" "."
+       ladir=$func_dirname_result
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       inherited_linker_flags=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+       avoidtemprpath=
+
+
+       # Read the .la file
+       func_source "$lib"
+
+       # Convert "-framework foo" to "foo.ltframework"
+       if test -n "$inherited_linker_flags"; then
+         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+           case " $new_inherited_linker_flags " in
+             *" $tmp_inherited_linker_flag "*) ;;
+             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+           esac
+         done
+       fi
+       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       if test lib,link = "$linkmode,$pass" ||
+          test prog,scan = "$linkmode,$pass" ||
+          { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+         test -n "$dlopen" && func_append dlfiles " $dlopen"
+         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+       fi
+
+       if test conv = "$pass"; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             func_fatal_error "cannot find name of link library for '$lib'"
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           func_append convenience " $ladir/$objdir/$old_library"
+           func_append old_convenience " $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+             if $opt_preserve_dup_deps; then
+               case "$tmp_libs " in
+               *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+               esac
+             fi
+             func_append tmp_libs " $deplib"
+           done
+         elif test prog != "$linkmode" && test lib != "$linkmode"; then
+           func_fatal_error "'$lib' is not a convenience library"
+         fi
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       if test -n "$old_library" &&
+          { test yes = "$prefer_static_libs" ||
+            test built,no = "$prefer_static_libs,$installed"; }; then
+         linklib=$old_library
+       else
+         for l in $old_library $library_names; do
+           linklib=$l
+         done
+       fi
+       if test -z "$linklib"; then
+         func_fatal_error "cannot find name of link library for '$lib'"
+       fi
+
+       # This library was specified with -dlopen.
+       if test dlopen = "$pass"; then
+         test -z "$libdir" \
+           && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
+         if test -z "$dlname" ||
+            test yes != "$dlopen_support" ||
+            test no = "$build_libtool_libs"
+         then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           func_append dlprefiles " $lib $dependency_libs"
+         else
+           func_append newdlfiles " $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           func_warning "cannot determine absolute directory name of '$ladir'"
+           func_warning "passing it literally to the linker, although it might fail"
+           abs_ladir=$ladir
+         fi
+         ;;
+       esac
+       func_basename "$lib"
+       laname=$func_basename_result
+
+       # Find the relevant object directory and library name.
+       if test yes = "$installed"; then
+         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           func_warning "library '$lib' was moved."
+           dir=$ladir
+           absdir=$abs_ladir
+           libdir=$abs_ladir
+         else
+           dir=$lt_sysroot$libdir
+           absdir=$lt_sysroot$libdir
+         fi
+         test yes = "$hardcode_automatic" && avoidtemprpath=yes
+       else
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir=$ladir
+           absdir=$abs_ladir
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         else
+           dir=$ladir/$objdir
+           absdir=$abs_ladir/$objdir
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         fi
+       fi # $installed = yes
+       func_stripname 'lib' '.la' "$laname"
+       name=$func_stripname_result
+
+       # This library was specified with -dlpreopen.
+       if test dlpreopen = "$pass"; then
+         if test -z "$libdir" && test prog = "$linkmode"; then
+           func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
+         fi
+         case $host in
+           # special handling for platforms with PE-DLLs.
+           *cygwin* | *mingw* | *cegcc* )
+             # Linker will automatically link against shared library if both
+             # static and shared are present.  Therefore, ensure we extract
+             # symbols from the import library if a shared library is present
+             # (otherwise, the dlopen module name will be incorrect).  We do
+             # this by putting the import library name into $newdlprefiles.
+             # We recover the dlopen module name by 'saving' the la file
+             # name in a special purpose variable, and (later) extracting the
+             # dlname from the la file.
+             if test -n "$dlname"; then
+               func_tr_sh "$dir/$linklib"
+               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+               func_append newdlprefiles " $dir/$linklib"
+             else
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             fi
+           ;;
+           * )
+             # Prefer using a static library (so that no silly _DYNAMIC symbols
+             # are required to link).
+             if test -n "$old_library"; then
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             # Otherwise, use the dlname, so that lt_dlopen finds it.
+             elif test -n "$dlname"; then
+               func_append newdlprefiles " $dir/$dlname"
+             else
+               func_append newdlprefiles " $dir/$linklib"
+             fi
+           ;;
+         esac
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test lib = "$linkmode"; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test prog,link = "$linkmode,$pass"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+
+       if test prog = "$linkmode" && test link != "$pass"; then
+         func_append newlib_search_path " $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=false
+         if test no != "$link_all_deplibs" || test -z "$library_names" ||
+            test no = "$build_libtool_libs"; then
+           linkalldeplibs=:
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) func_stripname '-L' '' "$deplib"
+                func_resolve_sysroot "$func_stripname_result"
+                func_append newlib_search_path " $func_resolve_sysroot_result"
+                ;;
+           esac
+           # Need to link against all dependency_libs?
+           if $linkalldeplibs; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if $opt_preserve_dup_deps; then
+             case "$tmp_libs " in
+             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+             esac
+           fi
+           func_append tmp_libs " $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test prog,link = "$linkmode,$pass"; then
+         if test -n "$library_names" &&
+            { { test no = "$prefer_static_libs" ||
+                test built,yes = "$prefer_static_libs,$installed"; } ||
+              test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
+             # Make sure the rpath contains only unique directories.
+             case $temp_rpath: in
+             *"$absdir:"*) ;;
+             *) func_append temp_rpath "$absdir:" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if $alldeplibs &&
+            { test pass_all = "$deplibs_check_method" ||
+              { test yes = "$build_libtool_libs" &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       use_static_libs=$prefer_static_libs
+       if test built = "$use_static_libs" && test yes = "$installed"; then
+         use_static_libs=no
+       fi
+       if test -n "$library_names" &&
+          { test no = "$use_static_libs" || test -z "$old_library"; }; then
+         case $host in
+         *cygwin* | *mingw* | *cegcc* | *os2*)
+             # No point in relinking DLLs because paths are not encoded
+             func_append notinst_deplibs " $lib"
+             need_relink=no
+           ;;
+         *)
+           if test no = "$installed"; then
+             func_append notinst_deplibs " $lib"
+             need_relink=yes
+           fi
+           ;;
+         esac
+         # This is a shared library
+
+         # Warn about portability, can't link against -module's on some
+         # systems (darwin).  Don't bleat about dlopened modules though!
+         dlopenmodule=
+         for dlpremoduletest in $dlprefiles; do
+           if test "X$dlpremoduletest" = "X$lib"; then
+             dlopenmodule=$dlpremoduletest
+             break
+           fi
+         done
+         if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+           echo
+           if test prog = "$linkmode"; then
+             $ECHO "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $ECHO "*** $linklib is not portable!"
+         fi
+         if test lib = "$linkmode" &&
+            test yes = "$hardcode_into_libs"; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           shift
+           realname=$1
+           shift
+           libname=`eval "\\$ECHO \"$libname_spec\""`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname=$dlname
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw* | *cegcc* | *os2*)
+               func_arith $current - $age
+               major=$func_arith_result
+               versuffix=-$major
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname=$realname
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot=$soname
+           func_basename "$soroot"
+           soname=$func_basename_result
+           func_stripname 'lib' '.dll' "$soname"
+           newlib=libimp-$func_stripname_result.a
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             func_verbose "extracting exported symbol list from '$soname'"
+             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             func_verbose "generating import library for '$soname'"
+             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test prog = "$linkmode" || test relink != "$opt_mode"; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test no = "$hardcode_direct"; then
+               add=$dir/$linklib
+               case $host in
+                 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+                 *-*-sysv4*uw2*) add_dir=-L$dir ;;
+                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+                   *-*-unixware7*) add_dir=-L$dir ;;
+                 *-*-darwin* )
+                   # if the lib is a (non-dlopened) module then we cannot
+                   # link against it, someone is ignoring the earlier warnings
+                   if /usr/bin/file -L $add 2> /dev/null |
+                        $GREP ": [^:]* bundle" >/dev/null; then
+                     if test "X$dlopenmodule" != "X$lib"; then
+                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+                       if test -z "$old_library"; then
+                         echo
+                         echo "*** And there doesn't seem to be a static archive available"
+                         echo "*** The link will probably fail, sorry"
+                       else
+                         add=$dir/$old_library
+                       fi
+                     elif test -n "$old_library"; then
+                       add=$dir/$old_library
+                     fi
+                   fi
+               esac
+             elif test no = "$hardcode_minus_L"; then
+               case $host in
+               *-*-sunos*) add_shlibpath=$dir ;;
+               esac
+               add_dir=-L$dir
+               add=-l$name
+             elif test no = "$hardcode_shlibpath_var"; then
+               add_shlibpath=$dir
+               add=-l$name
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test yes = "$hardcode_direct" &&
+                test no = "$hardcode_direct_absolute"; then
+               add=$dir/$linklib
+             elif test yes = "$hardcode_minus_L"; then
+               add_dir=-L$absdir
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case $libdir in
+                   [\\/]*)
+                     func_append add_dir " -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
+               add=-l$name
+             elif test yes = "$hardcode_shlibpath_var"; then
+               add_shlibpath=$dir
+               add=-l$name
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test yes != "$lib_linked"; then
+             func_fatal_configuration "unsupported hardcode properties"
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) func_append compile_shlibpath "$add_shlibpath:" ;;
+             esac
+           fi
+           if test prog = "$linkmode"; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test yes != "$hardcode_direct" &&
+                test yes != "$hardcode_minus_L" &&
+                test yes = "$hardcode_shlibpath_var"; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) func_append finalize_shlibpath "$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test prog = "$linkmode" || test relink = "$opt_mode"; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test yes = "$hardcode_direct" &&
+              test no = "$hardcode_direct_absolute"; then
+             add=$libdir/$linklib
+           elif test yes = "$hardcode_minus_L"; then
+             add_dir=-L$libdir
+             add=-l$name
+           elif test yes = "$hardcode_shlibpath_var"; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) func_append finalize_shlibpath "$libdir:" ;;
+             esac
+             add=-l$name
+           elif test yes = "$hardcode_automatic"; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib"; then
+               add=$inst_prefix_dir$libdir/$linklib
+             else
+               add=$libdir/$linklib
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir=-L$libdir
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case $libdir in
+                 [\\/]*)
+                   func_append add_dir " -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
+             add=-l$name
+           fi
+
+           if test prog = "$linkmode"; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test prog = "$linkmode"; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test unsupported != "$hardcode_direct"; then
+           test -n "$old_library" && linklib=$old_library
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test yes = "$build_libtool_libs"; then
+         # Not a shared library
+         if test pass_all != "$deplibs_check_method"; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           echo
+           $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+           echo "*** I have the capability to make that library automatically link in when"
+           echo "*** you link to this library.  But I can only do this if you have a"
+           echo "*** shared version of the library, which you do not appear to have."
+           if test yes = "$module"; then
+             echo "*** But as you try to build a module library, libtool will still create "
+             echo "*** a static module, that should work as long as the dlopening application"
+             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               echo
+               echo "*** However, this would only work if libtool was able to extract symbol"
+               echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+               echo "*** not find such a program.  So, this module is probably useless."
+               echo "*** 'nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test no = "$build_old_libs"; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test lib = "$linkmode"; then
+         if test -n "$dependency_libs" &&
+            { test yes != "$hardcode_into_libs" ||
+              test yes = "$build_old_libs" ||
+              test yes = "$link_static"; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) func_stripname '-R' '' "$libdir"
+                  temp_xrpath=$func_stripname_result
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) func_append xrpath " $temp_xrpath";;
+                  esac;;
+             *) func_append temp_deplibs " $libdir";;
+             esac
+           done
+           dependency_libs=$temp_deplibs
+         fi
+
+         func_append newlib_search_path " $absdir"
+         # Link against this library
+         test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+           if $opt_preserve_dup_deps; then
+             case "$tmp_libs " in
+             *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+             esac
+           fi
+           func_append tmp_libs " $func_resolve_sysroot_result"
+         done
+
+         if test no != "$link_all_deplibs"; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             path=
+             case $deplib in
+             -L*) path=$deplib ;;
+             *.la)
+               func_resolve_sysroot "$deplib"
+               deplib=$func_resolve_sysroot_result
+               func_dirname "$deplib" "" "."
+               dir=$func_dirname_result
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   func_warning "cannot determine absolute directory name of '$dir'"
+                   absdir=$dir
+                 fi
+                 ;;
+               esac
+               if $GREP "^installed=no" $deplib > /dev/null; then
+               case $host in
+               *-*-darwin*)
+                 depdepl=
+                 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names"; then
+                   for tmp in $deplibrary_names; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$absdir/$objdir/$depdepl"; then
+                     depdepl=$absdir/$objdir/$depdepl
+                     darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+                     func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+                     func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
+                     path=
+                   fi
+                 fi
+                 ;;
+               *)
+                 path=-L$absdir/$objdir
+                 ;;
+               esac
+               else
+                 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 test -z "$libdir" && \
+                   func_fatal_error "'$deplib' is not a valid libtool archive"
+                 test "$absdir" != "$libdir" && \
+                   func_warning "'$deplib' seems to be moved"
+
+                 path=-L$absdir
+               fi
+               ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test link = "$pass"; then
+       if test prog = "$linkmode"; then
+         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+       else
+         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       fi
+      fi
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test dlopen != "$pass"; then
+       test conv = "$pass" || {
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) func_append lib_search_path " $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       }
+
+       if test prog,link = "$linkmode,$pass"; then
+         vars="compile_deplibs finalize_deplibs"
+       else
+         vars=deplibs
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) func_append tmp_libs " $deplib" ;;
+             esac
+             ;;
+           *) func_append tmp_libs " $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=
+         ;;
+       esac
+       if test -n "$i"; then
+         func_append tmp_libs " $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
+    fi
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+       func_warning "'-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "'-l' and '-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "'-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+       func_warning "'-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+       func_warning "'-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+       func_warning "'-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+       func_warning "'-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs=$output
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form 'libNAME.la'.
+      case $outputname in
+      lib*)
+       func_stripname 'lib' '.la' "$outputname"
+       name=$func_stripname_result
+       eval shared_ext=\"$shrext_cmds\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       test no = "$module" \
+         && func_fatal_help "libtool library '$output' must begin with 'lib'"
+
+       if test no != "$need_lib_prefix"; then
+         # Add the "lib" prefix for modules if required
+         func_stripname '' '.la' "$outputname"
+         name=$func_stripname_result
+         eval shared_ext=\"$shrext_cmds\"
+         eval libname=\"$libname_spec\"
+       else
+         func_stripname '' '.la' "$outputname"
+         libname=$func_stripname_result
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test pass_all != "$deplibs_check_method"; then
+         func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
+       else
+         echo
+         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+         $ECHO "*** objects $objs is not portable!"
+         func_append libobjs " $objs"
+       fi
+      fi
+
+      test no = "$dlself" \
+       || func_warning "'-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test 1 -lt "$#" \
+       && func_warning "ignoring multiple '-rpath's for a libtool library"
+
+      install_libdir=$1
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test yes = "$build_libtool_libs"; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a '.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       test -n "$vinfo" && \
+         func_warning "'-version-info/-version-number' is ignored for convenience libraries"
+
+       test -n "$release" && \
+         func_warning "'-release' is ignored for convenience libraries"
+      else
+
+       # Parse the version information argument.
+       save_ifs=$IFS; IFS=:
+       set dummy $vinfo 0 0 0
+       shift
+       IFS=$save_ifs
+
+       test -n "$7" && \
+         func_fatal_help "too many parameters to '-version-info'"
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+
+       case $vinfo_number in
+       yes)
+         number_major=$1
+         number_minor=$2
+         number_revision=$3
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # that has an extra 1 added just for fun
+         #
+         case $version_type in
+         # correct linux to gnu/linux during the next big refactor
+         darwin|freebsd-elf|linux|osf|windows|none)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age=$number_minor
+           revision=$number_revision
+           ;;
+         freebsd-aout|qnx|sunos)
+           current=$number_major
+           revision=$number_minor
+           age=0
+           ;;
+         irix|nonstopux)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age=$number_minor
+           revision=$number_minor
+           lt_irix_increment=no
+           ;;
+         *)
+           func_fatal_configuration "$modename: unknown library version type '$version_type'"
+           ;;
+         esac
+         ;;
+       no)
+         current=$1
+         revision=$2
+         age=$3
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "CURRENT '$current' must be a nonnegative integer"
+         func_fatal_error "'$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $revision in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "REVISION '$revision' must be a nonnegative integer"
+         func_fatal_error "'$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $age in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "AGE '$age' must be a nonnegative integer"
+         func_fatal_error "'$vinfo' is not valid version information"
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         func_error "AGE '$age' is greater than the current interface number '$current'"
+         func_fatal_error "'$vinfo' is not valid version information"
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=$major.$age.$revision
+         # Darwin ld doesn't like 0 for these options...
+         func_arith $current + 1
+         minor_current=$func_arith_result
+         xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
+         ;;
+
+       freebsd-aout)
+         major=.$current
+         versuffix=.$current.$revision
+         ;;
+
+       freebsd-elf)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=$major.$age.$revision
+         ;;
+
+       irix | nonstopux)
+         if test no = "$lt_irix_increment"; then
+           func_arith $current - $age
+         else
+           func_arith $current - $age + 1
+         fi
+         major=$func_arith_result
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring=$verstring_prefix$major.$revision
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test 0 -ne "$loop"; do
+           func_arith $revision - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring=$verstring_prefix$major.$iface:$verstring
+         done
+
+         # Before this point, $major must not contain '.'.
+         major=.$major
+         versuffix=$major.$revision
+         ;;
+
+       linux) # correct to gnu/linux during the next big refactor
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=$major.$age.$revision
+         ;;
+
+       osf)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=.$current.$age.$revision
+         verstring=$current.$age.$revision
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test 0 -ne "$loop"; do
+           func_arith $current - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring=$verstring:$iface.0
+         done
+
+         # Make executables depend on our current version.
+         func_append verstring ":$current.0"
+         ;;
+
+       qnx)
+         major=.$current
+         versuffix=.$current
+         ;;
+
+       sco)
+         major=.$current
+         versuffix=.$current
+         ;;
+
+       sunos)
+         major=.$current
+         versuffix=.$current.$revision
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 file systems.
+         func_arith $current - $age
+         major=$func_arith_result
+         versuffix=-$major
+         ;;
+
+       *)
+         func_fatal_configuration "unknown library version type '$version_type'"
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring=0.0
+           ;;
+         esac
+         if test no = "$need_version"; then
+           versuffix=
+         else
+           versuffix=.0.0
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test yes,no = "$avoid_version,$need_version"; then
+         major=
+         versuffix=
+         verstring=
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test yes = "$allow_undefined"; then
+         if test unsupported = "$allow_undefined_flag"; then
+           if test yes = "$build_old_libs"; then
+             func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+             build_libtool_libs=no
+           else
+             func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+           fi
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag=$no_undefined_flag
+       fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" :
+      func_append libobjs " $symfileobj"
+      test " " = "$libobjs" && libobjs=
+
+      if test relink != "$opt_mode"; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$ECHO "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext | *.gcno)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+              if test -n "$precious_files_regex"; then
+                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
+              func_append removelist " $p"
+              ;;
+           *) ;;
+         esac
+       done
+       test -n "$removelist" && \
+         func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+       func_append oldlibs " $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         func_replace_sysroot "$libdir"
+         func_append temp_xrpath " -R$func_replace_sysroot_result"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+       if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles=$dlfiles
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) func_append dlfiles " $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles=$dlprefiles
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) func_append dlprefiles " $lib" ;;
+       esac
+      done
+
+      if test yes = "$build_libtool_libs"; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           func_append deplibs " System.ltframework"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test yes = "$build_libtool_need_lc"; then
+             func_append deplibs " -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=
+       versuffix=
+       major=
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $opt_dry_run || $RM conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $opt_dry_run || $RM conftest
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   func_append newdeplibs " $i"
+                   i=
+                   ;;
+                 esac
+               fi
+               if test -n "$i"; then
+                 libname=`eval "\\$ECHO \"$libname_spec\""`
+                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                 set dummy $deplib_matches; shift
+                 deplib_match=$1
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+                   func_append newdeplibs " $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                   echo "*** I have the capability to make that library automatically link in when"
+                   echo "*** you link to this library.  But I can only do this if you have a"
+                   echo "*** shared version of the library, which I believe you do not have"
+                   echo "*** because a test_compile did reveal that the linker did not use it for"
+                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               $opt_dry_run || $RM conftest
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+                 ldd_output=`ldd conftest`
+                 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     func_append newdeplibs " $i"
+                     i=
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i"; then
+                   libname=`eval "\\$ECHO \"$libname_spec\""`
+                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                   set dummy $deplib_matches; shift
+                   deplib_match=$1
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+                     func_append newdeplibs " $i"
+                   else
+                     droppeddeps=yes
+                     echo
+                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                     echo "*** I have the capability to make that library automatically link in when"
+                     echo "*** you link to this library.  But I can only do this if you have a"
+                     echo "*** shared version of the library, which you do not appear to have"
+                     echo "*** because a test_compile did reveal that the linker did not use this one"
+                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "*** make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method; shift
+         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib"; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               if test -n "$file_magic_glob"; then
+                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+               else
+                 libnameglob=$libname
+               fi
+               test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 if test yes = "$want_nocaseglob"; then
+                   shopt -s nocaseglob
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                   $nocaseglob
+                 else
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                 fi
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null |
+                        $GREP " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib=$potent_lib
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+                       *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+                        $SED -e 10q |
+                        $EGREP "$file_magic_regex" > /dev/null; then
+                       func_append newdeplibs " $a_deplib"
+                       a_deplib=
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib"; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib"; then
+                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method; shift
+         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib"; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib=$potent_lib # see symlink-check above in file_magic test
+                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+                      $EGREP "$match_pattern_regex" > /dev/null; then
+                     func_append newdeplibs " $a_deplib"
+                     a_deplib=
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib"; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib"; then
+                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=
+         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+         if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+           for i in $predeps $postdeps; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
+           done
+         fi
+         case $tmp_deplibs in
+         *[!\  \ ]*)
+           echo
+           if test none = "$deplibs_check_method"; then
+             echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+           ;;
+         esac
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library with the System framework
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+         ;;
+       esac
+
+       if test yes = "$droppeddeps"; then
+         if test yes = "$module"; then
+           echo
+           echo "*** Warning: libtool could not satisfy all declared inter-library"
+           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+           echo "*** a static module, that should work as long as the dlopening"
+           echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             echo
+             echo "*** However, this would only work if libtool was able to extract symbol"
+             echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+             echo "*** not find such a program.  So, this module is probably useless."
+             echo "*** 'nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test no = "$build_old_libs"; then
+             oldlibs=$output_objdir/$libname.$libext
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           echo "*** The inter-library dependencies that have been dropped here will be"
+           echo "*** automatically added whenever a program is linked with this library"
+           echo "*** or is declared to -dlopen it."
+
+           if test no = "$allow_undefined"; then
+             echo
+             echo "*** Since this library must not contain undefined symbols,"
+             echo "*** because either the platform does not support them or"
+             echo "*** it was explicitly requested with -no-undefined,"
+             echo "*** libtool will only create a static version of it."
+             if test no = "$build_old_libs"; then
+               oldlibs=$output_objdir/$libname.$libext
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+       *-*-darwin*)
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         ;;
+      esac
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $deplibs " in
+         *" -L$path/$objdir "*)
+           func_append new_libs " -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) func_append new_libs " $deplib" ;;
+         esac
+         ;;
+       *) func_append new_libs " $deplib" ;;
+       esac
+      done
+      deplibs=$new_libs
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test yes = "$build_libtool_libs"; then
+       # Remove $wl instances when linking with ld.
+       # FIXME: should test the right _cmds variable.
+       case $archive_cmds in
+         *\$LD\ *) wl= ;;
+        esac
+       if test yes = "$hardcode_into_libs"; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath=$finalize_rpath
+         test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               func_replace_sysroot "$libdir"
+               libdir=$func_replace_sysroot_result
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs=$libdir
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               func_append dep_rpath " $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) func_append perm_rpath " $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir=$hardcode_libdirs
+           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             func_append rpath "$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath=$finalize_shlibpath
+       test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext_cmds\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       shift
+       realname=$1
+       shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname=$realname
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib=$output_objdir/$realname
+       linknames=
+       for link
+       do
+         func_append linknames " $link"
+       done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       test "X$libobjs" = "X " && libobjs=
+
+       delfiles=
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+         export_symbols=$output_objdir/$libname.uexp
+         func_append delfiles " $export_symbols"
+       fi
+
+       orig_export_symbols=
+       case $host_os in
+       cygwin* | mingw* | cegcc*)
+         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+           # exporting using user supplied symfile
+           func_dll_def_p "$export_symbols" || {
+             # and it's NOT already a .def file. Must figure out
+             # which of the given symbols are data symbols and tag
+             # them as such. So, trigger use of export_symbols_cmds.
+             # export_symbols gets reassigned inside the "prepare
+             # the list of exported symbols" if statement, so the
+             # include_expsyms logic still works.
+             orig_export_symbols=$export_symbols
+             export_symbols=
+             always_export_symbols=yes
+           }
+         fi
+         ;;
+       esac
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+           func_verbose "generating symbol list for '$libname.la'"
+           export_symbols=$output_objdir/$libname.exp
+           $opt_dry_run || $RM $export_symbols
+           cmds=$export_symbols_cmds
+           save_ifs=$IFS; IFS='~'
+           for cmd1 in $cmds; do
+             IFS=$save_ifs
+             # Take the normal branch if the nm_file_list_spec branch
+             # doesn't work or if tool conversion is not needed.
+             case $nm_file_list_spec~$to_tool_file_cmd in
+               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+                 try_normal_branch=yes
+                 eval cmd=\"$cmd1\"
+                 func_len " $cmd"
+                 len=$func_len_result
+                 ;;
+               *)
+                 try_normal_branch=no
+                 ;;
+             esac
+             if test yes = "$try_normal_branch" \
+                && { test "$len" -lt "$max_cmd_len" \
+                     || test "$max_cmd_len" -le -1; }
+             then
+               func_show_eval "$cmd" 'exit $?'
+               skipped_export=false
+             elif test -n "$nm_file_list_spec"; then
+               func_basename "$output"
+               output_la=$func_basename_result
+               save_libobjs=$libobjs
+               save_output=$output
+               output=$output_objdir/$output_la.nm
+               func_to_tool_file "$output"
+               libobjs=$nm_file_list_spec$func_to_tool_file_result
+               func_append delfiles " $output"
+               func_verbose "creating $NM input file list: $output"
+               for obj in $save_libobjs; do
+                 func_to_tool_file "$obj"
+                 $ECHO "$func_to_tool_file_result"
+               done > "$output"
+               eval cmd=\"$cmd1\"
+               func_show_eval "$cmd" 'exit $?'
+               output=$save_output
+               libobjs=$save_libobjs
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               func_verbose "using reloadable object file for export list..."
+               skipped_export=:
+               # Break out early, otherwise skipped_export may be
+               # set to false by a later but shorter cmd.
+               break
+             fi
+           done
+           IFS=$save_ifs
+           if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         tmp_export_symbols=$export_symbols
+         test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+       fi
+
+       if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
+         # The given exports_symbols file has to be filtered, so filter it.
+         func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+         # FIXME: $output_objdir/$libname.filter potentially contains lots of
+         # 's' commands, which not all seds can handle. GNU sed should be fine
+         # though. Also, the filter scales superlinearly with the number of
+         # global variables. join(1) would be nice here, but unfortunately
+         # isn't a blessed tool.
+         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+         export_symbols=$output_objdir/$libname.def
+         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+       fi
+
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+         case " $convenience " in
+         *" $test_deplib "*) ;;
+         *)
+           func_append tmp_deplibs " $test_deplib"
+           ;;
+         esac
+       done
+       deplibs=$tmp_deplibs
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec" &&
+           test yes = "$compiler_needs_object" &&
+           test -z "$libobjs"; then
+           # extract the archives, so we have objects to list.
+           # TODO: could optimize this to just extract one archive.
+           whole_archive_flag_spec=
+         fi
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         else
+           gentop=$output_objdir/${outputname}x
+           func_append generated " $gentop"
+
+           func_extract_archives $gentop $convenience
+           func_append libobjs " $func_extract_archives_result"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+       fi
+
+       if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         func_append linker_flags " $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test relink = "$opt_mode"; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test yes = "$module" && test -n "$module_cmds"; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
+         else
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
+         fi
+       else
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           eval test_cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
+         else
+           eval test_cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
+         fi
+       fi
+
+       if test : != "$skipped_export" &&
+          func_len " $test_cmds" &&
+          len=$func_len_result &&
+          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise
+         # or, if using GNU ld and skipped_export is not :, use a linker
+         # script.
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+         func_basename "$output"
+         output_la=$func_basename_result
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         last_robj=
+         k=1
+
+         if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+           output=$output_objdir/$output_la.lnkscript
+           func_verbose "creating GNU ld script: $output"
+           echo 'INPUT (' > $output
+           for obj in $save_libobjs
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           echo ')' >> $output
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$func_to_tool_file_result
+         elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+           output=$output_objdir/$output_la.lnk
+           func_verbose "creating linker input file list: $output"
+           : > $output
+           set x $save_libobjs
+           shift
+           firstobj=
+           if test yes = "$compiler_needs_object"; then
+             firstobj="$1 "
+             shift
+           fi
+           for obj
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+         else
+           if test -n "$save_libobjs"; then
+             func_verbose "creating reloadable object files..."
+             output=$output_objdir/$output_la-$k.$objext
+             eval test_cmds=\"$reload_cmds\"
+             func_len " $test_cmds"
+             len0=$func_len_result
+             len=$len0
+
+             # Loop over the list of objects to be linked.
+             for obj in $save_libobjs
+             do
+               func_len " $obj"
+               func_arith $len + $func_len_result
+               len=$func_arith_result
+               if test -z "$objlist" ||
+                  test "$len" -lt "$max_cmd_len"; then
+                 func_append objlist " $obj"
+               else
+                 # The command $test_cmds is almost too long, add a
+                 # command to the queue.
+                 if test 1 -eq "$k"; then
+                   # The first file doesn't have a previous command to add.
+                   reload_objs=$objlist
+                   eval concat_cmds=\"$reload_cmds\"
+                 else
+                   # All subsequent reloadable object files will link in
+                   # the last one created.
+                   reload_objs="$objlist $last_robj"
+                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+                 fi
+                 last_robj=$output_objdir/$output_la-$k.$objext
+                 func_arith $k + 1
+                 k=$func_arith_result
+                 output=$output_objdir/$output_la-$k.$objext
+                 objlist=" $obj"
+                 func_len " $last_robj"
+                 func_arith $len0 + $func_len_result
+                 len=$func_arith_result
+               fi
+             done
+             # Handle the remaining objects by creating one last
+             # reloadable object file.  All subsequent reloadable object
+             # files will link in the last one created.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             reload_objs="$objlist $last_robj"
+             eval concat_cmds=\"\$concat_cmds$reload_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+             fi
+             func_append delfiles " $output"
+
+           else
+             output=
+           fi
+
+           ${skipped_export-false} && {
+             func_verbose "generating symbol list for '$libname.la'"
+             export_symbols=$output_objdir/$libname.exp
+             $opt_dry_run || $RM $export_symbols
+             libobjs=$output
+             # Append the command to create the export file.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+             fi
+           }
+
+           test -n "$save_libobjs" &&
+             func_verbose "creating a temporary reloadable object file: $output"
+
+           # Loop through the commands generated above and execute them.
+           save_ifs=$IFS; IFS='~'
+           for cmd in $concat_cmds; do
+             IFS=$save_ifs
+             $opt_quiet || {
+                 func_quote_for_expand "$cmd"
+                 eval "func_echo $func_quote_for_expand_result"
+             }
+             $opt_dry_run || eval "$cmd" || {
+               lt_exit=$?
+
+               # Restore the uninstalled library and exit
+               if test relink = "$opt_mode"; then
+                 ( cd "$output_objdir" && \
+                   $RM "${realname}T" && \
+                   $MV "${realname}U" "$realname" )
+               fi
+
+               exit $lt_exit
+             }
+           done
+           IFS=$save_ifs
+
+           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+
+          ${skipped_export-false} && {
+           if test -n "$export_symbols" && test -n "$include_expsyms"; then
+             tmp_export_symbols=$export_symbols
+             test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+           fi
+
+           if test -n "$orig_export_symbols"; then
+             # The given exports_symbols file has to be filtered, so filter it.
+             func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+             # FIXME: $output_objdir/$libname.filter potentially contains lots of
+             # 's' commands, which not all seds can handle. GNU sed should be fine
+             # though. Also, the filter scales superlinearly with the number of
+             # global variables. join(1) would be nice here, but unfortunately
+             # isn't a blessed tool.
+             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+             export_symbols=$output_objdir/$libname.def
+             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+           fi
+         }
+
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+         if test yes = "$module" && test -n "$module_cmds"; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
+           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+             cmds=$archive_expsym_cmds
+           else
+             cmds=$archive_cmds
+           fi
+         fi
+       fi
+
+       if test -n "$delfiles"; then
+         # Append the command to remove temporary files to $cmds.
+         eval cmds=\"\$cmds~\$RM $delfiles\"
+       fi
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop=$output_objdir/${outputname}x
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         func_append libobjs " $func_extract_archives_result"
+         test "X$libobjs" = "X " && libobjs=
+       fi
+
+       save_ifs=$IFS; IFS='~'
+       for cmd in $cmds; do
+         IFS=$sp$nl
+         eval cmd=\"$cmd\"
+         IFS=$save_ifs
+         $opt_quiet || {
+           func_quote_for_expand "$cmd"
+           eval "func_echo $func_quote_for_expand_result"
+         }
+         $opt_dry_run || eval "$cmd" || {
+           lt_exit=$?
+
+           # Restore the uninstalled library and exit
+           if test relink = "$opt_mode"; then
+             ( cd "$output_objdir" && \
+               $RM "${realname}T" && \
+               $MV "${realname}U" "$realname" )
+           fi
+
+           exit $lt_exit
+         }
+       done
+       IFS=$save_ifs
+
+       # Restore the uninstalled library and exit
+       if test relink = "$opt_mode"; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
+
+         if test -n "$convenience"; then
+           if test -z "$whole_archive_flag_spec"; then
+             func_show_eval '${RM}r "$gentop"'
+           fi
+         fi
+
+         exit $EXIT_SUCCESS
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test yes = "$module" || test yes = "$export_dynamic"; then
+         # On all known operating systems, these are identical.
+         dlname=$soname
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+       func_warning "'-dlopen' is ignored for objects"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "'-l' and '-L' are ignored for objects" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "'-rpath' is ignored for objects"
+
+      test -n "$xrpath" && \
+       func_warning "'-R' is ignored for objects"
+
+      test -n "$vinfo" && \
+       func_warning "'-version-info' is ignored for objects"
+
+      test -n "$release" && \
+       func_warning "'-release' is ignored for objects"
+
+      case $output in
+      *.lo)
+       test -n "$objs$old_deplibs" && \
+         func_fatal_error "cannot build library object '$output' from non-libtool objects"
+
+       libobj=$output
+       func_lo2o "$libobj"
+       obj=$func_lo2o_result
+       ;;
+      *)
+       libobj=
+       obj=$output
+       ;;
+      esac
+
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+         reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
+       else
+         gentop=$output_objdir/${obj}x
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
+       fi
+      fi
+
+      # If we're not building shared, we need to use non_pic_objs
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+
+      # Create the old-style object.
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
+
+      output=$obj
+      func_execute_cmds "$reload_cmds" 'exit $?'
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      test yes = "$build_libtool_libs" || {
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+       exit $EXIT_SUCCESS
+      }
+
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output=$libobj
+       func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
+
+      if test -n "$gentop"; then
+       func_show_eval '${RM}r "$gentop"'
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) func_stripname '' '.exe' "$output"
+                 output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+       func_warning "'-version-info' is ignored for programs"
+
+      test -n "$release" && \
+       func_warning "'-release' is ignored for programs"
+
+      $preload \
+       && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+       && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       ;;
+      esac
+
+      case $host in
+      *-*-darwin*)
+       # Don't allow lazy linking, it breaks C++ global constructors
+       # But is supposedly fixed on 10.4 or later (yay!).
+       if test CXX = "$tagname"; then
+         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+           10.[0123])
+             func_append compile_command " $wl-bind_at_load"
+             func_append finalize_command " $wl-bind_at_load"
+           ;;
+         esac
+       fi
+       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       ;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $compile_deplibs " in
+         *" -L$path/$objdir "*)
+           func_append new_libs " -L$path/$objdir" ;;
+         esac
+         ;;
+       esac
+      done
+      for deplib in $compile_deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) func_append new_libs " $deplib" ;;
+         esac
+         ;;
+       *) func_append new_libs " $deplib" ;;
+       esac
+      done
+      compile_deplibs=$new_libs
+
+
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs=$libdir
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append perm_rpath " $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         ::) dllsearchpath=$libdir;;
+         *) func_append dllsearchpath ":$libdir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir=$hardcode_libdirs
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath=$rpath
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs=$libdir
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_perm_rpath " $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir=$hardcode_libdirs
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath=$rpath
+
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
+
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+       func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=:
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=false
+        ;;
+      *cygwin* | *mingw* )
+        test yes = "$build_libtool_libs" || wrappers_required=false
+        ;;
+      *)
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
+        fi
+        ;;
+      esac
+      $wrappers_required || {
+       # Replace the output file specification.
+       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       link_command=$compile_command$compile_rpath
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       exit_status=0
+       func_show_eval "$link_command" 'exit_status=$?'
+
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
+
+       # Delete the generated files.
+       if test -f "$output_objdir/${outputname}S.$objext"; then
+         func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
+       fi
+
+       exit $exit_status
+      }
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test yes = "$no_install"; then
+       # We don't need to create a wrapper script.
+       link_command=$compile_var$compile_command$compile_rpath
+       # Replace the output file specification.
+       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $opt_dry_run || $RM $output
+       # Link the executable and exit
+       func_show_eval "$link_command" 'exit $?'
+
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
+
+       exit $EXIT_SUCCESS
+      fi
+
+      case $hardcode_action,$fast_install in
+        relink,*)
+         # Fast installation is not supported
+         link_command=$compile_var$compile_command$compile_rpath
+         relink_command=$finalize_var$finalize_command$finalize_rpath
+
+         func_warning "this platform does not like uninstalled shared libraries"
+         func_warning "'$output' will be relinked during installation"
+         ;;
+        *,yes)
+         link_command=$finalize_var$compile_command$finalize_rpath
+         relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+       *,no)
+         link_command=$compile_var$compile_command$compile_rpath
+         relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+       *,needless)
+         link_command=$finalize_var$compile_command$finalize_rpath
+         relink_command=
+          ;;
+      esac
+
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+       func_to_tool_file "$output_objdir/$outputname"
+       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+       func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
+
+      # Now create the wrapper script.
+      func_verbose "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           func_quote_for_eval "$var_value"
+           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) func_stripname '' '.exe' "$output"
+                output=$func_stripname_result ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*)
+           exeext=.exe
+           func_stripname '' '.exe' "$outputname"
+           outputname=$func_stripname_result ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           func_dirname_and_basename "$output" "" "."
+           output_name=$func_basename_result
+           output_path=$func_dirname_result
+           cwrappersource=$output_path/$objdir/lt-$output_name.c
+           cwrapper=$output_path/$output_name.exe
+           $RM $cwrappersource $cwrapper
+           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_cwrapperexe_src > $cwrappersource
+
+           # The wrapper executable is built using the $host compiler,
+           # because it contains $host paths and files. If cross-
+           # compiling, it, like the target executable, must be
+           # executed on the $host or under an emulation environment.
+           $opt_dry_run || {
+             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+             $STRIP $cwrapper
+           }
+
+           # Now, create the wrapper script for func_source use:
+           func_ltwrapper_scriptname $cwrapper
+           $RM $func_ltwrapper_scriptname_result
+           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+           $opt_dry_run || {
+             # note: this script will not be executed, so do not chmod.
+             if test "x$build" = "x$host"; then
+               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+             else
+               func_emit_wrapper no > $func_ltwrapper_scriptname_result
+             fi
+           }
+         ;;
+         * )
+           $RM $output
+           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_wrapper no > $output
+           chmod +x $output
+         ;;
+       esac
+      }
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      case $build_libtool_libs in
+        convenience)
+         oldobjs="$libobjs_save $symfileobj"
+         addlibs=$convenience
+         build_libtool_libs=no
+         ;;
+       module)
+         oldobjs=$libobjs_save
+         addlibs=$old_convenience
+         build_libtool_libs=no
+          ;;
+       *)
+         oldobjs="$old_deplibs $non_pic_objects"
+         $preload && test -f "$symfileobj" \
+           && func_append oldobjs " $symfileobj"
+         addlibs=$old_convenience
+         ;;
+      esac
+
+      if test -n "$addlibs"; then
+       gentop=$output_objdir/${outputname}x
+       func_append generated " $gentop"
+
+       func_extract_archives $gentop $addlibs
+       func_append oldobjs " $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
+       cmds=$old_archive_from_new_cmds
+      else
+
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop=$output_objdir/${outputname}x
+         func_append generated " $gentop"
+
+         func_extract_archives $gentop $dlprefiles
+         func_append oldobjs " $func_extract_archives_result"
+       fi
+
+       # POSIX demands no paths to be encoded in archives.  We have
+       # to avoid creating archives with duplicate basenames if we
+       # might have to extract them afterwards, e.g., when creating a
+       # static archive out of a convenience library, or when linking
+       # the entirety of a libtool archive into another (currently
+       # not supported by libtool).
+       if (for obj in $oldobjs
+           do
+             func_basename "$obj"
+             $ECHO "$func_basename_result"
+           done | sort | sort -uc >/dev/null 2>&1); then
+         :
+       else
+         echo "copying selected object files to avoid basename conflicts..."
+         gentop=$output_objdir/${outputname}x
+         func_append generated " $gentop"
+         func_mkdir_p "$gentop"
+         save_oldobjs=$oldobjs
+         oldobjs=
+         counter=1
+         for obj in $save_oldobjs
+         do
+           func_basename "$obj"
+           objbase=$func_basename_result
+           case " $oldobjs " in
+           " ") oldobjs=$obj ;;
+           *[\ /]"$objbase "*)
+             while :; do
+               # Make sure we don't pick an alternate name that also
+               # overlaps.
+               newobj=lt$counter-$objbase
+               func_arith $counter + 1
+               counter=$func_arith_result
+               case " $oldobjs " in
+               *[\ /]"$newobj "*) ;;
+               *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+               esac
+             done
+             func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+             func_append oldobjs " $gentop/$newobj"
+             ;;
+           *) func_append oldobjs " $obj" ;;
+           esac
+         done
+       fi
+       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+       tool_oldlib=$func_to_tool_file_result
+       eval cmds=\"$old_archive_cmds\"
+
+       func_len " $cmds"
+       len=$func_len_result
+       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         cmds=$old_archive_cmds
+       elif test -n "$archiver_list_spec"; then
+         func_verbose "using command file archive linking..."
+         for obj in $oldobjs
+         do
+           func_to_tool_file "$obj"
+           $ECHO "$func_to_tool_file_result"
+         done > $output_objdir/$libname.libcmd
+         func_to_tool_file "$output_objdir/$libname.libcmd"
+         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
+         cmds=$old_archive_cmds
+       else
+         # the command line is too long to link in one step, link in parts
+         func_verbose "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+         objlist=
+         concat_cmds=
+         save_oldobjs=$oldobjs
+         oldobjs=
+         # Is there a better way of finding the last object in the list?
+         for obj in $save_oldobjs
+         do
+           last_oldobj=$obj
+         done
+         eval test_cmds=\"$old_archive_cmds\"
+         func_len " $test_cmds"
+         len0=$func_len_result
+         len=$len0
+         for obj in $save_oldobjs
+         do
+           func_len " $obj"
+           func_arith $len + $func_len_result
+           len=$func_arith_result
+           func_append objlist " $obj"
+           if test "$len" -lt "$max_cmd_len"; then
+             :
+           else
+             # the above command should be used before it gets too long
+             oldobjs=$objlist
+             if test "$obj" = "$last_oldobj"; then
+               RANLIB=$save_RANLIB
+             fi
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
+             objlist=
+             len=$len0
+           fi
+         done
+         RANLIB=$save_RANLIB
+         oldobjs=$objlist
+         if test -z "$oldobjs"; then
+           eval cmds=\"\$concat_cmds\"
+         else
+           eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+         fi
+       fi
+      fi
+      func_execute_cmds "$cmds" 'exit $?'
+    done
+
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test yes = "$build_old_libs" && old_library=$libname.$libext
+      func_verbose "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         func_quote_for_eval "$var_value"
+         relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      if test yes = "$hardcode_automatic"; then
+       relink_command=
+      fi
+
+      # Only create the output if not a dry run.
+      $opt_dry_run || {
+       for installed in no yes; do
+         if test yes = "$installed"; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output=$output_objdir/${outputname}i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               func_basename "$deplib"
+               name=$func_basename_result
+               func_resolve_sysroot "$deplib"
+               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+               test -z "$libdir" && \
+                 func_fatal_error "'$deplib' is not a valid libtool archive"
+               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             -L*)
+               func_stripname -L '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -L$func_replace_sysroot_result"
+               ;;
+             -R*)
+               func_stripname -R '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -R$func_replace_sysroot_result"
+               ;;
+             *) func_append newdependency_libs " $deplib" ;;
+             esac
+           done
+           dependency_libs=$newdependency_libs
+           newdlfiles=
+
+           for lib in $dlfiles; do
+             case $lib in
+             *.la)
+               func_basename "$lib"
+               name=$func_basename_result
+               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "'$lib' is not a valid libtool archive"
+               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             *) func_append newdlfiles " $lib" ;;
+             esac
+           done
+           dlfiles=$newdlfiles
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+             *.la)
+               # Only pass preopened files to the pseudo-archive (for
+               # eventual linking with the app. that links it) if we
+               # didn't already link the preopened objects directly into
+               # the library:
+               func_basename "$lib"
+               name=$func_basename_result
+               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               test -z "$libdir" && \
+                 func_fatal_error "'$lib' is not a valid libtool archive"
+               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             esac
+           done
+           dlprefiles=$newdlprefiles
+         else
+           newdlfiles=
+           for lib in $dlfiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             func_append newdlfiles " $abs"
+           done
+           dlfiles=$newdlfiles
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             case $lib in
+               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+               *) abs=`pwd`"/$lib" ;;
+             esac
+             func_append newdlprefiles " $abs"
+           done
+           dlprefiles=$newdlprefiles
+         fi
+         $RM $output
+         # place dlname in correct position for cygwin
+         # In fact, it would be nice if we could use this code for all target
+         # systems that can't hard-code library paths into their executables
+         # and that have no shared library path variable independent of PATH,
+         # but it turns out we can't easily determine that from inspecting
+         # libtool variables, so we have to hard-code the OSs to which it
+         # applies here; at the moment, that means platforms that use the PE
+         # object format with DLL files.  See the long comment at the top of
+         # tests/bindir.at for full details.
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+             # If a -bindir argument was supplied, place the dll there.
+             if test -n "$bindir"; then
+               func_relative_path "$install_libdir" "$bindir"
+               tdlname=$func_relative_path_result/$dlname
+             else
+               # Otherwise fall back on heuristic.
+               tdlname=../bin/$dlname
+             fi
+             ;;
+         esac
+         $ECHO > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Linker flags that cannot go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test no,yes = "$installed,$need_relink"; then
+           $ECHO >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      }
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+}
+
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
+
+
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $debug_cmd
+
+    RM=$nonopt
+    files=
+    rmforce=false
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic=$magic
+
+    for arg
+    do
+      case $arg in
+      -f) func_append RM " $arg"; rmforce=: ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
+      esac
+    done
+
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
+
+    rmdirs=
+
+    for file in $files; do
+      func_dirname "$file" "" "."
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+       odir=$objdir
+      else
+       odir=$dir/$objdir
+      fi
+      func_basename "$file"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
+
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test clean = "$opt_mode"; then
+       case " $rmdirs " in
+         *" $odir "*) ;;
+         *) func_append rmdirs " $odir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+        { test -h "$file"; } >/dev/null 2>&1 ||
+        test -f "$file"; then
+       :
+      elif test -d "$file"; then
+       exit_status=1
+       continue
+      elif $rmforce; then
+       continue
+      fi
+
+      rmfiles=$file
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if func_lalib_p "$file"; then
+         func_source $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           func_append rmfiles " $odir/$n"
+         done
+         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
+
+         case $opt_mode in
+         clean)
+           case " $library_names " in
+           *" $dlname "*) ;;
+           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
+           esac
+           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
+           ;;
+         uninstall)
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+           ;;
+         esac
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if func_lalib_p "$file"; then
+
+         # Read the .lo file
+         func_source $dir/$name
+
+         # Add PIC object to the list of files to remove.
+         if test -n "$pic_object" && test none != "$pic_object"; then
+           func_append rmfiles " $dir/$pic_object"
+         fi
+
+         # Add non-PIC object to the list of files to remove.
+         if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+           func_append rmfiles " $dir/$non_pic_object"
+         fi
+       fi
+       ;;
+
+      *)
+       if test clean = "$opt_mode"; then
+         noexename=$name
+         case $file in
+         *.exe)
+           func_stripname '' '.exe' "$file"
+           file=$func_stripname_result
+           func_stripname '' '.exe' "$name"
+           noexename=$func_stripname_result
+           # $file with .exe has already been added to rmfiles,
+           # add $file without .exe
+           func_append rmfiles " $file"
+           ;;
+         esac
+         # Do a test to see if this is a libtool program.
+         if func_ltwrapper_p "$file"; then
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             relink_command=
+             func_source $func_ltwrapper_scriptname_result
+             func_append rmfiles " $func_ltwrapper_scriptname_result"
+           else
+             relink_command=
+             func_source $dir/$noexename
+           fi
+
+           # note $name still contains .exe if it was in $file originally
+           # as does the version of $file that was added into $rmfiles
+           func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+           if test yes = "$fast_install" && test -n "$relink_command"; then
+             func_append rmfiles " $odir/lt-$name"
+           fi
+           if test "X$noexename" != "X$name"; then
+             func_append rmfiles " $odir/lt-$noexename.c"
+           fi
+         fi
+       fi
+       ;;
+      esac
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
+    done
+
+    # Try to remove the $objdir's in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       func_show_eval "rmdir $dir >/dev/null 2>&1"
+      fi
+    done
+
+    exit $exit_status
+}
+
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
+
+test -z "$opt_mode" && {
+  help=$generic_help
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode '$opt_mode'"
+
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
+
+exit $exit_status
+
+
+# The TAGs below are defined such that we never get into a situation
+# where we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
index 62e1ccbffcfb21eb98ebcff71f339cb018fd8b97..205b2d6dccf226374eab66525ea1915fa6de9c0d 100755 (executable)
--- a/configure
+++ b/configure
@@ -625,6 +625,16 @@ gl_use_threads_default=
 ac_func_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+systemd_system_unit_dir
+have_systemd
+systemd_LIBS
+systemd_CFLAGS
+crond_dir
+have_crond
+pkg_udev_rules_dir
+have_udev
+udev_LIBS
+udev_CFLAGS
 LDFLAGS_SHLIB
 CFLAGS_STLIB
 CFLAGS_SHLIB
@@ -638,9 +648,24 @@ root_libdir
 root_sbindir
 root_bindir
 root_prefix
+E2SCRUB_CMT
 UNIX_CMT
 CYGWIN_CMT
 LINUX_CMT
+threadsan_ldflags
+threadsan_cflags
+have_threadsan
+addrsan_ldflags
+addrsan_cflags
+have_addrsan
+ubsan_ldflags
+ubsan_cflags
+have_ubsan
+lto_ldflags
+lto_cflags
+have_lto
+gcc_ranlib
+gcc_ar
 UNI_DIFF_OPTS
 SEM_INIT_LIB
 FUSE_CMT
@@ -796,6 +821,7 @@ build_os
 build_vendor
 build_cpu
 build
+E2FSPROGS_DATE
 E2FSPROGS_PKGVER
 E2FSPROGS_VERSION
 E2FSPROGS_DAY
@@ -893,7 +919,14 @@ with_libiconv_prefix
 with_included_gettext
 with_libintl_prefix
 enable_fuse2fs
+enable_lto
+enable_ubsan
+enable_addrsan
+enable_threadsan
 with_multiarch
+with_udev_rules_dir
+with_crond_dir
+with_systemd_unit_dir
 '
       ac_precious_vars='build_alias
 host_alias
@@ -906,7 +939,11 @@ CPPFLAGS
 CPP
 PKG_CONFIG
 PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR'
+PKG_CONFIG_LIBDIR
+udev_CFLAGS
+udev_LIBS
+systemd_CFLAGS
+systemd_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1565,6 +1602,10 @@ Optional Features:
   --disable-threads       build without multithread safety
   --disable-rpath         do not hardcode runtime library paths
   --disable-fuse2fs      do not build fuse2fs
+  --enable-lto           enable link time optimization
+  --enable-ubsan         enable undefined behavior sanitizer
+  --enable-addrsan       enable address sanitizer
+  --enable-threadsan     enable thread sanitizer
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1583,6 +1624,11 @@ Optional Packages:
   --with-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
   --without-libintl-prefix     don't search for libintl in includedir and libdir
   --with-multiarch=ARCH specify the multiarch triplet
+  --with-udev-rules-dir[=DIR]
+                          Install udev rules into DIR.
+  --with-crond-dir[=DIR]  Install system crontabs into DIR.
+  --with-systemd-unit-dir[=DIR]
+                          Install systemd system units into DIR.
 
 Some influential environment variables:
   CC          C compiler command
@@ -1598,6 +1644,12 @@ Some influential environment variables:
               directories to add to pkg-config's search path
   PKG_CONFIG_LIBDIR
               path overriding pkg-config's built-in search path
+  udev_CFLAGS C compiler flags for udev, overriding pkg-config
+  udev_LIBS   linker flags for udev, overriding pkg-config
+  systemd_CFLAGS
+              C compiler flags for systemd, overriding pkg-config
+  systemd_LIBS
+              linker flags for systemd, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -2761,11 +2813,11 @@ MCONFIG=./MCONFIG
 BINARY_TYPE=bin
 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
        | awk '{print $3}' | tr \" " " | awk '{print $1}'`
-DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
-       | tr \" " "`
-E2FSPROGS_DAY=$(echo $DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
-MONTH=`echo $DATE | awk -F- '{print $2}'`
-YEAR=`echo $DATE | awk -F- '{print $3}'`
+E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+       | tr \" " " | awk '{print $1}'`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
+MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
+YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
 
 if expr $YEAR ">" 1900 > /dev/null ; then
        E2FSPROGS_YEAR=$YEAR
@@ -2816,6 +2868,7 @@ $as_echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&6; }
 
 
 
+
 WITH_DIET_LIBC=
 
 # Check whether --with-diet-libc was given.
@@ -13747,6 +13800,416 @@ $as_echo "#define HAVE_EXT2_IOCTLS 1" >>confdefs.h
 
        ;;
 esac
+
+    if test "x$ac_cv_header_sys_mount_h" = x; then :
+  for ac_header in sys/mount.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mount_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_MOUNT_H 1
+_ACEOF
+
+fi
+
+done
+
+fi
+    if test "x$ac_cv_header_sys_mount_h" = xno; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "error: sys/mount.h not present on your system!
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+    $as_echo_n "checking for mount 'nosuid' option... "
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/mount.h>
+int
+main ()
+{
+void *temp = (void *)(MS_NOSUID); (void) temp;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_MOUNT_NOSUID 1" >>confdefs.h
+
+         ac_cv_mount_nosuid=yes
+         $as_echo "yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/mount.h>
+int
+main ()
+{
+void *temp = (void *)(MNT_NOSUID); (void) temp;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_MOUNT_NOSUID 1" >>confdefs.h
+
+             ac_cv_mount_nosuid=yes
+             $as_echo "yes"
+else
+  ac_cv_mount_nosuid=no
+             $as_echo "no"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+    if test "x$ac_cv_header_sys_mount_h" = x; then :
+  for ac_header in sys/mount.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mount_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_MOUNT_H 1
+_ACEOF
+
+fi
+
+done
+
+fi
+    if test "x$ac_cv_header_sys_mount_h" = xno; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "error: sys/mount.h not present on your system!
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+    $as_echo_n "checking for mount 'nodev' option... "
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/mount.h>
+int
+main ()
+{
+void *temp = (void *)(MS_NODEV); (void) temp;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_MOUNT_NODEV 1" >>confdefs.h
+
+         ac_cv_mount_nodev=yes
+         $as_echo "yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/mount.h>
+int
+main ()
+{
+void *temp = (void *)(MNT_NODEV); (void) temp;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_MOUNT_NODEV 1" >>confdefs.h
+
+             ac_cv_mount_nodev=yes
+             $as_echo "yes"
+else
+  ac_cv_mount_nodev=no
+             $as_echo "no"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+# Check whether --enable-lto was given.
+if test "${enable_lto+set}" = set; then :
+  enableval=$enable_lto;
+else
+  enable_lto=no
+fi
+
+if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports LTO" >&5
+$as_echo_n "checking if C compiler supports LTO... " >&6; }
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       LTO_FLAGS="-g -flto -ffat-lto-objects"
+       CFLAGS="$CFLAGS $LTO_FLAGS"
+       LDFLAGS="$LDFLAGS $LTO_FLAGS"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               lto_cflags=$LTO_FLAGS
+               lto_ldflags=$LTO_FLAGS
+               # Extract the first word of "gcc-ar", so it can be a program name with args.
+set dummy gcc-ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_gcc_ar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $gcc_ar in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_gcc_ar="$gcc_ar" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_gcc_ar="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+gcc_ar=$ac_cv_path_gcc_ar
+if test -n "$gcc_ar"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_ar" >&5
+$as_echo "$gcc_ar" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+               # Extract the first word of "gcc-ranlib", so it can be a program name with args.
+set dummy gcc-ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_gcc_ranlib+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $gcc_ranlib in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_gcc_ranlib="$gcc_ranlib" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_gcc_ranlib="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+gcc_ranlib=$ac_cv_path_gcc_ranlib
+if test -n "$gcc_ranlib"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_ranlib" >&5
+$as_echo "$gcc_ranlib" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
+               have_lto=yes
+               AR="${gcc_ar}"
+               RANLIB="${gcc_ranlib}"
+       fi
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
+       as_fn_error $? "LTO not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-ubsan was given.
+if test "${enable_ubsan+set}" = set; then :
+  enableval=$enable_ubsan;
+else
+  enable_ubsan=no
+fi
+
+if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports UBSAN" >&5
+$as_echo_n "checking if C compiler supports UBSAN... " >&6; }
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       UBSAN_FLAGS="-fsanitize=undefined"
+       CFLAGS="$CFLAGS $UBSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               ubsan_cflags=$UBSAN_FLAGS
+               ubsan_ldflags=$UBSAN_FLAGS
+               have_ubsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
+       as_fn_error $? "UBSAN not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-addrsan was given.
+if test "${enable_addrsan+set}" = set; then :
+  enableval=$enable_addrsan;
+else
+  enable_addrsan=no
+fi
+
+if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports ADDRSAN" >&5
+$as_echo_n "checking if C compiler supports ADDRSAN... " >&6; }
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       ADDRSAN_FLAGS="-fsanitize=address"
+       CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               addrsan_cflags=$ADDRSAN_FLAGS
+               addrsan_ldflags=$ADDRSAN_FLAGS
+               have_addrsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
+       as_fn_error $? "ADDRSAN not supported by compiler." "$LINENO" 5
+fi
+# Check whether --enable-threadsan was given.
+if test "${enable_threadsan+set}" = set; then :
+  enableval=$enable_threadsan;
+else
+  enable_threadsan=no
+fi
+
+if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C compiler supports THREADSAN" >&5
+$as_echo_n "checking if C compiler supports THREADSAN... " >&6; }
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       THREADSAN_FLAGS="-fsanitize=thread"
+       CFLAGS="$CFLAGS $THREADSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+               threadsan_cflags=$THREADSAN_FLAGS
+               threadsan_ldflags=$THREADSAN_FLAGS
+               have_threadsan=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+
+
+
+fi
+if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
+       as_fn_error $? "THREADSAN not supported by compiler." "$LINENO" 5
+fi
+if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ADDRSAN and THREADSAN are not known to work together." >&5
+$as_echo "$as_me: WARNING: ADDRSAN and THREADSAN are not known to work together." >&2;}
+fi
 LINUX_CMT="#"
 CYGWIN_CMT="#"
 UNIX_CMT=
@@ -13762,6 +14225,8 @@ esac
 
 
 
+E2SCRUB_CMT="$LINUX_CMT"
+
 case "$host_os" in
 linux* | gnu* | k*bsd*-gnu)
        if test "$prefix" = NONE -a "$root_prefix" = NONE ; then
@@ -13838,6 +14303,7 @@ else
 fi
 
 fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can link with -static" >&5
 $as_echo_n "checking whether we can link with -static... " >&6; }
 if ${ac_cv_e2fsprogs_use_static+:} false; then :
@@ -13914,6 +14380,282 @@ LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
 
 
 
+
+
+# Check whether --with-udev_rules_dir was given.
+if test "${with_udev_rules_dir+set}" = set; then :
+  withval=$with_udev_rules_dir;
+else
+  with_udev_rules_dir=yes
+fi
+
+if test "x${with_udev_rules_dir}" != "xno"; then :
+
+       if test "x${with_udev_rules_dir}" = "xyes"; then :
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev" >&5
+$as_echo_n "checking for udev... " >&6; }
+
+if test -n "$udev_CFLAGS"; then
+    pkg_cv_udev_CFLAGS="$udev_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "udev") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_udev_CFLAGS=`$PKG_CONFIG --cflags "udev" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$udev_LIBS"; then
+    pkg_cv_udev_LIBS="$udev_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"udev\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "udev") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_udev_LIBS=`$PKG_CONFIG --libs "udev" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               udev_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "udev" 2>&1`
+        else
+               udev_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "udev" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$udev_PKG_ERRORS" >&5
+
+
+                       with_udev_rules_dir=""
+
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+                       with_udev_rules_dir=""
+
+else
+       udev_CFLAGS=$pkg_cv_udev_CFLAGS
+       udev_LIBS=$pkg_cv_udev_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+                       with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
+
+fi
+
+fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for udev rules dir" >&5
+$as_echo_n "checking for udev rules dir... " >&6; }
+       pkg_udev_rules_dir="${with_udev_rules_dir}"
+       if test -n "${pkg_udev_rules_dir}"; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${pkg_udev_rules_dir}" >&5
+$as_echo "${pkg_udev_rules_dir}" >&6; }
+               have_udev="yes"
+
+else
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               have_udev="no"
+
+fi
+
+else
+
+       have_udev="disabled"
+
+fi
+
+
+
+
+# Check whether --with-crond_dir was given.
+if test "${with_crond_dir+set}" = set; then :
+  withval=$with_crond_dir;
+else
+  with_crond_dir=yes
+fi
+
+if test "x${with_crond_dir}" != "xno"; then :
+
+       if test "x${with_crond_dir}" = "xyes"; then :
+
+               if test -d "/etc/cron.d"; then :
+  with_crond_dir="/etc/cron.d"
+fi
+
+fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system crontab dir" >&5
+$as_echo_n "checking for system crontab dir... " >&6; }
+       crond_dir="${with_crond_dir}"
+       if test -n "${crond_dir}"; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${crond_dir}" >&5
+$as_echo "${crond_dir}" >&6; }
+               have_crond="yes"
+
+else
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               have_crond="no"
+
+fi
+
+else
+
+       have_crond="disabled"
+
+fi
+
+
+
+
+# Check whether --with-systemd_unit_dir was given.
+if test "${with_systemd_unit_dir+set}" = set; then :
+  withval=$with_systemd_unit_dir;
+else
+  with_systemd_unit_dir=yes
+fi
+
+if test "x${with_systemd_unit_dir}" != "xno"; then :
+
+       if test "x${with_systemd_unit_dir}" = "xyes"; then :
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemd" >&5
+$as_echo_n "checking for systemd... " >&6; }
+
+if test -n "$systemd_CFLAGS"; then
+    pkg_cv_systemd_CFLAGS="$systemd_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_systemd_CFLAGS=`$PKG_CONFIG --cflags "systemd" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$systemd_LIBS"; then
+    pkg_cv_systemd_LIBS="$systemd_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"systemd\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_systemd_LIBS=`$PKG_CONFIG --libs "systemd" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               systemd_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "systemd" 2>&1`
+        else
+               systemd_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "systemd" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$systemd_PKG_ERRORS" >&5
+
+
+                       with_systemd_unit_dir=""
+
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+                       with_systemd_unit_dir=""
+
+else
+       systemd_CFLAGS=$pkg_cv_systemd_CFLAGS
+       systemd_LIBS=$pkg_cv_systemd_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+                       with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
+
+fi
+
+
+fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemd system unit dir" >&5
+$as_echo_n "checking for systemd system unit dir... " >&6; }
+       systemd_system_unit_dir="${with_systemd_unit_dir}"
+       if test -n "${systemd_system_unit_dir}"; then :
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${systemd_system_unit_dir}" >&5
+$as_echo "${systemd_system_unit_dir}" >&6; }
+               have_systemd="yes"
+
+else
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               have_systemd="no"
+
+fi
+
+else
+
+       have_systemd="disabled"
+
+fi
+
+
+
 test -d lib || mkdir lib
 test -d include || mkdir include
 test -d include/linux || mkdir include/linux
@@ -13935,7 +14677,7 @@ for i in MCONFIG Makefile \
        misc/Makefile ext2ed/Makefile e2fsck/Makefile \
        debugfs/Makefile tests/Makefile tests/progs/Makefile \
        resize/Makefile doc/Makefile intl/Makefile \
-       intl/libgnuintl.h po/Makefile.in ; do
+       intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
        if test -d `dirname ${srcdir}/$i` ; then
                outlist="$outlist $i"
        fi
index 04e1994453aa7ce5cc4df27033179bbff74f0d4d..3b86c1a141e9250451cf349aea20fd8e6e32539b 100644 (file)
@@ -11,11 +11,11 @@ dnl This is to figure out the version number and the date....
 dnl
 E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
        | awk '{print $3}' | tr \" " " | awk '{print $1}'`
-DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
-       | tr \" " "`
-E2FSPROGS_DAY=$(echo $DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
-MONTH=`echo $DATE | awk -F- '{print $2}'`
-YEAR=`echo $DATE | awk -F- '{print $3}'`
+E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+       | tr \" " " | awk '{print $1}'`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
+MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
+YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
 
 if expr $YEAR ">" 1900 > /dev/null ; then
        E2FSPROGS_YEAR=$YEAR
@@ -63,6 +63,7 @@ AC_SUBST(E2FSPROGS_MONTH)
 AC_SUBST(E2FSPROGS_DAY)
 AC_SUBST(E2FSPROGS_VERSION)
 AC_SUBST(E2FSPROGS_PKGVER)
+AC_SUBST(E2FSPROGS_DATE)
 dnl
 dnl Use diet libc
 dnl 
@@ -1317,6 +1318,131 @@ linux*)
        ;;
 esac
 dnl
+dnl Check the available mount options
+dnl
+AX_CHECK_MOUNT_OPT(nosuid)
+AX_CHECK_MOUNT_OPT(nodev)
+dnl Enable LTO for all packages
+dnl
+AC_ARG_ENABLE([lto],
+[  --enable-lto                  enable link time optimization],,
+enable_lto=no)
+if test "$enable_lto" = "yes" || test "$enable_lto" = "probe"; then
+       AC_MSG_CHECKING([if C compiler supports LTO])
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       LTO_FLAGS="-g -flto -ffat-lto-objects"
+       CFLAGS="$CFLAGS $LTO_FLAGS"
+       LDFLAGS="$LDFLAGS $LTO_FLAGS"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+               [AC_MSG_RESULT([yes])]
+               [lto_cflags=$LTO_FLAGS]
+               [lto_ldflags=$LTO_FLAGS]
+               [AC_PATH_PROG(gcc_ar, gcc-ar,,)]
+               [AC_PATH_PROG(gcc_ranlib, gcc-ranlib,,)],
+               [AC_MSG_RESULT([no])])
+       if test -x "$gcc_ar" && test -x "$gcc_ranlib"; then
+               have_lto=yes
+               AR="${gcc_ar}"
+               RANLIB="${gcc_ranlib}"
+       fi
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+       AC_SUBST(have_lto)
+       AC_SUBST(lto_cflags)
+       AC_SUBST(lto_ldflags)
+fi
+if test "$enable_lto" = "yes" && test "$have_lto" != "yes"; then
+       AC_MSG_ERROR([LTO not supported by compiler.])
+fi
+dnl
+dnl Enable UBSAN for all packages
+dnl
+AC_ARG_ENABLE([ubsan],
+[  --enable-ubsan        enable undefined behavior sanitizer],,
+enable_ubsan=no)
+if test "$enable_ubsan" = "yes" || test "$enable_ubsan" = "probe"; then
+       AC_MSG_CHECKING([if C compiler supports UBSAN])
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       UBSAN_FLAGS="-fsanitize=undefined"
+       CFLAGS="$CFLAGS $UBSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $UBSAN_FLAGS"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+               [AC_MSG_RESULT([yes])]
+               [ubsan_cflags=$UBSAN_FLAGS]
+               [ubsan_ldflags=$UBSAN_FLAGS]
+               [have_ubsan=yes],
+               [AC_MSG_RESULT([no])])
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+       AC_SUBST(have_ubsan)
+       AC_SUBST(ubsan_cflags)
+       AC_SUBST(ubsan_ldflags)
+fi
+if test "$enable_ubsan" = "yes" && test "$have_ubsan" != "yes"; then
+       AC_MSG_ERROR([UBSAN not supported by compiler.])
+fi
+dnl
+dnl Enable ADDRSAN for all packages
+dnl
+AC_ARG_ENABLE([addrsan],
+[  --enable-addrsan      enable address sanitizer],,
+enable_addrsan=no)
+if test "$enable_addrsan" = "yes" || test "$enable_addrsan" = "probe"; then
+       AC_MSG_CHECKING([if C compiler supports ADDRSAN])
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       ADDRSAN_FLAGS="-fsanitize=address"
+       CFLAGS="$CFLAGS $ADDRSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $ADDRSAN_FLAGS"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+               [AC_MSG_RESULT([yes])]
+               [addrsan_cflags=$ADDRSAN_FLAGS]
+               [addrsan_ldflags=$ADDRSAN_FLAGS]
+               [have_addrsan=yes],
+               [AC_MSG_RESULT([no])])
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+       AC_SUBST(have_addrsan)
+       AC_SUBST(addrsan_cflags)
+       AC_SUBST(addrsan_ldflags)
+fi
+if test "$enable_addrsan" = "yes" && test "$have_addrsan" != "yes"; then
+       AC_MSG_ERROR([ADDRSAN not supported by compiler.])
+fi
+dnl
+dnl Enable THREADSAN for all packages
+dnl
+AC_ARG_ENABLE([threadsan],
+[  --enable-threadsan    enable thread sanitizer],,
+enable_threadsan=no)
+if test "$enable_threadsan" = "yes" || test "$enable_threadsan" = "probe"; then
+       AC_MSG_CHECKING([if C compiler supports THREADSAN])
+       OLD_CFLAGS="$CFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       THREADSAN_FLAGS="-fsanitize=thread"
+       CFLAGS="$CFLAGS $THREADSAN_FLAGS"
+       LDFLAGS="$LDFLAGS $THREADSAN_FLAGS"
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
+               [AC_MSG_RESULT([yes])]
+               [threadsan_cflags=$THREADSAN_FLAGS]
+               [threadsan_ldflags=$THREADSAN_FLAGS]
+               [have_threadsan=yes],
+               [AC_MSG_RESULT([no])])
+       CFLAGS="${OLD_CFLAGS}"
+       LDFLAGS="${OLD_LDFLAGS}"
+       AC_SUBST(have_threadsan)
+       AC_SUBST(threadsan_cflags)
+       AC_SUBST(threadsan_ldflags)
+fi
+if test "$enable_threadsan" = "yes" && test "$have_threadsan" != "yes"; then
+       AC_MSG_ERROR([THREADSAN not supported by compiler.])
+fi
+if test "$have_threadsan" = "yes" && test "$have_addrsan" = "yes"; then
+       AC_MSG_WARN([ADDRSAN and THREADSAN are not known to work together.])
+fi
+dnl
 dnl OS-specific uncomment control
 dnl
 LINUX_CMT="#"
@@ -1335,6 +1461,11 @@ AC_SUBST(LINUX_CMT)
 AC_SUBST(CYGWIN_CMT)
 AC_SUBST(UNIX_CMT)
 dnl
+dnl e2scrub only builds on linux
+dnl
+E2SCRUB_CMT="$LINUX_CMT"
+AC_SUBST(E2SCRUB_CMT)
+dnl
 dnl Linux and Hurd places root files in the / by default
 dnl
 case "$host_os" in
@@ -1409,7 +1540,8 @@ else
     libdir=$libdir/$withval
     root_libdir=$root_libdir/$withval
 fi
-)dnl
+)
+dnl
 dnl
 dnl See if -static works.  This could fail if the linker does not
 dnl support -static, or if required external libraries are not available
@@ -1491,6 +1623,115 @@ LDFLAGS_SHLIB=${LDFLAGS_SHLIB:-$LDFLAGS}
 AC_SUBST(CFLAGS_SHLIB)
 AC_SUBST(CFLAGS_STLIB)
 AC_SUBST(LDFLAGS_SHLIB)
+
+dnl
+dnl Where do udev rules go?
+dnl
+AC_ARG_WITH([udev_rules_dir],
+  [AS_HELP_STRING([--with-udev-rules-dir@<:@=DIR@:>@],
+       [Install udev rules into DIR.])],
+  [],
+  [with_udev_rules_dir=yes])
+AS_IF([test "x${with_udev_rules_dir}" != "xno"],
+  [
+       AS_IF([test "x${with_udev_rules_dir}" = "xyes"],
+         [
+               PKG_CHECK_MODULES([udev], [udev],
+                 [
+                       with_udev_rules_dir="$($PKG_CONFIG --variable=udevdir udev)/rules.d"
+                 ], [
+                       with_udev_rules_dir=""
+                 ])
+         ])
+       AC_MSG_CHECKING([for udev rules dir])
+       pkg_udev_rules_dir="${with_udev_rules_dir}"
+       AS_IF([test -n "${pkg_udev_rules_dir}"],
+         [
+               AC_MSG_RESULT(${pkg_udev_rules_dir})
+               have_udev="yes"
+         ],
+         [
+               AC_MSG_RESULT(no)
+               have_udev="no"
+         ])
+  ],
+  [
+       have_udev="disabled"
+  ])
+AC_SUBST(have_udev)
+AC_SUBST(pkg_udev_rules_dir)
+
+dnl
+dnl Where do cron jobs go?
+dnl
+AC_ARG_WITH([crond_dir],
+  [AS_HELP_STRING([--with-crond-dir@<:@=DIR@:>@],
+       [Install system crontabs into DIR.])],
+  [],
+  [with_crond_dir=yes])
+AS_IF([test "x${with_crond_dir}" != "xno"],
+  [
+       AS_IF([test "x${with_crond_dir}" = "xyes"],
+         [
+               AS_IF([test -d "/etc/cron.d"],
+                 [with_crond_dir="/etc/cron.d"])
+         ])
+       AC_MSG_CHECKING([for system crontab dir])
+       crond_dir="${with_crond_dir}"
+       AS_IF([test -n "${crond_dir}"],
+         [
+               AC_MSG_RESULT(${crond_dir})
+               have_crond="yes"
+         ],
+         [
+               AC_MSG_RESULT(no)
+               have_crond="no"
+         ])
+  ],
+  [
+       have_crond="disabled"
+  ])
+AC_SUBST(have_crond)
+AC_SUBST(crond_dir)
+
+dnl
+dnl Where do systemd services go?
+dnl
+AC_ARG_WITH([systemd_unit_dir],
+  [AS_HELP_STRING([--with-systemd-unit-dir@<:@=DIR@:>@],
+       [Install systemd system units into DIR.])],
+  [],
+  [with_systemd_unit_dir=yes])
+AS_IF([test "x${with_systemd_unit_dir}" != "xno"],
+  [
+       AS_IF([test "x${with_systemd_unit_dir}" = "xyes"],
+         [
+               PKG_CHECK_MODULES([systemd], [systemd],
+                 [
+                       with_systemd_unit_dir="$($PKG_CONFIG --variable=systemdsystemunitdir systemd)"
+                 ], [
+                       with_systemd_unit_dir=""
+                 ])
+               m4_pattern_allow([^PKG_(MAJOR|MINOR|BUILD|REVISION)$])
+         ])
+       AC_MSG_CHECKING([for systemd system unit dir])
+       systemd_system_unit_dir="${with_systemd_unit_dir}"
+       AS_IF([test -n "${systemd_system_unit_dir}"],
+         [
+               AC_MSG_RESULT(${systemd_system_unit_dir})
+               have_systemd="yes"
+         ],
+         [
+               AC_MSG_RESULT(no)
+               have_systemd="no"
+         ])
+  ],
+  [
+       have_systemd="disabled"
+  ])
+AC_SUBST(have_systemd)
+AC_SUBST(systemd_system_unit_dir)
+
 dnl
 dnl Make our output files, being sure that we create the some miscellaneous 
 dnl directories
@@ -1516,7 +1757,7 @@ for i in MCONFIG Makefile \
        misc/Makefile ext2ed/Makefile e2fsck/Makefile \
        debugfs/Makefile tests/Makefile tests/progs/Makefile \
        resize/Makefile doc/Makefile intl/Makefile \
-       intl/libgnuintl.h po/Makefile.in ; do
+       intl/libgnuintl.h po/Makefile.in scrub/Makefile; do
        if test -d `dirname ${srcdir}/$i` ; then
                outlist="$outlist $i"
        fi
index a9a29e1b225a12c307f3ca59013f9dc260d12602..91dd71465b67c65b4eab8a2c0a51d22ce7917a8b 100644 (file)
@@ -1,3 +1,26 @@
+e2fsprogs (1.45.0-1) unstable; urgency=medium
+
+  * New upstream feature
+  * tune2fs can now set the file system error bit to force a check at the
+    next fsck by using the extended option "force_fsck".
+  * There is now an e2scrub script which will allow e2fsck to be run
+    on mounted file systems using an LVM device.  There will be a systemd
+    script to automatically run e2scrub on all ext4* file systems where it
+    can be supported.
+  * mke2fs will attempt avoid discarding pre-allocated blocks when
+    initializing a file system on a file.
+  * The fuse2fs command now supports a "fakeroot" option to allow an
+    unprivileged user to fuse2fs to modify rootfs images.
+  * Add initial support for the character set and case-folding file system
+    feature.
+  * Debugfs can now set the inode's checksum field
+  * E2image now accepts the -b and -B options to allow the user to specify
+    the superblock location when creating a raw or qcow2 image.
+  * Update the debhelper compatibility level to 11
+  * Update the Debian policy compliance to 4.3.0
+
+ -- Theodore Y. Ts'o <tytso@mit.edu>  Wed, 06 Mar 2019 12:55:18 -0500
+
 e2fsprogs (1.44.6-1) unstable; urgency=medium
 
   * New upstream version
index ec635144f60048986bc560c5576355344005e6e7..b4de3947675361a7770d29b8982c407b0ec6b2a0 100644 (file)
@@ -1 +1 @@
-9
+11
index 346cff8361626e430a02ad2af67541043961e6c9..e454687f9c70a2fe24838bead8967fd8136f15fd 100644 (file)
@@ -2,8 +2,8 @@ Source: e2fsprogs
 Section: admin
 Priority: required
 Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
-Build-Depends: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, libattr1-dev, debhelper (>= 9.0), libblkid-dev, uuid-dev, m4
-Standards-Version: 4.2.1
+Build-Depends: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, libattr1-dev, debhelper (>= 11.0), libblkid-dev, uuid-dev, m4, udev, systemd, cron
+Standards-Version: 4.3.0
 Homepage: http://e2fsprogs.sourceforge.net
 Vcs-Browser: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
 Vcs-Git: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git -b debian/master
@@ -55,8 +55,8 @@ Architecture: any
 Multi-Arch: same
 Priority: optional
 Section: oldlibs
-Description: transitional package
- This is a transitional package. It can safely be removed.
+Description: transitional package to libcom-err2
+ This is a transitional package to libcom-err2. It can safely be removed.
 
 Package: libcom-err2
 Section: libs
@@ -138,16 +138,16 @@ Architecture: any
 Multi-Arch: same
 Priority: optional
 Section: oldlibs
-Description: transitional package
- This is a transitional package. It can safely be removed.
+Description: transitional package to libext2fs2
+ This is a transitional package to libext2fs2. It can safely be removed.
 
 Package: e2fslibs-dev
 Depends: libext2fs-dev, ${misc:Depends}
 Architecture: all
 Priority: optional
 Section: oldlibs
-Description: transitional package
- This is a transitional package. It can safely be removed.
+Description: transitional package to libext2fs-dev
+ This is a transitional package to libext2fs-dev. It can safely be removed.
 
 Package: libext2fs2
 Section: libs
index 0a22f31433d445b5804b80ee16b643ec0457d06e..e0e49ce44ea29c95e2dba968e75dc5bf6b273944 100644 (file)
@@ -1,5 +1,9 @@
 sbin
 usr/bin
+usr/lib
 usr/sbin
 usr/share/man
 etc
+lib/udev/rules.d
+lib/systemd/system
+usr/lib
diff --git a/debian/e2fsprogs.postinst.dh9 b/debian/e2fsprogs.postinst.dh9
new file mode 100644 (file)
index 0000000..e7acb0e
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# Abort on error.
+set -e
+
+if [ -x /usr/sbin/update-initramfs -a \
+       -e /etc/initramfs-tools/initramfs.conf ]; then
+    update-initramfs -u
+fi
+
+#DEBHELPER#
+
+# debhelper doesn't know what timers are...
+update_svc() {
+       deb-systemd-helper unmask "$1" >/dev/null || true
+
+       if deb-systemd-helper --quiet was-enabled "$1"; then
+               deb-systemd-helper enable "$1" >/dev/null || true
+       else
+               deb-systemd-helper update-state "$1" >/dev/null || true
+       fi
+}
+update_svc e2scrub_all.timer
+update_svc e2scrub_reap.service
+
+# Start our new services
+if [ -d /run/systemd/system ]; then
+       systemctl --system daemon-reload >/dev/null || true
+       deb-systemd-invoke start e2scrub_all.timer >/dev/null || true
+fi
+
+exit 0
diff --git a/debian/e2fsprogs.postrm.dh9 b/debian/e2fsprogs.postrm.dh9
new file mode 100644 (file)
index 0000000..32cb642
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+update_svc() {
+       deb-systemd-helper mask "$1" >/dev/null || true
+
+       if deb-systemd-helper --quiet was-enabled "$1"; then
+               # Enables the unit on first installation, creates new
+               # symlinks on upgrades if the unit file has changed.
+               deb-systemd-helper disable "$1" >/dev/null || true
+       fi
+}
+
+if [ "$1" != "upgrade" ]; then
+       # Abort on error.
+       set -e
+
+       if [ -x /usr/sbin/update-initramfs -a \
+               -e /etc/initramfs-tools/initramfs.conf ]; then
+           update-initramfs -u
+       fi
+
+       #DEBHELPER#
+
+       # debhelper doesn't know what timers are...
+       update_svc e2scrub_all.timer
+       update_svc e2scrub_reap.service
+
+       # Start our new services
+       if [ -d /run/systemd/system ]; then
+               deb-systemd-invoke stop e2scrub_all.timer >/dev/null || true
+       fi
+fi
+
+exit 0
+
index 8ec9cd87b1308466b08297c476aa8fada71484f8..f7c54b3ba4b280d82b4337fa4a9d33169be82495 100644 (file)
@@ -5,6 +5,7 @@ libe2p.so.2 libext2fs2 #MINVER#
  e2p_edit_mntopts@Base 1.37
  e2p_encmode2string@Base 1.43
  e2p_feature2string@Base 1.37
+ e2p_get_encoding_flags@Base 1.45
  e2p_hash2string@Base 1.37
  e2p_is_null_uuid@Base 1.37
  e2p_jrnl_feature2string@Base 1.41.1
@@ -13,6 +14,8 @@ libe2p.so.2 libext2fs2 #MINVER#
  e2p_mntopt2string@Base 1.37
  e2p_os2string@Base 1.37
  e2p_percent@Base 1.40
+ e2p_str2encoding@Base 1.45
+ e2p_str2encoding_flags@Base 1.45
  e2p_string2encmode@Base 1.43
  e2p_string2feature@Base 1.37
  e2p_string2hash@Base 1.37
@@ -171,6 +174,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
  ext2fs_dirent_name_len@Base 1.43
  ext2fs_dirent_set_file_type@Base 1.43
  ext2fs_dirent_set_name_len@Base 1.43
+ ext2fs_dirhash2@Base 1.45
  ext2fs_dirhash@Base 1.37
  ext2fs_div64_ceil@Base 1.42
  ext2fs_div_ceil@Base 1.40
@@ -249,6 +253,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
  ext2fs_find_first_zero_generic_bmap@Base 1.42.2
  ext2fs_find_first_zero_inode_bitmap2@Base 1.42.2
  ext2fs_find_inode_goal@Base 1.43
+ ext2fs_fix_extents_checksums@Base 1.45
  ext2fs_flush2@Base 1.42
  ext2fs_flush@Base 1.37
  ext2fs_flush_icache@Base 1.37
@@ -461,6 +466,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
  ext2fs_read_ext_attr3@Base 1.43
  ext2fs_read_ext_attr@Base 1.37
  ext2fs_read_ind_block@Base 1.37
+ ext2fs_read_inode2@Base 1.45
  ext2fs_read_inode@Base 1.37
  ext2fs_read_inode_bitmap@Base 1.37
  ext2fs_read_inode_full@Base 1.37
@@ -615,6 +621,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
  ext2fs_write_ext_attr3@Base 1.43
  ext2fs_write_ext_attr@Base 1.37
  ext2fs_write_ind_block@Base 1.37
+ ext2fs_write_inode2@Base 1.45
  ext2fs_write_inode@Base 1.37
  ext2fs_write_inode_bitmap@Base 1.37
  ext2fs_write_inode_full@Base 1.37
@@ -643,6 +650,8 @@ libext2fs.so.2 libext2fs2 #MINVER#
  io_channel_write_blk64@Base 1.41.1
  io_channel_write_byte@Base 1.37
  io_channel_zeroout@Base 1.43
+ nls_ascii@Base 1.45
+ nls_utf8_11_0@Base 1.45
  qcow2_read_header@Base 1.42
  qcow2_write_raw_image@Base 1.42
  set_undo_io_backing_manager@Base 1.41.0
@@ -660,3 +669,16 @@ libext2fs.so.2 libext2fs2 #MINVER#
  undo_io_manager@Base 1.41.0
  unix_io_manager@Base 1.37
  unixfd_io_manager@Base 1.43.2
+ utf8agemax@Base 1.45
+ utf8agemin@Base 1.45
+ utf8byte@Base 1.45
+ utf8cursor@Base 1.45
+ utf8len@Base 1.45
+ utf8nagemax@Base 1.45
+ utf8nagemin@Base 1.45
+ utf8ncursor@Base 1.45
+ utf8nfkdi@Base 1.45
+ utf8nfkdicf@Base 1.45
+ utf8nlen@Base 1.45
+ utf8version_is_supported@Base 1.45
+ utf8version_latest@Base 1.45
index 9bbdea492d3938a53771e64a12e852642b4389d5..334811bb92fd55ddcfcd0cf5c6ad6b98a6dd4076 100755 (executable)
@@ -47,6 +47,8 @@ endif
 
 DH_VERSION := $(shell dpkg-query -W -f '$${Version}' debhelper)
 
+USE_DH9 ?= $(shell if dpkg --compare-versions $(DH_VERSION) lt 11 ; then echo yes ; fi)
+
 # USE_DBGSYM :=
 USE_DBGSYM ?= $(shell if dpkg --compare-versions $(DH_VERSION) ">=" 9.20160114 ; then echo yes ; fi)
 
@@ -99,6 +101,7 @@ UDEB_NAME    ?= $(package)-udeb_$(MAIN_VERSION)_$(DEB_HOST_ARCH).udeb
 UDEB_PRIORITY  ?= $(shell grep '^Package: e2fsprogs-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
 
 STAMPSDIR      ?= debian/stampdir
+CFGDH          ?= ${STAMPSDIR}/configure-dh
 CFGSTDSTAMP    ?= ${STAMPSDIR}/configure-std-stamp
 CFGBFSTAMP     ?= ${STAMPSDIR}/configure-bf-stamp
 BUILDSTDSTAMP  ?= ${STAMPSDIR}/build-std-stamp
@@ -164,7 +167,8 @@ endif
 
 BACKTRACE_CONF_FLAGS ?= $(shell if ${debdir}/scripts/test-backtrace ; then echo --disable-backtrace ; fi)
 
-COMMON_CONF_FLAGS = --disable-e2initrd-helper \
+COMMON_CONF_FLAGS = --enable-lto --disable-ubsan --disable-addrsan \
+       --disable-threadsan --disable-e2initrd-helper \
        --infodir=/usr/share/info  --enable-symlink-install \
        --with-multiarch=$(DEB_HOST_MULTIARCH) \
        $(BACKTRACE_CONF_FLAGS) $(UTIL_CONF_FLAGS)
@@ -195,7 +199,18 @@ mrproper: clean
                mv debian/control.save debian/control ; \
        fi
 
-${CFGSTDSTAMP}:
+${CFGDH}:
+ifeq ($(USE_DH9),yes)
+       mv debian/compat debian/compat.save
+       echo 9 > debian/compat
+       mv debian/e2fsprogs.postinst debian/e2fsprogs.postinst.save
+       cp debian/e2fsprogs.postinst.dh9 debian/e2fsprogs.postinst
+       cp debian/e2fsprogs.postrm.dh9 debian/e2fsprogs.postrm
+endif
+       mkdir -p ${STAMPSDIR}
+       touch ${CFGDH}
+
+${CFGSTDSTAMP}: ${CFGDH}
        dh_testdir
        if which dh_update_autotools_config > /dev/null 2>&1 ; then \
                dh_update_autotools_config ;\
@@ -228,7 +243,7 @@ endif
        mkdir -p ${STAMPSDIR}
        touch ${CFGSTDSTAMP}
 
-${CFGBFSTAMP}:
+${CFGBFSTAMP}: ${CFGDH}
        dh_testdir
        if which dh_update_autotools_config > /dev/null 2>&1 ; then \
                dh_update_autotools_config ;\
@@ -300,6 +315,15 @@ clean:
                mv debian/orig-gmo/* po ; \
                rmdir debian/orig-gmo ; \
        fi
+       if test -f debian/compat.save; then \
+               mv debian/compat.save debian/compat ; \
+       fi
+       if test -f debian/e2fsprogs.postinst.save; then \
+               mv debian/e2fsprogs.postinst.save debian/e2fsprogs.postinst ; \
+       fi
+       if test -f debian/e2fsprogs.postrm; then \
+               rm -f debian/e2fsprogs.postrm ; \
+       fi
        rm -rf ${STAMPSDIR}
        [ ! -f ${stdbuilddir}/Makefile ] || $(MAKE) -C ${stdbuilddir} V=1 distclean
        [ ! -f ${bfbuilddir}/Makefile ] || $(MAKE) -C ${bfbuilddir} V=1 distclean
@@ -440,7 +464,9 @@ endif
        dh_compress -a
 
        dh_makeshlibs -a --add-udeb=e2fsprogs-udeb
-
+ifneq ($(USE_DH9),yes)
+       dh_installsystemd -p e2fsprogs
+endif
        $(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \
            debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb
        dh_installdeb -a
index bb4d1947b33bc06abcb2e58a1dea4c69342f4ed6..bc59f5f97513ece49769794f6937ac4c545ea716 100644 (file)
@@ -287,6 +287,7 @@ htree.o: $(srcdir)/htree.c $(top_builddir)/lib/config.h \
  $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
  $(top_srcdir)/lib/ext2fs/bitops.h $(srcdir)/../misc/create_inode.h \
+ $(top_srcdir)/lib/ext2fs/nls.h \
  $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/quotaio.h \
  $(top_srcdir)/lib/support/dqblk_v2.h \
  $(top_srcdir)/lib/support/quotaio_tree.h
index faae12da25ecbdd1c2b0a4c1f90d09253cec03eb..15b01214a8df28a26955d50f7771ec4a9cae20d0 100644 (file)
@@ -50,7 +50,7 @@ int journal_enable_debug = -1;
 
 ss_request_table *extra_cmds;
 const char *debug_prog_name;
-int sci_idx;
+int ss_sci_idx;
 
 ext2_filsys    current_fs;
 quota_ctx_t    current_qctx;
@@ -218,7 +218,8 @@ errout:
                com_err(device, retval, "while trying to close filesystem");
 }
 
-void do_open_filesys(int argc, char **argv)
+void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        int     c, err;
        int     catastrophic = 0;
@@ -294,7 +295,8 @@ print_usage:
                "<device>\n", argv[0]);
 }
 
-void do_lcd(int argc, char **argv)
+void do_lcd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+           void *infop EXT2FS_ATTR((unused)))
 {
        if (argc != 2) {
                com_err(argv[0], 0, "Usage: %s %s", argv[0], "<native dir>");
@@ -331,7 +333,8 @@ static void close_filesystem(NOARGS)
        return;
 }
 
-void do_close_filesys(int argc, char **argv)
+void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        int     c;
 
@@ -359,7 +362,8 @@ void do_close_filesys(int argc, char **argv)
 }
 
 #ifndef READ_ONLY
-void do_init_filesys(int argc, char **argv)
+void do_init_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_super_block param;
        errcode_t       retval;
@@ -419,7 +423,9 @@ static void print_bg_opts(ext2_filsys fs, dgrp_t group, int mask,
        }
 }
 
-void do_show_super_stats(int argc, char *argv[])
+void do_show_super_stats(int argc, char *argv[],
+                        int sci_idx EXT2FS_ATTR((unused)),
+                        void *infop EXT2FS_ATTR((unused)))
 {
        const char *units ="block";
        dgrp_t  i;
@@ -514,7 +520,9 @@ print_usage:
 
 #ifndef READ_ONLY
 void do_dirty_filesys(int argc EXT2FS_ATTR((unused)),
-                     char **argv EXT2FS_ATTR((unused)))
+                     char **argv EXT2FS_ATTR((unused)),
+                     int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
@@ -965,7 +973,8 @@ static void dump_inode(ext2_ino_t inode_num, struct ext2_inode *inode)
        close_pager(out);
 }
 
-void do_stat(int argc, char *argv[])
+void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
        struct ext2_inode * inode_buf;
@@ -985,8 +994,8 @@ void do_stat(int argc, char *argv[])
                return;
        }
 
-       if (debugfs_read_inode_full(inode, inode_buf, argv[0],
-                                       EXT2_INODE_SIZE(current_fs->super))) {
+       if (debugfs_read_inode2(inode, inode_buf, argv[0],
+                               EXT2_INODE_SIZE(current_fs->super), 0)) {
                free(inode_buf);
                return;
        }
@@ -996,7 +1005,8 @@ void do_stat(int argc, char *argv[])
        return;
 }
 
-void do_dump_extents(int argc, char **argv)
+void do_dump_extents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
        ext2_ino_t      ino;
@@ -1067,7 +1077,8 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_blocks(int argc, char *argv[])
+void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
 
@@ -1084,7 +1095,8 @@ void do_blocks(int argc, char *argv[])
        return;
 }
 
-void do_chroot(int argc, char *argv[])
+void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
        int retval;
@@ -1101,7 +1113,8 @@ void do_chroot(int argc, char *argv[])
 }
 
 #ifndef READ_ONLY
-void do_clri(int argc, char *argv[])
+void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
        struct ext2_inode inode_buf;
@@ -1116,7 +1129,8 @@ void do_clri(int argc, char *argv[])
                return;
 }
 
-void do_freei(int argc, char *argv[])
+void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int    len = 1;
        int             err = 0;
@@ -1146,7 +1160,8 @@ void do_freei(int argc, char *argv[])
        ext2fs_mark_ib_dirty(current_fs);
 }
 
-void do_seti(int argc, char *argv[])
+void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int    len = 1;
        int             err = 0;
@@ -1177,7 +1192,8 @@ void do_seti(int argc, char *argv[])
 }
 #endif /* READ_ONLY */
 
-void do_testi(int argc, char *argv[])
+void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
 
@@ -1191,7 +1207,8 @@ void do_testi(int argc, char *argv[])
 }
 
 #ifndef READ_ONLY
-void do_freeb(int argc, char *argv[])
+void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
        blk64_t count = 1;
@@ -1210,7 +1227,8 @@ void do_freeb(int argc, char *argv[])
        ext2fs_mark_bb_dirty(current_fs);
 }
 
-void do_setb(int argc, char *argv[])
+void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
        blk64_t count = 1;
@@ -1230,7 +1248,8 @@ void do_setb(int argc, char *argv[])
 }
 #endif /* READ_ONLY */
 
-void do_testb(int argc, char *argv[])
+void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t block;
        blk64_t count = 1;
@@ -1314,7 +1333,8 @@ static void modify_u32(char *com, const char *prompt,
 }
 
 
-void do_modify_inode(int argc, char *argv[])
+void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
        ext2_ino_t      inode_num;
@@ -1391,7 +1411,9 @@ void do_modify_inode(int argc, char *argv[])
 }
 #endif /* READ_ONLY */
 
-void do_change_working_dir(int argc, char *argv[])
+void do_change_working_dir(int argc, char *argv[],
+                          int sci_idx EXT2FS_ATTR((unused)),
+                          void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
        int             retval;
@@ -1408,7 +1430,9 @@ void do_change_working_dir(int argc, char *argv[])
        return;
 }
 
-void do_print_working_directory(int argc, char *argv[])
+void do_print_working_directory(int argc, char *argv[],
+                               int sci_idx EXT2FS_ATTR((unused)),
+                               void *infop EXT2FS_ATTR((unused)))
 {
        int     retval;
        char    *pathname = NULL;
@@ -1497,7 +1521,8 @@ static void make_link(char *sourcename, char *destname)
 }
 
 
-void do_link(int argc, char *argv[])
+void do_link(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        if (common_args_process(argc, argv, 3, 3, "link",
                                "<source file> <dest_name>", CHECK_FS_RW))
@@ -1519,7 +1544,8 @@ static int mark_blocks_proc(ext2_filsys fs, blk64_t *blocknr,
        return 0;
 }
 
-void do_undel(int argc, char *argv[])
+void do_undel(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        struct ext2_inode inode;
@@ -1582,7 +1608,8 @@ static void unlink_file_by_name(char *filename)
        return;
 }
 
-void do_unlink(int argc, char *argv[])
+void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        if (common_args_process(argc, argv, 2, 2, "link",
                                "<pathname>", CHECK_FS_RW))
@@ -1591,7 +1618,8 @@ void do_unlink(int argc, char *argv[])
        unlink_file_by_name(argv[1]);
 }
 
-void do_copy_inode(int argc, char *argv[])
+void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      src_ino, dest_ino;
        unsigned char   buf[4096];
@@ -1608,18 +1636,20 @@ void do_copy_inode(int argc, char *argv[])
        if (!dest_ino)
                return;
 
-       if (debugfs_read_inode_full(src_ino, (struct ext2_inode *) buf,
-                                   argv[0], sizeof(buf)))
+       if (debugfs_read_inode2(src_ino, (struct ext2_inode *) buf,
+                               argv[0], sizeof(buf), 0))
                return;
 
-       if (debugfs_write_inode_full(dest_ino, (struct ext2_inode *) buf,
-                                    argv[0], sizeof(buf)))
+       if (debugfs_write_inode2(dest_ino, (struct ext2_inode *) buf,
+                                argv[0], sizeof(buf), 0))
                return;
 }
 
 #endif /* READ_ONLY */
 
-void do_find_free_block(int argc, char *argv[])
+void do_find_free_block(int argc, char *argv[],
+                       int sci_idx EXT2FS_ATTR((unused)),
+                       void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t free_blk, goal, first_free = 0;
        int             count;
@@ -1671,7 +1701,9 @@ void do_find_free_block(int argc, char *argv[])
        printf("\n");
 }
 
-void do_find_free_inode(int argc, char *argv[])
+void do_find_free_inode(int argc, char *argv[],
+                       int sci_idx EXT2FS_ATTR((unused)),
+                       void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      free_inode, dir;
        int             mode;
@@ -1711,7 +1743,8 @@ void do_find_free_inode(int argc, char *argv[])
 }
 
 #ifndef READ_ONLY
-void do_write(int argc, char *argv[])
+void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
 
@@ -1724,7 +1757,8 @@ void do_write(int argc, char *argv[])
                com_err(argv[0], retval, 0);
 }
 
-void do_mknod(int argc, char *argv[])
+void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned long   major, minor;
        errcode_t       retval;
@@ -1774,7 +1808,8 @@ void do_mknod(int argc, char *argv[])
                com_err(argv[0], retval, 0);
 }
 
-void do_mkdir(int argc, char *argv[])
+void do_mkdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t retval;
 
@@ -1827,7 +1862,8 @@ static void kill_file_by_inode(ext2_ino_t inode)
 }
 
 
-void do_kill_file(int argc, char *argv[])
+void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode_num;
 
@@ -1837,7 +1873,8 @@ void do_kill_file(int argc, char *argv[])
        kill_file_by_inode(inode_num);
 }
 
-void do_rm(int argc, char *argv[])
+void do_rm(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+          void *infop EXT2FS_ATTR((unused)))
 {
        int retval;
        ext2_ino_t inode_num;
@@ -1898,7 +1935,8 @@ static int rmdir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_rmdir(int argc, char *argv[])
+void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        int retval;
        ext2_ino_t inode_num;
@@ -1956,7 +1994,9 @@ void do_rmdir(int argc, char *argv[])
 #endif /* READ_ONLY */
 
 void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
-                           char *argv[] EXT2FS_ATTR((unused)))
+                           char *argv[] EXT2FS_ATTR((unused)),
+                           int sci_idx EXT2FS_ATTR((unused)),
+                           void *infop EXT2FS_ATTR((unused)))
 {
        if (current_fs)
                printf("Open mode: read-%s\n",
@@ -1966,7 +2006,8 @@ void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
 }
 
 #ifndef READ_ONLY
-void do_expand_dir(int argc, char *argv[])
+void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t inode;
        int retval;
@@ -1980,7 +2021,8 @@ void do_expand_dir(int argc, char *argv[])
        return;
 }
 
-void do_features(int argc, char *argv[])
+void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        int     i;
 
@@ -2001,7 +2043,8 @@ void do_features(int argc, char *argv[])
 }
 #endif /* READ_ONLY */
 
-void do_bmap(int argc, char *argv[])
+void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        blk64_t         blk, pblk = 0;
@@ -2064,7 +2107,8 @@ void do_bmap(int argc, char *argv[])
        fputc('\n', stdout);
 }
 
-void do_imap(int argc, char *argv[])
+void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        unsigned long   group, block, block_nr, offset;
@@ -2095,7 +2139,8 @@ void do_imap(int argc, char *argv[])
 
 }
 
-void do_idump(int argc, char *argv[])
+void do_idump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode_large *inode;
        ext2_ino_t      ino;
@@ -2165,7 +2210,9 @@ err:
 }
 
 #ifndef READ_ONLY
-void do_set_current_time(int argc, char *argv[])
+void do_set_current_time(int argc, char *argv[],
+                        int sci_idx EXT2FS_ATTR((unused)),
+                        void *infop EXT2FS_ATTR((unused)))
 {
        __s64 now;
 
@@ -2224,7 +2271,9 @@ static int find_supp_feature(__u32 *supp, int feature_type, char *name)
        return 0;
 }
 
-void do_supported_features(int argc, char *argv[])
+void do_supported_features(int argc, char *argv[],
+                          int sci_idx EXT2FS_ATTR((unused)),
+                          void *infop EXT2FS_ATTR((unused)))
 {
         int    ret;
        __u32   supp[3] = { EXT2_LIB_FEATURE_COMPAT_SUPP,
@@ -2252,7 +2301,8 @@ void do_supported_features(int argc, char *argv[])
 }
 
 #ifndef READ_ONLY
-void do_punch(int argc, char *argv[])
+void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        blk64_t         start, end;
@@ -2287,7 +2337,8 @@ void do_punch(int argc, char *argv[])
        }
 }
 
-void do_fallocate(int argc, char *argv[])
+void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        blk64_t         start, end;
@@ -2324,7 +2375,8 @@ void do_fallocate(int argc, char *argv[])
 }
 #endif /* READ_ONLY */
 
-void do_symlink(int argc, char *argv[])
+void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+               void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
 
@@ -2339,7 +2391,9 @@ void do_symlink(int argc, char *argv[])
 }
 
 #if CONFIG_MMP
-void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[])
+void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
+                int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        struct mmp_struct *mmp_s;
        unsigned long long mmp_block;
@@ -2399,7 +2453,9 @@ void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[])
 }
 #else
 void do_dump_mmp(int argc EXT2FS_ATTR((unused)),
-                char *argv[] EXT2FS_ATTR((unused)))
+                char *argv[] EXT2FS_ATTR((unused)),
+                int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        fprintf(stdout, "MMP is unsupported, please recompile with "
                        "--enable-mmp\n");
@@ -2557,39 +2613,39 @@ int main(int argc, char **argv)
                                superblock, blocksize, catastrophic,
                                data_filename, undo_file);
 
-       sci_idx = ss_create_invocation(debug_prog_name, "0.0", (char *) NULL,
-                                      &debug_cmds, &retval);
+       ss_sci_idx = ss_create_invocation(debug_prog_name, "0.0", (char *) NULL,
+                                         &debug_cmds, &retval);
        if (retval) {
-               ss_perror(sci_idx, retval, "creating invocation");
+               ss_perror(ss_sci_idx, retval, "creating invocation");
                exit(1);
        }
-       ss_get_readline(sci_idx);
+       ss_get_readline(ss_sci_idx);
 
-       (void) ss_add_request_table (sci_idx, &ss_std_requests, 1, &retval);
+       (void) ss_add_request_table(ss_sci_idx, &ss_std_requests, 1, &retval);
        if (retval) {
-               ss_perror(sci_idx, retval, "adding standard requests");
+               ss_perror(ss_sci_idx, retval, "adding standard requests");
                exit (1);
        }
        if (extra_cmds)
-               ss_add_request_table (sci_idx, extra_cmds, 1, &retval);
+               ss_add_request_table(ss_sci_idx, extra_cmds, 1, &retval);
        if (retval) {
-               ss_perror(sci_idx, retval, "adding extra requests");
+               ss_perror(ss_sci_idx, retval, "adding extra requests");
                exit (1);
        }
        if (request) {
                retval = 0;
-               retval = ss_execute_line(sci_idx, request);
+               retval = ss_execute_line(ss_sci_idx, request);
                if (retval) {
-                       ss_perror(sci_idx, retval, request);
+                       ss_perror(ss_sci_idx, retval, request);
                        exit_status++;
                }
        } else if (cmd_file) {
-               exit_status = source_file(cmd_file, sci_idx);
+               exit_status = source_file(cmd_file, ss_sci_idx);
        } else {
-               ss_listen(sci_idx);
+               ss_listen(ss_sci_idx);
        }
 
-       ss_delete_invocation(sci_idx);
+       ss_delete_invocation(ss_sci_idx);
 
        if (current_fs)
                close_filesystem();
index 93f036dec248effc5f1f462eb0ab5063ad528da4..477d9bbb44ece992722476abbe47859831ba03c7 100644 (file)
@@ -25,7 +25,7 @@
 extern ext2_filsys current_fs;
 extern quota_ctx_t current_qctx;
 extern ext2_ino_t      root, cwd;
-extern int sci_idx;
+extern int ss_sci_idx;
 extern ss_request_table debug_cmds, extent_cmds;
 
 extern void reset_getopt(void);
@@ -54,12 +54,12 @@ extern int common_block_args_process(int argc, char *argv[],
                                     blk64_t *block, blk64_t *count);
 extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
                              const char *cmd);
-extern int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
-                                  const char *cmd, int bufsize);
+extern int debugfs_read_inode2(ext2_ino_t ino, struct ext2_inode * inode,
+                              const char *cmd, int bufsize, int flags);
 extern int debugfs_write_inode(ext2_ino_t ino, struct ext2_inode * inode,
                               const char *cmd);
-extern int debugfs_write_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
-                                   const char *cmd, int bufsize);
+extern int debugfs_write_inode2(ext2_ino_t ino, struct ext2_inode * inode,
+                               const char *cmd, int bufsize, int flags);
 extern int debugfs_write_new_inode(ext2_ino_t ino, struct ext2_inode * inode,
                                   const char *cmd);
 extern int ext2_file_type(unsigned int mode);
@@ -67,127 +67,127 @@ extern int ext2_file_type(unsigned int mode);
 /* ss command functions */
 
 /* dump.c */
-extern void do_dump(int argc, char **argv);
-extern void do_cat(int argc, char **argv);
-extern void do_rdump(int argc, char **argv);
+extern void do_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_cat(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rdump(int argc, char **argv, int sci_idx, void *infop);
 
 /* extent_inode.c */
-extern void do_extent_open(int argc, char **argv);
-extern void do_extent_close(int argc, char **argv);
-extern void do_current_node(int argc, char **argv);
-extern void do_root_node(int argc, char **argv);
-extern void do_last_leaf(int argc, char **argv);
-extern void do_first_sib(int argc, char **argv);
-extern void do_last_sib(int argc, char **argv);
-extern void do_next_sib(int argc, char **argv);
-extern void do_prev_sib(int argc, char **argv);
-extern void do_next_leaf(int argc, char **argv);
-extern void do_prev_leaf(int argc, char **argv);
-extern void do_next(int argc, char **argv);
-extern void do_prev(int argc, char **argv);
-extern void do_up(int argc, char **argv);
-extern void do_down(int argc, char **argv);
-extern void do_delete_node(int argc, char **argv);
-extern void do_replace_node(int argc, char **argv);
-extern void do_split_node(int argc, char **argv);
-extern void do_insert_node(int argc, char **argv);
-extern void do_set_bmap(int argc, char **argv);
-extern void do_print_all(int argc, char **argv);
-extern void do_fix_parents(int argc, char **argv);
-extern void do_info(int argc, char **argv);
-extern void do_goto_block(int argc, char **argv);
+extern void do_extent_open(int argc, char **argv, int sci_idx, void *infop);
+extern void do_extent_close(int argc, char **argv, int sci_idx, void *infop);
+extern void do_current_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_root_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_last_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_first_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_last_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev_sib(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev_leaf(int argc, char **argv, int sci_idx, void *infop);
+extern void do_next(int argc, char **argv, int sci_idx, void *infop);
+extern void do_prev(int argc, char **argv, int sci_idx, void *infop);
+extern void do_up(int argc, char **argv, int sci_idx, void *infop);
+extern void do_down(int argc, char **argv, int sci_idx, void *infop);
+extern void do_delete_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_replace_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_split_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_insert_node(int argc, char **argv, int sci_idx, void *infop);
+extern void do_set_bmap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_print_all(int argc, char **argv, int sci_idx, void *infop);
+extern void do_fix_parents(int argc, char **argv, int sci_idx, void *infop);
+extern void do_info(int argc, char **argv, int sci_idx, void *infop);
+extern void do_goto_block(int argc, char **argv, int sci_idx, void *infop);
 
 /* htree.c */
-extern void do_htree_dump(int argc, char **argv);
-extern void do_dx_hash(int argc, char **argv);
-extern void do_dirsearch(int argc, char **argv);
+extern void do_htree_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dx_hash(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dirsearch(int argc, char **argv, int sci_idx, void *infop);
 
 /* logdump.c */
-extern void do_logdump(int argc, char **argv);
+extern void do_logdump(int argc, char **argv, int sci_idx, void *infop);
 
 /* lsdel.c */
-extern void do_lsdel(int argc, char **argv);
+extern void do_lsdel(int argc, char **argv, int sci_idx, void *infop);
 
 /* icheck.c */
-extern void do_icheck(int argc, char **argv);
+extern void do_icheck(int argc, char **argv, int sci_idx, void *infop);
 
 /* ncheck.c */
-extern void do_ncheck(int argc, char **argv);
+extern void do_ncheck(int argc, char **argv, int sci_idx, void *infop);
 
 /* set_fields.c */
-extern void do_set_super(int argc, char **);
-extern void do_set_inode(int argc, char **);
-extern void do_set_block_group_descriptor(int argc, char **);
+extern void do_set_super(int argc, char **, int sci_idx, void *infop);
+extern void do_set_inode(int argc, char **, int sci_idx, void *infop);
+extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *infop);
 
 /* unused.c */
-extern void do_dump_unused(int argc, char **argv);
+extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
 
 /* debugfs.c */
 extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
                                struct ext2_inode *, int);
 
-extern void do_dirty_filesys(int argc, char **argv);
-extern void do_open_filesys(int argc, char **argv);
-extern void do_close_filesys(int argc, char **argv);
-extern void do_lcd(int argc, char **argv);
-extern void do_init_filesys(int argc, char **argv);
-extern void do_show_super_stats(int argc, char **argv);
-extern void do_kill_file(int argc, char **argv);
-extern void do_rm(int argc, char **argv);
-extern void do_link(int argc, char **argv);
-extern void do_undel(int argc, char **argv);
-extern void do_unlink(int argc, char **argv);
-extern void do_copy_inode(int argc, char *argv[]);
-extern void do_find_free_block(int argc, char **argv);
-extern void do_find_free_inode(int argc, char **argv);
-extern void do_stat(int argc, char **argv);
-extern void do_dump_extents(int argc, char **argv);
-extern void do_blocks(int argc, char *argv[]);
-
-extern void do_chroot(int argc, char **argv);
-extern void do_clri(int argc, char **argv);
-extern void do_freei(int argc, char **argv);
-extern void do_seti(int argc, char **argv);
-extern void do_testi(int argc, char **argv);
-extern void do_freeb(int argc, char **argv);
-extern void do_setb(int argc, char **argv);
-extern void do_testb(int argc, char **argv);
-extern void do_modify_inode(int argc, char **argv);
-extern void do_list_dir(int argc, char **argv);
-extern void do_change_working_dir(int argc, char **argv);
-extern void do_print_working_directory(int argc, char **argv);
-extern void do_write(int argc, char **argv);
-extern void do_mknod(int argc, char **argv);
-extern void do_mkdir(int argc, char **argv);
-extern void do_rmdir(int argc, char **argv);
-extern void do_show_debugfs_params(int argc, char **argv);
-extern void do_expand_dir(int argc, char **argv);
-extern void do_features(int argc, char **argv);
-extern void do_bmap(int argc, char **argv);
-extern void do_imap(int argc, char **argv);
-extern void do_idump(int argc, char *argv[]);
-extern void do_set_current_time(int argc, char **argv);
-extern void do_supported_features(int argc, char **argv);
-extern void do_punch(int argc, char **argv);
-extern void do_fallocate(int argc, char **argv);
-extern void do_symlink(int argc, char **argv);
-
-extern void do_dump_mmp(int argc, char **argv);
-extern void do_set_mmp_value(int argc, char **argv);
-
-extern void do_freefrag(int argc, char **argv);
-extern void do_filefrag(int argc, char *argv[]);
+extern void do_dirty_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_open_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_close_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_lcd(int argc, char **argv, int sci_idx, void *infop);
+extern void do_init_filesys(int argc, char **argv, int sci_idx, void *infop);
+extern void do_show_super_stats(int argc, char **argv, int sci_idx, void *infop);
+extern void do_kill_file(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rm(int argc, char **argv, int sci_idx, void *infop);
+extern void do_link(int argc, char **argv, int sci_idx, void *infop);
+extern void do_undel(int argc, char **argv, int sci_idx, void *infop);
+extern void do_unlink(int argc, char **argv, int sci_idx, void *infop);
+extern void do_copy_inode(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_find_free_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_find_free_inode(int argc, char **argv, int sci_idx, void *infop);
+extern void do_stat(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump_extents(int argc, char **argv, int sci_idx, void *infop);
+extern void do_blocks(int argc, char *argv[], int sci_idx, void *infop);
+
+extern void do_chroot(int argc, char **argv, int sci_idx, void *infop);
+extern void do_clri(int argc, char **argv, int sci_idx, void *infop);
+extern void do_freei(int argc, char **argv, int sci_idx, void *infop);
+extern void do_seti(int argc, char **argv, int sci_idx, void *infop);
+extern void do_testi(int argc, char **argv, int sci_idx, void *infop);
+extern void do_freeb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_setb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_testb(int argc, char **argv, int sci_idx, void *infop);
+extern void do_modify_inode(int argc, char **argv, int sci_idx, void *infop);
+extern void do_list_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_change_working_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_print_working_directory(int argc, char **argv, int sci_idx, void *infop);
+extern void do_write(int argc, char **argv, int sci_idx, void *infop);
+extern void do_mknod(int argc, char **argv, int sci_idx, void *infop);
+extern void do_mkdir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_rmdir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_show_debugfs_params(int argc, char **argv, int sci_idx, void *infop);
+extern void do_expand_dir(int argc, char **argv, int sci_idx, void *infop);
+extern void do_features(int argc, char **argv, int sci_idx, void *infop);
+extern void do_bmap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_imap(int argc, char **argv, int sci_idx, void *infop);
+extern void do_idump(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_set_current_time(int argc, char **argv, int sci_idx, void *infop);
+extern void do_supported_features(int argc, char **argv, int sci_idx, void *infop);
+extern void do_punch(int argc, char **argv, int sci_idx, void *infop);
+extern void do_fallocate(int argc, char **argv, int sci_idx, void *infop);
+extern void do_symlink(int argc, char **argv, int sci_idx, void *infop);
+
+extern void do_dump_mmp(int argc, char **argv, int sci_idx, void *infop);
+extern void do_set_mmp_value(int argc, char **argv, int sci_idx, void *infop);
+
+extern void do_freefrag(int argc, char **argv, int sci_idx, void *infop);
+extern void do_filefrag(int argc, char *argv[], int sci_idx, void *infop);
 
 /* do_journal.c */
 
-extern void do_journal_write(int argc, char *argv[]);
-extern void do_journal_open(int argc, char *argv[]);
-extern void do_journal_close(int argc, char *argv[]);
-extern void do_journal_run(int argc, char *argv[]);
+extern void do_journal_write(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_open(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_close(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_run(int argc, char *argv[], int sci_idx, void *infop);
 
 /* quota.c */
-extern void do_list_quota(int argc, char *argv[]);
-extern void do_get_quota(int argc, char *argv[]);
+extern void do_list_quota(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_get_quota(int argc, char *argv[], int sci_idx, void *infop);
 
 /* util.c */
 extern __s64 string_to_time(const char *arg);
@@ -195,14 +195,14 @@ errcode_t read_list(char *str, blk64_t **list, size_t *len);
 
 /* xattrs.c */
 void dump_inode_attributes(FILE *out, ext2_ino_t ino);
-void do_get_xattr(int argc, char **argv);
-void do_set_xattr(int argc, char **argv);
-void do_rm_xattr(int argc, char **argv);
-void do_list_xattr(int argc, char **argv);
+void do_get_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_set_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_rm_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_list_xattr(int argc, char **argv, int sci_idx, void *infop);
 void raw_inode_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 void block_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
 
 /* zap.c */
-extern void do_zap_block(int argc, char **argv);
-extern void do_block_dump(int argc, char **argv);
+extern void do_zap_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_block_dump(int argc, char **argv, int sci_idx, void *infop);
 extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
index d7ab916150e1ae21c5294f0b2309189158e39440..eeb363eb401e85bf5810282c8b088962a7ea1b64 100644 (file)
@@ -534,7 +534,8 @@ error:
        return err;
 }
 
-void do_journal_write(int argc, char *argv[])
+void do_journal_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t *blist = NULL, *rlist = NULL;
        size_t bn = 0, rn = 0;
@@ -856,7 +857,8 @@ static void update_64bit_flag(journal_t *journal)
        jfs_set_feature_64bit(journal);
 }
 
-void do_journal_open(int argc, char *argv[])
+void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        int opt, enable_csum = 0, csum_ver = 3;
        journal_t *journal;
@@ -926,7 +928,9 @@ void do_journal_open(int argc, char *argv[])
 }
 
 void do_journal_close(int argc EXT2FS_ATTR((unused)),
-                     char *argv[] EXT2FS_ATTR((unused)))
+                     char *argv[] EXT2FS_ATTR((unused)),
+                     int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        if (current_journal == NULL) {
                printf("Journal not open.\n");
@@ -936,7 +940,9 @@ void do_journal_close(int argc EXT2FS_ATTR((unused)),
        ext2fs_close_journal(current_fs, &current_journal);
 }
 
-void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[])
+void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[],
+                   int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t err;
 
index 4d5daf0ac5ebf9549f636e267744d0a77ebb5826..fdd66198edb1d682b1284f2e48ee20db0f46d8c7 100644 (file)
@@ -144,7 +144,8 @@ static void dump_file(const char *cmdname, ext2_ino_t ino, int fd,
        return;
 }
 
-void do_dump(int argc, char **argv)
+void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
        int             fd;
@@ -322,7 +323,8 @@ static int rdump_dirent(struct ext2_dir_entry *dirent,
        return 0;
 }
 
-void do_rdump(int argc, char **argv)
+void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        struct stat st;
        char *dest_dir;
@@ -366,7 +368,8 @@ void do_rdump(int argc, char **argv)
        }
 }
 
-void do_cat(int argc, char **argv)
+void do_cat(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+           void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
 
index c7a92a7633c33447eb3430fe5f29855aef0d12b7..ada13086905ac8c5276794b510ebe6b592d61b41 100644 (file)
@@ -64,7 +64,8 @@ static int common_extent_args_process(int argc, char *argv[], int min_argc,
 
 static char *orig_prompt, *extent_prompt;
 
-void do_extent_open(int argc, char *argv[])
+void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
        int             ret;
@@ -113,7 +114,8 @@ void do_extent_open(int argc, char *argv[])
        return;
 }
 
-void do_extent_close(int argc, char *argv[])
+void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        int ret;
 
@@ -158,72 +160,86 @@ static void generic_goto_node(const char *my_name, int argc,
        dbg_print_extent(0, &extent);
 }
 
-void do_current_node(int argc, char *argv[])
+void do_current_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("current_node", argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_root_node(int argc, char *argv[])
+void do_root_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("root_node", argc, argv, EXT2_EXTENT_ROOT);
 }
 
-void do_last_leaf(int argc, char *argv[])
+void do_last_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("last_leaf", argc, argv, EXT2_EXTENT_LAST_LEAF);
 }
 
-void do_first_sib(int argc, char *argv[])
+void do_first_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("first_sib", argc, argv, EXT2_EXTENT_FIRST_SIB);
 }
 
-void do_last_sib(int argc, char *argv[])
+void do_last_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_LAST_SIB);
 }
 
-void do_next_sib(int argc, char *argv[])
+void do_next_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_NEXT_SIB);
 }
 
-void do_prev_sib(int argc, char *argv[])
+void do_prev_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev_sib", argc, argv, EXT2_EXTENT_PREV_SIB);
 }
 
-void do_next_leaf(int argc, char *argv[])
+void do_next_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next_leaf", argc, argv, EXT2_EXTENT_NEXT_LEAF);
 }
 
-void do_prev_leaf(int argc, char *argv[])
+void do_prev_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev_leaf", argc, argv, EXT2_EXTENT_PREV_LEAF);
 }
 
-void do_next(int argc, char *argv[])
+void do_next(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("next", argc, argv, EXT2_EXTENT_NEXT);
 }
 
-void do_prev(int argc, char *argv[])
+void do_prev(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("prev", argc, argv, EXT2_EXTENT_PREV);
 }
 
-void do_up(int argc, char *argv[])
+void do_up(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+          void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("up", argc, argv, EXT2_EXTENT_UP);
 }
 
-void do_down(int argc, char *argv[])
+void do_down(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        generic_goto_node("down", argc, argv, EXT2_EXTENT_DOWN);
 }
 
-void do_delete_node(int argc, char *argv[])
+void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2fs_extent extent;
        errcode_t       retval;
@@ -245,7 +261,8 @@ void do_delete_node(int argc, char *argv[])
        dbg_print_extent(0, &extent);
 }
 
-void do_replace_node(int argc, char *argv[])
+void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                    void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--uninit] <lblk> <len> <pblk>";
        errcode_t       retval;
@@ -289,7 +306,8 @@ void do_replace_node(int argc, char *argv[])
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_split_node(int argc, char *argv[])
+void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
 
@@ -305,7 +323,8 @@ void do_split_node(int argc, char *argv[])
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_insert_node(int argc, char *argv[])
+void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--after] [--uninit] <lblk> <len> <pblk>";
        errcode_t       retval;
@@ -363,7 +382,8 @@ void do_insert_node(int argc, char *argv[])
        generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
 }
 
-void do_set_bmap(int argc, char **argv)
+void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--uninit] <lblk> <pblk>";
        struct ext2fs_extent extent;
@@ -411,7 +431,8 @@ void do_set_bmap(int argc, char **argv)
        dbg_print_extent(0, &extent);
 }
 
-void do_print_all(int argc, char **argv)
+void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "[--leaf-only|--reverse|--reverse-leaf]";
        struct ext2fs_extent    extent;
@@ -462,7 +483,8 @@ void do_print_all(int argc, char **argv)
        }
 }
 
-void do_fix_parents(int argc, char **argv)
+void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t               retval;
 
@@ -477,7 +499,8 @@ void do_fix_parents(int argc, char **argv)
        }
 }
 
-void do_info(int argc, char **argv)
+void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2fs_extent    extent;
        struct ext2_extent_info info;
@@ -510,7 +533,8 @@ void do_info(int argc, char **argv)
               info.max_uninit_len);
 }
 
-void do_goto_block(int argc, char **argv)
+void do_goto_block(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t               retval;
        blk64_t                 blk;
index 128598b0be56bab06dc435f7243d5a9f9d0b85f8..961b6962311dc5916073b34d39b55bcd10252a3e 100644 (file)
@@ -260,7 +260,8 @@ static void dir_iterate(ext2_ino_t ino, struct filefrag_struct *fs)
        }
 }
 
-void do_filefrag(int argc, char *argv[])
+void do_filefrag(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        struct filefrag_struct fs;
        struct ext2_inode inode;
index cf7d78aa67e3d89e38080f5a5889067ee9fc2ce1..1cdb3c6a5bb7c1620fd8fb6bab26e5f4919c983a 100644 (file)
@@ -27,6 +27,8 @@ extern char *optarg;
 #include "uuid/uuid.h"
 #include "e2p/e2p.h"
 
+#include "ext2fs/nls.h"
+
 static FILE *pager;
 
 static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
@@ -44,6 +46,7 @@ static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
        ext2_dirhash_t  hash, minor_hash;
        unsigned int    rec_len;
        int             hash_alg;
+       int             hash_flags = inode->i_flags & EXT4_CASEFOLD_FL;
        int             csum_size = 0;
 
        if (ext2fs_has_feature_metadata_csum(fs->super))
@@ -89,9 +92,10 @@ static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
                }
                strncpy(name, dirent->name, thislen);
                name[thislen] = '\0';
-               errcode = ext2fs_dirhash(hash_alg, name,
-                                        thislen, fs->super->s_hash_seed,
-                                        &hash, &minor_hash);
+               errcode = ext2fs_dirhash2(hash_alg, name, thislen,
+                                         fs->encoding, hash_flags,
+                                         fs->super->s_hash_seed,
+                                         &hash, &minor_hash);
                if (errcode)
                        com_err("htree_dump_leaf_node", errcode,
                                "while calculating hash");
@@ -227,7 +231,8 @@ errout:
 
 
 
-void do_htree_dump(int argc, char *argv[])
+void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      ino;
        struct ext2_inode inode;
@@ -302,13 +307,15 @@ errout:
 /*
  * This function prints the hash of a given file.
  */
-void do_dx_hash(int argc, char *argv[])
+void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+               void *infop EXT2FS_ATTR((unused)))
 {
-       ext2_dirhash_t hash, minor_hash;
+       ext2_dirhash_t hash, minor_hash, hash_flags;
        errcode_t       err;
        int             c;
        int             hash_version = 0;
        __u32           hash_seed[4];
+       const struct nls_table *encoding;
 
        hash_seed[0] = hash_seed[1] = hash_seed[2] = hash_seed[3] = 0;
 
@@ -327,6 +334,15 @@ void do_dx_hash(int argc, char *argv[])
                                return;
                        }
                        break;
+               case 'c':
+                       hash_flags = EXT4_CASEFOLD_FL;
+                       break;
+               case 'e':
+                       encoding = nls_load_table(e2p_str2encoding(optarg));
+                       if (!encoding)
+                               fprintf(stderr, "Invalid encoding: %s\n",
+                                       optarg);
+                               return;
                default:
                        goto print_usage;
                }
@@ -334,11 +350,13 @@ void do_dx_hash(int argc, char *argv[])
        if (optind != argc-1) {
        print_usage:
                com_err(argv[0], 0, "usage: dx_hash [-h hash_alg] "
-                       "[-s hash_seed] filename");
+                       "[-s hash_seed] [-c] [-e encoding] filename");
                return;
        }
-       err = ext2fs_dirhash(hash_version, argv[optind], strlen(argv[optind]),
-                            hash_seed, &hash, &minor_hash);
+       err = ext2fs_dirhash2(hash_version, argv[optind],
+                             strlen(argv[optind]), encoding, hash_flags,
+                             hash_seed, &hash, &minor_hash);
+
        if (err) {
                com_err(argv[0], err, "while calculating hash");
                return;
@@ -362,7 +380,8 @@ static int search_dir_block(ext2_filsys fs, blk64_t *blocknr,
                            e2_blkcnt_t blockcnt, blk64_t ref_blk,
                            int ref_offset, void *priv_data);
 
-void do_dirsearch(int argc, char *argv[])
+void do_dirsearch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      inode;
        struct process_block_struct pb;
index 3b9bd145be266909c8603a53bce3264beffeef85..71164cf740a0a4e178927455e1db91ff3a04606c 100644 (file)
@@ -53,7 +53,8 @@ static int icheck_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_icheck(int argc, char **argv)
+void do_icheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        struct block_walk_struct bw;
        struct block_info       *binfo;
index 03edb44b71fcb0ece3a2aa0bd81e66a5eab72f0a..e286ae83bbfed625eb32a35cc454f391a6873fdd 100644 (file)
@@ -72,7 +72,8 @@ static void do_hexdump (FILE *, char *, int);
                blocknr -= (be32_to_cpu((jsb)->s_maxlen) -      \
                            be32_to_cpu((jsb)->s_first));
 
-void do_logdump(int argc, char **argv)
+void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        int             c;
        int             retval;
index 4198ae38ab3c51429255df3775949f5c739efbd6..41af15d2bea46f48e9926b81550c66d3e7ff1dbe 100644 (file)
@@ -186,7 +186,8 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
        return 0;
 }
 
-void do_list_dir(int argc, char *argv[])
+void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        struct ext2_inode inode;
        ext2_ino_t      ino;
index 946b26867cd678540e069522ace860bfc3c01f14..c0d589007f4a5d912177490860f853943164e80e 100644 (file)
@@ -71,7 +71,8 @@ static int lsdel_proc(ext2_filsys fs,
        return 0;
 }
 
-void do_lsdel(int argc, char **argv)
+void do_lsdel(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        struct lsdel_struct     lsd;
        struct deleted_info     *delarray;
index 158e86586ca97b81e96956b635c5a0a9ff5d5e1f..011f26deb17eada68ea9423000cd80eb60e5da1b 100644 (file)
@@ -90,7 +90,8 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
        return 0;
 }
 
-void do_ncheck(int argc, char **argv)
+void do_ncheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        struct inode_walk_struct iw;
        int                     c, i;
index 0b7c2eee8d6a667044d83cd77154c5390663aa95..f792bd738781a077e26e20e6b01c6e5a597f82ca 100644 (file)
@@ -102,7 +102,8 @@ static int list_quota_callback(struct dquot *dq,
        return 0;
 }
 
-void do_list_quota(int argc, char *argv[])
+void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
        int             type;
@@ -131,7 +132,8 @@ void do_list_quota(int argc, char *argv[])
        }
 }
 
-void do_get_quota(int argc, char *argv[])
+void do_get_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        int             err, type;
        struct quota_handle *qh;
index 3cdf617cee5fca7749972b3de1400b0dc8cc71a3..a7dd34f7c5e5ebea71d044a4c1f4a94963e709eb 100644 (file)
@@ -53,6 +53,7 @@ static int array_idx;
 
 #define FLAG_ARRAY     0x0001
 #define FLAG_ALIAS     0x0002  /* Data intersects with other field */
+#define FLAG_CSUM      0x0004
 
 struct field_set_info {
        const char      *name;
@@ -72,6 +73,8 @@ static errcode_t parse_hashalg(struct field_set_info *info, char *field, char *a
 static errcode_t parse_time(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_bmap(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *arg);
+static errcode_t parse_inode_csum(struct field_set_info *info, char *field,
+                                 char *arg);
 static errcode_t parse_mmp_clear(struct field_set_info *info, char *field,
                                 char *arg);
 
@@ -218,7 +221,7 @@ static struct field_set_info inode_fields[] = {
        { "frag", &set_inode.osd2.hurd2.h_i_frag, NULL, 1, parse_uint, FLAG_ALIAS },
        { "fsize", &set_inode.osd2.hurd2.h_i_fsize, NULL, 1, parse_uint },
        { "checksum", &set_inode.osd2.linux2.l_i_checksum_lo, 
-               &set_inode.i_checksum_hi, 2, parse_uint },
+               &set_inode.i_checksum_hi, 2, parse_inode_csum, FLAG_CSUM },
        { "author", &set_inode.osd2.hurd2.h_i_author, NULL,
                4, parse_uint, FLAG_ALIAS },
        { "extra_isize", &set_inode.i_extra_isize, NULL,
@@ -665,6 +668,68 @@ static errcode_t parse_gd_csum(struct field_set_info *info, char *field,
        return parse_uint(info, field, arg);
 }
 
+static errcode_t parse_inode_csum(struct field_set_info *info, char *field,
+                                 char *arg)
+{
+       errcode_t       retval = 0;
+       __u32           crc;
+       int             is_large_inode = 0;
+       struct ext2_inode_large *tmp_inode;
+
+       if (strcmp(arg, "calc") == 0) {
+               size_t sz = EXT2_INODE_SIZE(current_fs->super);
+               struct ext2_inode_large *tmp_inode = NULL;
+
+               retval = ext2fs_get_mem(sz, &tmp_inode);
+               if (retval)
+                       goto out;
+
+               retval = ext2fs_read_inode_full(current_fs, set_ino,
+                                    (struct ext2_inode *) tmp_inode,
+                                    sz);
+               if (retval)
+                       goto out;
+
+#ifdef WORDS_BIGENDIAN
+               ext2fs_swap_inode_full(current_fs, tmp_inode,
+                                      tmp_inode, 1, sz);
+#endif
+
+               if (sz > EXT2_GOOD_OLD_INODE_SIZE)
+                       is_large_inode = 1;
+
+               retval = ext2fs_inode_csum_set(current_fs, set_ino,
+                                              tmp_inode);
+               if (retval)
+                       goto out;
+#ifdef WORDS_BIGENDIAN
+               crc = set_inode.i_checksum_lo =
+                       ext2fs_swab16(tmp_inode->i_checksum_lo);
+
+#else
+               crc = set_inode.i_checksum_lo = tmp_inode->i_checksum_lo;
+#endif
+               if (is_large_inode &&
+                   set_inode.i_extra_isize >=
+                               (offsetof(struct ext2_inode_large,
+                                         i_checksum_hi) -
+                                EXT2_GOOD_OLD_INODE_SIZE)) {
+#ifdef WORDS_BIGENDIAN
+                       set_inode.i_checksum_lo =
+                               ext2fs_swab16(tmp_inode->i_checksum_lo);
+#else
+                       set_inode.i_checksum_hi = tmp_inode->i_checksum_hi;
+#endif
+                       crc |= ((__u32)set_inode.i_checksum_hi) << 16;
+               }
+               printf("Checksum set to 0x%08x\n", crc);
+       out:
+               ext2fs_free_mem(&tmp_inode);
+               return retval;
+       }
+       return parse_uint(info, field, arg);
+}
+
 static void print_possible_fields(struct field_set_info *fields)
 {
        struct field_set_info *ss;
@@ -723,7 +788,8 @@ static void print_possible_fields(struct field_set_info *fields)
 }
 
 
-void do_set_super(int argc, char *argv[])
+void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<field> <value>\n"
                "\t\"set_super_value -l\" will list the names of "
@@ -750,7 +816,8 @@ void do_set_super(int argc, char *argv[])
        }
 }
 
-void do_set_inode(int argc, char *argv[])
+void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<inode> <field> <value>\n"
                "\t\"set_inode_field -l\" will list the names of "
@@ -775,20 +842,25 @@ void do_set_inode(int argc, char *argv[])
        if (!set_ino)
                return;
 
-       if (debugfs_read_inode_full(set_ino,
-                       (struct ext2_inode *) &set_inode, argv[1],
-                                   sizeof(set_inode)))
+       if (debugfs_read_inode2(set_ino,
+                               (struct ext2_inode *) &set_inode, argv[1],
+                               sizeof(set_inode),
+                               (ss->flags & FLAG_CSUM) ?
+                               READ_INODE_NOCSUM : 0))
                return;
 
        if (ss->func(ss, argv[2], argv[3]) == 0) {
-               if (debugfs_write_inode_full(set_ino, 
-                            (struct ext2_inode *) &set_inode,
-                            argv[1], sizeof(set_inode)))
-                       return;
+               debugfs_write_inode2(set_ino,
+                                    (struct ext2_inode *) &set_inode,
+                                    argv[1], sizeof(set_inode),
+                                    (ss->flags & FLAG_CSUM) ?
+                                    WRITE_INODE_NOCSUM : 0);
        }
 }
 
-void do_set_block_group_descriptor(int argc, char *argv[])
+void do_set_block_group_descriptor(int argc, char *argv[],
+                                  int sci_idx EXT2FS_ATTR((unused)),
+                                  void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<bg number> <field> <value>\n"
                "\t\"set_block_group -l\" will list the names of "
@@ -866,7 +938,8 @@ static errcode_t parse_mmp_clear(struct field_set_info *info,
 }
 
 #ifdef CONFIG_MMP
-void do_set_mmp_value(int argc, char *argv[])
+void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        const char *usage = "<field> <value>\n"
                "\t\"set_mmp_value -l\" will list the names of "
@@ -925,7 +998,9 @@ void do_set_mmp_value(int argc, char *argv[])
 }
 #else
 void do_set_mmp_value(int argc EXT2FS_ATTR((unused)),
-                     char *argv[] EXT2FS_ATTR((unused)))
+                     char *argv[] EXT2FS_ATTR((unused)),
+                     int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        fprintf(stdout, "MMP is unsupported, please recompile with "
                        "--enable-mmp\n");
index 4cb11918c83ab25b432feb126bc5a2188f7e2f31..a6b44b5eb71c1120db8aae27dece63922e2ab100 100644 (file)
@@ -25,7 +25,9 @@ extern char *optarg;
 
 #include "debugfs.h"
 
-void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv)
+void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv,
+                   int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        blk64_t         blk;
        unsigned char   buf[EXT2_MAX_BLOCK_SIZE];
index 452de749bc2a499962496c13b512d098d27d3256..759bb3924874b5e016860e6924c49a3004ae9724 100644 (file)
@@ -420,12 +420,12 @@ int common_block_args_process(int argc, char *argv[],
        return 0;
 }
 
-int debugfs_read_inode_full(ext2_ino_t ino, struct ext2_inode * inode,
-                       const char *cmd, int bufsize)
+int debugfs_read_inode2(ext2_ino_t ino, struct ext2_inode * inode,
+                       const char *cmd, int bufsize, int flags)
 {
        int retval;
 
-       retval = ext2fs_read_inode_full(current_fs, ino, inode, bufsize);
+       retval = ext2fs_read_inode2(current_fs, ino, inode, bufsize, flags);
        if (retval) {
                com_err(cmd, retval, "while reading inode %u", ino);
                return 1;
@@ -446,15 +446,14 @@ int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
        return 0;
 }
 
-int debugfs_write_inode_full(ext2_ino_t ino,
-                            struct ext2_inode *inode,
-                            const char *cmd,
-                            int bufsize)
+int debugfs_write_inode2(ext2_ino_t ino,
+                        struct ext2_inode *inode,
+                        const char *cmd,
+                        int bufsize, int flags)
 {
        int retval;
 
-       retval = ext2fs_write_inode_full(current_fs, ino,
-                                        inode, bufsize);
+       retval = ext2fs_write_inode2(current_fs, ino, inode, bufsize, flags);
        if (retval) {
                com_err(cmd, retval, "while writing inode %u", ino);
                return 1;
index c29761ec9840c7ff32a2d9e4632a2d8ec321ca30..8bbaaeddbf598350d3aadd07cdbfae008f71a68d 100644 (file)
@@ -117,7 +117,8 @@ out:
        err = ext2fs_xattrs_close(&h);
 }
 
-void do_list_xattr(int argc, char **argv)
+void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                  void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
 
@@ -137,7 +138,8 @@ void do_list_xattr(int argc, char **argv)
        dump_inode_attributes(stdout, ino);
 }
 
-void do_get_xattr(int argc, char **argv)
+void do_get_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
        struct ext2_xattr_handle *h;
@@ -234,7 +236,8 @@ out2:
                fclose(fp);
 }
 
-void do_set_xattr(int argc, char **argv)
+void do_set_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                 void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
        struct ext2_xattr_handle *h;
@@ -317,7 +320,8 @@ out2:
        }
 }
 
-void do_rm_xattr(int argc, char **argv)
+void do_rm_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t ino;
        struct ext2_xattr_handle *h;
index a849b90b471cb7d05c3c19d6df7647a317014770..c7996b22924bce1becba9af1f3d2e20f0b266d6c 100644 (file)
@@ -25,7 +25,8 @@ extern char *optarg;
 
 #include "debugfs.h"
 
-void do_zap_block(int argc, char *argv[])
+void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        unsigned long   pattern = 0;
        unsigned char   *buf;
@@ -167,7 +168,8 @@ errout:
        return;
 }
 
-void do_block_dump(int argc, char *argv[])
+void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        unsigned char   *buf;
        ext2_ino_t      inode;
diff --git a/doc/RelNotes/v1.45.0.txt b/doc/RelNotes/v1.45.0.txt
new file mode 100644 (file)
index 0000000..d92c11b
--- /dev/null
@@ -0,0 +1,40 @@
+E2fsprogs 1.45.0 (March 6, 2019)
+================================
+
+Updates/Fixes since v1.44.6:
+
+UI and Features
+---------------
+
+Tune2fs can now set the file system error bit to force a check at the
+next fsck by using the extended option "force_fsck".
+
+E2fsprogs now has an e2scrub script which will allow e2fsck to be run on
+volumes that are mounted on an LVM device.  The e2scrub_all will find
+all ext* file systems and run them using e2scrub (if possible).
+
+Mke2fs will attempt to use ZERO_RANGE before PUNCH_HOLE so that we don't
+lose allocated blocks in preallocated files.
+
+The fuse2fs command now supports a "fakeroot" option to allow an
+unprivileged user to fuse2fs to modify rootfs images.
+
+Add initial support for setting the character set encoding and case
+folding file system feature.  We don't have support to validate file
+names as being valid for a given character set encoding yet, but this
+will allow compatibility for this feature when the kernel support
+lands.  This includes support in lsattr and chattr to understanding the
+casefold attribute flag.
+
+Debugfs can now set the inode's checksum field to test support for
+inodes with bad inode checksums.
+
+E2image now accepts the -b and -B options to allow the user to specify
+the superblock location when creating a raw or qcow2 image.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+Add support for building e2fsprogs using Link Time Optimization (LTO),
+UBSAN, Address Sanitizer, or Thread Sanitizer.
index fff45b78e550813729bcee981c36ea21f8987dc3..3e82de9765037001a9ec728bfcd6286b5e406efb 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo    @c -*-texinfo-*-
 @c %**start of header
 @setfilename libext2fs.info
-@settitle The EXT2FS Library (version 1.44.6)
+@settitle The EXT2FS Library (version 1.45.0)
 @synindex tp fn
 @comment %**end of header
 
@@ -60,7 +60,7 @@ by the author.
 
 @title The EXT2FS Library
 @subtitle The EXT2FS Library
-@subtitle Version 1.44.6
+@subtitle Version 1.45.0
 @subtitle March 2019
 
 @author by Theodore Ts'o
@@ -101,7 +101,7 @@ by the Foundation.
 
 @top The EXT2FS Library
 
-This manual documents the EXT2FS Library, version 1.44.6.
+This manual documents the EXT2FS Library, version 1.45.0.
 
 @menu
 * Introduction to the EXT2FS Library::  
index 676ab7ddcc1d2bec00a776d85b5400abea105dc1..9799274fa74efc2f8c209f5dd3d0d7f5eb2dd7d6 100644 (file)
@@ -293,7 +293,8 @@ pass1.o: $(srcdir)/pass1.c $(top_builddir)/lib/config.h \
  $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
  $(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
  $(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h
+ $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
+ $(top_srcdir)/lib/ext2fs/nls.h
 pass1b.o: $(srcdir)/pass1b.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
@@ -317,7 +318,7 @@ pass2.o: $(srcdir)/pass2.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
  $(top_srcdir)/lib/support/dqblk_v2.h \
  $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/problem.h \
- $(top_srcdir)/lib/support/dict.h
+ $(top_srcdir)/lib/support/dict.h $(top_srcdir)/lib/ext2fs/nls.h
 pass3.o: $(srcdir)/pass3.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(srcdir)/e2fsck.h \
  $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
@@ -416,7 +417,7 @@ unix.o: $(srcdir)/unix.c $(top_builddir)/lib/config.h \
  $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/support/plausible.h \
  $(srcdir)/e2fsck.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
  $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/ext2fs/ext2_io.h \
- $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h  $(top_srcdir)/lib/ext2fs/nls.h \
  $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
  $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/support/profile.h \
  $(top_builddir)/lib/support/prof_err.h $(top_srcdir)/lib/support/quotaio.h \
index c7b605685339d8a5a286cbf1dc2803a6f529fe4f..c0b0e9a41235f6435a6336fd04c335667c384eaf 100644 (file)
@@ -13,7 +13,8 @@
  * entry.  During pass1, the passed-in parent is 0; it will get filled
  * in during pass2.
  */
-void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, int num_blocks)
+void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, struct ext2_inode *inode,
+                      int num_blocks)
 {
        struct dx_dir_info *dir;
        int             i, j;
@@ -72,6 +73,7 @@ void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, int num_blocks)
        dir->ino = ino;
        dir->numblocks = num_blocks;
        dir->hashversion = 0;
+       dir->casefolded_hash = inode->i_flags & EXT4_CASEFOLD_FL;
        dir->dx_block = e2fsck_allocate_memory(ctx, num_blocks
                                       * sizeof (struct dx_dirblock_info),
                                       "dx_block info array");
index cd5cba2f6031e54771f7befe6ff547a6c9197ddd..1c7a67cba1cedd04e87f929d5fa0bba44d2fad39 100644 (file)
@@ -109,6 +109,7 @@ struct dx_dir_info {
        int                     hashversion;
        short                   depth;          /* depth of tree */
        struct dx_dirblock_info *dx_block;      /* Array of size numblocks */
+       int                     casefolded_hash;
 };
 
 #define DX_DIRBLOCK_ROOT       1
@@ -471,7 +472,8 @@ extern int e2fsck_dir_info_get_dotdot(e2fsck_t ctx, ext2_ino_t ino,
                                      ext2_ino_t *dotdot);
 
 /* dx_dirinfo.c */
-extern void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino, int num_blocks);
+extern void e2fsck_add_dx_dir(e2fsck_t ctx, ext2_ino_t ino,
+                             struct ext2_inode *inode, int num_blocks);
 extern struct dx_dir_info *e2fsck_get_dx_dir_info(e2fsck_t ctx, ext2_ino_t ino);
 extern void e2fsck_free_dx_dir_info(e2fsck_t ctx);
 extern int e2fsck_get_num_dx_dirinfo(e2fsck_t ctx);
index 828979514643f96e574cafa22426f618d5b8b16d..a1c6951cb2c5b1a8872caa8a389d0af6530d9512 100644 (file)
@@ -27,6 +27,7 @@
 /*
  * Pull in the definition of the e2fsck context structure
  */
+#include "config.h"
 #include "e2fsck.h"
 #endif
 
index 358f2144d804c9b0200db367d9608dc8f1b17795..5c413610c74ff807a1b445b05fdaf04182460c63 100644 (file)
@@ -48,6 +48,7 @@
 
 #include "e2fsck.h"
 #include <ext2fs/ext2_ext_attr.h>
+#include <e2p/e2p.h>
 
 #include "problem.h"
 
@@ -3381,7 +3382,7 @@ static void check_blocks(e2fsck_t ctx, struct problem_context *pctx,
                        inode->i_flags &= ~EXT2_INDEX_FL;
                        dirty_inode++;
                } else {
-                       e2fsck_add_dx_dir(ctx, ino, pb.last_block+1);
+                       e2fsck_add_dx_dir(ctx, ino, inode, pb.last_block+1);
                }
        }
 
index b92eec1e149f3e9e30f0fd61e47a705e69c2f430..a7d9c47dbe8e914ec33ee249c80d63ffa50ff1a0 100644 (file)
@@ -933,6 +933,7 @@ static int check_dir_block(ext2_filsys fs,
        int     filetype = 0;
        int     encrypted = 0;
        size_t  max_block_size;
+       int     hash_flags = 0;
 
        cd = (struct check_dir_struct *) priv_data;
        ibuf = buf = cd->buf;
@@ -1426,9 +1427,13 @@ skip_checksum:
                        dir_modified++;
 
                if (dx_db) {
-                       ext2fs_dirhash(dx_dir->hashversion, dirent->name,
-                                      ext2fs_dirent_name_len(dirent),
-                                      fs->super->s_hash_seed, &hash, 0);
+                       if (dx_dir->casefolded_hash)
+                               hash_flags = EXT4_CASEFOLD_FL;
+
+                       ext2fs_dirhash2(dx_dir->hashversion, dirent->name,
+                                       ext2fs_dirent_name_len(dirent),
+                                       fs->encoding, hash_flags,
+                                       fs->super->s_hash_seed, &hash, 0);
                        if (hash < dx_db->min_hash)
                                dx_db->min_hash = hash;
                        if (hash > dx_db->max_hash)
index 7c4ab0836482dd33ad0a669ad2e8107a800de2c4..a5fc1be1a2104ca8dc93f7a21c6300e6115cf36e 100644 (file)
@@ -113,7 +113,7 @@ static int fill_dir_block(ext2_filsys fs,
        struct ext2_dir_entry   *dirent;
        char                    *dir;
        unsigned int            offset, dir_offset, rec_len, name_len;
-       int                     hash_alg;
+       int                     hash_alg, hash_flags;
 
        if (blockcnt < 0)
                return 0;
@@ -139,6 +139,7 @@ static int fill_dir_block(ext2_filsys fs,
                if (fd->err)
                        return BLOCK_ABORT;
        }
+       hash_flags = fd->inode->i_flags & EXT4_CASEFOLD_FL;
        hash_alg = fs->super->s_def_hash_version;
        if ((hash_alg <= EXT2_HASH_TEA) &&
            (fs->super->s_flags & EXT2_FLAGS_UNSIGNED_HASH))
@@ -184,10 +185,11 @@ static int fill_dir_block(ext2_filsys fs,
                if (fd->compress)
                        ent->hash = ent->minor_hash = 0;
                else {
-                       fd->err = ext2fs_dirhash(hash_alg, dirent->name,
-                                                name_len,
-                                                fs->super->s_hash_seed,
-                                                &ent->hash, &ent->minor_hash);
+                       fd->err = ext2fs_dirhash2(hash_alg,
+                                                 dirent->name, name_len,
+                                                 fs->encoding, hash_flags,
+                                                 fs->super->s_hash_seed,
+                                                 &ent->hash, &ent->minor_hash);
                        if (fd->err)
                                return BLOCK_ABORT;
                }
@@ -371,6 +373,7 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
        char                    new_name[256];
        unsigned int            new_len;
        int                     hash_alg;
+       int hash_flags = fd->inode->i_flags & EXT4_CASEFOLD_FL;
 
        clear_problem_context(&pctx);
        pctx.ino = ino;
@@ -415,9 +418,10 @@ static int duplicate_search_and_fix(e2fsck_t ctx, ext2_filsys fs,
                if (fix_problem(ctx, PR_2_NON_UNIQUE_FILE, &pctx)) {
                        memcpy(ent->dir->name, new_name, new_len);
                        ext2fs_dirent_set_name_len(ent->dir, new_len);
-                       ext2fs_dirhash(hash_alg, new_name, new_len,
-                                      fs->super->s_hash_seed,
-                                      &ent->hash, &ent->minor_hash);
+                       ext2fs_dirhash2(hash_alg, new_name, new_len,
+                                       fs->encoding, hash_flags,
+                                       fs->super->s_hash_seed,
+                                       &ent->hash, &ent->minor_hash);
                        fixed++;
                }
        }
index 2df22b17146fed813952db94158e63b5e6e67271..5b3552ece6b1fcd7f59bb62a742a92914b65856b 100644 (file)
@@ -55,6 +55,7 @@ extern int optind;
 #include "problem.h"
 #include "jfs_user.h"
 #include "../version.h"
+#include <ext2fs/nls.h>
 
 /* Command line options */
 static int cflag;              /* check disk */
@@ -1784,6 +1785,15 @@ print_unsupp_features:
                goto get_newer;
        }
 
+       if (ext2fs_has_feature_fname_encoding(sb)) {
+               fs->encoding = nls_load_table(sb->s_encoding);
+               if (!fs->encoding) {
+                       log_err(ctx, _("%s has unsupported encoding: %0x\n"),
+                               ctx->filesystem_name, sb->s_encoding);
+                       goto get_newer;
+               }
+       }
+
        /*
         * If the user specified a specific superblock, presumably the
         * master superblock has been trashed.  So we mark the
index 1b36e92545873938a909c9e290baae016f3eead5..e4c9de53833d85c4800ac75c22cd02d529c7b3b1 100644 (file)
@@ -1,15 +1,15 @@
 Begin3
 Title:          EXT2 Filesystem utilities
-Version:        1.44.6
-Entered-date:   2019-3-5
+Version:        1.45.0
+Entered-date:   2019-3-6
 Description:    The filesystem utilities for the EXT2, EXT3, and EXT4
                filesystems, including e2fsck, mke2fs, dumpe2fs, and others.
 Keywords:       utilities, filesystem, Ext2fs, ext3, ext4
 Author:         tytso@mit.edu (Theodore Tso)
 Maintained-by:  tytso@mit.edu (Theodore Tso)
 Primary-site:   ftp.kernel.org /pub/linux/kernel/people/tytso/e2fsprogs
-                7448kB e2fsprogs-1.44.6.tar.gz
-                1kB    e2fsprogs-1.44.6.lsm
+                7556kB e2fsprogs-1.45.0.tar.gz
+                1kB    e2fsprogs-1.45.0.lsm
 Alternate-site: download.sourceforge.net /pub/sourceforge/e2fsprogs
 Platforms:     linux 1.2.x/1.3.x/2.0.x/2.1.x/2.2.x/2.3.x/2.4.x/2.5.x/2.6.x/3.x/4.x
 Copying-policy: GPL-2/LGPL-2
index 556349e2c9ed4fc0eeea78413b3160532e473bec..46483ab173c6f636aeb8fc8c51d30c8e2d94cfac 100644 (file)
@@ -5,7 +5,7 @@
 
 Summary: Utilities for managing ext2/ext3/ext4 filesystems
 Name: e2fsprogs
-Version: 1.44.5
+Version: 1.45.0
 Release: 0
 License: GPLv2
 Group: System Environment/Base
index 5165c904a7150d2fe576b5b11dda63698cfb955d..407911ca0aa918cb8139f2329c1c9d3ab285e6eb 100644 (file)
 /* Define to 1 if you have the <mntent.h> header file. */
 #undef HAVE_MNTENT_H
 
+/* Define to 1 if mount supports nodev. */
+#undef HAVE_MOUNT_NODEV
+
+/* Define to 1 if mount supports nosuid. */
+#undef HAVE_MOUNT_NOSUID
+
 /* Define to 1 if you have the `msync' function. */
 #undef HAVE_MSYNC
 
index 2b0aa1915130d670afdd99b34ee9b9ef53cf03ec..9e96884a0b502bd38aaf0d5ed0aa11d70afc0bc4 100644 (file)
@@ -19,7 +19,8 @@ all:: e2p.pc
 OBJS=          feature.o fgetflags.o fsetflags.o fgetversion.o fsetversion.o \
                getflags.o getversion.o hashstr.o iod.o ls.o ljs.o mntopts.o \
                parse_num.o pe.o pf.o ps.o setflags.o setversion.o uuid.o \
-               ostype.o percent.o crypto_mode.o fgetproject.o fsetproject.o
+               ostype.o percent.o crypto_mode.o fgetproject.o fsetproject.o \
+               encoding.o
 
 SRCS=          $(srcdir)/feature.c $(srcdir)/fgetflags.c \
                $(srcdir)/fsetflags.c $(srcdir)/fgetversion.c \
@@ -29,7 +30,7 @@ SRCS=         $(srcdir)/feature.c $(srcdir)/fgetflags.c \
                $(srcdir)/pe.c $(srcdir)/pf.c $(srcdir)/ps.c \
                $(srcdir)/setflags.c $(srcdir)/setversion.c $(srcdir)/uuid.c \
                $(srcdir)/ostype.c $(srcdir)/percent.c $(srcdir)/crypto_mode.c \
-               $(srcdir)/fgetproject.c $(srcdir)/fsetproject.c
+               $(srcdir)/fgetproject.c $(srcdir)/fsetproject.c $(srcdir)/encoding.c
 HFILES= e2p.h
 
 LIBRARY= libe2p
@@ -209,3 +210,6 @@ fsetproject.o: $(srcdir)/fsetproject.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(srcdir)/project.h \
  $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
  $(srcdir)/e2p.h
+encoding.o: $(srcdir)/encoding.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/e2p.h \
+ $(top_srcdir)/lib/ext2fs/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h
index d70b59a5d358de49c6510ee54b2ba998ad8ec051..cc2dbf39bfeb7dba09956e085a4949927b929a80 100644 (file)
@@ -80,3 +80,7 @@ unsigned int e2p_percent(int percent, unsigned int base);
 
 const char *e2p_encmode2string(int num);
 int e2p_string2encmode(char *string);
+
+int e2p_str2encoding(const char *string);
+int e2p_get_encoding_flags(int encoding);
+int e2p_str2encoding_flags(int encoding, char *param, __u16 *flags);
diff --git a/lib/e2p/encoding.c b/lib/e2p/encoding.c
new file mode 100644 (file)
index 0000000..8843331
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * encoding.c --- convert between encoding magic numbers and strings
+ *
+ * Copyright (C) 2018  Collabora Ltd.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Library
+ * General Public License, version 2.
+ * %End-Header%
+ */
+
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <stdio.h>
+
+#include "e2p.h"
+
+#define ARRAY_SIZE(array)                      \
+        (sizeof(array) / sizeof(array[0]))
+
+static const struct {
+       char *name;
+       __u16 encoding_magic;
+       __u16 default_flags;
+
+} ext4_encoding_map[] = {
+       {
+               .encoding_magic = EXT4_ENC_ASCII,
+               .name = "ascii",
+               .default_flags = 0
+       },
+       {
+               .encoding_magic = EXT4_ENC_UTF8_11_0,
+               .name = "utf8",
+               .default_flags = (EXT4_UTF8_NORMALIZATION_TYPE_NFKD |
+                                 EXT4_UTF8_CASEFOLD_TYPE_NFKDCF)
+       },
+};
+
+static const struct enc_flags {
+       __u16 flag;
+       char *param;
+} encoding_flags[] = {
+       { EXT4_ENC_STRICT_MODE_FL, "strict" },
+};
+
+/* Return a positive number < 0xff indicating the encoding magic number
+ * or a negative value indicating error. */
+int e2p_str2encoding(const char *string)
+{
+       int i;
+
+       for (i = 0 ; i < ARRAY_SIZE(ext4_encoding_map); i++)
+               if (!strcmp(string, ext4_encoding_map[i].name))
+                       return ext4_encoding_map[i].encoding_magic;
+
+       return -EINVAL;
+}
+
+int e2p_get_encoding_flags(int encoding)
+{
+       int i;
+
+       for (i = 0 ; i < ARRAY_SIZE(ext4_encoding_map); i++)
+               if (ext4_encoding_map[i].encoding_magic == encoding)
+                       return ext4_encoding_map[encoding].default_flags;
+
+       return 0;
+}
+
+int e2p_str2encoding_flags(int encoding, char *param, __u16 *flags)
+{
+       char *f = strtok(param, "-");
+       const struct enc_flags *fl;
+       int i, neg = 0;
+
+       while (f) {
+               neg = 0;
+               if (!strncmp("no", f, 2)) {
+                       neg = 1;
+                       f += 2;
+               }
+
+               for (i = 0; i < ARRAY_SIZE(encoding_flags); i++) {
+                       fl = &encoding_flags[i];
+                       if (!strcmp(fl->param, f)) {
+                               if (neg)
+                                       *flags &= ~fl->flag;
+                               else
+                                       *flags |= fl->flag;
+
+                               goto next_flag;
+                       }
+               }
+               return -EINVAL;
+       next_flag:
+               f = strtok(NULL, "-");
+       }
+       return 0;
+}
index e3b0dab83c818dc2edf396384ffa94e56d8e269d..ded87f5611dc86c2e3cd741942fd15058c1ffb6d 100644 (file)
@@ -109,6 +109,8 @@ static struct feature feature_list[] = {
                        "inline_data"},
        {       E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_ENCRYPT,
                        "encrypt"},
+       {       E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_FNAME_ENCODING,
+                       "fname_encoding"},
        {       0, 0, 0 },
 };
 
index 884f1671edae9c0a56511bd34170454dffc43574..0c6998c4b7660517372eecb3de4d6294261cc4ca 100644 (file)
@@ -44,6 +44,7 @@ static struct flags_name flags_array[] = {
        { EXT2_TOPDIR_FL, "T", "Top_of_Directory_Hierarchies" },
        { EXT4_EXTENTS_FL, "e", "Extents" },
        { FS_NOCOW_FL, "C", "No_COW" },
+       { EXT4_CASEFOLD_FL, "F", "Casefold" },
        { EXT4_INLINE_DATA_FL, "N", "Inline_Data" },
        { EXT4_PROJINHERIT_FL, "P", "Project_Hierarchy" },
        { EXT4_VERITY_FL, "V", "Verity" },
index 4a197cdf4e4a98fb9947ae3909c87e2808b22acf..06c2394b34b8eec56618a899ece445d3ab57a3d9 100644 (file)
@@ -20,6 +20,9 @@ COMPILE_ET=   _ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et
 @TEST_IO_CMT@TEST_IO_LIB_OBJS = test_io.o
 @IMAGER_CMT@E2IMAGE_LIB_OBJS = imager.o
 
+NLS_OBJS=nls_ascii.o nls_utf8-norm.o nls_utf8.o
+NLS_SRCS=$(srcdir)/nls_ascii.c $(srcdir)/nls_utf8-norm.c $(srcdir)/nls_utf8.c
+
 DEBUG_OBJS= debug_cmds.o extent_cmds.o tst_cmds.o debugfs.o util.o \
        ncheck.o icheck.o ls.o lsdel.o dump.o set_fields.o logdump.o \
        htree.o unused.o e2freefrag.o filefrag.o extent_inode.o zap.o \
@@ -130,7 +133,8 @@ OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_OBJS) $(E2IMAGE_LIB_OBJS) \
        unlink.o \
        valid_blk.o \
        version.o \
-       rbtree.o
+       rbtree.o \
+       $(NLS_OBJS)
 
 SRCS= ext2_err.c \
        $(srcdir)/alloc.c \
@@ -222,7 +226,8 @@ SRCS= ext2_err.c \
        $(srcdir)/write_bb_file.c \
        $(srcdir)/rbtree.c \
        $(srcdir)/tst_libext2fs.c \
-       $(DEBUG_SRCS)
+       $(DEBUG_SRCS) \
+       $(NLS_SRCS)
 
 HFILES= bitops.h ext2fs.h ext2_io.h ext2_fs.h ext2_ext_attr.h ext3_extents.h \
        tdb.h qcow2.h hashmap.h
@@ -615,6 +620,18 @@ $(top_builddir)/$(my_dir)/ext2_types.h: $(srcdir)/ext2_types.h.in \
                $(top_builddir)/config.status
        cd $(top_builddir); CONFIG_FILES=$(my_dir)/ext2_types.h ./config.status
 
+$(srcdir)/utf8data.h:
+       $(Q) $(MAKE) $(MKUTF8DATA)
+       $(E) "MKUTF8DATA $@"
+       $(Q) $(MKUTF8DATA) -a $(top_srcdir)/util/ucd/DerivedAge-11.0.0.txt \
+               -c $(top_srcdir)/util/ucd/DerivedCombiningClass-11.0.0.txt \
+               -p $(top_srcdir)/util/ucd/DerivedCoreProperties-11.0.0.txt \
+               -d $(top_srcdir)/util/ucd/UnicodeData-11.0.0.txt \
+               -f $(top_srcdir)/util/ucd/CaseFolding-11.0.0.txt \
+               -n $(top_srcdir)/util/ucd/NormalizationCorrections-11.0.0.txt \
+               -t $(top_srcdir)/util/ucd/NormalizationTest-11.0.0.txt \
+               -o $@
+
 # +++ Dependency line eater +++
 # 
 # Makefile dependencies follow.  This must be the last section in
@@ -622,549 +639,467 @@ $(top_builddir)/$(my_dir)/ext2_types.h: $(srcdir)/ext2_types.h.in \
 #
 ext2_err.o: ext2_err.c
 alloc.o: $(srcdir)/alloc.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 alloc_sb.o: $(srcdir)/alloc_sb.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 alloc_stats.o: $(srcdir)/alloc_stats.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 alloc_tables.o: $(srcdir)/alloc_tables.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 atexit.o: $(srcdir)/atexit.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 badblocks.o: $(srcdir)/badblocks.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 bb_compat.o: $(srcdir)/bb_compat.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 bb_inode.o: $(srcdir)/bb_inode.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 bitmaps.o: $(srcdir)/bitmaps.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h $(srcdir)/bmap64.h
 bitops.o: $(srcdir)/bitops.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 blkmap64_ba.o: $(srcdir)/blkmap64_ba.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/bmap64.h
 blkmap64_rb.o: $(srcdir)/blkmap64_rb.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/bmap64.h $(srcdir)/rbtree.h
 block.o: $(srcdir)/block.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 bmap.o: $(srcdir)/bmap.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 check_desc.o: $(srcdir)/check_desc.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 closefs.o: $(srcdir)/closefs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 crc16.o: $(srcdir)/crc16.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/crc16.h
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/crc16.h
 crc32c.o: $(srcdir)/crc32c.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(srcdir)/crc32c_defs.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
- $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
- $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
$(srcdir)/hashmap.h $(srcdir)/bitops.h crc32c_table.h
+ $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ crc32c_table.h
 gen_crc32ctable.o: $(srcdir)/gen_crc32ctable.c $(srcdir)/crc32c_defs.h
 csum.o: $(srcdir)/csum.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/crc16.h
 dblist.o: $(srcdir)/dblist.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 dblist_dir.o: $(srcdir)/dblist_dir.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 digest_encode.o: $(srcdir)/digest_encode.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 dirblock.o: $(srcdir)/dirblock.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 dirhash.o: $(srcdir)/dirhash.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
- $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ $(srcdir)/nls.h
 dir_iterate.o: $(srcdir)/dir_iterate.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 dupfs.o: $(srcdir)/dupfs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 expanddir.o: $(srcdir)/expanddir.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 ext_attr.o: $(srcdir)/ext_attr.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_ext_attr.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/ext4_acl.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 extent.o: $(srcdir)/extent.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/e2image.h
 fileio.o: $(srcdir)/fileio.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 finddev.o: $(srcdir)/finddev.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 flushb.o: $(srcdir)/flushb.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 freefs.o: $(srcdir)/freefs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 gen_bitmap.o: $(srcdir)/gen_bitmap.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 gen_bitmap64.o: $(srcdir)/gen_bitmap64.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/bmap64.h
 get_num_dirs.o: $(srcdir)/get_num_dirs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 get_pathname.o: $(srcdir)/get_pathname.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 getsize.o: $(srcdir)/getsize.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 getsectsize.o: $(srcdir)/getsectsize.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 hashmap.o: $(srcdir)/hashmap.c $(srcdir)/hashmap.h
 i_block.o: $(srcdir)/i_block.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 icount.o: $(srcdir)/icount.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/tdb.h
 ind_block.o: $(srcdir)/ind_block.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 initialize.o: $(srcdir)/initialize.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 inline.o: $(srcdir)/inline.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 inline_data.o: $(srcdir)/inline_data.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_ext_attr.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/ext2fsP.h
 inode.o: $(srcdir)/inode.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/e2image.h
 inode_io.o: $(srcdir)/inode_io.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 imager.o: $(srcdir)/imager.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 io_manager.o: $(srcdir)/io_manager.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 ismounted.o: $(srcdir)/ismounted.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 link.o: $(srcdir)/link.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 llseek.o: $(srcdir)/llseek.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_types.h
+ $(srcdir)/ext2_io.h
 lookup.o: $(srcdir)/lookup.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 mkdir.o: $(srcdir)/mkdir.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 mkjournal.o: $(srcdir)/mkjournal.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/e2p/e2p.h \
- $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_srcdir)/lib/e2p/e2p.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
+ $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
  $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
 mmp.o: $(srcdir)/mmp.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 namei.o: $(srcdir)/namei.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 native.o: $(srcdir)/native.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 newdir.o: $(srcdir)/newdir.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 openfs.o: $(srcdir)/openfs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/e2image.h
 progress.o: $(srcdir)/progress.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/ext2fsP.h
 punch.o: $(srcdir)/punch.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 qcow2.o: $(srcdir)/qcow2.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/qcow2.h
 read_bb.o: $(srcdir)/read_bb.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 read_bb_file.o: $(srcdir)/read_bb_file.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 res_gdt.o: $(srcdir)/res_gdt.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 rw_bitmaps.o: $(srcdir)/rw_bitmaps.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/e2image.h
 sha256.o: $(srcdir)/sha256.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 sha512.o: $(srcdir)/sha512.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h
 swapfs.o: $(srcdir)/swapfs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 symlink.o: $(srcdir)/symlink.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tdb.o: $(srcdir)/tdb.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(srcdir)/tdb.h
 test_io.o: $(srcdir)/test_io.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tst_badblocks.o: $(srcdir)/tst_badblocks.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tst_bitops.o: $(srcdir)/tst_bitops.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tst_byteswap.o: $(srcdir)/tst_byteswap.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tst_getsize.o: $(srcdir)/tst_getsize.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 tst_iscan.o: $(srcdir)/tst_iscan.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 undo_io.o: $(srcdir)/undo_io.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 unix_io.o: $(srcdir)/unix_io.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(srcdir)/ext2fsP.h
 sparse_io.o: $(srcdir)/sparse_io.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 unlink.o: $(srcdir)/unlink.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 valid_blk.o: $(srcdir)/valid_blk.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 version.o: $(srcdir)/version.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(top_srcdir)/version.h
 write_bb_file.o: $(srcdir)/write_bb_file.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
  $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
  $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
 rbtree.o: $(srcdir)/rbtree.c $(srcdir)/rbtree.h
 tst_libext2fs.o: $(srcdir)/tst_libext2fs.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fsP.h \
  $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
  $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
@@ -1183,8 +1118,7 @@ tst_cmds.o: tst_cmds.c $(top_srcdir)/lib/ss/ss.h \
 debugfs.o: $(top_srcdir)/debugfs/debugfs.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1197,8 +1131,7 @@ debugfs.o: $(top_srcdir)/debugfs/debugfs.c $(top_builddir)/lib/config.h \
 util.o: $(top_srcdir)/debugfs/util.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ss/ss.h \
  $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
- $(top_srcdir)/debugfs/debugfs.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/debugfs/debugfs.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1208,8 +1141,7 @@ util.o: $(top_srcdir)/debugfs/util.c $(top_builddir)/lib/config.h \
 ncheck.o: $(top_srcdir)/debugfs/ncheck.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1219,8 +1151,7 @@ ncheck.o: $(top_srcdir)/debugfs/ncheck.c $(top_builddir)/lib/config.h \
 icheck.o: $(top_srcdir)/debugfs/icheck.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1230,8 +1161,7 @@ icheck.o: $(top_srcdir)/debugfs/icheck.c $(top_builddir)/lib/config.h \
 ls.o: $(top_srcdir)/debugfs/ls.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1241,8 +1171,7 @@ ls.o: $(top_srcdir)/debugfs/ls.c $(top_builddir)/lib/config.h \
 lsdel.o: $(top_srcdir)/debugfs/lsdel.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1252,8 +1181,7 @@ lsdel.o: $(top_srcdir)/debugfs/lsdel.c $(top_builddir)/lib/config.h \
 dump.o: $(top_srcdir)/debugfs/dump.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1263,8 +1191,7 @@ dump.o: $(top_srcdir)/debugfs/dump.c $(top_builddir)/lib/config.h \
 set_fields.o: $(top_srcdir)/debugfs/set_fields.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1274,8 +1201,7 @@ set_fields.o: $(top_srcdir)/debugfs/set_fields.c $(top_builddir)/lib/config.h \
 logdump.o: $(top_srcdir)/debugfs/logdump.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1286,19 +1212,17 @@ logdump.o: $(top_srcdir)/debugfs/logdump.c $(top_builddir)/lib/config.h \
 htree.o: $(top_srcdir)/debugfs/htree.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(top_srcdir)/debugfs/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
  $(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
- $(top_srcdir)/lib/support/quotaio_tree.h
+ $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/nls.h $(srcdir)/ext2_fs.h
 unused.o: $(top_srcdir)/debugfs/unused.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1308,8 +1232,7 @@ unused.o: $(top_srcdir)/debugfs/unused.c $(top_builddir)/lib/config.h \
 filefrag.o: $(top_srcdir)/debugfs/filefrag.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1320,18 +1243,16 @@ extent_inode.o: $(top_srcdir)/debugfs/extent_inode.c \
  $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
  $(top_srcdir)/debugfs/debugfs.h $(top_srcdir)/lib/ss/ss.h \
  $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
- $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
- $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
+ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(top_srcdir)/debugfs/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
  $(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
  $(top_srcdir)/lib/support/quotaio_tree.h
 zap.o: $(top_srcdir)/debugfs/zap.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1341,8 +1262,7 @@ zap.o: $(top_srcdir)/debugfs/zap.c $(top_builddir)/lib/config.h \
 quota.o: $(top_srcdir)/debugfs/quota.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1353,16 +1273,14 @@ xattrs.o: $(top_srcdir)/debugfs/xattrs.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/support/cstring.h \
  $(top_srcdir)/debugfs/debugfs.h $(top_srcdir)/lib/ss/ss.h \
  $(top_builddir)/lib/ss/ss_err.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
- $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
- $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
+ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
  $(top_srcdir)/debugfs/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
  $(top_srcdir)/lib/support/quotaio.h $(top_srcdir)/lib/support/dqblk_v2.h \
  $(top_srcdir)/lib/support/quotaio_tree.h
 e2freefrag.o: $(top_srcdir)/misc/e2freefrag.c $(top_builddir)/lib/config.h \
- $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(top_srcdir)/misc/e2freefrag.h \
@@ -1373,37 +1291,35 @@ e2freefrag.o: $(top_srcdir)/misc/e2freefrag.c $(top_builddir)/lib/config.h \
  $(top_srcdir)/lib/support/quotaio_tree.h
 create_inode.o: $(top_srcdir)/misc/create_inode.c \
  $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
- $(srcdir)/ext2fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
- $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
- $(srcdir)/fiemap.h $(top_srcdir)/misc/create_inode.h \
- $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/nls-enable.h
+ $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/fiemap.h \
+ $(top_srcdir)/misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
+ $(top_srcdir)/lib/support/nls-enable.h
 journal.o: $(top_srcdir)/debugfs/journal.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/journal.h \
- $(srcdir)/../../e2fsck/jfs_user.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(srcdir)/../../e2fsck/jfs_user.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
  $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
 revoke.o: $(top_srcdir)/e2fsck/revoke.c $(top_srcdir)/e2fsck/jfs_user.h \
- $(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
- $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
- $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
 recovery.o: $(top_srcdir)/e2fsck/recovery.c $(top_srcdir)/e2fsck/jfs_user.h \
- $(srcdir)/ext2_fs.h $(top_builddir)/lib/ext2fs/ext2_types.h \
- $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
- $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
- $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
- $(srcdir)/kernel-jbd.h $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
+ $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h $(srcdir)/kernel-jbd.h \
+ $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h
 do_journal.o: $(top_srcdir)/debugfs/do_journal.c $(top_builddir)/lib/config.h \
  $(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/debugfs.h \
  $(top_srcdir)/lib/ss/ss.h $(top_builddir)/lib/ss/ss_err.h \
- $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h \
- $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h \
  $(srcdir)/ext3_extents.h $(srcdir)/ext2_io.h \
  $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
  $(srcdir)/hashmap.h $(srcdir)/bitops.h \
@@ -1412,3 +1328,8 @@ do_journal.o: $(top_srcdir)/debugfs/do_journal.c $(top_builddir)/lib/config.h \
  $(top_srcdir)/lib/support/quotaio_tree.h $(srcdir)/kernel-jbd.h \
  $(srcdir)/jfs_compat.h $(srcdir)/kernel-list.h \
  $(top_srcdir)/debugfs/journal.h $(srcdir)/../../e2fsck/jfs_user.h
+nls_ascii.o: $(srcdir)/nls_ascii.c $(srcdir)/nls.h $(srcdir)/ext2_fs.h
+nls_utf8-norm.o: $(srcdir)/nls_utf8-norm.c $(srcdir)/utf8n.h \
+ $(srcdir)/utf8data.h
+nls_utf8.o: $(srcdir)/nls_utf8.c $(srcdir)/nls.h $(srcdir)/ext2_fs.h \
+ $(srcdir)/utf8n.h
index 840219172c8706cce2fc1fb1eb260cd2f9c08ca1..e25db2c66f72efce54aa015f01ed344a988d7870 100644 (file)
@@ -125,6 +125,7 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
 {
        __u64                   start, end, real_end;
        ext2fs_generic_bitmap   bmap;
+       ext2fs_generic_bitmap_64 bmap64;
        errcode_t               retval;
 
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -147,14 +148,15 @@ errcode_t ext2fs_allocate_subcluster_bitmap(ext2_filsys fs,
                                           end, real_end, descr, &bmap);
        if (retval)
                return retval;
-       bmap->cluster_bits = 0;
+       bmap64 = (ext2fs_generic_bitmap_64) bmap;
+       bmap64->cluster_bits = 0;
        *ret = bmap;
        return 0;
 }
 
 int ext2fs_get_bitmap_granularity(ext2fs_block_bitmap bitmap)
 {
-       ext2fs_generic_bitmap bmap = bitmap;
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) bitmap;
 
        if (!EXT2FS_IS_64_BITMAP(bmap))
                return 0;
index 3707a61eb2924d35ffbd0889db966619b7e532d5..85cb38d269a1b971ce5330f805fa4ba5112a21de 100644 (file)
@@ -40,7 +40,7 @@ struct ext2fs_ba_private_struct {
 
 typedef struct ext2fs_ba_private_struct *ext2fs_ba_private;
 
-static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap bitmap)
+static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap_64 bitmap)
 {
        ext2fs_ba_private bp;
        errcode_t       retval;
@@ -69,7 +69,7 @@ static errcode_t ba_alloc_private_data (ext2fs_generic_bitmap bitmap)
 }
 
 static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)),
-                            ext2fs_generic_bitmap bitmap)
+                            ext2fs_generic_bitmap_64 bitmap)
 {
        ext2fs_ba_private bp;
        errcode_t       retval;
@@ -86,7 +86,7 @@ static errcode_t ba_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)),
        return 0;
 }
 
-static void ba_free_bmap(ext2fs_generic_bitmap bitmap)
+static void ba_free_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 
@@ -101,8 +101,8 @@ static void ba_free_bmap(ext2fs_generic_bitmap bitmap)
        bp = 0;
 }
 
-static errcode_t ba_copy_bmap(ext2fs_generic_bitmap src,
-                             ext2fs_generic_bitmap dest)
+static errcode_t ba_copy_bmap(ext2fs_generic_bitmap_64 src,
+                             ext2fs_generic_bitmap_64 dest)
 {
        ext2fs_ba_private src_bp = (ext2fs_ba_private) src->private;
        ext2fs_ba_private dest_bp;
@@ -121,7 +121,7 @@ static errcode_t ba_copy_bmap(ext2fs_generic_bitmap src,
        return 0;
 }
 
-static errcode_t ba_resize_bmap(ext2fs_generic_bitmap bmap,
+static errcode_t ba_resize_bmap(ext2fs_generic_bitmap_64 bmap,
                                __u64 new_end, __u64 new_real_end)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bmap->private;
@@ -162,7 +162,7 @@ static errcode_t ba_resize_bmap(ext2fs_generic_bitmap bmap,
 
 }
 
-static int ba_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
        blk64_t bitno = (blk64_t) arg;
@@ -170,7 +170,7 @@ static int ba_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
        return ext2fs_set_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static int ba_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
        blk64_t bitno = (blk64_t) arg;
@@ -178,7 +178,7 @@ static int ba_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
        return ext2fs_clear_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static int ba_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int ba_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
        blk64_t bitno = (blk64_t) arg;
@@ -186,7 +186,7 @@ static int ba_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
        return ext2fs_test_bit64(bitno - bitmap->start, bp->bitarray);
 }
 
-static void ba_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void ba_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                unsigned int num)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -197,7 +197,7 @@ static void ba_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
                ext2fs_fast_set_bit64(bitno + i - bitmap->start, bp->bitarray);
 }
 
-static void ba_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void ba_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                  unsigned int num)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -208,7 +208,7 @@ static void ba_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
                ext2fs_fast_clear_bit64(bitno + i - bitmap->start, bp->bitarray);
 }
 
-static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
+static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, unsigned int len)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -282,7 +282,7 @@ static int ba_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
 }
 
 
-static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, size_t num, void *in)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -292,7 +292,7 @@ static errcode_t ba_set_bmap_range(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, size_t num, void *out)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
@@ -302,7 +302,7 @@ static errcode_t ba_get_bmap_range(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-static void ba_clear_bmap(ext2fs_generic_bitmap bitmap)
+static void ba_clear_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private) bitmap->private;
 
@@ -311,20 +311,20 @@ static void ba_clear_bmap(ext2fs_generic_bitmap bitmap)
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void ba_print_stats(ext2fs_generic_bitmap bitmap)
+static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap)
 {
        fprintf(stderr, "%16llu Bytes used by bitarray\n",
                ((bitmap->real_end - bitmap->start) >> 3) + 1 +
                sizeof(struct ext2fs_ba_private_struct));
 }
 #else
-static void ba_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused)))
+static void ba_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused)))
 {
 }
 #endif
 
 /* Find the first zero bit between start and end, inclusive. */
-static errcode_t ba_find_first_zero(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_find_first_zero(ext2fs_generic_bitmap_64 bitmap,
                                    __u64 start, __u64 end, __u64 *out)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private;
@@ -398,7 +398,7 @@ static errcode_t ba_find_first_zero(ext2fs_generic_bitmap bitmap,
 }
 
 /* Find the first one bit between start and end, inclusive. */
-static errcode_t ba_find_first_set(ext2fs_generic_bitmap bitmap,
+static errcode_t ba_find_first_set(ext2fs_generic_bitmap_64 bitmap,
                                    __u64 start, __u64 end, __u64 *out)
 {
        ext2fs_ba_private bp = (ext2fs_ba_private)bitmap->private;
index 4cbfb1ed3d64f15b54553db0ffdf3e1cbda1eb2b..1fd552745b02abd9c19c670f55d565cdbf91b06a 100644 (file)
@@ -177,7 +177,7 @@ static void rb_free_extent(struct ext2fs_rb_private *bp,
        ext2fs_free_mem(&ext);
 }
 
-static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap bitmap)
+static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap_64 bitmap)
 {
        struct ext2fs_rb_private *bp;
        errcode_t       retval;
@@ -201,7 +201,7 @@ static errcode_t rb_alloc_private_data (ext2fs_generic_bitmap bitmap)
 }
 
 static errcode_t rb_new_bmap(ext2_filsys fs EXT2FS_ATTR((unused)),
-                            ext2fs_generic_bitmap bitmap)
+                            ext2fs_generic_bitmap_64 bitmap)
 {
        errcode_t       retval;
 
@@ -225,7 +225,7 @@ static void rb_free_tree(struct rb_root *root)
        }
 }
 
-static void rb_free_bmap(ext2fs_generic_bitmap bitmap)
+static void rb_free_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
        struct ext2fs_rb_private *bp;
 
@@ -236,8 +236,8 @@ static void rb_free_bmap(ext2fs_generic_bitmap bitmap)
        bp = 0;
 }
 
-static errcode_t rb_copy_bmap(ext2fs_generic_bitmap src,
-                             ext2fs_generic_bitmap dest)
+static errcode_t rb_copy_bmap(ext2fs_generic_bitmap_64 src,
+                             ext2fs_generic_bitmap_64 dest)
 {
        struct ext2fs_rb_private *src_bp, *dest_bp;
        struct bmap_rb_extent *src_ext, *dest_ext;
@@ -302,7 +302,7 @@ static void rb_truncate(__u64 new_max, struct rb_root *root)
        }
 }
 
-static errcode_t rb_resize_bmap(ext2fs_generic_bitmap bmap,
+static errcode_t rb_resize_bmap(ext2fs_generic_bitmap_64 bmap,
                                __u64 new_end, __u64 new_real_end)
 {
        struct ext2fs_rb_private *bp;
@@ -575,7 +575,7 @@ static int rb_remove_extent(__u64 start, __u64 count,
        return retval;
 }
 
-static int rb_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_mark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        struct ext2fs_rb_private *bp;
        int retval;
@@ -588,7 +588,7 @@ static int rb_mark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
        return retval;
 }
 
-static int rb_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_unmark_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        struct ext2fs_rb_private *bp;
        int retval;
@@ -603,7 +603,7 @@ static int rb_unmark_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
 }
 
 inline
-static int rb_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
+static int rb_test_bmap(ext2fs_generic_bitmap_64 bitmap, __u64 arg)
 {
        struct ext2fs_rb_private *bp;
 
@@ -613,7 +613,7 @@ static int rb_test_bmap(ext2fs_generic_bitmap bitmap, __u64 arg)
        return rb_test_bit(bp, arg);
 }
 
-static void rb_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void rb_mark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                unsigned int num)
 {
        struct ext2fs_rb_private *bp;
@@ -625,7 +625,7 @@ static void rb_mark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
        check_tree(&bp->root, __func__);
 }
 
-static void rb_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
+static void rb_unmark_bmap_extent(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                  unsigned int num)
 {
        struct ext2fs_rb_private *bp;
@@ -637,7 +637,7 @@ static void rb_unmark_bmap_extent(ext2fs_generic_bitmap bitmap, __u64 arg,
        check_tree(&bp->root, __func__);
 }
 
-static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
+static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, unsigned int len)
 {
        struct rb_node *parent = NULL, **n;
@@ -693,7 +693,7 @@ static int rb_test_clear_bmap_extent(ext2fs_generic_bitmap bitmap,
        return retval;
 }
 
-static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, size_t num, void *in)
 {
        struct ext2fs_rb_private *bp;
@@ -739,7 +739,7 @@ static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, size_t num, void *out)
 {
 
@@ -804,7 +804,7 @@ static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-static void rb_clear_bmap(ext2fs_generic_bitmap bitmap)
+static void rb_clear_bmap(ext2fs_generic_bitmap_64 bitmap)
 {
        struct ext2fs_rb_private *bp;
 
@@ -817,7 +817,7 @@ static void rb_clear_bmap(ext2fs_generic_bitmap bitmap)
        check_tree(&bp->root, __func__);
 }
 
-static errcode_t rb_find_first_zero(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_find_first_zero(ext2fs_generic_bitmap_64 bitmap,
                                   __u64 start, __u64 end, __u64 *out)
 {
        struct rb_node *parent = NULL, **n;
@@ -853,7 +853,7 @@ static errcode_t rb_find_first_zero(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-static errcode_t rb_find_first_set(ext2fs_generic_bitmap bitmap,
+static errcode_t rb_find_first_set(ext2fs_generic_bitmap_64 bitmap,
                                   __u64 start, __u64 end, __u64 *out)
 {
        struct rb_node *parent = NULL, **n;
@@ -902,7 +902,7 @@ static errcode_t rb_find_first_set(ext2fs_generic_bitmap bitmap,
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void rb_print_stats(ext2fs_generic_bitmap bitmap)
+static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap)
 {
        struct ext2fs_rb_private *bp;
        struct rb_node *node = NULL;
@@ -963,7 +963,7 @@ static void rb_print_stats(ext2fs_generic_bitmap bitmap)
                eff);
 }
 #else
-static void rb_print_stats(ext2fs_generic_bitmap bitmap EXT2FS_ATTR((unused)))
+static void rb_print_stats(ext2fs_generic_bitmap_64 bitmap EXT2FS_ATTR((unused)))
 {
 }
 #endif
index d8c7a3c38c9076c1411c52cb38871ff3ece7e640..de3345481d65b986f79f9ce0b8f2c0225144131e 100644 (file)
@@ -37,7 +37,7 @@ struct ext2_bmap_statistics {
 };
 
 
-struct ext2fs_struct_generic_bitmap {
+struct ext2fs_struct_generic_bitmap_64 {
        errcode_t               magic;
        ext2_filsys             fs;
        struct ext2_bitmap_ops  *bitmap_ops;
@@ -53,6 +53,8 @@ struct ext2fs_struct_generic_bitmap {
 #endif
 };
 
+typedef struct ext2fs_struct_generic_bitmap_64 *ext2fs_generic_bitmap_64;
+
 #define EXT2FS_IS_32_BITMAP(bmap) \
        (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \
         ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \
@@ -66,37 +68,37 @@ struct ext2fs_struct_generic_bitmap {
 struct ext2_bitmap_ops {
        int     type;
        /* Generic bmap operators */
-       errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap bmap);
-       void    (*free_bmap)(ext2fs_generic_bitmap bitmap);
-       errcode_t (*copy_bmap)(ext2fs_generic_bitmap src,
-                            ext2fs_generic_bitmap dest);
-       errcode_t (*resize_bmap)(ext2fs_generic_bitmap bitmap,
+       errcode_t (*new_bmap)(ext2_filsys fs, ext2fs_generic_bitmap_64 bmap);
+       void    (*free_bmap)(ext2fs_generic_bitmap_64 bitmap);
+       errcode_t (*copy_bmap)(ext2fs_generic_bitmap_64 src,
+                            ext2fs_generic_bitmap_64 dest);
+       errcode_t (*resize_bmap)(ext2fs_generic_bitmap_64 bitmap,
                               __u64 new_end,
                               __u64 new_real_end);
        /* bit set/test operators */
-       int     (*mark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-       int     (*unmark_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-       int     (*test_bmap)(ext2fs_generic_bitmap bitmap, __u64 arg);
-       void    (*mark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg,
+       int     (*mark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+       int     (*unmark_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+       int     (*test_bmap)(ext2fs_generic_bitmap_64 bitmap, __u64 arg);
+       void    (*mark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                    unsigned int num);
-       void    (*unmark_bmap_extent)(ext2fs_generic_bitmap bitmap, __u64 arg,
+       void    (*unmark_bmap_extent)(ext2fs_generic_bitmap_64 bitmap, __u64 arg,
                                      unsigned int num);
-       int     (*test_clear_bmap_extent)(ext2fs_generic_bitmap bitmap,
+       int     (*test_clear_bmap_extent)(ext2fs_generic_bitmap_64 bitmap,
                                          __u64 arg, unsigned int num);
-       errcode_t (*set_bmap_range)(ext2fs_generic_bitmap bitmap,
+       errcode_t (*set_bmap_range)(ext2fs_generic_bitmap_64 bitmap,
                                    __u64 start, size_t num, void *in);
-       errcode_t (*get_bmap_range)(ext2fs_generic_bitmap bitmap,
+       errcode_t (*get_bmap_range)(ext2fs_generic_bitmap_64 bitmap,
                                    __u64 start, size_t num, void *out);
-       void (*clear_bmap)(ext2fs_generic_bitmap bitmap);
-       void (*print_stats)(ext2fs_generic_bitmap);
+       void (*clear_bmap)(ext2fs_generic_bitmap_64 bitmap);
+       void (*print_stats)(ext2fs_generic_bitmap_64);
 
        /* Find the first zero bit between start and end, inclusive.
         * May be NULL, in which case a generic function is used. */
-       errcode_t (*find_first_zero)(ext2fs_generic_bitmap bitmap,
+       errcode_t (*find_first_zero)(ext2fs_generic_bitmap_64 bitmap,
                                     __u64 start, __u64 end, __u64 *out);
        /* Find the first set bit between start and end, inclusive.
         * May be NULL, in which case a generic function is used. */
-       errcode_t (*find_first_set)(ext2fs_generic_bitmap bitmap,
+       errcode_t (*find_first_set)(ext2fs_generic_bitmap_64 bitmap,
                                    __u64 start, __u64 end, __u64 *out);
 };
 
index 4ba3f35c091f2deff7db96f3bd367c25154c070a..f1e7734d38656d2391726323ae5e41b8551e858c 100644 (file)
 #include "config.h"
 #include <stdio.h>
 #include <string.h>
+#include <limits.h>
 
 #include "ext2_fs.h"
 #include "ext2fs.h"
+#include "nls.h"
 
 /*
  * Keyed 32-bit hash function using TEA in a Davis-Meyer function
@@ -184,6 +186,11 @@ static void str2hashbuf(const char *msg, int len, __u32 *buf, int num,
  * A particular hash version specifies whether or not the seed is
  * represented, and whether or not the returned hash is 32 bits or 64
  * bits.  32 bit hashes will return 0 for the minor hash.
+ *
+ * This function doesn't do any normalization or casefolding of the
+ * input string.  To take charset encoding into account, use
+ * ext2fs_dirhash2.
+ *
  */
 errcode_t ext2fs_dirhash(int version, const char *name, int len,
                         const __u32 *seed,
@@ -257,3 +264,44 @@ errcode_t ext2fs_dirhash(int version, const char *name, int len,
                *ret_minor_hash = minor_hash;
        return 0;
 }
+
+/*
+ * Returns the hash of a filename considering normalization and
+ * casefolding.  This is a wrapper around ext2fs_dirhash with string
+ * encoding support based on the nls_table and the flags. Check
+ * ext2fs_dirhash for documentation on the input and output parameters.
+ */
+errcode_t ext2fs_dirhash2(int version, const char *name, int len,
+                         const struct nls_table *charset, int hash_flags,
+                         const __u32 *seed,
+                         ext2_dirhash_t *ret_hash,
+                         ext2_dirhash_t *ret_minor_hash)
+{
+       errcode_t r;
+       int dlen;
+       unsigned char *buff;
+
+       if (len && charset) {
+               char buff[PATH_MAX];
+
+               if (hash_flags & EXT4_CASEFOLD_FL)
+                       dlen = charset->ops->casefold(charset, name, len, buff,
+                                                     sizeof(buff));
+               else
+                       dlen = charset->ops->normalize(charset, name, len, buff,
+                                                      sizeof(buff));
+               if (dlen < 0) {
+                       if (dlen == -EINVAL)
+                               goto opaque_seq;
+
+                       return dlen;
+               }
+               r = ext2fs_dirhash(version, buff, dlen, seed, ret_hash,
+                                  ret_minor_hash);
+               return r;
+       }
+
+opaque_seq:
+       return ext2fs_dirhash(version, name, len, seed, ret_hash,
+                             ret_minor_hash);
+}
index 13c2c20e5c429b1e409af771f6d7163b433a6780..19bd94da008ab52fd52867fbcc23959182ac6024 100644 (file)
@@ -339,10 +339,11 @@ struct ext2_dx_tail {
 #define EXT4_SNAPFILE_SHRUNK_FL                0x08000000  /* Snapshot shrink has completed */
 #define EXT4_INLINE_DATA_FL            0x10000000 /* Inode has inline data */
 #define EXT4_PROJINHERIT_FL            0x20000000 /* Create with parents projid */
+#define EXT4_CASEFOLD_FL               0x40000000 /* Casefolded file */
 #define EXT2_RESERVED_FL               0x80000000 /* reserved for ext2 lib */
 
-#define EXT2_FL_USER_VISIBLE           0x204BDFFF /* User visible flags */
-#define EXT2_FL_USER_MODIFIABLE                0x204B80FF /* User modifiable flags */
+#define EXT2_FL_USER_VISIBLE           0x604BDFFF /* User visible flags */
+#define EXT2_FL_USER_MODIFIABLE                0x604B80FF /* User modifiable flags */
 
 /*
  * ioctl commands
@@ -748,7 +749,16 @@ struct ext2_super_block {
 /*268*/        __le32  s_lpf_ino;              /* Location of the lost+found inode */
        __le32  s_prj_quota_inum;       /* inode for tracking project quota */
 /*270*/        __le32  s_checksum_seed;        /* crc32c(orig_uuid) if csum_seed set */
-       __le32  s_reserved[98];         /* Padding to the end of the block */
+/*274*/        __u8    s_wtime_hi;
+       __u8    s_mtime_hi;
+       __u8    s_mkfs_time_hi;
+       __u8    s_lastcheck_hi;
+       __u8    s_first_error_time_hi;
+       __u8    s_last_error_time_hi;
+       __u8    s_pad[2];
+/*27c*/ __le16 s_encoding;             /* Filename charset encoding */
+       __le16  s_encoding_flags;       /* Filename charset encoding flags */
+       __le32  s_reserved[95];         /* Padding to the end of the block */
 /*3fc*/        __u32   s_checksum;             /* crc32c(superblock) */
 };
 
@@ -839,6 +849,7 @@ struct ext2_super_block {
 #define EXT4_FEATURE_INCOMPAT_LARGEDIR         0x4000 /* >2GB or 3-lvl htree */
 #define EXT4_FEATURE_INCOMPAT_INLINE_DATA      0x8000 /* data in inode */
 #define EXT4_FEATURE_INCOMPAT_ENCRYPT          0x10000
+#define EXT4_FEATURE_INCOMPAT_FNAME_ENCODING   0x20000
 
 #define EXT4_FEATURE_COMPAT_FUNCS(name, ver, flagname) \
 static inline int ext2fs_has_feature_##name(struct ext2_super_block *sb) \
@@ -932,6 +943,7 @@ EXT4_FEATURE_INCOMPAT_FUNCS(csum_seed,              4, CSUM_SEED)
 EXT4_FEATURE_INCOMPAT_FUNCS(largedir,          4, LARGEDIR)
 EXT4_FEATURE_INCOMPAT_FUNCS(inline_data,       4, INLINE_DATA)
 EXT4_FEATURE_INCOMPAT_FUNCS(encrypt,           4, ENCRYPT)
+EXT4_FEATURE_INCOMPAT_FUNCS(fname_encoding,    4, FNAME_ENCODING)
 
 #define EXT2_FEATURE_COMPAT_SUPP       0
 #define EXT2_FEATURE_INCOMPAT_SUPP    (EXT2_FEATURE_INCOMPAT_FILETYPE| \
@@ -1116,4 +1128,11 @@ struct mmp_struct {
  */
 #define EXT4_INLINE_DATA_DOTDOT_SIZE   (4)
 
+#define EXT4_ENC_ASCII         0
+#define EXT4_ENC_UTF8_11_0     1
+
+#define EXT4_ENC_STRICT_MODE_FL                        (1 << 0) /* Reject invalid sequences */
+#define EXT4_UTF8_NORMALIZATION_TYPE_NFKD      (1 << 1)
+#define EXT4_UTF8_CASEFOLD_TYPE_NFKDCF         (1 << 4)
+
 #endif /* _LINUX_EXT2_FS_H */
index c86596a68c1124662d5d876ec3c58622b1370c2b..9e76ffaaa8738020177fbc16f4a46e1229479e85 100644 (file)
@@ -111,9 +111,14 @@ typedef struct struct_ext2_filsys *ext2_filsys;
 #define EXT2FS_UNMARK_ERROR    1
 #define EXT2FS_TEST_ERROR      2
 
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_generic_bitmap;
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_inode_bitmap;
-typedef struct ext2fs_struct_generic_bitmap *ext2fs_block_bitmap;
+struct ext2fs_struct_generic_bitmap_base {
+       errcode_t               magic;
+       ext2_filsys             fs;
+};
+
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_generic_bitmap;
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_inode_bitmap;
+typedef struct ext2fs_struct_generic_bitmap_base *ext2fs_block_bitmap;
 
 #define EXT2_FIRST_INODE(s)    EXT2_FIRST_INO(s)
 
@@ -302,6 +307,8 @@ struct struct_ext2_filsys {
 
        /* hashmap for SHA of data blocks */
        struct ext2fs_hashmap* block_sha_map;
+
+       const struct nls_table *encoding;
 };
 
 #if EXT2_FLAT_INCLUDES
@@ -570,6 +577,16 @@ typedef struct ext2_icount *ext2_icount_t;
  */
 #define BMAP_RET_UNINIT        0x0001
 
+/*
+ * Flags for ext2fs_read_inode2
+ */
+#define READ_INODE_NOCSUM      0x0001
+
+/*
+ * Flags for ext2fs_write_inode2
+ */
+#define WRITE_INODE_NOCSUM     0x0001
+
 /*
  * Flags for imager.c functions
  */
@@ -611,6 +628,7 @@ typedef struct ext2_icount *ext2_icount_t;
                                         EXT4_FEATURE_INCOMPAT_64BIT|\
                                         EXT4_FEATURE_INCOMPAT_INLINE_DATA|\
                                         EXT4_FEATURE_INCOMPAT_ENCRYPT|\
+                                        EXT4_FEATURE_INCOMPAT_FNAME_ENCODING|\
                                         EXT4_FEATURE_INCOMPAT_CSUM_SEED|\
                                         EXT4_FEATURE_INCOMPAT_LARGEDIR)
 
@@ -1168,6 +1186,12 @@ extern errcode_t ext2fs_dirhash(int version, const char *name, int len,
                                ext2_dirhash_t *ret_hash,
                                ext2_dirhash_t *ret_minor_hash);
 
+extern errcode_t ext2fs_dirhash2(int version, const char *name, int len,
+                                const struct nls_table *charset,
+                                int hash_flags,
+                                const __u32 *seed,
+                                ext2_dirhash_t *ret_hash,
+                                ext2_dirhash_t *ret_minor_hash);
 
 /* dir_iterate.c */
 extern errcode_t ext2fs_get_rec_len(ext2_filsys fs,
@@ -1290,7 +1314,9 @@ extern errcode_t ext2fs_extent_goto(ext2_extent_handle_t handle,
 extern errcode_t ext2fs_extent_goto2(ext2_extent_handle_t handle,
                                     int leaf_level, blk64_t blk);
 extern errcode_t ext2fs_extent_fix_parents(ext2_extent_handle_t handle);
-size_t ext2fs_max_extent_depth(ext2_extent_handle_t handle);
+extern size_t ext2fs_max_extent_depth(ext2_extent_handle_t handle);
+extern errcode_t ext2fs_fix_extents_checksums(ext2_filsys fs, ext2_ino_t ino,
+                                             struct ext2_inode *inode);
 
 /* fallocate.c */
 #define EXT2_FALLOCATE_ZERO_BLOCKS     (0x1)
@@ -1514,13 +1540,19 @@ extern int ext2fs_inode_scan_flags(ext2_inode_scan scan, int set_flags,
 extern errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino,
                                        struct ext2_inode * inode,
                                        int bufsize);
-extern errcode_t ext2fs_read_inode (ext2_filsys fs, ext2_ino_t ino,
+extern errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
+extern errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino,
+                                   struct ext2_inode * inode,
+                                   int bufsize, int flags);
 extern errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
                                         struct ext2_inode * inode,
                                         int bufsize);
 extern errcode_t ext2fs_write_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
+extern errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino,
+                                    struct ext2_inode * inode,
+                                    int bufsize, int flags);
 extern errcode_t ext2fs_write_new_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode);
 extern errcode_t ext2fs_get_blocks(ext2_filsys fs, ext2_ino_t ino, blk_t *blocks);
index a9cdae7972162b73f9acb6d0c22fa5868283d560..ac3dbfec904db2021289bdc43edc38c624bb7b9c 100644 (file)
@@ -1737,6 +1737,54 @@ size_t ext2fs_max_extent_depth(ext2_extent_handle_t handle)
        return last_result;
 }
 
+errcode_t ext2fs_fix_extents_checksums(ext2_filsys fs, ext2_ino_t ino,
+                                      struct ext2_inode *inode)
+{
+       ext2_extent_handle_t    handle;
+       struct ext2fs_extent    extent;
+       errcode_t               errcode;
+       int                     save_flags = fs->flags;
+
+       if (!ext2fs_has_feature_metadata_csum(fs->super) ||
+           (inode && !(inode->i_flags & EXT4_EXTENTS_FL)))
+               return 0;
+
+       errcode = ext2fs_extent_open2(fs, ino, inode, &handle);
+       if (errcode) {
+               if (errcode == EXT2_ET_INODE_NOT_EXTENT)
+                       errcode = 0;
+               return errcode;
+       }
+
+       fs->flags &= ~EXT2_FLAG_IGNORE_CSUM_ERRORS;
+       errcode = ext2fs_extent_get(handle, EXT2_EXTENT_ROOT, &extent);
+       if (errcode)
+               goto out;
+
+       do {
+               /* Skip to the end of a block of leaf nodes */
+               if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) {
+                       errcode = ext2fs_extent_get(handle,
+                                                   EXT2_EXTENT_LAST_SIB,
+                                                   &extent);
+                       if (errcode)
+                               break;
+               }
+
+               errcode = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT, &extent);
+               if (errcode == EXT2_ET_EXTENT_CSUM_INVALID)
+                       errcode = update_path(handle);
+       } while (errcode == 0);
+
+out:
+       /* Ok if we run off the end */
+       if (errcode == EXT2_ET_EXTENT_NO_NEXT)
+               errcode = 0;
+       ext2fs_extent_free(handle);
+       fs->flags = save_flags;
+       return errcode;
+}
+
 #ifdef DEBUG
 /*
  * Override debugfs's prompt
index 674baa3e20268f51ce09ea72e4389a7a7498a7ee..c94c21b663dc3aaef09cc0740f0b114d20220232 100644 (file)
@@ -28,7 +28,7 @@
 #include "ext2_fs.h"
 #include "ext2fsP.h"
 
-struct ext2fs_struct_generic_bitmap {
+struct ext2fs_struct_generic_bitmap_32 {
        errcode_t       magic;
        ext2_filsys     fs;
        __u32           start, end;
@@ -39,6 +39,8 @@ struct ext2fs_struct_generic_bitmap {
        __u32           reserved[7];
 };
 
+typedef struct ext2fs_struct_generic_bitmap_32 *ext2fs_generic_bitmap_32;
+
 #define EXT2FS_IS_32_BITMAP(bmap) \
        (((bmap)->magic == EXT2_ET_MAGIC_GENERIC_BITMAP) || \
         ((bmap)->magic == EXT2_ET_MAGIC_BLOCK_BITMAP) || \
@@ -53,9 +55,11 @@ struct ext2fs_struct_generic_bitmap {
  * Used by previously inlined function, so we have to export this and
  * not change the function signature
  */
-void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
+void ext2fs_warn_bitmap2(ext2fs_generic_bitmap gen_bitmap,
                            int code, unsigned long arg)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
 #ifndef OMIT_COM_ERR
        if (bitmap->description)
                com_err(0, bitmap->base_error_code+code,
@@ -79,11 +83,11 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs,
                                     const char *descr, char *init_map,
                                     ext2fs_generic_bitmap *ret)
 {
-       ext2fs_generic_bitmap   bitmap;
+       ext2fs_generic_bitmap_32 bitmap;
        errcode_t               retval;
        size_t                  size;
 
-       retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap),
+       retval = ext2fs_get_mem(sizeof(struct ext2fs_struct_generic_bitmap_32),
                                &bitmap);
        if (retval)
                return retval;
@@ -127,7 +131,7 @@ errcode_t ext2fs_make_generic_bitmap(errcode_t magic, ext2_filsys fs,
                memcpy(bitmap->bitmap, init_map, size);
        else
                memset(bitmap->bitmap, 0, size);
-       *ret = bitmap;
+       *ret = (ext2fs_generic_bitmap) bitmap;
        return 0;
 }
 
@@ -141,9 +145,11 @@ errcode_t ext2fs_allocate_generic_bitmap(__u32 start,
                                          start, end, real_end, descr, 0, ret);
 }
 
-errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap src,
+errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap gen_src,
                                     ext2fs_generic_bitmap *dest)
 {
+       ext2fs_generic_bitmap_32 src = (ext2fs_generic_bitmap_32) gen_src;
+
        return (ext2fs_make_generic_bitmap(src->magic, src->fs,
                                           src->start, src->end,
                                           src->real_end,
@@ -151,9 +157,11 @@ errcode_t ext2fs_copy_generic_bitmap(ext2fs_generic_bitmap src,
                                           dest));
 }
 
-void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap)
+void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap gen_bitmap)
 {
-       if (check_magic(bitmap))
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
+       if (check_magic(gen_bitmap))
                return;
 
        bitmap->magic = 0;
@@ -171,6 +179,8 @@ void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap)
 int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
                                        blk_t bitno)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -183,16 +193,18 @@ int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
                return 0;
        }
 
-       if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+       if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
                ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, bitno);
                return 0;
        }
-       return ext2fs_test_bit(bitno - bitmap->start, bitmap->bitmap);
+       return ext2fs_test_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
                                         __u32 bitno)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -205,16 +217,18 @@ int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
                return 0;
        }
 
-       if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+       if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
                ext2fs_warn_bitmap2(bitmap, EXT2FS_MARK_ERROR, bitno);
                return 0;
        }
-       return ext2fs_set_bit(bitno - bitmap->start, bitmap->bitmap);
+       return ext2fs_set_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
                                           blk_t bitno)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -227,15 +241,17 @@ int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
                return 0;
        }
 
-       if ((bitno < bitmap->start) || (bitno > bitmap->end)) {
+       if ((bitno < bitmap32->start) || (bitno > bitmap32->end)) {
                ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR, bitno);
                return 0;
        }
-       return ext2fs_clear_bit(bitno - bitmap->start, bitmap->bitmap);
+       return ext2fs_clear_bit(bitno - bitmap32->start, bitmap32->bitmap);
 }
 
 __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -248,11 +264,13 @@ __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap)
                return 0;
        }
 
-       return bitmap->start;
+       return bitmap32->start;
 }
 
 __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -264,11 +282,13 @@ __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap)
 #endif
                return 0;
        }
-       return bitmap->end;
+       return bitmap32->end;
 }
 
 void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap)
 {
+       ext2fs_generic_bitmap_32 bitmap32 = (ext2fs_generic_bitmap_32) bitmap;
+
        if (!EXT2FS_IS_32_BITMAP(bitmap)) {
                if (EXT2FS_IS_64_BITMAP(bitmap)) {
                        ext2fs_warn_bitmap32(bitmap, __func__);
@@ -282,14 +302,16 @@ void ext2fs_clear_generic_bitmap(ext2fs_generic_bitmap bitmap)
                return;
        }
 
-       memset(bitmap->bitmap, 0,
-              (size_t) (((bitmap->real_end - bitmap->start) / 8) + 1));
+       memset(bitmap32->bitmap, 0,
+              (size_t) (((bitmap32->real_end - bitmap32->start) / 8) + 1));
 }
 
-errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap bitmap,
+errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap gen_bitmap,
                                          errcode_t magic, errcode_t neq,
                                          ext2_ino_t end, ext2_ino_t *oend)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
        EXT2_CHECK_MAGIC(bitmap, magic);
 
        if (end > bitmap->real_end)
@@ -302,8 +324,9 @@ errcode_t ext2fs_fudge_generic_bitmap_end(ext2fs_inode_bitmap bitmap,
 
 errcode_t ext2fs_resize_generic_bitmap(errcode_t magic,
                                       __u32 new_end, __u32 new_real_end,
-                                      ext2fs_generic_bitmap bmap)
+                                      ext2fs_generic_bitmap gen_bmap)
 {
+       ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
        errcode_t       retval;
        size_t          size, new_size;
        __u32           bitno;
@@ -344,9 +367,11 @@ errcode_t ext2fs_resize_generic_bitmap(errcode_t magic,
 }
 
 errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq,
-                                       ext2fs_generic_bitmap bm1,
-                                       ext2fs_generic_bitmap bm2)
+                                       ext2fs_generic_bitmap gen_bm1,
+                                       ext2fs_generic_bitmap gen_bm2)
 {
+       ext2fs_generic_bitmap_32 bm1 = (ext2fs_generic_bitmap_32) gen_bm1;
+       ext2fs_generic_bitmap_32 bm2 = (ext2fs_generic_bitmap_32) gen_bm2;
        blk_t   i;
 
        if (!bm1 || bm1->magic != magic)
@@ -361,15 +386,16 @@ errcode_t ext2fs_compare_generic_bitmap(errcode_t magic, errcode_t neq,
                return neq;
 
        for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++)
-               if (ext2fs_fast_test_block_bitmap(bm1, i) !=
-                   ext2fs_fast_test_block_bitmap(bm2, i))
+               if (ext2fs_fast_test_block_bitmap(gen_bm1, i) !=
+                   ext2fs_fast_test_block_bitmap(gen_bm2, i))
                        return neq;
 
        return 0;
 }
 
-void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap map)
+void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap gen_map)
 {
+       ext2fs_generic_bitmap_32 map = (ext2fs_generic_bitmap_32) gen_map;
        __u32   i, j;
 
        /* Protect loop from wrap-around if map->real_end is maxed */
@@ -379,11 +405,13 @@ void ext2fs_set_generic_bitmap_padding(ext2fs_generic_bitmap map)
                ext2fs_set_bit(j, map->bitmap);
 }
 
-errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
                                          errcode_t magic,
                                          __u32 start, __u32 num,
                                          void *out)
 {
+       ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
+
        if (!bmap || (bmap->magic != magic))
                return magic;
 
@@ -394,11 +422,13 @@ errcode_t ext2fs_get_generic_bitmap_range(ext2fs_generic_bitmap bmap,
        return 0;
 }
 
-errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_set_generic_bitmap_range(ext2fs_generic_bitmap gen_bmap,
                                          errcode_t magic,
                                          __u32 start, __u32 num,
                                          void *in)
 {
+       ext2fs_generic_bitmap_32 bmap = (ext2fs_generic_bitmap_32) gen_bmap;
+
        if (!bmap || (bmap->magic != magic))
                return magic;
 
@@ -432,10 +462,11 @@ int ext2fs_mem_is_zero(const char *mem, size_t len)
 /*
  * Return true if all of the bits in a specified range are clear
  */
-static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap bitmap,
+static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap gen_bitmap,
                                                  unsigned int start,
                                                  unsigned int len)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
        size_t start_byte, len_byte = len >> 3;
        unsigned int start_bit, len_bit = len % 8;
        int first_bit = 0;
@@ -504,14 +535,15 @@ static int ext2fs_test_clear_generic_bitmap_range(ext2fs_generic_bitmap bitmap,
        return ext2fs_mem_is_zero(ADDR + start_byte, len_byte);
 }
 
-errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap gen_bitmap,
                                                __u32 start, __u32 end,
                                                __u32 *out)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
        blk_t b;
 
        if (start < bitmap->start || end > bitmap->end || start > end) {
-               ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start);
+               ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start);
                return EINVAL;
        }
 
@@ -527,14 +559,15 @@ errcode_t ext2fs_find_first_zero_generic_bitmap(ext2fs_generic_bitmap bitmap,
        return ENOENT;
 }
 
-errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap gen_bitmap,
                                               __u32 start, __u32 end,
                                               __u32 *out)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
        blk_t b;
 
        if (start < bitmap->start || end > bitmap->end || start > end) {
-               ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR, start);
+               ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR, start);
                return EINVAL;
        }
 
@@ -550,9 +583,11 @@ errcode_t ext2fs_find_first_set_generic_bitmap(ext2fs_generic_bitmap bitmap,
        return ENOENT;
 }
 
-int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
                                   blk_t block, int num)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
        EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_BLOCK_BITMAP);
        if ((block < bitmap->start) || (block > bitmap->real_end) ||
            (block+num-1 > bitmap->real_end)) {
@@ -564,9 +599,11 @@ int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
                                                      bitmap, block, num);
 }
 
-int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap,
+int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap gen_bitmap,
                                   ext2_ino_t inode, int num)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
+
        EXT2_CHECK_MAGIC(bitmap, EXT2_ET_MAGIC_INODE_BITMAP);
        if ((inode < bitmap->start) || (inode > bitmap->real_end) ||
            (inode+num-1 > bitmap->real_end)) {
@@ -578,9 +615,10 @@ int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap,
                                                      bitmap, inode, num);
 }
 
-void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
                                    blk_t block, int num)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
        int     i;
 
        if ((block < bitmap->start) || (block > bitmap->end) ||
@@ -593,9 +631,10 @@ void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
                ext2fs_fast_set_bit(block + i - bitmap->start, bitmap->bitmap);
 }
 
-void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
-                                              blk_t block, int num)
+void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap gen_bitmap,
+                                     blk_t block, int num)
 {
+       ext2fs_generic_bitmap_32 bitmap = (ext2fs_generic_bitmap_32) gen_bitmap;
        int     i;
 
        if ((block < bitmap->start) || (block > bitmap->end) ||
index 47ba2baf93ef1d63e4e61bd332ccba38d9c497fe..6e4d8b71db310428344cb87392cd601a9ce7fc3f 100644 (file)
@@ -68,7 +68,7 @@
  * e2fsck can request an encoding which is optimized for that.
  */
 
-static void warn_bitmap(ext2fs_generic_bitmap bitmap,
+static void warn_bitmap(ext2fs_generic_bitmap_64 bitmap,
                        int code, __u64 arg)
 {
 #ifndef OMIT_COM_ERR
@@ -93,7 +93,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic,
                                    const char *descr,
                                    ext2fs_generic_bitmap *ret)
 {
-       ext2fs_generic_bitmap   bitmap;
+       ext2fs_generic_bitmap_64 bitmap;
        struct ext2_bitmap_ops  *ops;
        ext2_ino_t num_dirs;
        errcode_t retval;
@@ -119,7 +119,7 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic,
                return EINVAL;
        }
 
-       retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap),
+       retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64),
                                    &bitmap);
        if (retval)
                return retval;
@@ -170,12 +170,12 @@ errcode_t ext2fs_alloc_generic_bmap(ext2_filsys fs, errcode_t magic,
                return retval;
        }
 
-       *ret = bitmap;
+       *ret = (ext2fs_generic_bitmap) bitmap;
        return 0;
 }
 
 #ifdef ENABLE_BMAP_STATS
-static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap bitmap)
+static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap_64 bitmap)
 {
        struct ext2_bmap_statistics *stats = &bitmap->stats;
 #ifdef ENABLE_BMAP_STATS_OPS
@@ -241,13 +241,15 @@ static void ext2fs_print_bmap_statistics(ext2fs_generic_bitmap bitmap)
 }
 #endif
 
-void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap)
+void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
        if (!bmap)
                return;
 
        if (EXT2FS_IS_32_BITMAP(bmap)) {
-               ext2fs_free_generic_bitmap(bmap);
+               ext2fs_free_generic_bitmap(gen_bmap);
                return;
        }
 
@@ -271,24 +273,25 @@ void ext2fs_free_generic_bmap(ext2fs_generic_bitmap bmap)
        ext2fs_free_mem(&bmap);
 }
 
-errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src,
+errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap gen_src,
                                   ext2fs_generic_bitmap *dest)
 {
+       ext2fs_generic_bitmap_64 src = (ext2fs_generic_bitmap_64) gen_src;
        char *descr, *new_descr;
-       ext2fs_generic_bitmap   new_bmap;
+       ext2fs_generic_bitmap_64 new_bmap;
        errcode_t retval;
 
        if (!src)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(src))
-               return ext2fs_copy_generic_bitmap(src, dest);
+               return ext2fs_copy_generic_bitmap(gen_src, dest);
 
        if (!EXT2FS_IS_64_BITMAP(src))
                return EINVAL;
 
        /* Allocate a new bitmap struct */
-       retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap),
+       retval = ext2fs_get_memzero(sizeof(struct ext2fs_struct_generic_bitmap_64),
                                    &new_bmap);
        if (retval)
                return retval;
@@ -336,21 +339,23 @@ errcode_t ext2fs_copy_generic_bmap(ext2fs_generic_bitmap src,
                return retval;
        }
 
-       *dest = new_bmap;
+       *dest = (ext2fs_generic_bitmap) new_bmap;
 
        return 0;
 }
 
-errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap gen_bmap,
                                     __u64 new_end,
                                     __u64 new_real_end)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
        if (!bmap)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(bmap))
-               return ext2fs_resize_generic_bitmap(bmap->magic, new_end,
-                                                   new_real_end, bmap);
+               return ext2fs_resize_generic_bitmap(gen_bmap->magic, new_end,
+                                                   new_real_end, gen_bmap);
 
        if (!EXT2FS_IS_64_BITMAP(bmap))
                return EINVAL;
@@ -360,10 +365,12 @@ errcode_t ext2fs_resize_generic_bmap(ext2fs_generic_bitmap bmap,
        return bmap->bitmap_ops->resize_bmap(bmap, new_end, new_real_end);
 }
 
-errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap,
+errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap,
                                        errcode_t neq,
                                        __u64 end, __u64 *oend)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (!bitmap)
                return EINVAL;
 
@@ -371,7 +378,8 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap,
                ext2_ino_t tmp_oend;
                int retval;
 
-               retval = ext2fs_fudge_generic_bitmap_end(bitmap, bitmap->magic,
+               retval = ext2fs_fudge_generic_bitmap_end(gen_bitmap,
+                                                        bitmap->magic,
                                                         neq, end, &tmp_oend);
                if (oend)
                        *oend = tmp_oend;
@@ -389,13 +397,15 @@ errcode_t ext2fs_fudge_generic_bmap_end(ext2fs_generic_bitmap bitmap,
        return 0;
 }
 
-__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap)
+__u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap gen_bitmap)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (!bitmap)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(bitmap))
-               return ext2fs_get_generic_bitmap_start(bitmap);
+               return ext2fs_get_generic_bitmap_start(gen_bitmap);
 
        if (!EXT2FS_IS_64_BITMAP(bitmap))
                return EINVAL;
@@ -403,13 +413,15 @@ __u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap)
        return bitmap->start;
 }
 
-__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap)
+__u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap gen_bitmap)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (!bitmap)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(bitmap))
-               return ext2fs_get_generic_bitmap_end(bitmap);
+               return ext2fs_get_generic_bitmap_end(gen_bitmap);
 
        if (!EXT2FS_IS_64_BITMAP(bitmap))
                return EINVAL;
@@ -417,27 +429,31 @@ __u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap)
        return bitmap->end;
 }
 
-void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap)
+void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap gen_bitmap)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (EXT2FS_IS_32_BITMAP(bitmap))
-               ext2fs_clear_generic_bitmap(bitmap);
+               ext2fs_clear_generic_bitmap(gen_bitmap);
        else
-               bitmap->bitmap_ops->clear_bmap (bitmap);
+               bitmap->bitmap_ops->clear_bmap(bitmap);
 }
 
-int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
                             __u64 arg)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (!bitmap)
                return 0;
 
        if (EXT2FS_IS_32_BITMAP(bitmap)) {
                if (arg & ~0xffffffffULL) {
-                       ext2fs_warn_bitmap2(bitmap,
+                       ext2fs_warn_bitmap2(gen_bitmap,
                                            EXT2FS_MARK_ERROR, 0xffffffff);
                        return 0;
                }
-               return ext2fs_mark_generic_bitmap(bitmap, arg);
+               return ext2fs_mark_generic_bitmap(gen_bitmap, arg);
        }
 
        if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -462,19 +478,21 @@ int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
        return bitmap->bitmap_ops->mark_bmap(bitmap, arg);
 }
 
-int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
                               __u64 arg)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
        if (!bitmap)
                return 0;
 
        if (EXT2FS_IS_32_BITMAP(bitmap)) {
                if (arg & ~0xffffffffULL) {
-                       ext2fs_warn_bitmap2(bitmap, EXT2FS_UNMARK_ERROR,
+                       ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_UNMARK_ERROR,
                                            0xffffffff);
                        return 0;
                }
-               return ext2fs_unmark_generic_bitmap(bitmap, arg);
+               return ext2fs_unmark_generic_bitmap(gen_bitmap, arg);
        }
 
        if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -492,19 +510,20 @@ int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
        return bitmap->bitmap_ops->unmark_bmap(bitmap, arg);
 }
 
-int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
+int ext2fs_test_generic_bmap(ext2fs_generic_bitmap gen_bitmap,
                             __u64 arg)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
        if (!bitmap)
                return 0;
 
        if (EXT2FS_IS_32_BITMAP(bitmap)) {
                if (arg & ~0xffffffffULL) {
-                       ext2fs_warn_bitmap2(bitmap, EXT2FS_TEST_ERROR,
+                       ext2fs_warn_bitmap2(gen_bitmap, EXT2FS_TEST_ERROR,
                                            0xffffffff);
                        return 0;
                }
-               return ext2fs_test_generic_bitmap(bitmap, arg);
+               return ext2fs_test_generic_bitmap(gen_bitmap, arg);
        }
 
        if (!EXT2FS_IS_64_BITMAP(bitmap))
@@ -529,20 +548,22 @@ int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
        return bitmap->bitmap_ops->test_bmap(bitmap, arg);
 }
 
-errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap gen_bmap,
                                        __u64 start, unsigned int num,
                                        void *in)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
        if (!bmap)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(bmap)) {
                if ((start+num-1) & ~0xffffffffULL) {
-                       ext2fs_warn_bitmap2(bmap, EXT2FS_UNMARK_ERROR,
+                       ext2fs_warn_bitmap2(gen_bmap, EXT2FS_UNMARK_ERROR,
                                            0xffffffff);
                        return EINVAL;
                }
-               return ext2fs_set_generic_bitmap_range(bmap, bmap->magic,
+               return ext2fs_set_generic_bitmap_range(gen_bmap, bmap->magic,
                                                       start, num, in);
        }
 
@@ -554,20 +575,22 @@ errcode_t ext2fs_set_generic_bmap_range(ext2fs_generic_bitmap bmap,
        return bmap->bitmap_ops->set_bmap_range(bmap, start, num, in);
 }
 
-errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bmap,
+errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap gen_bmap,
                                        __u64 start, unsigned int num,
                                        void *out)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+
        if (!bmap)
                return EINVAL;
 
        if (EXT2FS_IS_32_BITMAP(bmap)) {
                if ((start+num-1) & ~0xffffffffULL) {
-                       ext2fs_warn_bitmap2(bmap,
+                       ext2fs_warn_bitmap2(gen_bmap,
                                            EXT2FS_UNMARK_ERROR, 0xffffffff);
                        return EINVAL;
                }
-               return ext2fs_get_generic_bitmap_range(bmap, bmap->magic,
+               return ext2fs_get_generic_bitmap_range(gen_bmap, bmap->magic,
                                                       start, num, out);
        }
 
@@ -580,9 +603,11 @@ errcode_t ext2fs_get_generic_bmap_range(ext2fs_generic_bitmap bmap,
 }
 
 errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
-                                     ext2fs_generic_bitmap bm1,
-                                     ext2fs_generic_bitmap bm2)
+                                     ext2fs_generic_bitmap gen_bm1,
+                                     ext2fs_generic_bitmap gen_bm2)
 {
+       ext2fs_generic_bitmap_64 bm1 = (ext2fs_generic_bitmap_64) gen_bm1;
+       ext2fs_generic_bitmap_64 bm2 = (ext2fs_generic_bitmap_64) gen_bm2;
        blk64_t i;
 
        if (!bm1 || !bm2)
@@ -592,7 +617,8 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
 
        /* Now we know both bitmaps have the same magic */
        if (EXT2FS_IS_32_BITMAP(bm1))
-               return ext2fs_compare_generic_bitmap(bm1->magic, neq, bm1, bm2);
+               return ext2fs_compare_generic_bitmap(bm1->magic, neq,
+                                                    gen_bm1, gen_bm2);
 
        if (!EXT2FS_IS_64_BITMAP(bm1))
                return EINVAL;
@@ -602,19 +628,20 @@ errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
                return neq;
 
        for (i = bm1->end - ((bm1->end - bm1->start) % 8); i <= bm1->end; i++)
-               if (ext2fs_test_generic_bmap(bm1, i) !=
-                   ext2fs_test_generic_bmap(bm2, i))
+               if (ext2fs_test_generic_bmap(gen_bm1, i) !=
+                   ext2fs_test_generic_bmap(gen_bm2, i))
                        return neq;
 
        return 0;
 }
 
-void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap)
+void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap gen_bmap)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
        __u64   start, num;
 
        if (EXT2FS_IS_32_BITMAP(bmap)) {
-               ext2fs_set_generic_bitmap_padding(bmap);
+               ext2fs_set_generic_bitmap_padding(gen_bmap);
                return;
        }
 
@@ -624,9 +651,10 @@ void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap)
        /* XXX ought to warn on error */
 }
 
-int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bmap,
+int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
                                    blk64_t block, unsigned int num)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
        __u64   end = block + num;
 
        if (!bmap)
@@ -668,9 +696,10 @@ int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bmap,
        return bmap->bitmap_ops->test_clear_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bmap,
+void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
                                     blk64_t block, unsigned int num)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
        __u64   end = block + num;
 
        if (!bmap)
@@ -708,9 +737,10 @@ void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bmap,
        bmap->bitmap_ops->mark_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bmap,
+void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap,
                                       blk64_t block, unsigned int num)
 {
+       ext2fs_generic_bitmap_64 bmap = (ext2fs_generic_bitmap_64) gen_bmap;
        __u64   end = block + num;
 
        if (!bmap)
@@ -748,8 +778,10 @@ void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bmap,
        bmap->bitmap_ops->unmark_bmap_extent(bmap, block, num);
 }
 
-void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func)
+void ext2fs_warn_bitmap32(ext2fs_generic_bitmap gen_bitmap, const char *func)
 {
+       ext2fs_generic_bitmap_64 bitmap = (ext2fs_generic_bitmap_64) gen_bitmap;
+
 #ifndef OMIT_COM_ERR
        if (bitmap && bitmap->description)
                com_err(0, EXT2_ET_MAGIC_GENERIC_BITMAP,
@@ -764,21 +796,22 @@ void ext2fs_warn_bitmap32(ext2fs_generic_bitmap bitmap, const char *func)
 errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
                                           ext2fs_block_bitmap *bitmap)
 {
-       ext2fs_block_bitmap     cmap, bmap;
+       ext2fs_generic_bitmap_64 bmap, cmap;
+       ext2fs_block_bitmap     gen_bmap = *bitmap, gen_cmap;
        errcode_t               retval;
        blk64_t                 i, b_end, c_end;
        int                     n, ratio;
 
-       bmap = *bitmap;
-
-       if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(bmap))
+       bmap = (ext2fs_generic_bitmap_64) gen_bmap;
+       if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap))
                return 0;       /* Nothing to do */
 
        retval = ext2fs_allocate_block_bitmap(fs, "converted cluster bitmap",
-                                             &cmap);
+                                             &gen_cmap);
        if (retval)
                return retval;
 
+       cmap = (ext2fs_generic_bitmap_64) gen_cmap;
        i = bmap->start;
        b_end = bmap->end;
        bmap->end = bmap->real_end;
@@ -787,8 +820,8 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
        n = 0;
        ratio = 1 << fs->cluster_ratio_bits;
        while (i < bmap->real_end) {
-               if (ext2fs_test_block_bitmap2(bmap, i)) {
-                       ext2fs_mark_block_bitmap2(cmap, i);
+               if (ext2fs_test_block_bitmap2(gen_bmap, i)) {
+                       ext2fs_mark_block_bitmap2(gen_cmap, i);
                        i += ratio - n;
                        n = 0;
                        continue;
@@ -799,14 +832,15 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
        }
        bmap->end = b_end;
        cmap->end = c_end;
-       ext2fs_free_block_bitmap(bmap);
-       *bitmap = cmap;
+       ext2fs_free_block_bitmap(gen_bmap);
+       *bitmap = (ext2fs_block_bitmap) cmap;
        return 0;
 }
 
 errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap,
                                              __u64 start, __u64 end, __u64 *out)
 {
+       ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap;
        __u64 cstart, cend, cout;
        errcode_t retval;
 
@@ -832,27 +866,27 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap,
        if (!EXT2FS_IS_64_BITMAP(bitmap))
                return EINVAL;
 
-       cstart = start >> bitmap->cluster_bits;
-       cend = end >> bitmap->cluster_bits;
+       cstart = start >> bmap64->cluster_bits;
+       cend = end >> bmap64->cluster_bits;
 
-       if (cstart < bitmap->start || cend > bitmap->end || start > end) {
-               warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start);
+       if (cstart < bmap64->start || cend > bmap64->end || start > end) {
+               warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start);
                return EINVAL;
        }
 
-       if (bitmap->bitmap_ops->find_first_zero) {
-               retval = bitmap->bitmap_ops->find_first_zero(bitmap, cstart,
+       if (bmap64->bitmap_ops->find_first_zero) {
+               retval = bmap64->bitmap_ops->find_first_zero(bmap64, cstart,
                                                             cend, &cout);
                if (retval)
                        return retval;
        found:
-               cout <<= bitmap->cluster_bits;
+               cout <<= bmap64->cluster_bits;
                *out = (cout >= start) ? cout : start;
                return 0;
        }
 
        for (cout = cstart; cout <= cend; cout++)
-               if (!bitmap->bitmap_ops->test_bmap(bitmap, cout))
+               if (!bmap64->bitmap_ops->test_bmap(bmap64, cout))
                        goto found;
 
        return ENOENT;
@@ -861,6 +895,7 @@ errcode_t ext2fs_find_first_zero_generic_bmap(ext2fs_generic_bitmap bitmap,
 errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
                                             __u64 start, __u64 end, __u64 *out)
 {
+       ext2fs_generic_bitmap_64 bmap64 = (ext2fs_generic_bitmap_64) bitmap;
        __u64 cstart, cend, cout;
        errcode_t retval;
 
@@ -886,27 +921,27 @@ errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
        if (!EXT2FS_IS_64_BITMAP(bitmap))
                return EINVAL;
 
-       cstart = start >> bitmap->cluster_bits;
-       cend = end >> bitmap->cluster_bits;
+       cstart = start >> bmap64->cluster_bits;
+       cend = end >> bmap64->cluster_bits;
 
-       if (cstart < bitmap->start || cend > bitmap->end || start > end) {
-               warn_bitmap(bitmap, EXT2FS_TEST_ERROR, start);
+       if (cstart < bmap64->start || cend > bmap64->end || start > end) {
+               warn_bitmap(bmap64, EXT2FS_TEST_ERROR, start);
                return EINVAL;
        }
 
-       if (bitmap->bitmap_ops->find_first_set) {
-               retval = bitmap->bitmap_ops->find_first_set(bitmap, cstart,
+       if (bmap64->bitmap_ops->find_first_set) {
+               retval = bmap64->bitmap_ops->find_first_set(bmap64, cstart,
                                                            cend, &cout);
                if (retval)
                        return retval;
        found:
-               cout <<= bitmap->cluster_bits;
+               cout <<= bmap64->cluster_bits;
                *out = (cout >= start) ? cout : start;
                return 0;
        }
 
        for (cout = cstart; cout <= cend; cout++)
-               if (bitmap->bitmap_ops->test_bmap(bitmap, cout))
+               if (bmap64->bitmap_ops->test_bmap(bmap64, cout))
                        goto found;
 
        return ENOENT;
index 8c9e97fee831aabee3f7f4907ffa7877c219c005..30b1ae0333406a739fffd3e67c8d89550aebee85 100644 (file)
@@ -186,6 +186,10 @@ errcode_t ext2fs_initialize(const char *name, int flags,
        set_field(s_flags, 0);
        assign_field(s_backup_bgs[0]);
        assign_field(s_backup_bgs[1]);
+
+       assign_field(s_encoding);
+       assign_field(s_encoding_flags);
+
        if (super->s_feature_incompat & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
                retval = EXT2_ET_UNSUPP_FEATURE;
                goto cleanup;
index 013c658ebd4b361623a6dba3f94b8e03cbc66f19..2a4be73938684b4a3f9832eb023f3dd21e69a133 100644 (file)
@@ -740,8 +740,9 @@ errcode_t ext2fs_get_next_inode(ext2_inode_scan scan, ext2_ino_t *ino,
 /*
  * Functions to read and write a single inode.
  */
-errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino,
-                                struct ext2_inode * inode, int bufsize)
+errcode_t ext2fs_read_inode2(ext2_filsys fs, ext2_ino_t ino,
+                            struct ext2_inode * inode, int bufsize,
+                            int flags)
 {
        blk64_t         block_nr;
        dgrp_t          group;
@@ -850,21 +851,29 @@ errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino,
        }
        memcpy(inode, iptr, (bufsize > length) ? length : bufsize);
 
-       if (!(fs->flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) && fail_csum)
+       if (!(fs->flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) &&
+           !(flags & READ_INODE_NOCSUM) && fail_csum)
                return EXT2_ET_INODE_CSUM_INVALID;
 
        return 0;
 }
 
+errcode_t ext2fs_read_inode_full(ext2_filsys fs, ext2_ino_t ino,
+                                struct ext2_inode * inode, int bufsize)
+{
+       return ext2fs_read_inode2(fs, ino, inode, bufsize, 0);
+}
+
 errcode_t ext2fs_read_inode(ext2_filsys fs, ext2_ino_t ino,
                            struct ext2_inode * inode)
 {
-       return ext2fs_read_inode_full(fs, ino, inode,
-                                       sizeof(struct ext2_inode));
+       return ext2fs_read_inode2(fs, ino, inode,
+                                 sizeof(struct ext2_inode), 0);
 }
 
-errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
-                                 struct ext2_inode * inode, int bufsize)
+errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino,
+                             struct ext2_inode * inode, int bufsize,
+                             int flags)
 {
        blk64_t block_nr;
        dgrp_t group;
@@ -895,12 +904,9 @@ errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
 
        if (bufsize < length) {
                int old_flags = fs->flags;
-               fs->flags |= EXT2_FLAG_IGNORE_CSUM_ERRORS;
-               retval = ext2fs_read_inode_full(fs, ino,
-                                               (struct ext2_inode *)w_inode,
-                                               length);
-               fs->flags = (old_flags & EXT2_FLAG_IGNORE_CSUM_ERRORS) |
-                           (fs->flags & ~EXT2_FLAG_IGNORE_CSUM_ERRORS);
+               retval = ext2fs_read_inode2(fs, ino,
+                                           (struct ext2_inode *)w_inode,
+                                           length, READ_INODE_NOCSUM);
                if (retval)
                        goto errout;
        }
@@ -930,9 +936,11 @@ errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
        ext2fs_swap_inode_full(fs, w_inode, w_inode, 1, length);
 #endif
 
-       retval = ext2fs_inode_csum_set(fs, ino, w_inode);
-       if (retval)
-               goto errout;
+       if ((flags & WRITE_INODE_NOCSUM) == 0) {
+               retval = ext2fs_inode_csum_set(fs, ino, w_inode);
+               if (retval)
+                       goto errout;
+       }
 
        group = (ino - 1) / EXT2_INODES_PER_GROUP(fs->super);
        offset = ((ino - 1) % EXT2_INODES_PER_GROUP(fs->super)) *
@@ -989,11 +997,17 @@ errout:
        return retval;
 }
 
+errcode_t ext2fs_write_inode_full(ext2_filsys fs, ext2_ino_t ino,
+                                 struct ext2_inode * inode, int bufsize)
+{
+       return ext2fs_write_inode2(fs, ino, inode, bufsize, 0);
+}
+
 errcode_t ext2fs_write_inode(ext2_filsys fs, ext2_ino_t ino,
                             struct ext2_inode *inode)
 {
-       return ext2fs_write_inode_full(fs, ino, inode,
-                                      sizeof(struct ext2_inode));
+       return ext2fs_write_inode2(fs, ino, inode,
+                                  sizeof(struct ext2_inode), 0);
 }
 
 /*
diff --git a/lib/ext2fs/nls.h b/lib/ext2fs/nls.h
new file mode 100644 (file)
index 0000000..67e6a41
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * nls.h - Header for encoding support functions
+ *
+ * Copyright (C) 2017 Collabora Ltd.
+ *
+ *
+ * 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 EXT2FS_NLS_H
+#define EXT2FS_NLS_H
+
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "ext2_fs.h"
+
+struct nls_table;
+
+#define ARRAY_SIZE(array)                      \
+        (sizeof(array) / sizeof(array[0]))
+
+struct nls_ops {
+       int (*normalize)(const struct nls_table *charset,
+                        const unsigned char *str, size_t len,
+                        unsigned char *dest, size_t dlen);
+
+       int (*casefold)(const struct nls_table *charset,
+                       const unsigned char *str, size_t len,
+                       unsigned char *dest, size_t dlen);
+};
+
+struct nls_table {
+       int version;
+       const struct nls_ops *ops;
+};
+
+extern const struct nls_table nls_ascii;
+extern const struct nls_table nls_utf8_11_0;
+
+static const struct {
+       int encoding_magic;
+       const struct nls_table *tbl;
+} nls_map[] = {
+       { EXT4_ENC_ASCII, &nls_ascii },
+       { EXT4_ENC_UTF8_11_0, &nls_utf8_11_0 },
+};
+
+static const struct nls_table *nls_load_table(int encoding)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(nls_map); i++) {
+               if (encoding == nls_map[i].encoding_magic)
+                       return nls_map[i].tbl;
+       }
+       return NULL;
+}
+
+#endif
diff --git a/lib/ext2fs/nls_ascii.c b/lib/ext2fs/nls_ascii.c
new file mode 100644 (file)
index 0000000..5d513df
--- /dev/null
@@ -0,0 +1,68 @@
+#include "nls.h"
+
+#include <errno.h>
+#include <string.h>
+
+
+static unsigned char charset_tolower(const struct nls_table *table,
+                                    unsigned int c)
+{
+       if (c >= 'A' && c <= 'Z')
+               return (c | 0x20);
+       return c;
+}
+
+static unsigned char charset_toupper(const struct nls_table *table,
+                                    unsigned int c)
+{
+       if (c >= 'a' && c <= 'z')
+               return (c & ~0x20);
+       return c;
+}
+
+static int ascii_casefold(const struct nls_table *table,
+                         const unsigned char *str, size_t len,
+                         unsigned char *dest, size_t dlen)
+{
+       int i;
+
+       if (dlen < len)
+               return -ENAMETOOLONG;
+
+       for (i = 0; i < len; i++) {
+               if (str[i] & 0x80)
+                       return -EINVAL;
+
+               dest[i] = charset_toupper(table, str[i]);
+       }
+
+       return len;
+}
+
+static int ascii_normalize(const struct nls_table *table,
+                          const unsigned char *str, size_t len,
+                          unsigned char *dest, size_t dlen)
+{
+       int i;
+
+       if (dlen < len)
+               return -ENAMETOOLONG;
+
+       for (i = 0; i < len; i++) {
+               if (str[i] & 0x80)
+                       return -EINVAL;
+
+               dest[i] = str[i];
+       }
+
+       return len;
+}
+
+const static struct nls_ops ascii_ops = {
+       .casefold = ascii_casefold,
+       .normalize = ascii_normalize,
+};
+
+const struct nls_table nls_ascii = {
+       .ops = &ascii_ops,
+};
diff --git a/lib/ext2fs/nls_utf8-norm.c b/lib/ext2fs/nls_utf8-norm.c
new file mode 100644 (file)
index 0000000..e2bed8c
--- /dev/null
@@ -0,0 +1,793 @@
+/*
+ * Copyright (c) 2014 SGI.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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.
+ *
+ */
+
+/*
+ * This code is adapted from the Linux Kernel.  We have a
+ * userspace version here such that the hashes will match that
+ * implementation.
+ */
+
+#include "utf8n.h"
+
+struct utf8data {
+       unsigned int maxage;
+       unsigned int offset;
+};
+
+#define __INCLUDED_FROM_UTF8NORM_C__
+#include "utf8data.h"
+#undef __INCLUDED_FROM_UTF8NORM_C__
+
+#define ARRAY_SIZE(array)                      \
+        (sizeof(array) / sizeof(array[0]))
+
+int utf8version_is_supported(uint8_t maj, uint8_t min, uint8_t rev)
+{
+       int i = ARRAY_SIZE(utf8agetab) - 1;
+       unsigned int sb_utf8version = UNICODE_AGE(maj, min, rev);
+
+       while (i >= 0 && utf8agetab[i] != 0) {
+               if (sb_utf8version == utf8agetab[i])
+                       return 1;
+               i--;
+       }
+       return 0;
+}
+
+int utf8version_latest()
+{
+       return utf8vers;
+}
+
+/*
+ * UTF-8 valid ranges.
+ *
+ * The UTF-8 encoding spreads the bits of a 32bit word over several
+ * bytes. This table gives the ranges that can be held and how they'd
+ * be represented.
+ *
+ * 0x00000000 0x0000007F: 0xxxxxxx
+ * 0x00000000 0x000007FF: 110xxxxx 10xxxxxx
+ * 0x00000000 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ *
+ * There is an additional requirement on UTF-8, in that only the
+ * shortest representation of a 32bit value is to be used.  A decoder
+ * must not decode sequences that do not satisfy this requirement.
+ * Thus the allowed ranges have a lower bound.
+ *
+ * 0x00000000 0x0000007F: 0xxxxxxx
+ * 0x00000080 0x000007FF: 110xxxxx 10xxxxxx
+ * 0x00000800 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * 0x00010000 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00200000 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x04000000 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ *
+ * Actual unicode characters are limited to the range 0x0 - 0x10FFFF,
+ * 17 planes of 65536 values.  This limits the sequences actually seen
+ * even more, to just the following.
+ *
+ *          0 -     0x7F: 0                   - 0x7F
+ *       0x80 -    0x7FF: 0xC2 0x80           - 0xDF 0xBF
+ *      0x800 -   0xFFFF: 0xE0 0xA0 0x80      - 0xEF 0xBF 0xBF
+ *    0x10000 - 0x10FFFF: 0xF0 0x90 0x80 0x80 - 0xF4 0x8F 0xBF 0xBF
+ *
+ * Within those ranges the surrogates 0xD800 - 0xDFFF are not allowed.
+ *
+ * Note that the longest sequence seen with valid usage is 4 bytes,
+ * the same a single UTF-32 character.  This makes the UTF-8
+ * representation of Unicode strictly smaller than UTF-32.
+ *
+ * The shortest sequence requirement was introduced by:
+ *    Corrigendum #1: UTF-8 Shortest Form
+ * It can be found here:
+ *    http://www.unicode.org/versions/corrigendum1.html
+ *
+ */
+
+/*
+ * Return the number of bytes used by the current UTF-8 sequence.
+ * Assumes the input points to the first byte of a valid UTF-8
+ * sequence.
+ */
+static inline int utf8clen(const char *s)
+{
+       unsigned char c = *s;
+
+       return 1 + (c >= 0xC0) + (c >= 0xE0) + (c >= 0xF0);
+}
+
+/*
+ * Decode a 3-byte UTF-8 sequence.
+ */
+static unsigned int
+utf8decode3(const char *str)
+{
+       unsigned int            uc;
+
+       uc = *str++ & 0x0F;
+       uc <<= 6;
+       uc |= *str++ & 0x3F;
+       uc <<= 6;
+       uc |= *str++ & 0x3F;
+
+       return uc;
+}
+
+/*
+ * Encode a 3-byte UTF-8 sequence.
+ */
+static int
+utf8encode3(char *str, unsigned int val)
+{
+       str[2] = (val & 0x3F) | 0x80;
+       val >>= 6;
+       str[1] = (val & 0x3F) | 0x80;
+       val >>= 6;
+       str[0] = val | 0xE0;
+
+       return 3;
+}
+
+/*
+ * utf8trie_t
+ *
+ * A compact binary tree, used to decode UTF-8 characters.
+ *
+ * Internal nodes are one byte for the node itself, and up to three
+ * bytes for an offset into the tree.  The first byte contains the
+ * following information:
+ *  NEXTBYTE  - flag        - advance to next byte if set
+ *  BITNUM    - 3 bit field - the bit number to tested
+ *  OFFLEN    - 2 bit field - number of bytes in the offset
+ * if offlen == 0 (non-branching node)
+ *  RIGHTPATH - 1 bit field - set if the following node is for the
+ *                            right-hand path (tested bit is set)
+ *  TRIENODE  - 1 bit field - set if the following node is an internal
+ *                            node, otherwise it is a leaf node
+ * if offlen != 0 (branching node)
+ *  LEFTNODE  - 1 bit field - set if the left-hand node is internal
+ *  RIGHTNODE - 1 bit field - set if the right-hand node is internal
+ *
+ * Due to the way utf8 works, there cannot be branching nodes with
+ * NEXTBYTE set, and moreover those nodes always have a righthand
+ * descendant.
+ */
+typedef const unsigned char utf8trie_t;
+#define BITNUM         0x07
+#define NEXTBYTE       0x08
+#define OFFLEN         0x30
+#define OFFLEN_SHIFT   4
+#define RIGHTPATH      0x40
+#define TRIENODE       0x80
+#define RIGHTNODE      0x40
+#define LEFTNODE       0x80
+
+/*
+ * utf8leaf_t
+ *
+ * The leaves of the trie are embedded in the trie, and so the same
+ * underlying datatype: unsigned char.
+ *
+ * leaf[0]: The unicode version, stored as a generation number that is
+ *          an index into utf8agetab[].  With this we can filter code
+ *          points based on the unicode version in which they were
+ *          defined.  The CCC of a non-defined code point is 0.
+ * leaf[1]: Canonical Combining Class. During normalization, we need
+ *          to do a stable sort into ascending order of all characters
+ *          with a non-zero CCC that occur between two characters with
+ *          a CCC of 0, or at the begin or end of a string.
+ *          The unicode standard guarantees that all CCC values are
+ *          between 0 and 254 inclusive, which leaves 255 available as
+ *          a special value.
+ *          Code points with CCC 0 are known as stoppers.
+ * leaf[2]: Decomposition. If leaf[1] == 255, then leaf[2] is the
+ *          start of a NUL-terminated string that is the decomposition
+ *          of the character.
+ *          The CCC of a decomposable character is the same as the CCC
+ *          of the first character of its decomposition.
+ *          Some characters decompose as the empty string: these are
+ *          characters with the Default_Ignorable_Code_Point property.
+ *          These do affect normalization, as they all have CCC 0.
+ *
+ * The decompositions in the trie have been fully expanded, with the
+ * exception of Hangul syllables, which are decomposed algorithmically.
+ *
+ * Casefolding, if applicable, is also done using decompositions.
+ *
+ * The trie is constructed in such a way that leaves exist for all
+ * UTF-8 sequences that match the criteria from the "UTF-8 valid
+ * ranges" comment above, and only for those sequences.  Therefore a
+ * lookup in the trie can be used to validate the UTF-8 input.
+ */
+typedef const unsigned char utf8leaf_t;
+
+#define LEAF_GEN(LEAF) ((LEAF)[0])
+#define LEAF_CCC(LEAF) ((LEAF)[1])
+#define LEAF_STR(LEAF) ((const char *)((LEAF) + 2))
+
+#define MINCCC         (0)
+#define MAXCCC         (254)
+#define STOPPER                (0)
+#define        DECOMPOSE       (255)
+
+/* Marker for hangul syllable decomposition. */
+#define HANGUL         ((char)(255))
+/* Size of the synthesized leaf used for Hangul syllable decomposition. */
+#define UTF8HANGULLEAF (12)
+
+/*
+ * Hangul decomposition (algorithm from Section 3.12 of Unicode 6.3.0)
+ *
+ * AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+ * D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+ *
+ * SBase = 0xAC00
+ * LBase = 0x1100
+ * VBase = 0x1161
+ * TBase = 0x11A7
+ * LCount = 19
+ * VCount = 21
+ * TCount = 28
+ * NCount = 588 (VCount * TCount)
+ * SCount = 11172 (LCount * NCount)
+ *
+ * Decomposition:
+ *   SIndex = s - SBase
+ *
+ * LV (Canonical/Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *
+ * LVT (Canonical)
+ *   LVIndex = (SIndex / TCount) * TCount
+ *   TIndex = (Sindex % TCount)
+ *   LVPart = SBase + LVIndex
+ *   TPart = TBase + TIndex
+ *
+ * LVT (Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   TIndex = (Sindex % TCount)
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *   if (TIndex == 0) {
+ *          d = <LPart, VPart>
+ *   } else {
+ *          TPart = TBase + TIndex
+ *          d = <LPart, TPart, VPart>
+ *   }
+ */
+
+/* Constants */
+#define SB     (0xAC00)
+#define LB     (0x1100)
+#define VB     (0x1161)
+#define TB     (0x11A7)
+#define LC     (19)
+#define VC     (21)
+#define TC     (28)
+#define NC     (VC * TC)
+#define SC     (LC * NC)
+
+/* Algorithmic decomposition of hangul syllable. */
+static utf8leaf_t *
+utf8hangul(const char *str, unsigned char *hangul)
+{
+       unsigned int    si;
+       unsigned int    li;
+       unsigned int    vi;
+       unsigned int    ti;
+       unsigned char   *h;
+
+       /* Calculate the SI, LI, VI, and TI values. */
+       si = utf8decode3(str) - SB;
+       li = si / NC;
+       vi = (si % NC) / TC;
+       ti = si % TC;
+
+       /* Fill in base of leaf. */
+       h = hangul;
+       LEAF_GEN(h) = 2;
+       LEAF_CCC(h) = DECOMPOSE;
+       h += 2;
+
+       /* Add LPart, a 3-byte UTF-8 sequence. */
+       h += utf8encode3((char *)h, li + LB);
+
+       /* Add VPart, a 3-byte UTF-8 sequence. */
+       h += utf8encode3((char *)h, vi + VB);
+
+       /* Add TPart if required, also a 3-byte UTF-8 sequence. */
+       if (ti)
+               h += utf8encode3((char *)h, ti + TB);
+
+       /* Terminate string. */
+       h[0] = '\0';
+
+       return hangul;
+}
+
+/*
+ * Use trie to scan s, touching at most len bytes.
+ * Returns the leaf if one exists, NULL otherwise.
+ *
+ * A non-NULL return guarantees that the UTF-8 sequence starting at s
+ * is well-formed and corresponds to a known unicode code point.  The
+ * shorthand for this will be "is valid UTF-8 unicode".
+ */
+static utf8leaf_t *utf8nlookup(const struct utf8data *data,
+                              unsigned char *hangul, const char *s, size_t len)
+{
+       utf8trie_t      *trie = utf8data + data->offset;
+       int             offlen;
+       int             offset;
+       int             mask;
+       int             node;
+
+       if (!data)
+               return NULL;
+       if (len == 0)
+               return NULL;
+       node = 1;
+       while (node) {
+               offlen = (*trie & OFFLEN) >> OFFLEN_SHIFT;
+               if (*trie & NEXTBYTE) {
+                       if (--len == 0)
+                               return NULL;
+                       s++;
+               }
+               mask = 1 << (*trie & BITNUM);
+               if (*s & mask) {
+                       /* Right leg */
+                       if (offlen) {
+                               /* Right node at offset of trie */
+                               node = (*trie & RIGHTNODE);
+                               offset = trie[offlen];
+                               while (--offlen) {
+                                       offset <<= 8;
+                                       offset |= trie[offlen];
+                               }
+                               trie += offset;
+                       } else if (*trie & RIGHTPATH) {
+                               /* Right node after this node */
+                               node = (*trie & TRIENODE);
+                               trie++;
+                       } else {
+                               /* No right node. */
+                               return NULL;
+                       }
+               } else {
+                       /* Left leg */
+                       if (offlen) {
+                               /* Left node after this node. */
+                               node = (*trie & LEFTNODE);
+                               trie += offlen + 1;
+                       } else if (*trie & RIGHTPATH) {
+                               /* No left node. */
+                               return NULL;
+                       } else {
+                               /* Left node after this node */
+                               node = (*trie & TRIENODE);
+                               trie++;
+                       }
+               }
+       }
+       /*
+        * Hangul decomposition is done algorithmically. These are the
+        * codepoints >= 0xAC00 and <= 0xD7A3. Their UTF-8 encoding is
+        * always 3 bytes long, so s has been advanced twice, and the
+        * start of the sequence is at s-2.
+        */
+       if (LEAF_CCC(trie) == DECOMPOSE && LEAF_STR(trie)[0] == HANGUL)
+               trie = utf8hangul(s - 2, hangul);
+       return trie;
+}
+
+/*
+ * Use trie to scan s.
+ * Returns the leaf if one exists, NULL otherwise.
+ *
+ * Forwards to utf8nlookup().
+ */
+static utf8leaf_t *utf8lookup(const struct utf8data *data,
+                             unsigned char *hangul, const char *s)
+{
+       return utf8nlookup(data, hangul, s, (size_t)-1);
+}
+
+/*
+ * Maximum age of any character in s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ * Return 0 if only non-assigned code points are used.
+ */
+int utf8agemax(const struct utf8data *data, const char *s)
+{
+       utf8leaf_t      *leaf;
+       int             age = 0;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+
+       while (*s) {
+               leaf = utf8lookup(data, hangul, s);
+               if (!leaf)
+                       return -1;
+
+               leaf_age = utf8agetab[LEAF_GEN(leaf)];
+               if (leaf_age <= data->maxage && leaf_age > age)
+                       age = leaf_age;
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Minimum age of any character in s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ * Return 0 if non-assigned code points are used.
+ */
+int utf8agemin(const struct utf8data *data, const char *s)
+{
+       utf8leaf_t      *leaf;
+       int             age;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+       age = data->maxage;
+       while (*s) {
+               leaf = utf8lookup(data, hangul, s);
+               if (!leaf)
+                       return -1;
+               leaf_age = utf8agetab[LEAF_GEN(leaf)];
+               if (leaf_age <= data->maxage && leaf_age < age)
+                       age = leaf_age;
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Maximum age of any character in s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+int utf8nagemax(const struct utf8data *data, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       int             age = 0;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+
+       while (len && *s) {
+               leaf = utf8nlookup(data, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               leaf_age = utf8agetab[LEAF_GEN(leaf)];
+               if (leaf_age <= data->maxage && leaf_age > age)
+                       age = leaf_age;
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Maximum age of any character in s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+int utf8nagemin(const struct utf8data *data, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       int             leaf_age;
+       int             age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+       age = data->maxage;
+       while (len && *s) {
+               leaf = utf8nlookup(data, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               leaf_age = utf8agetab[LEAF_GEN(leaf)];
+               if (leaf_age <= data->maxage && leaf_age < age)
+                       age = leaf_age;
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Length of the normalization of s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ *
+ * A string of Default_Ignorable_Code_Point has length 0.
+ */
+ssize_t utf8len(const struct utf8data *data, const char *s)
+{
+       utf8leaf_t      *leaf;
+       size_t          ret = 0;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+       while (*s) {
+               leaf = utf8lookup(data, hangul, s);
+               if (!leaf)
+                       return -1;
+               if (utf8agetab[LEAF_GEN(leaf)] > data->maxage)
+                       ret += utf8clen(s);
+               else if (LEAF_CCC(leaf) == DECOMPOSE)
+                       ret += strlen(LEAF_STR(leaf));
+               else
+                       ret += utf8clen(s);
+               s += utf8clen(s);
+       }
+       return ret;
+}
+
+/*
+ * Length of the normalization of s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+ssize_t utf8nlen(const struct utf8data *data, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       size_t          ret = 0;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!data)
+               return -1;
+       while (len && *s) {
+               leaf = utf8nlookup(data, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               if (utf8agetab[LEAF_GEN(leaf)] > data->maxage)
+                       ret += utf8clen(s);
+               else if (LEAF_CCC(leaf) == DECOMPOSE)
+                       ret += strlen(LEAF_STR(leaf));
+               else
+                       ret += utf8clen(s);
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return ret;
+}
+
+/*
+ * Set up an utf8cursor for use by utf8byte().
+ *
+ *   u8c    : pointer to cursor.
+ *   data   : const struct utf8data to use for normalization.
+ *   s      : string.
+ *   len    : length of s.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+int utf8ncursor(struct utf8cursor *u8c, const struct utf8data *data,
+               const char *s, size_t len)
+{
+       if (!data)
+               return -1;
+       if (!s)
+               return -1;
+       u8c->data = data;
+       u8c->s = s;
+       u8c->p = NULL;
+       u8c->ss = NULL;
+       u8c->sp = NULL;
+       u8c->len = len;
+       u8c->slen = 0;
+       u8c->ccc = STOPPER;
+       u8c->nccc = STOPPER;
+       /* Check we didn't clobber the maximum length. */
+       if (u8c->len != len)
+               return -1;
+       /* The first byte of s may not be an utf8 continuation. */
+       if (len > 0 && (*s & 0xC0) == 0x80)
+               return -1;
+       return 0;
+}
+
+/*
+ * Set up an utf8cursor for use by utf8byte().
+ *
+ *   u8c    : pointer to cursor.
+ *   data   : const struct utf8data to use for normalization.
+ *   s      : NUL-terminated string.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+int utf8cursor(struct utf8cursor *u8c, const struct utf8data *data,
+              const char *s)
+{
+       return utf8ncursor(u8c, data, s, (unsigned int)-1);
+}
+
+/*
+ * Get one byte from the normalized form of the string described by u8c.
+ *
+ * Returns the byte cast to an unsigned char on succes, and -1 on failure.
+ *
+ * The cursor keeps track of the location in the string in u8c->s.
+ * When a character is decomposed, the current location is stored in
+ * u8c->p, and u8c->s is set to the start of the decomposition. Note
+ * that bytes from a decomposition do not count against u8c->len.
+ *
+ * Characters are emitted if they match the current CCC in u8c->ccc.
+ * Hitting end-of-string while u8c->ccc == STOPPER means we're done,
+ * and the function returns 0 in that case.
+ *
+ * Sorting by CCC is done by repeatedly scanning the string.  The
+ * values of u8c->s and u8c->p are stored in u8c->ss and u8c->sp at
+ * the start of the scan.  The first pass finds the lowest CCC to be
+ * emitted and stores it in u8c->nccc, the second pass emits the
+ * characters with this CCC and finds the next lowest CCC. This limits
+ * the number of passes to 1 + the number of different CCCs in the
+ * sequence being scanned.
+ *
+ * Therefore:
+ *  u8c->p  != NULL -> a decomposition is being scanned.
+ *  u8c->ss != NULL -> this is a repeating scan.
+ *  u8c->ccc == -1   -> this is the first scan of a repeating scan.
+ */
+int utf8byte(struct utf8cursor *u8c)
+{
+       utf8leaf_t *leaf;
+       int ccc;
+
+       for (;;) {
+               /* Check for the end of a decomposed character. */
+               if (u8c->p && *u8c->s == '\0') {
+                       u8c->s = u8c->p;
+                       u8c->p = NULL;
+               }
+
+               /* Check for end-of-string. */
+               if (!u8c->p && (u8c->len == 0 || *u8c->s == '\0')) {
+                       /* There is no next byte. */
+                       if (u8c->ccc == STOPPER)
+                               return 0;
+                       /* End-of-string during a scan counts as a stopper. */
+                       ccc = STOPPER;
+                       goto ccc_mismatch;
+               } else if ((*u8c->s & 0xC0) == 0x80) {
+                       /* This is a continuation of the current character. */
+                       if (!u8c->p)
+                               u8c->len--;
+                       return (unsigned char)*u8c->s++;
+               }
+
+               /* Look up the data for the current character. */
+               if (u8c->p) {
+                       leaf = utf8lookup(u8c->data, u8c->hangul, u8c->s);
+               } else {
+                       leaf = utf8nlookup(u8c->data, u8c->hangul,
+                                          u8c->s, u8c->len);
+               }
+
+               /* No leaf found implies that the input is a binary blob. */
+               if (!leaf)
+                       return -1;
+
+               ccc = LEAF_CCC(leaf);
+               /* Characters that are too new have CCC 0. */
+               if (utf8agetab[LEAF_GEN(leaf)] > u8c->data->maxage) {
+                       ccc = STOPPER;
+               } else if (ccc == DECOMPOSE) {
+                       u8c->len -= utf8clen(u8c->s);
+                       u8c->p = u8c->s + utf8clen(u8c->s);
+                       u8c->s = LEAF_STR(leaf);
+                       /* Empty decomposition implies CCC 0. */
+                       if (*u8c->s == '\0') {
+                               if (u8c->ccc == STOPPER)
+                                       continue;
+                               ccc = STOPPER;
+                               goto ccc_mismatch;
+                       }
+
+                       leaf = utf8lookup(u8c->data, u8c->hangul, u8c->s);
+                       ccc = LEAF_CCC(leaf);
+               }
+
+               /*
+                * If this is not a stopper, then see if it updates
+                * the next canonical class to be emitted.
+                */
+               if (ccc != STOPPER && u8c->ccc < ccc && ccc < u8c->nccc)
+                       u8c->nccc = ccc;
+
+               /*
+                * Return the current byte if this is the current
+                * combining class.
+                */
+               if (ccc == u8c->ccc) {
+                       if (!u8c->p)
+                               u8c->len--;
+                       return (unsigned char)*u8c->s++;
+               }
+
+               /* Current combining class mismatch. */
+ccc_mismatch:
+               if (u8c->nccc == STOPPER) {
+                       /*
+                        * Scan forward for the first canonical class
+                        * to be emitted.  Save the position from
+                        * which to restart.
+                        */
+                       u8c->ccc = MINCCC - 1;
+                       u8c->nccc = ccc;
+                       u8c->sp = u8c->p;
+                       u8c->ss = u8c->s;
+                       u8c->slen = u8c->len;
+                       if (!u8c->p)
+                               u8c->len -= utf8clen(u8c->s);
+                       u8c->s += utf8clen(u8c->s);
+               } else if (ccc != STOPPER) {
+                       /* Not a stopper, and not the ccc we're emitting. */
+                       if (!u8c->p)
+                               u8c->len -= utf8clen(u8c->s);
+                       u8c->s += utf8clen(u8c->s);
+               } else if (u8c->nccc != MAXCCC + 1) {
+                       /* At a stopper, restart for next ccc. */
+                       u8c->ccc = u8c->nccc;
+                       u8c->nccc = MAXCCC + 1;
+                       u8c->s = u8c->ss;
+                       u8c->p = u8c->sp;
+                       u8c->len = u8c->slen;
+               } else {
+                       /* All done, proceed from here. */
+                       u8c->ccc = STOPPER;
+                       u8c->nccc = STOPPER;
+                       u8c->sp = NULL;
+                       u8c->ss = NULL;
+                       u8c->slen = 0;
+               }
+       }
+}
+
+const struct utf8data *utf8nfkdi(unsigned int maxage)
+{
+       int i = ARRAY_SIZE(utf8nfkdidata) - 1;
+
+       while (maxage < utf8nfkdidata[i].maxage)
+               i--;
+       if (maxage > utf8nfkdidata[i].maxage)
+               return NULL;
+       return &utf8nfkdidata[i];
+}
+
+const struct utf8data *utf8nfkdicf(unsigned int maxage)
+{
+       int i = ARRAY_SIZE(utf8nfkdicfdata) - 1;
+
+       while (maxage < utf8nfkdicfdata[i].maxage)
+               i--;
+       if (maxage > utf8nfkdicfdata[i].maxage)
+               return NULL;
+       return &utf8nfkdicfdata[i];
+}
diff --git a/lib/ext2fs/nls_utf8.c b/lib/ext2fs/nls_utf8.c
new file mode 100644 (file)
index 0000000..29682a2
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2018 Collabora Ltd.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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.
+ *
+ */
+
+/*
+ * This code is adapted from the Linux Kernel.  We have a
+ * userspace version here such that the hashes will match that
+ * implementation.
+ */
+
+#include "nls.h"
+#include "utf8n.h"
+
+#include <limits.h>
+#include <errno.h>
+
+static int utf8_casefold(const struct nls_table *table,
+                         const unsigned char *str, size_t len,
+                         unsigned char *dest, size_t dlen)
+{
+       const struct utf8data *data = utf8nfkdicf(table->version);
+       struct utf8cursor cur;
+       size_t nlen = 0;
+
+       if (utf8ncursor(&cur, data, str, len) < 0)
+               goto invalid_seq;
+
+       for (nlen = 0; nlen < dlen; nlen++) {
+               dest[nlen] = utf8byte(&cur);
+               if (!dest[nlen])
+                       return nlen;
+               if (dest[nlen] == -1)
+                       break;
+       }
+
+       return -ENAMETOOLONG;
+
+invalid_seq:
+       if (dlen < len)
+               return -ENAMETOOLONG;
+
+       /* Signal invalid sequence */
+       return -EINVAL;
+}
+
+static int utf8_normalize(const struct nls_table *table,
+                         const unsigned char *str, size_t len,
+                         unsigned char *dest, size_t dlen)
+{
+       const struct utf8data *data = utf8nfkdi(table->version);
+       struct utf8cursor cur;
+       ssize_t nlen = 0;
+
+       if (utf8ncursor(&cur, data, str, len) < 0)
+               goto invalid_seq;
+
+       for (nlen = 0; nlen < dlen; nlen++) {
+               dest[nlen] = utf8byte(&cur);
+               if (!dest[nlen])
+                       return nlen;
+               if (dest[nlen] == -1)
+                       break;
+       }
+
+       return -ENAMETOOLONG;
+
+invalid_seq:
+       if (dlen < len)
+               return -ENAMETOOLONG;
+
+       /* Signal invalid sequence */
+       return -EINVAL;
+}
+
+const static struct nls_ops utf8_ops = {
+       .casefold = utf8_casefold,
+       .normalize = utf8_normalize,
+
+};
+
+const struct nls_table nls_utf8_11_0 = {
+       .ops = &utf8_ops,
+       .version = UNICODE_AGE(11, 0, 0),
+};
index b168a2f202081cf437c8eb927da27679513f4051..a1560045d073e8f9be70f5faba91b3b34cc6f70f 100644 (file)
@@ -129,8 +129,11 @@ void ext2fs_swap_super(struct ext2_super_block * sb)
        sb->s_lpf_ino = ext2fs_swab32(sb->s_lpf_ino);
        sb->s_prj_quota_inum = ext2fs_swab32(sb->s_prj_quota_inum);
        sb->s_checksum_seed = ext2fs_swab32(sb->s_checksum_seed);
+       /* s_*_time_hi are __u8 and does not need swabbing */
+       sb->s_encoding = ext2fs_swab16(sb->s_encoding);
+       sb->s_encoding_flags = ext2fs_swab16(sb->s_encoding_flags);
        /* catch when new fields are used from s_reserved */
-       EXT2FS_BUILD_BUG_ON(sizeof(sb->s_reserved) != 98 * sizeof(__le32));
+       EXT2FS_BUILD_BUG_ON(sizeof(sb->s_reserved) != 95 * sizeof(__le32));
        sb->s_checksum = ext2fs_swab32(sb->s_checksum);
 }
 
index 574fb7a7fae39018235c6660aac30cf09901fcfa..f6196b315fc389ca49f5dc1608ca37453bb81ba9 100644 (file)
@@ -190,7 +190,8 @@ errout:
        ext2fs_close_free(&test_fs);
 }
 
-void setup_cmd(int argc, char **argv)
+void setup_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        int             c, err;
        unsigned int    blocks = 128;
@@ -234,7 +235,8 @@ void setup_cmd(int argc, char **argv)
        setup_filesystem(argv[0], blocks, inodes, type, flags);
 }
 
-void close_cmd(int argc, char **argv)
+void close_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
@@ -269,7 +271,9 @@ void dump_bitmap(ext2fs_generic_bitmap bmap, unsigned int start, unsigned num)
        free(buf);
 }
 
-void dump_inode_bitmap_cmd(int argc, char **argv)
+void dump_inode_bitmap_cmd(int argc, char **argv,
+                          int sci_idx EXT2FS_ATTR((unused)),
+                          void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
@@ -278,7 +282,9 @@ void dump_inode_bitmap_cmd(int argc, char **argv)
        dump_bitmap(test_fs->inode_map, 1, test_fs->super->s_inodes_count);
 }
        
-void dump_block_bitmap_cmd(int argc, char **argv)
+void dump_block_bitmap_cmd(int argc, char **argv,
+                          int sci_idx EXT2FS_ATTR((unused)),
+                          void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
@@ -288,7 +294,8 @@ void dump_block_bitmap_cmd(int argc, char **argv)
                    test_fs->super->s_blocks_count);
 }
        
-void do_setb(int argc, char *argv[])
+void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
        int err;
@@ -326,7 +333,8 @@ void do_setb(int argc, char *argv[])
                        test_result, op_result);
 }
 
-void do_clearb(int argc, char *argv[])
+void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
        int err;
@@ -364,7 +372,8 @@ void do_clearb(int argc, char *argv[])
                        test_result, op_result);
 }
 
-void do_testb(int argc, char *argv[])
+void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int block, num;
        int err;
@@ -399,7 +408,8 @@ void do_testb(int argc, char *argv[])
        printf("Block %u is %s\n", block, test_result ? "set" : "clear");
 }
 
-void do_ffzb(int argc, char *argv[])
+void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
        int err;
@@ -432,7 +442,8 @@ void do_ffzb(int argc, char *argv[])
        printf("First unmarked block is %llu\n", out);
 }
 
-void do_ffsb(int argc, char *argv[])
+void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
        int err;
@@ -466,7 +477,8 @@ void do_ffsb(int argc, char *argv[])
 }
 
 
-void do_zerob(int argc, char *argv[])
+void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
@@ -475,7 +487,8 @@ void do_zerob(int argc, char *argv[])
        ext2fs_clear_block_bitmap(test_fs->block_map);
 }
 
-void do_seti(int argc, char *argv[])
+void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
        int err;
@@ -504,7 +517,8 @@ void do_seti(int argc, char *argv[])
        }
 }
 
-void do_cleari(int argc, char *argv[])
+void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+              void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
        int err;
@@ -533,7 +547,8 @@ void do_cleari(int argc, char *argv[])
        }
 }
 
-void do_testi(int argc, char *argv[])
+void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int inode;
        int err;
@@ -555,7 +570,8 @@ void do_testi(int argc, char *argv[])
        printf("Inode %u is %s\n", inode, test_result ? "set" : "clear");
 }
 
-void do_ffzi(int argc, char *argv[])
+void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
        int err;
@@ -588,7 +604,8 @@ void do_ffzi(int argc, char *argv[])
        printf("First unmarked inode is %u\n", out);
 }
 
-void do_ffsi(int argc, char *argv[])
+void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+            void *infop EXT2FS_ATTR((unused)))
 {
        unsigned int start, end;
        int err;
@@ -621,7 +638,8 @@ void do_ffsi(int argc, char *argv[])
        printf("First marked inode is %u\n", out);
 }
 
-void do_zeroi(int argc, char *argv[])
+void do_zeroi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+             void *infop EXT2FS_ATTR((unused)))
 {
        if (check_fs_open(argv[0]))
                return;
index a90bff220b592d3f2e5753f998e1cb053b7bdae3..3e7497cd8a52543bc4e1b86075cacaa1f944c803 100644 (file)
@@ -43,7 +43,8 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
 }
 
 
-void do_block_iterate(int argc, char **argv)
+void do_block_iterate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "block_iterate <file> <flags";
        ext2_ino_t      ino;
index 0adac41106156b31d57e9adbb9249ab080458516..a932685d626a3dba2c1cba12f5a494e5f09d0ede 100644 (file)
@@ -142,7 +142,16 @@ int main(int argc, char **argv)
        check_field(s_lpf_ino, 4);
        check_field(s_prj_quota_inum, 4);
        check_field(s_checksum_seed, 4);
-       check_field(s_reserved, 98 * 4);
+       check_field(s_wtime_hi, 1);
+       check_field(s_mtime_hi, 1);
+       check_field(s_mkfs_time_hi, 1);
+       check_field(s_lastcheck_hi, 1);
+       check_field(s_first_error_time_hi, 1);
+       check_field(s_last_error_time_hi, 1);
+       check_field(s_pad, 2);
+       check_field(s_encoding, 2);
+       check_field(s_encoding_flags, 2);
+       check_field(s_reserved, 95 * 4);
        check_field(s_checksum, 4);
        do_field("Superblock end", 0, 0, cur_offset, 1024);
 #endif
index 7a4c9bf5edfbbc0abac18ea4c46c681b90d9c7e0..74fc8a75df7170f5c1e19a3693e8f19a639cb861 100644 (file)
@@ -1126,6 +1126,31 @@ unimplemented:
        return EXT2_ET_UNIMPLEMENTED;
 }
 
+/*
+ * If we know about ZERO_RANGE, try that before we try PUNCH_HOLE because
+ * ZERO_RANGE doesn't unmap preallocated blocks.  We prefer fallocate because
+ * it always invalidates page cache, and libext2fs requires that reads after
+ * ZERO_RANGE return zeroes.
+ */
+static int __unix_zeroout(int fd, off_t offset, off_t len)
+{
+       int ret = -1;
+
+#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_ZERO_RANGE)
+       ret = fallocate(fd, FALLOC_FL_ZERO_RANGE, offset, len);
+       if (ret == 0)
+               return 0;
+#endif
+#if defined(HAVE_FALLOCATE) && defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
+       ret = fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
+                       offset,  len);
+       if (ret == 0)
+               return 0;
+#endif
+       errno = EOPNOTSUPP;
+       return ret;
+}
+
 /* parameters might not be used if OS doesn't support zeroout */
 #if __GNUC_PREREQ (4, 6)
 #pragma GCC diagnostic push
@@ -1144,10 +1169,7 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
        if (safe_getenv("UNIX_IO_NOZEROOUT"))
                goto unimplemented;
 
-       if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) {
-               /* Not implemented until the BLKZEROOUT mess is fixed */
-               goto unimplemented;
-       } else {
+       if (!(channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE)) {
                /* Regular file, try to use truncate/punch/zero. */
                struct stat statbuf;
 
@@ -1167,26 +1189,11 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
                        if (ret)
                                goto err;
                }
-#if defined(HAVE_FALLOCATE) && (defined(FALLOC_FL_ZERO_RANGE) || \
-       (defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)))
-#if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)
-               ret = fallocate(data->dev,
-                               FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
-                               (off_t)(block) * channel->block_size + data->offset,
-                               (off_t)(count) * channel->block_size);
-               if (ret == 0)
-                       goto err;
-#endif
-#ifdef FALLOC_FL_ZERO_RANGE
-               ret = fallocate(data->dev,
-                               FALLOC_FL_ZERO_RANGE,
-                               (off_t)(block) * channel->block_size + data->offset,
-                               (off_t)(count) * channel->block_size);
-#endif
-#else
-               goto unimplemented;
-#endif /* HAVE_FALLOCATE && (ZERO_RANGE || (PUNCH_HOLE && KEEP_SIZE)) */
        }
+
+       ret = __unix_zeroout(data->dev,
+                       (off_t)(block) * channel->block_size + data->offset,
+                       (off_t)(count) * channel->block_size);
 err:
        if (ret < 0) {
                if (errno == EOPNOTSUPP)
diff --git a/lib/ext2fs/utf8data.h b/lib/ext2fs/utf8data.h
new file mode 100644 (file)
index 0000000..464480b
--- /dev/null
@@ -0,0 +1,6079 @@
+/* This file is generated code, do not edit. */
+#ifndef __INCLUDED_FROM_UTF8NORM_C__
+#error Only nls_utf8-norm.c should include this file.
+#endif
+
+static const unsigned int utf8vers = 0xb0000;
+
+static const unsigned int utf8agetab[] = {
+       0,
+       0x10100,
+       0x20000,
+       0x20100,
+       0x30000,
+       0x30100,
+       0x30200,
+       0x40000,
+       0x40100,
+       0x50000,
+       0x50100,
+       0x50200,
+       0x60000,
+       0x60100,
+       0x60200,
+       0x60300,
+       0x70000,
+       0x80000,
+       0x90000,
+       0xa0000,
+       0xb0000
+};
+
+static const struct utf8data utf8nfkdicfdata[] = {
+       { 0, 0 },
+       { 0x10100, 0 },
+       { 0x20000, 0 },
+       { 0x20100, 0 },
+       { 0x30000, 0 },
+       { 0x30100, 0 },
+       { 0x30200, 1920 },
+       { 0x40000, 3456 },
+       { 0x40100, 3456 },
+       { 0x50000, 3456 },
+       { 0x50100, 3456 },
+       { 0x50200, 3456 },
+       { 0x60000, 3456 },
+       { 0x60100, 3456 },
+       { 0x60200, 3456 },
+       { 0x60300, 3456 },
+       { 0x70000, 3456 },
+       { 0x80000, 3456 },
+       { 0x90000, 3456 },
+       { 0xa0000, 3456 },
+       { 0xb0000, 3456 }
+};
+
+static const struct utf8data utf8nfkdidata[] = {
+       { 0, 960 },
+       { 0x10100, 960 },
+       { 0x20000, 960 },
+       { 0x20100, 960 },
+       { 0x30000, 960 },
+       { 0x30100, 960 },
+       { 0x30200, 2688 },
+       { 0x40000, 26624 },
+       { 0x40100, 26624 },
+       { 0x50000, 26624 },
+       { 0x50100, 26624 },
+       { 0x50200, 26624 },
+       { 0x60000, 26624 },
+       { 0x60100, 26624 },
+       { 0x60200, 26624 },
+       { 0x60300, 26624 },
+       { 0x70000, 26624 },
+       { 0x80000, 26624 },
+       { 0x90000, 26624 },
+       { 0xa0000, 26624 },
+       { 0xb0000, 26624 }
+};
+
+static const unsigned char utf8data[95872] = {
+       /* nfkdicf_30100 */
+       0xd7,0x07,0x66,0x84,0x0d,0x01,0x00,0xc6,0xd5,0x16,0xe4,0xa5,0x1b,0xe3,0x55,0x16,
+       0xe2,0x31,0x0f,0xc1,0xe0,0x33,0x0e,0xcf,0x86,0x65,0x01,0x68,0x01,0x00,0xd4,0xb8,
+       0xd3,0x27,0xe2,0x84,0xe5,0xe1,0x63,0x37,0xe0,0x17,0x23,0xcf,0x86,0xc5,0xe4,0x0d,
+       0x86,0xe3,0x58,0x81,0xe2,0xee,0x7e,0xe1,0x21,0x7e,0xe0,0xe6,0x7d,0xcf,0x86,0xe5,
+       0xab,0x7d,0x64,0x8e,0x7d,0x0b,0x00,0xd2,0x0e,0xe1,0xb0,0x43,0xe0,0xb5,0xe5,0xcf,
+       0x86,0xcf,0x06,0x01,0x00,0xd1,0x0c,0xe0,0x58,0xeb,0xcf,0x86,0xcf,0x06,0x02,0xff,
+       0xff,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01,
+       0x00,0xe4,0x1f,0x4c,0xe3,0xcf,0xf3,0xd2,0x06,0xcf,0x06,0x01,0x00,0xe1,0xc1,0xef,
+       0xd0,0x21,0xcf,0x86,0xe5,0xbb,0xec,0xe4,0x3a,0xec,0xe3,0xf9,0xeb,0xe2,0xd8,0xeb,
+       0xe1,0xc7,0xeb,0x10,0x08,0x01,0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4,
+       0x00,0xcf,0x86,0xe5,0x9d,0xee,0xd4,0x19,0xe3,0xdc,0xed,0xe2,0xbb,0xed,0xe1,0xaa,
+       0xed,0x10,0x08,0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xe3,
+       0x43,0xee,0xe2,0x22,0xee,0xe1,0x11,0xee,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7,0x00,
+       0x01,0xff,0xe9,0x9b,0xbb,0x00,0x83,0xf2,0x99,0x75,0x01,0xf1,0x71,0x72,0x01,0xf0,
+       0xed,0x70,0x01,0xcf,0x86,0xd5,0x38,0xc4,0xe3,0x87,0x54,0xe2,0x28,0x53,0xf1,0xde,
+       0x2b,0x01,0xe0,0xce,0x51,0xcf,0x86,0xe5,0xc0,0x4f,0xe4,0xe1,0x4c,0xf3,0xf0,0x1c,
+       0x01,0xf2,0x46,0x1c,0x01,0xf1,0x20,0x1c,0x01,0xf0,0xf8,0x1b,0x01,0xcf,0x86,0xf5,
+       0xc4,0x1b,0x01,0x94,0x08,0x73,0xae,0x1b,0x01,0x07,0x00,0x07,0x00,0xf4,0x51,0x70,
+       0x01,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,0x5f,0x5d,0x01,0xcf,
+       0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0x4d,0x5e,0x01,0xcf,0x86,0xf5,0x11,0x5e,
+       0x01,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0x4b,0x5e,0x01,0xcf,0x06,0x13,
+       0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0xe5,0x6f,0x01,0xf3,0xcd,0x6e,
+       0x01,0xd2,0xb0,0xf1,0x82,0x62,0x01,0xd0,0x26,0xcf,0x86,0xf5,0x82,0x5f,0x01,0xf4,
+       0xfd,0x5e,0x01,0xf3,0xba,0x5e,0x01,0xf2,0x98,0x5e,0x01,0xf1,0x85,0x5e,0x01,0x10,
+       0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf,0x86,0xd5,
+       0x20,0xf4,0xd9,0x60,0x01,0xf3,0x97,0x60,0x01,0xf2,0x75,0x60,0x01,0xf1,0x63,0x60,
+       0x01,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6,0x00,0xd4,
+       0x37,0xd3,0x1a,0xf2,0x5c,0x61,0x01,0xf1,0x4a,0x61,0x01,0x10,0x09,0x05,0xff,0xf0,
+       0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,0x7a,0x61,0x01,0x91,
+       0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac,0x88,0x00,
+       0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0xbf,0x61,0x01,0xd2,0x15,0xf1,0x8d,0x61,0x01,
+       0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,0x00,0xf1,
+       0x98,0x61,0x01,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,0xb0,0xa2,
+       0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0xec,0x66,0x01,0xd4,0x1c,0xf3,0x24,0x66,
+       0x01,0xf2,0x01,0x66,0x01,0xf1,0xef,0x65,0x01,0x10,0x08,0x05,0xff,0xe6,0xb4,0xbe,
+       0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0x6b,0x66,0x01,0xf1,0x59,0x66,
+       0x01,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3,0xbe,0x8e,
+       0x00,0xd2,0x14,0xf1,0x81,0x66,0x01,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd,0x00,0x05,
+       0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85,0x00,0x05,
+       0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00,0x05,0xff,
+       0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0x82,0x68,0x01,0xd4,0x1d,0xf3,0xb9,0x67,0x01,
+       0xf2,0x9e,0x67,0x01,0xf1,0x8a,0x67,0x01,0x10,0x08,0x05,0xff,0xe7,0x9b,0xb4,0x00,
+       0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0xfe,0x67,0x01,0xf1,0xeb,0x67,
+       0x01,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3,0x00,0xd2,
+       0x14,0xf1,0x18,0x68,0x01,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05,0xff,0xe7,
+       0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00,0x05,0xff,
+       0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x05,0xff,
+       0xe7,0xaa,0xae,0x00,0xf0,0x2d,0x6b,0x01,0xcf,0x86,0xd5,0x21,0xf4,0xa1,0x69,0x01,
+       0xf3,0x5c,0x69,0x01,0xf2,0x39,0x69,0x01,0xf1,0x27,0x69,0x01,0x10,0x09,0x05,0xff,
+       0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x1c,0xf3,0x44,0x6a,
+       0x01,0xf2,0x1f,0x6a,0x01,0xf1,0x0d,0x6a,0x01,0x10,0x08,0x05,0xff,0xe8,0x8d,0x93,
+       0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0x8c,0x6a,0x01,0xf1,0x7a,0x6a,
+       0x01,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,0xf0,0xa7,0x83,0x92,
+       0x00,0xd2,0x14,0xf1,0xa2,0x6a,0x01,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88,0x00,0x05,
+       0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8,0x00,0x05,
+       0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05,0xff,0xe4,
+       0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       /* nfkdi_30100 */
+       0x57,0x04,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x3d,0x72,0xe3,0xa2,0x6c,0xe2,0xb5,0x66,
+       0xc1,0xe0,0xe1,0x64,0xcf,0x86,0x65,0x44,0x64,0x01,0x00,0xd4,0xb8,0xd3,0x27,0xe2,
+       0xc7,0xe1,0xe1,0xb9,0xa9,0xe0,0x45,0x8a,0xcf,0x86,0xc5,0xe4,0x50,0x82,0xe3,0x9b,
+       0x7d,0xe2,0x31,0x7b,0xe1,0x64,0x7a,0xe0,0x29,0x7a,0xcf,0x86,0xe5,0xee,0x79,0x64,
+       0xd1,0x79,0x0b,0x00,0xd2,0x0e,0xe1,0x7d,0xe2,0xe0,0xf8,0xe1,0xcf,0x86,0xcf,0x06,
+       0x01,0x00,0xd1,0x0c,0xe0,0x9b,0xe7,0xcf,0x86,0xcf,0x06,0x02,0xff,0xff,0xd0,0x08,
+       0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01,0x00,0xe4,0x36,
+       0xfb,0xe3,0x12,0xf0,0xd2,0x06,0xcf,0x06,0x01,0x00,0xe1,0x04,0xec,0xd0,0x21,0xcf,
+       0x86,0xe5,0xfe,0xe8,0xe4,0x7d,0xe8,0xe3,0x3c,0xe8,0xe2,0x1b,0xe8,0xe1,0x0a,0xe8,
+       0x10,0x08,0x01,0xff,0xe8,0xb1,0x88,0x00,0x01,0xff,0xe6,0x9b,0xb4,0x00,0xcf,0x86,
+       0xe5,0xe0,0xea,0xd4,0x19,0xe3,0x1f,0xea,0xe2,0xfe,0xe9,0xe1,0xed,0xe9,0x10,0x08,
+       0x01,0xff,0xe9,0xb9,0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0xe3,0x86,0xea,0xe2,
+       0x65,0xea,0xe1,0x54,0xea,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7,0x00,0x01,0xff,0xe9,
+       0x9b,0xbb,0x00,0x83,0xf2,0xdc,0x71,0x01,0xf1,0xb4,0x6e,0x01,0xf0,0x30,0x6d,0x01,
+       0xcf,0x86,0xd5,0x3d,0xc4,0xf3,0x43,0x2b,0x01,0xf2,0x2f,0x29,0x01,0xf1,0x1f,0x28,
+       0x01,0xf0,0x36,0x1f,0x01,0xcf,0x86,0xf5,0x46,0x1b,0x01,0xf4,0x3e,0x1a,0x01,0xf3,
+       0x2e,0x19,0x01,0xf2,0x84,0x18,0x01,0xf1,0x5e,0x18,0x01,0xf0,0x36,0x18,0x01,0xcf,
+       0x86,0xf5,0x02,0x18,0x01,0x94,0x08,0x73,0xec,0x17,0x01,0x07,0x00,0x07,0x00,0xf4,
+       0x8f,0x6c,0x01,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,0x9d,0x59,
+       0x01,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0x8b,0x5a,0x01,0xcf,0x86,0xf5,
+       0x4f,0x5a,0x01,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0x89,0x5a,0x01,0xcf,
+       0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0x23,0x6c,0x01,0xf3,
+       0x0b,0x6b,0x01,0xd2,0xb0,0xf1,0xc0,0x5e,0x01,0xd0,0x26,0xcf,0x86,0xf5,0xc0,0x5b,
+       0x01,0xf4,0x3b,0x5b,0x01,0xf3,0xf8,0x5a,0x01,0xf2,0xd6,0x5a,0x01,0xf1,0xc3,0x5a,
+       0x01,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf,
+       0x86,0xd5,0x20,0xf4,0x17,0x5d,0x01,0xf3,0xd5,0x5c,0x01,0xf2,0xb3,0x5c,0x01,0xf1,
+       0xa1,0x5c,0x01,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6,
+       0x00,0xd4,0x37,0xd3,0x1a,0xf2,0x9a,0x5d,0x01,0xf1,0x88,0x5d,0x01,0x10,0x09,0x05,
+       0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,0xb8,0x5d,
+       0x01,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac,
+       0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0xfd,0x5d,0x01,0xd2,0x15,0xf1,0xcb,
+       0x5d,0x01,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,
+       0x00,0xf1,0xd6,0x5d,0x01,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,
+       0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0x2a,0x63,0x01,0xd4,0x1c,0xf3,
+       0x62,0x62,0x01,0xf2,0x3f,0x62,0x01,0xf1,0x2d,0x62,0x01,0x10,0x08,0x05,0xff,0xe6,
+       0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0xa9,0x62,0x01,0xf1,
+       0x97,0x62,0x01,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3,
+       0xbe,0x8e,0x00,0xd2,0x14,0xf1,0xbf,0x62,0x01,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd,
+       0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85,
+       0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00,
+       0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0xc0,0x64,0x01,0xd4,0x1d,0xf3,0xf7,
+       0x63,0x01,0xf2,0xdc,0x63,0x01,0xf1,0xc8,0x63,0x01,0x10,0x08,0x05,0xff,0xe7,0x9b,
+       0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0x3c,0x64,0x01,0xf1,
+       0x29,0x64,0x01,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3,
+       0x00,0xd2,0x14,0xf1,0x56,0x64,0x01,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05,
+       0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00,
+       0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,
+       0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x6b,0x67,0x01,0xcf,0x86,0xd5,0x21,0xf4,0xdf,
+       0x65,0x01,0xf3,0x9a,0x65,0x01,0xf2,0x77,0x65,0x01,0xf1,0x65,0x65,0x01,0x10,0x09,
+       0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x1c,0xf3,
+       0x82,0x66,0x01,0xf2,0x5d,0x66,0x01,0xf1,0x4b,0x66,0x01,0x10,0x08,0x05,0xff,0xe8,
+       0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0xca,0x66,0x01,0xf1,
+       0xb8,0x66,0x01,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,0xf0,0xa7,
+       0x83,0x92,0x00,0xd2,0x14,0xf1,0xe0,0x66,0x01,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88,
+       0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8,
+       0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05,
+       0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       /* nfkdicf_30200 */
+       0xd7,0x07,0x66,0x04,0x06,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x25,0x14,0xe3,0xd5,0x0e,
+       0xe2,0xb1,0x07,0xc1,0xe0,0xb3,0x06,0xcf,0x86,0x65,0x81,0x60,0x01,0x00,0xd4,0x2a,
+       0xe3,0x4b,0x3c,0xe2,0x03,0xde,0xe1,0xe2,0x2f,0xe0,0x96,0x1b,0xcf,0x86,0xc5,0xe4,
+       0x8c,0x7e,0xe3,0xd7,0x79,0xe2,0x6d,0x77,0xe1,0xa0,0x76,0xe0,0x65,0x76,0xcf,0x86,
+       0xe5,0x2a,0x76,0x64,0x0d,0x76,0x0b,0x00,0x83,0xf2,0xa7,0x6e,0x01,0xf1,0x7f,0x6b,
+       0x01,0xf0,0xfb,0x69,0x01,0xcf,0x86,0xd5,0x38,0xc4,0xe3,0x95,0x4d,0xe2,0x36,0x4c,
+       0xf1,0xec,0x24,0x01,0xe0,0xdc,0x4a,0xcf,0x86,0xe5,0xce,0x48,0xe4,0xef,0x45,0xf3,
+       0xfe,0x15,0x01,0xf2,0x54,0x15,0x01,0xf1,0x2e,0x15,0x01,0xf0,0x06,0x15,0x01,0xcf,
+       0x86,0xf5,0xd2,0x14,0x01,0x94,0x08,0x73,0xbc,0x14,0x01,0x07,0x00,0x07,0x00,0xf4,
+       0x5f,0x69,0x01,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,0x6d,0x56,
+       0x01,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0x5b,0x57,0x01,0xcf,0x86,0xf5,
+       0x1f,0x57,0x01,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0x59,0x57,0x01,0xcf,
+       0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0xf3,0x68,0x01,0xf3,
+       0xdb,0x67,0x01,0xd2,0xb0,0xf1,0x90,0x5b,0x01,0xd0,0x26,0xcf,0x86,0xf5,0x90,0x58,
+       0x01,0xf4,0x0b,0x58,0x01,0xf3,0xc8,0x57,0x01,0xf2,0xa6,0x57,0x01,0xf1,0x93,0x57,
+       0x01,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,0xcf,
+       0x86,0xd5,0x20,0xf4,0xe7,0x59,0x01,0xf3,0xa5,0x59,0x01,0xf2,0x83,0x59,0x01,0xf1,
+       0x71,0x59,0x01,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6,
+       0x00,0xd4,0x37,0xd3,0x1a,0xf2,0x6a,0x5a,0x01,0xf1,0x58,0x5a,0x01,0x10,0x09,0x05,
+       0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,0x88,0x5a,
+       0x01,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,0xe5,0xac,
+       0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0xcd,0x5a,0x01,0xd2,0x15,0xf1,0x9b,
+       0x5a,0x01,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,
+       0x00,0xf1,0xa6,0x5a,0x01,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,0xff,0xe5,
+       0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0xfa,0x5f,0x01,0xd4,0x1c,0xf3,
+       0x32,0x5f,0x01,0xf2,0x0f,0x5f,0x01,0xf1,0xfd,0x5e,0x01,0x10,0x08,0x05,0xff,0xe6,
+       0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0x79,0x5f,0x01,0xf1,
+       0x67,0x5f,0x01,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,0xf0,0xa3,
+       0xbe,0x8e,0x00,0xd2,0x14,0xf1,0x8f,0x5f,0x01,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd,
+       0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85,
+       0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00,
+       0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0x90,0x61,0x01,0xd4,0x1d,0xf3,0xc7,
+       0x60,0x01,0xf2,0xac,0x60,0x01,0xf1,0x98,0x60,0x01,0x10,0x08,0x05,0xff,0xe7,0x9b,
+       0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0x0c,0x61,0x01,0xf1,
+       0xf9,0x60,0x01,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3,
+       0x00,0xd2,0x14,0xf1,0x26,0x61,0x01,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,0x00,0x05,
+       0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,0xbc,0x00,
+       0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,
+       0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x3b,0x64,0x01,0xcf,0x86,0xd5,0x21,0xf4,0xaf,
+       0x62,0x01,0xf3,0x6a,0x62,0x01,0xf2,0x47,0x62,0x01,0xf1,0x35,0x62,0x01,0x10,0x09,
+       0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,0x1c,0xf3,
+       0x52,0x63,0x01,0xf2,0x2d,0x63,0x01,0xf1,0x1b,0x63,0x01,0x10,0x08,0x05,0xff,0xe8,
+       0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0x9a,0x63,0x01,0xf1,
+       0x88,0x63,0x01,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,0xf0,0xa7,
+       0x83,0x92,0x00,0xd2,0x14,0xf1,0xb0,0x63,0x01,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88,
+       0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8,
+       0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05,
+       0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       /* nfkdi_30200 */
+       0x57,0x04,0x01,0x00,0xc6,0xd5,0x16,0xe4,0x7d,0x6b,0xe3,0xe2,0x65,0xe2,0xf5,0x5f,
+       0xc1,0xe0,0x21,0x5e,0xcf,0x86,0x65,0x84,0x5d,0x01,0x00,0xd4,0x2a,0xe3,0x57,0xdb,
+       0xe2,0x06,0xdb,0xe1,0xf8,0xa2,0xe0,0x84,0x83,0xcf,0x86,0xc5,0xe4,0x8f,0x7b,0xe3,
+       0xda,0x76,0xe2,0x70,0x74,0xe1,0xa3,0x73,0xe0,0x68,0x73,0xcf,0x86,0xe5,0x2d,0x73,
+       0x64,0x10,0x73,0x0b,0x00,0x83,0xf2,0xaa,0x6b,0x01,0xf1,0x82,0x68,0x01,0xf0,0xfe,
+       0x66,0x01,0xcf,0x86,0xd5,0x3d,0xc4,0xf3,0x11,0x25,0x01,0xf2,0xfd,0x22,0x01,0xf1,
+       0xed,0x21,0x01,0xf0,0x04,0x19,0x01,0xcf,0x86,0xf5,0x14,0x15,0x01,0xf4,0x0c,0x14,
+       0x01,0xf3,0xfc,0x12,0x01,0xf2,0x52,0x12,0x01,0xf1,0x2c,0x12,0x01,0xf0,0x04,0x12,
+       0x01,0xcf,0x86,0xf5,0xd0,0x11,0x01,0x94,0x08,0x73,0xba,0x11,0x01,0x07,0x00,0x07,
+       0x00,0xf4,0x5d,0x66,0x01,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd2,0x0c,0xf1,
+       0x6b,0x53,0x01,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd1,0x10,0xf0,0x59,0x54,0x01,0xcf,
+       0x86,0xf5,0x1d,0x54,0x01,0xcf,0x06,0x11,0x00,0xd0,0x0c,0xcf,0x86,0xf5,0x57,0x54,
+       0x01,0xcf,0x06,0x13,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xf4,0xf1,0x65,
+       0x01,0xf3,0xd9,0x64,0x01,0xd2,0xb0,0xf1,0x8e,0x58,0x01,0xd0,0x26,0xcf,0x86,0xf5,
+       0x8e,0x55,0x01,0xf4,0x09,0x55,0x01,0xf3,0xc6,0x54,0x01,0xf2,0xa4,0x54,0x01,0xf1,
+       0x91,0x54,0x01,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,
+       0x00,0xcf,0x86,0xd5,0x20,0xf4,0xe5,0x56,0x01,0xf3,0xa3,0x56,0x01,0xf2,0x81,0x56,
+       0x01,0xf1,0x6f,0x56,0x01,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,
+       0x93,0xb6,0x00,0xd4,0x37,0xd3,0x1a,0xf2,0x68,0x57,0x01,0xf1,0x56,0x57,0x01,0x10,
+       0x09,0x05,0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,0x00,0xf2,
+       0x86,0x57,0x01,0x91,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0x8d,0xaa,0x00,0x05,0xff,
+       0xe5,0xac,0x88,0x00,0x05,0xff,0xe5,0xac,0xbe,0x00,0xf3,0xcb,0x57,0x01,0xd2,0x15,
+       0xf1,0x99,0x57,0x01,0x10,0x08,0x05,0xff,0xe5,0xaf,0xb3,0x00,0x05,0xff,0xf0,0xa1,
+       0xac,0x98,0x00,0xf1,0xa4,0x57,0x01,0x10,0x08,0x05,0xff,0xe5,0xbc,0xb3,0x00,0x05,
+       0xff,0xe5,0xb0,0xa2,0x00,0xd1,0xe3,0xd0,0x71,0xcf,0x86,0xf5,0xf8,0x5c,0x01,0xd4,
+       0x1c,0xf3,0x30,0x5c,0x01,0xf2,0x0d,0x5c,0x01,0xf1,0xfb,0x5b,0x01,0x10,0x08,0x05,
+       0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff,0xe6,0xb5,0xb7,0x00,0xd3,0x1a,0xf2,0x77,0x5c,
+       0x01,0xf1,0x65,0x5c,0x01,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,0xff,
+       0xf0,0xa3,0xbe,0x8e,0x00,0xd2,0x14,0xf1,0x8d,0x5c,0x01,0x10,0x08,0x05,0xff,0xe7,
+       0x81,0xbd,0x00,0x05,0xff,0xe7,0x81,0xb7,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,
+       0x85,0x85,0x00,0x05,0xff,0xf0,0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,
+       0x9c,0x00,0x05,0xff,0xe4,0x8e,0xab,0x00,0xcf,0x86,0xf5,0x8e,0x5e,0x01,0xd4,0x1d,
+       0xf3,0xc5,0x5d,0x01,0xf2,0xaa,0x5d,0x01,0xf1,0x96,0x5d,0x01,0x10,0x08,0x05,0xff,
+       0xe7,0x9b,0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0xd3,0x18,0xf2,0x0a,0x5e,
+       0x01,0xf1,0xf7,0x5d,0x01,0x10,0x08,0x05,0xff,0xe7,0xa3,0x8c,0x00,0x05,0xff,0xe4,
+       0x83,0xa3,0x00,0xd2,0x14,0xf1,0x24,0x5e,0x01,0x10,0x08,0x05,0xff,0xe4,0x84,0xaf,
+       0x00,0x05,0xff,0xe7,0xa9,0x80,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,
+       0xbc,0x00,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,
+       0xa7,0x00,0x05,0xff,0xe7,0xaa,0xae,0x00,0xf0,0x39,0x61,0x01,0xcf,0x86,0xd5,0x21,
+       0xf4,0xad,0x5f,0x01,0xf3,0x68,0x5f,0x01,0xf2,0x45,0x5f,0x01,0xf1,0x33,0x5f,0x01,
+       0x10,0x09,0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0xd4,
+       0x1c,0xf3,0x50,0x60,0x01,0xf2,0x2b,0x60,0x01,0xf1,0x19,0x60,0x01,0x10,0x08,0x05,
+       0xff,0xe8,0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,0x8a,0x00,0xd3,0x1a,0xf2,0x98,0x60,
+       0x01,0xf1,0x86,0x60,0x01,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,0x05,0xff,
+       0xf0,0xa7,0x83,0x92,0x00,0xd2,0x14,0xf1,0xae,0x60,0x01,0x10,0x08,0x05,0xff,0xe8,
+       0x9a,0x88,0x00,0x05,0xff,0xe8,0x9c,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,
+       0x9c,0xa8,0x00,0x05,0xff,0xe8,0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,
+       0x00,0x05,0xff,0xe4,0xb5,0x97,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       /* nfkdicf_b0000 */
+       0xd7,0xb0,0x56,0x04,0x01,0x00,0x95,0xa8,0xd4,0x5e,0xd3,0x2e,0xd2,0x16,0xd1,0x0a,
+       0x10,0x04,0x01,0x00,0x01,0xff,0x61,0x00,0x10,0x06,0x01,0xff,0x62,0x00,0x01,0xff,
+       0x63,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x64,0x00,0x01,0xff,0x65,0x00,0x10,0x06,
+       0x01,0xff,0x66,0x00,0x01,0xff,0x67,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x68,0x00,0x01,0xff,0x69,0x00,0x10,0x06,0x01,0xff,0x6a,0x00,0x01,0xff,0x6b,0x00,
+       0xd1,0x0c,0x10,0x06,0x01,0xff,0x6c,0x00,0x01,0xff,0x6d,0x00,0x10,0x06,0x01,0xff,
+       0x6e,0x00,0x01,0xff,0x6f,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x70,0x00,0x01,0xff,0x71,0x00,0x10,0x06,0x01,0xff,0x72,0x00,0x01,0xff,0x73,0x00,
+       0xd1,0x0c,0x10,0x06,0x01,0xff,0x74,0x00,0x01,0xff,0x75,0x00,0x10,0x06,0x01,0xff,
+       0x76,0x00,0x01,0xff,0x77,0x00,0x92,0x16,0xd1,0x0c,0x10,0x06,0x01,0xff,0x78,0x00,
+       0x01,0xff,0x79,0x00,0x10,0x06,0x01,0xff,0x7a,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
+       0xc6,0xe5,0xe4,0x14,0xe4,0x7b,0x0d,0xe3,0x2b,0x08,0xe2,0x07,0x01,0xc1,0xd0,0x09,
+       0xcf,0x86,0x65,0xd8,0x59,0x01,0x00,0xcf,0x86,0xe5,0x4f,0x5b,0xd4,0x7f,0xd3,0x3f,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0x80,0x00,0x01,0xff,0x61,0xcc,
+       0x81,0x00,0x10,0x08,0x01,0xff,0x61,0xcc,0x82,0x00,0x01,0xff,0x61,0xcc,0x83,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0x88,0x00,0x01,0xff,0x61,0xcc,0x8a,0x00,
+       0x10,0x07,0x01,0xff,0xc3,0xa6,0x00,0x01,0xff,0x63,0xcc,0xa7,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x65,0xcc,0x80,0x00,0x01,0xff,0x65,0xcc,0x81,0x00,0x10,
+       0x08,0x01,0xff,0x65,0xcc,0x82,0x00,0x01,0xff,0x65,0xcc,0x88,0x00,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x69,0xcc,0x80,0x00,0x01,0xff,0x69,0xcc,0x81,0x00,0x10,0x08,0x01,
+       0xff,0x69,0xcc,0x82,0x00,0x01,0xff,0x69,0xcc,0x88,0x00,0xd3,0x3b,0xd2,0x1f,0xd1,
+       0x0f,0x10,0x07,0x01,0xff,0xc3,0xb0,0x00,0x01,0xff,0x6e,0xcc,0x83,0x00,0x10,0x08,
+       0x01,0xff,0x6f,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x6f,0xcc,0x82,0x00,0x01,0xff,0x6f,0xcc,0x83,0x00,0x10,0x08,0x01,0xff,
+       0x6f,0xcc,0x88,0x00,0x01,0x00,0xd2,0x1f,0xd1,0x0f,0x10,0x07,0x01,0xff,0xc3,0xb8,
+       0x00,0x01,0xff,0x75,0xcc,0x80,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0x81,0x00,0x01,
+       0xff,0x75,0xcc,0x82,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0x88,0x00,0x01,
+       0xff,0x79,0xcc,0x81,0x00,0x10,0x07,0x01,0xff,0xc3,0xbe,0x00,0x01,0xff,0x73,0x73,
+       0x00,0xe1,0xd1,0x03,0xe0,0xef,0x01,0xcf,0x86,0xd5,0xfb,0xd4,0x80,0xd3,0x40,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0x84,0x00,0x01,0xff,0x61,0xcc,0x84,
+       0x00,0x10,0x08,0x01,0xff,0x61,0xcc,0x86,0x00,0x01,0xff,0x61,0xcc,0x86,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0xa8,0x00,0x01,0xff,0x61,0xcc,0xa8,0x00,0x10,
+       0x08,0x01,0xff,0x63,0xcc,0x81,0x00,0x01,0xff,0x63,0xcc,0x81,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x63,0xcc,0x82,0x00,0x01,0xff,0x63,0xcc,0x82,0x00,0x10,
+       0x08,0x01,0xff,0x63,0xcc,0x87,0x00,0x01,0xff,0x63,0xcc,0x87,0x00,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x63,0xcc,0x8c,0x00,0x01,0xff,0x63,0xcc,0x8c,0x00,0x10,0x08,0x01,
+       0xff,0x64,0xcc,0x8c,0x00,0x01,0xff,0x64,0xcc,0x8c,0x00,0xd3,0x3b,0xd2,0x1b,0xd1,
+       0x0b,0x10,0x07,0x01,0xff,0xc4,0x91,0x00,0x01,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,
+       0x84,0x00,0x01,0xff,0x65,0xcc,0x84,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,
+       0x86,0x00,0x01,0xff,0x65,0xcc,0x86,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0x87,0x00,
+       0x01,0xff,0x65,0xcc,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,
+       0xa8,0x00,0x01,0xff,0x65,0xcc,0xa8,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0x8c,0x00,
+       0x01,0xff,0x65,0xcc,0x8c,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x67,0xcc,0x82,0x00,
+       0x01,0xff,0x67,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x67,0xcc,0x86,0x00,0x01,0xff,
+       0x67,0xcc,0x86,0x00,0xd4,0x7b,0xd3,0x3b,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x67,0xcc,0x87,0x00,0x01,0xff,0x67,0xcc,0x87,0x00,0x10,0x08,0x01,0xff,0x67,0xcc,
+       0xa7,0x00,0x01,0xff,0x67,0xcc,0xa7,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x68,0xcc,
+       0x82,0x00,0x01,0xff,0x68,0xcc,0x82,0x00,0x10,0x07,0x01,0xff,0xc4,0xa7,0x00,0x01,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0x83,0x00,0x01,0xff,0x69,
+       0xcc,0x83,0x00,0x10,0x08,0x01,0xff,0x69,0xcc,0x84,0x00,0x01,0xff,0x69,0xcc,0x84,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0x86,0x00,0x01,0xff,0x69,0xcc,0x86,
+       0x00,0x10,0x08,0x01,0xff,0x69,0xcc,0xa8,0x00,0x01,0xff,0x69,0xcc,0xa8,0x00,0xd3,
+       0x3a,0xd2,0x1a,0xd1,0x0c,0x10,0x08,0x01,0xff,0x69,0xcc,0x87,0x00,0x01,0x00,0x10,
+       0x07,0x01,0xff,0x69,0x6a,0x00,0x01,0xff,0x69,0x6a,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x6a,0xcc,0x82,0x00,0x01,0xff,0x6a,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x6b,
+       0xcc,0xa7,0x00,0x01,0xff,0x6b,0xcc,0xa7,0x00,0xd2,0x1c,0xd1,0x0c,0x10,0x04,0x01,
+       0x00,0x01,0xff,0x6c,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x6c,0xcc,0x81,0x00,0x01,
+       0xff,0x6c,0xcc,0xa7,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6c,0xcc,0xa7,0x00,0x01,
+       0xff,0x6c,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x6c,0xcc,0x8c,0x00,0x01,0xff,0x6c,
+       0xc2,0xb7,0x00,0xcf,0x86,0xd5,0xf1,0xd4,0x76,0xd3,0x3b,0xd2,0x1b,0xd1,0x0f,0x10,
+       0x08,0x01,0xff,0x6c,0xc2,0xb7,0x00,0x01,0xff,0xc5,0x82,0x00,0x10,0x04,0x01,0x00,
+       0x01,0xff,0x6e,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0x81,0x00,
+       0x01,0xff,0x6e,0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x6e,0xcc,0xa7,0x00,0x01,0xff,
+       0x6e,0xcc,0x8c,0x00,0xd2,0x1b,0xd1,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0x8c,0x00,
+       0x01,0xff,0xca,0xbc,0x6e,0x00,0x10,0x07,0x01,0xff,0xc5,0x8b,0x00,0x01,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x6f,0xcc,0x84,0x00,0x01,0xff,0x6f,0xcc,0x84,0x00,0x10,
+       0x08,0x01,0xff,0x6f,0xcc,0x86,0x00,0x01,0xff,0x6f,0xcc,0x86,0x00,0xd3,0x3b,0xd2,
+       0x1b,0xd1,0x10,0x10,0x08,0x01,0xff,0x6f,0xcc,0x8b,0x00,0x01,0xff,0x6f,0xcc,0x8b,
+       0x00,0x10,0x07,0x01,0xff,0xc5,0x93,0x00,0x01,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x72,0xcc,0x81,0x00,0x01,0xff,0x72,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x72,0xcc,
+       0xa7,0x00,0x01,0xff,0x72,0xcc,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x72,0xcc,0x8c,0x00,0x01,0xff,0x72,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x73,0xcc,
+       0x81,0x00,0x01,0xff,0x73,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x73,0xcc,
+       0x82,0x00,0x01,0xff,0x73,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x73,0xcc,0xa7,0x00,
+       0x01,0xff,0x73,0xcc,0xa7,0x00,0xd4,0x7b,0xd3,0x3b,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x73,0xcc,0x8c,0x00,0x01,0xff,0x73,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,
+       0x74,0xcc,0xa7,0x00,0x01,0xff,0x74,0xcc,0xa7,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x74,0xcc,0x8c,0x00,0x01,0xff,0x74,0xcc,0x8c,0x00,0x10,0x07,0x01,0xff,0xc5,0xa7,
+       0x00,0x01,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0x83,0x00,0x01,
+       0xff,0x75,0xcc,0x83,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0x84,0x00,0x01,0xff,0x75,
+       0xcc,0x84,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0x86,0x00,0x01,0xff,0x75,
+       0xcc,0x86,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0x8a,0x00,0x01,0xff,0x75,0xcc,0x8a,
+       0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0x8b,0x00,0x01,
+       0xff,0x75,0xcc,0x8b,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0xa8,0x00,0x01,0xff,0x75,
+       0xcc,0xa8,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x77,0xcc,0x82,0x00,0x01,0xff,0x77,
+       0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x79,0xcc,0x82,0x00,0x01,0xff,0x79,0xcc,0x82,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x79,0xcc,0x88,0x00,0x01,0xff,0x7a,
+       0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x7a,0xcc,0x81,0x00,0x01,0xff,0x7a,0xcc,0x87,
+       0x00,0xe1,0x2b,0x5b,0x10,0x08,0x01,0xff,0x7a,0xcc,0x87,0x00,0x01,0xff,0x7a,0xcc,
+       0x8c,0x00,0xe0,0x65,0x01,0xcf,0x86,0xd5,0xb4,0xd4,0x5a,0xd3,0x2f,0xd2,0x16,0xd1,
+       0x0b,0x10,0x04,0x01,0x00,0x01,0xff,0xc9,0x93,0x00,0x10,0x07,0x01,0xff,0xc6,0x83,
+       0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xc6,0x85,0x00,0x01,0x00,0x10,0x07,
+       0x01,0xff,0xc9,0x94,0x00,0x01,0xff,0xc6,0x88,0x00,0xd2,0x19,0xd1,0x0b,0x10,0x04,
+       0x01,0x00,0x01,0xff,0xc9,0x96,0x00,0x10,0x07,0x01,0xff,0xc9,0x97,0x00,0x01,0xff,
+       0xc6,0x8c,0x00,0x51,0x04,0x01,0x00,0x10,0x07,0x01,0xff,0xc7,0x9d,0x00,0x01,0xff,
+       0xc9,0x99,0x00,0xd3,0x32,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x01,0xff,0xc9,0x9b,0x00,
+       0x01,0xff,0xc6,0x92,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xc9,0xa0,0x00,0xd1,0x0b,
+       0x10,0x07,0x01,0xff,0xc9,0xa3,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xc9,0xa9,0x00,
+       0x01,0xff,0xc9,0xa8,0x00,0xd2,0x0f,0x91,0x0b,0x10,0x07,0x01,0xff,0xc6,0x99,0x00,
+       0x01,0x00,0x01,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xc9,0xaf,0x00,0x01,0xff,0xc9,
+       0xb2,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xc9,0xb5,0x00,0xd4,0x5d,0xd3,0x34,0xd2,
+       0x1b,0xd1,0x10,0x10,0x08,0x01,0xff,0x6f,0xcc,0x9b,0x00,0x01,0xff,0x6f,0xcc,0x9b,
+       0x00,0x10,0x07,0x01,0xff,0xc6,0xa3,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,
+       0xc6,0xa5,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xca,0x80,0x00,0x01,0xff,0xc6,0xa8,
+       0x00,0xd2,0x0f,0x91,0x0b,0x10,0x04,0x01,0x00,0x01,0xff,0xca,0x83,0x00,0x01,0x00,
+       0xd1,0x0b,0x10,0x07,0x01,0xff,0xc6,0xad,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xca,
+       0x88,0x00,0x01,0xff,0x75,0xcc,0x9b,0x00,0xd3,0x33,0xd2,0x1d,0xd1,0x0f,0x10,0x08,
+       0x01,0xff,0x75,0xcc,0x9b,0x00,0x01,0xff,0xca,0x8a,0x00,0x10,0x07,0x01,0xff,0xca,
+       0x8b,0x00,0x01,0xff,0xc6,0xb4,0x00,0xd1,0x0b,0x10,0x04,0x01,0x00,0x01,0xff,0xc6,
+       0xb6,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xca,0x92,0x00,0xd2,0x0f,0x91,0x0b,0x10,
+       0x07,0x01,0xff,0xc6,0xb9,0x00,0x01,0x00,0x01,0x00,0x91,0x0b,0x10,0x07,0x01,0xff,
+       0xc6,0xbd,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,0xe1,0xd4,0x51,0xd3,0x1d,0x52,
+       0x04,0x01,0x00,0x51,0x09,0x01,0xff,0x64,0x7a,0xcc,0x8c,0x00,0x10,0x09,0x01,0xff,
+       0x64,0x7a,0xcc,0x8c,0x00,0x01,0xff,0x6c,0x6a,0x00,0xd2,0x15,0x91,0x0e,0x10,0x07,
+       0x01,0xff,0x6c,0x6a,0x00,0x01,0xff,0x6c,0x6a,0x00,0x01,0xff,0x6e,0x6a,0x00,0xd1,
+       0x0f,0x10,0x07,0x01,0xff,0x6e,0x6a,0x00,0x01,0xff,0x61,0xcc,0x8c,0x00,0x10,0x08,
+       0x01,0xff,0x61,0xcc,0x8c,0x00,0x01,0xff,0x69,0xcc,0x8c,0x00,0xd3,0x46,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0x8c,0x00,0x01,0xff,0x6f,0xcc,0x8c,0x00,
+       0x10,0x08,0x01,0xff,0x6f,0xcc,0x8c,0x00,0x01,0xff,0x75,0xcc,0x8c,0x00,0xd1,0x12,
+       0x10,0x08,0x01,0xff,0x75,0xcc,0x8c,0x00,0x01,0xff,0x75,0xcc,0x88,0xcc,0x84,0x00,
+       0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,0x84,0x00,0x01,0xff,0x75,0xcc,0x88,0xcc,
+       0x81,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,0x81,0x00,
+       0x01,0xff,0x75,0xcc,0x88,0xcc,0x8c,0x00,0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,
+       0x8c,0x00,0x01,0xff,0x75,0xcc,0x88,0xcc,0x80,0x00,0xd1,0x0e,0x10,0x0a,0x01,0xff,
+       0x75,0xcc,0x88,0xcc,0x80,0x00,0x01,0x00,0x10,0x0a,0x01,0xff,0x61,0xcc,0x88,0xcc,
+       0x84,0x00,0x01,0xff,0x61,0xcc,0x88,0xcc,0x84,0x00,0xd4,0x87,0xd3,0x41,0xd2,0x26,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x61,0xcc,0x87,0xcc,0x84,0x00,0x01,0xff,0x61,0xcc,
+       0x87,0xcc,0x84,0x00,0x10,0x09,0x01,0xff,0xc3,0xa6,0xcc,0x84,0x00,0x01,0xff,0xc3,
+       0xa6,0xcc,0x84,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xc7,0xa5,0x00,0x01,0x00,0x10,
+       0x08,0x01,0xff,0x67,0xcc,0x8c,0x00,0x01,0xff,0x67,0xcc,0x8c,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x6b,0xcc,0x8c,0x00,0x01,0xff,0x6b,0xcc,0x8c,0x00,0x10,
+       0x08,0x01,0xff,0x6f,0xcc,0xa8,0x00,0x01,0xff,0x6f,0xcc,0xa8,0x00,0xd1,0x14,0x10,
+       0x0a,0x01,0xff,0x6f,0xcc,0xa8,0xcc,0x84,0x00,0x01,0xff,0x6f,0xcc,0xa8,0xcc,0x84,
+       0x00,0x10,0x09,0x01,0xff,0xca,0x92,0xcc,0x8c,0x00,0x01,0xff,0xca,0x92,0xcc,0x8c,
+       0x00,0xd3,0x3b,0xd2,0x1d,0xd1,0x0f,0x10,0x08,0x01,0xff,0x6a,0xcc,0x8c,0x00,0x01,
+       0xff,0x64,0x7a,0x00,0x10,0x07,0x01,0xff,0x64,0x7a,0x00,0x01,0xff,0x64,0x7a,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x67,0xcc,0x81,0x00,0x01,0xff,0x67,0xcc,0x81,0x00,
+       0x10,0x07,0x04,0xff,0xc6,0x95,0x00,0x04,0xff,0xc6,0xbf,0x00,0xd2,0x24,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0x6e,0xcc,0x80,0x00,0x04,0xff,0x6e,0xcc,0x80,0x00,0x10,0x0a,
+       0x01,0xff,0x61,0xcc,0x8a,0xcc,0x81,0x00,0x01,0xff,0x61,0xcc,0x8a,0xcc,0x81,0x00,
+       0xd1,0x12,0x10,0x09,0x01,0xff,0xc3,0xa6,0xcc,0x81,0x00,0x01,0xff,0xc3,0xa6,0xcc,
+       0x81,0x00,0x10,0x09,0x01,0xff,0xc3,0xb8,0xcc,0x81,0x00,0x01,0xff,0xc3,0xb8,0xcc,
+       0x81,0x00,0xe2,0x31,0x02,0xe1,0xb8,0x5b,0xe0,0xc8,0x01,0xcf,0x86,0xd5,0xfb,0xd4,
+       0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0x8f,0x00,0x01,
+       0xff,0x61,0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x61,0xcc,0x91,0x00,0x01,0xff,0x61,
+       0xcc,0x91,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,0x8f,0x00,0x01,0xff,0x65,
+       0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0x91,0x00,0x01,0xff,0x65,0xcc,0x91,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0x8f,0x00,0x01,0xff,0x69,
+       0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x69,0xcc,0x91,0x00,0x01,0xff,0x69,0xcc,0x91,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6f,0xcc,0x8f,0x00,0x01,0xff,0x6f,0xcc,0x8f,
+       0x00,0x10,0x08,0x01,0xff,0x6f,0xcc,0x91,0x00,0x01,0xff,0x6f,0xcc,0x91,0x00,0xd3,
+       0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x72,0xcc,0x8f,0x00,0x01,0xff,0x72,
+       0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x72,0xcc,0x91,0x00,0x01,0xff,0x72,0xcc,0x91,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0x8f,0x00,0x01,0xff,0x75,0xcc,0x8f,
+       0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0x91,0x00,0x01,0xff,0x75,0xcc,0x91,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0x73,0xcc,0xa6,0x00,0x04,0xff,0x73,0xcc,0xa6,
+       0x00,0x10,0x08,0x04,0xff,0x74,0xcc,0xa6,0x00,0x04,0xff,0x74,0xcc,0xa6,0x00,0xd1,
+       0x0b,0x10,0x07,0x04,0xff,0xc8,0x9d,0x00,0x04,0x00,0x10,0x08,0x04,0xff,0x68,0xcc,
+       0x8c,0x00,0x04,0xff,0x68,0xcc,0x8c,0x00,0xd4,0x79,0xd3,0x31,0xd2,0x16,0xd1,0x0b,
+       0x10,0x07,0x06,0xff,0xc6,0x9e,0x00,0x07,0x00,0x10,0x07,0x04,0xff,0xc8,0xa3,0x00,
+       0x04,0x00,0xd1,0x0b,0x10,0x07,0x04,0xff,0xc8,0xa5,0x00,0x04,0x00,0x10,0x08,0x04,
+       0xff,0x61,0xcc,0x87,0x00,0x04,0xff,0x61,0xcc,0x87,0x00,0xd2,0x24,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0x65,0xcc,0xa7,0x00,0x04,0xff,0x65,0xcc,0xa7,0x00,0x10,0x0a,0x04,
+       0xff,0x6f,0xcc,0x88,0xcc,0x84,0x00,0x04,0xff,0x6f,0xcc,0x88,0xcc,0x84,0x00,0xd1,
+       0x14,0x10,0x0a,0x04,0xff,0x6f,0xcc,0x83,0xcc,0x84,0x00,0x04,0xff,0x6f,0xcc,0x83,
+       0xcc,0x84,0x00,0x10,0x08,0x04,0xff,0x6f,0xcc,0x87,0x00,0x04,0xff,0x6f,0xcc,0x87,
+       0x00,0xd3,0x27,0xe2,0x16,0x5a,0xd1,0x14,0x10,0x0a,0x04,0xff,0x6f,0xcc,0x87,0xcc,
+       0x84,0x00,0x04,0xff,0x6f,0xcc,0x87,0xcc,0x84,0x00,0x10,0x08,0x04,0xff,0x79,0xcc,
+       0x84,0x00,0x04,0xff,0x79,0xcc,0x84,0x00,0xd2,0x13,0x51,0x04,0x08,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb1,0xa5,0x00,0x08,0xff,0xc8,0xbc,0x00,0xd1,0x0b,0x10,0x04,0x08,
+       0x00,0x08,0xff,0xc6,0x9a,0x00,0x10,0x08,0x08,0xff,0xe2,0xb1,0xa6,0x00,0x08,0x00,
+       0xcf,0x86,0x95,0x5f,0x94,0x5b,0xd3,0x2f,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x08,0x00,
+       0x08,0xff,0xc9,0x82,0x00,0x10,0x04,0x09,0x00,0x09,0xff,0xc6,0x80,0x00,0xd1,0x0e,
+       0x10,0x07,0x09,0xff,0xca,0x89,0x00,0x09,0xff,0xca,0x8c,0x00,0x10,0x07,0x09,0xff,
+       0xc9,0x87,0x00,0x09,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x09,0xff,0xc9,0x89,0x00,
+       0x09,0x00,0x10,0x07,0x09,0xff,0xc9,0x8b,0x00,0x09,0x00,0xd1,0x0b,0x10,0x07,0x09,
+       0xff,0xc9,0x8d,0x00,0x09,0x00,0x10,0x07,0x09,0xff,0xc9,0x8f,0x00,0x09,0x00,0x01,
+       0x00,0x01,0x00,0xd1,0x94,0xd0,0x0c,0xcf,0x86,0xe5,0x93,0x5a,0x64,0x72,0x5a,0x01,
+       0xe6,0xcf,0x86,0xd5,0x2a,0xe4,0x1c,0x5b,0xe3,0x02,0x5b,0xd2,0x11,0xe1,0xe1,0x5a,
+       0x10,0x07,0x01,0xff,0xcc,0x80,0x00,0x01,0xff,0xcc,0x81,0x00,0xe1,0xe8,0x5a,0x10,
+       0x09,0x01,0xff,0xcc,0x88,0xcc,0x81,0x00,0x01,0xff,0xce,0xb9,0x00,0xd4,0x0f,0x93,
+       0x0b,0x92,0x07,0x61,0x2e,0x5b,0x01,0xea,0x06,0xe6,0x06,0xe6,0xd3,0x2c,0xd2,0x16,
+       0xd1,0x0b,0x10,0x07,0x0a,0xff,0xcd,0xb1,0x00,0x0a,0x00,0x10,0x07,0x0a,0xff,0xcd,
+       0xb3,0x00,0x0a,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xca,0xb9,0x00,0x01,0x00,0x10,
+       0x07,0x0a,0xff,0xcd,0xb7,0x00,0x0a,0x00,0xd2,0x10,0x51,0x04,0x00,0x00,0x10,0x08,
+       0x01,0xff,0x20,0xce,0xb9,0x00,0x09,0x00,0x51,0x04,0x09,0x00,0x10,0x06,0x01,0xff,
+       0x3b,0x00,0x10,0xff,0xcf,0xb3,0x00,0xe0,0x36,0x01,0xcf,0x86,0xd5,0xd8,0xd4,0x64,
+       0xd3,0x26,0x52,0x04,0x00,0x00,0xd1,0x12,0x10,0x08,0x01,0xff,0x20,0xcc,0x81,0x00,
+       0x01,0xff,0x20,0xcc,0x88,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0xb1,0xcc,0x81,
+       0x00,0x01,0xff,0xc2,0xb7,0x00,0xd2,0x1f,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb5,
+       0xcc,0x81,0x00,0x01,0xff,0xce,0xb7,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0xb9,
+       0xcc,0x81,0x00,0x00,0x00,0xd1,0x0d,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x81,0x00,
+       0x00,0x00,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x81,0x00,0x01,0xff,0xcf,0x89,0xcc,
+       0x81,0x00,0xd3,0x3c,0xd2,0x20,0xd1,0x12,0x10,0x0b,0x01,0xff,0xce,0xb9,0xcc,0x88,
+       0xcc,0x81,0x00,0x01,0xff,0xce,0xb1,0x00,0x10,0x07,0x01,0xff,0xce,0xb2,0x00,0x01,
+       0xff,0xce,0xb3,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xb4,0x00,0x01,0xff,0xce,
+       0xb5,0x00,0x10,0x07,0x01,0xff,0xce,0xb6,0x00,0x01,0xff,0xce,0xb7,0x00,0xd2,0x1c,
+       0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xb8,0x00,0x01,0xff,0xce,0xb9,0x00,0x10,0x07,
+       0x01,0xff,0xce,0xba,0x00,0x01,0xff,0xce,0xbb,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,
+       0xce,0xbc,0x00,0x01,0xff,0xce,0xbd,0x00,0x10,0x07,0x01,0xff,0xce,0xbe,0x00,0x01,
+       0xff,0xce,0xbf,0x00,0xe4,0x03,0x5b,0xd3,0x35,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x01,
+       0xff,0xcf,0x80,0x00,0x01,0xff,0xcf,0x81,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xcf,
+       0x83,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xcf,0x84,0x00,0x01,0xff,0xcf,0x85,0x00,
+       0x10,0x07,0x01,0xff,0xcf,0x86,0x00,0x01,0xff,0xcf,0x87,0x00,0xe2,0xa9,0x5a,0xd1,
+       0x0e,0x10,0x07,0x01,0xff,0xcf,0x88,0x00,0x01,0xff,0xcf,0x89,0x00,0x10,0x09,0x01,
+       0xff,0xce,0xb9,0xcc,0x88,0x00,0x01,0xff,0xcf,0x85,0xcc,0x88,0x00,0xcf,0x86,0xd5,
+       0x99,0xd4,0x3c,0xd3,0x13,0x92,0x0f,0x51,0x04,0x01,0x00,0x10,0x07,0x01,0xff,0xcf,
+       0x83,0x00,0x01,0x00,0x01,0x00,0xd2,0x07,0x61,0xb8,0x5a,0x01,0x00,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xce,0xbf,0xcc,0x81,0x00,0x01,0xff,0xcf,0x85,0xcc,0x81,0x00,0x10,
+       0x09,0x01,0xff,0xcf,0x89,0xcc,0x81,0x00,0x0a,0xff,0xcf,0x97,0x00,0xd3,0x31,0xd2,
+       0x1e,0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xb2,0x00,0x01,0xff,0xce,0xb8,0x00,0x10,
+       0x07,0x01,0xff,0xcf,0x85,0x00,0x01,0xff,0xcf,0x85,0xcc,0x81,0x00,0xe1,0xd0,0x5a,
+       0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x88,0x00,0x01,0xff,0xcf,0x86,0x00,0xd2,0x16,
+       0xd1,0x0b,0x10,0x07,0x06,0xff,0xcf,0x99,0x00,0x06,0x00,0x10,0x07,0x01,0xff,0xcf,
+       0x9b,0x00,0x04,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xcf,0x9d,0x00,0x04,0x00,0x10,
+       0x07,0x01,0xff,0xcf,0x9f,0x00,0x04,0x00,0xd4,0x58,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,
+       0x10,0x07,0x01,0xff,0xcf,0xa1,0x00,0x04,0x00,0x10,0x07,0x01,0xff,0xcf,0xa3,0x00,
+       0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xcf,0xa5,0x00,0x01,0x00,0x10,0x07,0x01,
+       0xff,0xcf,0xa7,0x00,0x01,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xcf,0xa9,
+       0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xcf,0xab,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,
+       0x01,0xff,0xcf,0xad,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xcf,0xaf,0x00,0x01,0x00,
+       0xd3,0x32,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xba,0x00,0x01,0xff,0xcf,
+       0x81,0x00,0x10,0x07,0x01,0xff,0xcf,0x83,0x00,0x01,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0xb8,0x00,0x05,0xff,0xce,0xb5,0x00,0x10,0x04,0x06,0x00,0x07,0xff,0xcf,
+       0xb8,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x07,0x00,0x07,0xff,0xcf,0x83,0x00,0x10,
+       0x07,0x07,0xff,0xcf,0xbb,0x00,0x07,0x00,0xd1,0x0b,0x10,0x04,0x08,0x00,0x08,0xff,
+       0xcd,0xbb,0x00,0x10,0x07,0x08,0xff,0xcd,0xbc,0x00,0x08,0xff,0xcd,0xbd,0x00,0xe3,
+       0xad,0x5e,0xe2,0x3d,0x05,0xe1,0x27,0x02,0xe0,0x66,0x01,0xcf,0x86,0xd5,0xf0,0xd4,
+       0x7e,0xd3,0x40,0xd2,0x22,0xd1,0x12,0x10,0x09,0x04,0xff,0xd0,0xb5,0xcc,0x80,0x00,
+       0x01,0xff,0xd0,0xb5,0xcc,0x88,0x00,0x10,0x07,0x01,0xff,0xd1,0x92,0x00,0x01,0xff,
+       0xd0,0xb3,0xcc,0x81,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd1,0x94,0x00,0x01,0xff,
+       0xd1,0x95,0x00,0x10,0x07,0x01,0xff,0xd1,0x96,0x00,0x01,0xff,0xd1,0x96,0xcc,0x88,
+       0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd1,0x98,0x00,0x01,0xff,0xd1,0x99,
+       0x00,0x10,0x07,0x01,0xff,0xd1,0x9a,0x00,0x01,0xff,0xd1,0x9b,0x00,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xd0,0xba,0xcc,0x81,0x00,0x04,0xff,0xd0,0xb8,0xcc,0x80,0x00,0x10,
+       0x09,0x01,0xff,0xd1,0x83,0xcc,0x86,0x00,0x01,0xff,0xd1,0x9f,0x00,0xd3,0x38,0xd2,
+       0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd0,0xb0,0x00,0x01,0xff,0xd0,0xb1,0x00,0x10,
+       0x07,0x01,0xff,0xd0,0xb2,0x00,0x01,0xff,0xd0,0xb3,0x00,0xd1,0x0e,0x10,0x07,0x01,
+       0xff,0xd0,0xb4,0x00,0x01,0xff,0xd0,0xb5,0x00,0x10,0x07,0x01,0xff,0xd0,0xb6,0x00,
+       0x01,0xff,0xd0,0xb7,0x00,0xd2,0x1e,0xd1,0x10,0x10,0x07,0x01,0xff,0xd0,0xb8,0x00,
+       0x01,0xff,0xd0,0xb8,0xcc,0x86,0x00,0x10,0x07,0x01,0xff,0xd0,0xba,0x00,0x01,0xff,
+       0xd0,0xbb,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd0,0xbc,0x00,0x01,0xff,0xd0,0xbd,
+       0x00,0x10,0x07,0x01,0xff,0xd0,0xbe,0x00,0x01,0xff,0xd0,0xbf,0x00,0xe4,0xd4,0x59,
+       0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd1,0x80,0x00,0x01,0xff,0xd1,
+       0x81,0x00,0x10,0x07,0x01,0xff,0xd1,0x82,0x00,0x01,0xff,0xd1,0x83,0x00,0xd1,0x0e,
+       0x10,0x07,0x01,0xff,0xd1,0x84,0x00,0x01,0xff,0xd1,0x85,0x00,0x10,0x07,0x01,0xff,
+       0xd1,0x86,0x00,0x01,0xff,0xd1,0x87,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,
+       0xd1,0x88,0x00,0x01,0xff,0xd1,0x89,0x00,0x10,0x07,0x01,0xff,0xd1,0x8a,0x00,0x01,
+       0xff,0xd1,0x8b,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd1,0x8c,0x00,0x01,0xff,0xd1,
+       0x8d,0x00,0x10,0x07,0x01,0xff,0xd1,0x8e,0x00,0x01,0xff,0xd1,0x8f,0x00,0xcf,0x86,
+       0xd5,0x07,0x64,0x7e,0x59,0x01,0x00,0xd4,0x58,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,
+       0x07,0x01,0xff,0xd1,0xa1,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd1,0xa3,0x00,0x01,
+       0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xa5,0x00,0x01,0x00,0x10,0x07,0x01,0xff,
+       0xd1,0xa7,0x00,0x01,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xa9,0x00,
+       0x01,0x00,0x10,0x07,0x01,0xff,0xd1,0xab,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,
+       0xff,0xd1,0xad,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd1,0xaf,0x00,0x01,0x00,0xd3,
+       0x33,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xb1,0x00,0x01,0x00,0x10,0x07,
+       0x01,0xff,0xd1,0xb3,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xb5,0x00,
+       0x01,0x00,0x10,0x09,0x01,0xff,0xd1,0xb5,0xcc,0x8f,0x00,0x01,0xff,0xd1,0xb5,0xcc,
+       0x8f,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xb9,0x00,0x01,0x00,0x10,
+       0x07,0x01,0xff,0xd1,0xbb,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd1,0xbd,
+       0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd1,0xbf,0x00,0x01,0x00,0xe0,0x41,0x01,0xcf,
+       0x86,0xd5,0x8e,0xd4,0x36,0xd3,0x11,0xe2,0x40,0x59,0xe1,0x37,0x59,0x10,0x07,0x01,
+       0xff,0xd2,0x81,0x00,0x01,0x00,0xd2,0x0f,0x51,0x04,0x04,0x00,0x10,0x07,0x06,0xff,
+       0xd2,0x8b,0x00,0x06,0x00,0xd1,0x0b,0x10,0x07,0x04,0xff,0xd2,0x8d,0x00,0x04,0x00,
+       0x10,0x07,0x04,0xff,0xd2,0x8f,0x00,0x04,0x00,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,
+       0x07,0x01,0xff,0xd2,0x91,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0x93,0x00,0x01,
+       0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,0x95,0x00,0x01,0x00,0x10,0x07,0x01,0xff,
+       0xd2,0x97,0x00,0x01,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,0x99,0x00,
+       0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0x9b,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,
+       0xff,0xd2,0x9d,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0x9f,0x00,0x01,0x00,0xd4,
+       0x58,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,0xa1,0x00,0x01,0x00,
+       0x10,0x07,0x01,0xff,0xd2,0xa3,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,
+       0xa5,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0xa7,0x00,0x01,0x00,0xd2,0x16,0xd1,
+       0x0b,0x10,0x07,0x01,0xff,0xd2,0xa9,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0xab,
+       0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,0xad,0x00,0x01,0x00,0x10,0x07,
+       0x01,0xff,0xd2,0xaf,0x00,0x01,0x00,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,
+       0xff,0xd2,0xb1,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0xb3,0x00,0x01,0x00,0xd1,
+       0x0b,0x10,0x07,0x01,0xff,0xd2,0xb5,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0xb7,
+       0x00,0x01,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,0xb9,0x00,0x01,0x00,
+       0x10,0x07,0x01,0xff,0xd2,0xbb,0x00,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd2,
+       0xbd,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xd2,0xbf,0x00,0x01,0x00,0xcf,0x86,0xd5,
+       0xdc,0xd4,0x5a,0xd3,0x36,0xd2,0x20,0xd1,0x10,0x10,0x07,0x01,0xff,0xd3,0x8f,0x00,
+       0x01,0xff,0xd0,0xb6,0xcc,0x86,0x00,0x10,0x09,0x01,0xff,0xd0,0xb6,0xcc,0x86,0x00,
+       0x01,0xff,0xd3,0x84,0x00,0xd1,0x0b,0x10,0x04,0x01,0x00,0x06,0xff,0xd3,0x86,0x00,
+       0x10,0x04,0x06,0x00,0x01,0xff,0xd3,0x88,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x01,
+       0x00,0x06,0xff,0xd3,0x8a,0x00,0x10,0x04,0x06,0x00,0x01,0xff,0xd3,0x8c,0x00,0xe1,
+       0x18,0x58,0x10,0x04,0x01,0x00,0x06,0xff,0xd3,0x8e,0x00,0xd3,0x41,0xd2,0x24,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0xd0,0xb0,0xcc,0x86,0x00,0x01,0xff,0xd0,0xb0,0xcc,0x86,
+       0x00,0x10,0x09,0x01,0xff,0xd0,0xb0,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb0,0xcc,0x88,
+       0x00,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd3,0x95,0x00,0x01,0x00,0x10,0x09,0x01,0xff,
+       0xd0,0xb5,0xcc,0x86,0x00,0x01,0xff,0xd0,0xb5,0xcc,0x86,0x00,0xd2,0x1d,0xd1,0x0b,
+       0x10,0x07,0x01,0xff,0xd3,0x99,0x00,0x01,0x00,0x10,0x09,0x01,0xff,0xd3,0x99,0xcc,
+       0x88,0x00,0x01,0xff,0xd3,0x99,0xcc,0x88,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,
+       0xb6,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb6,0xcc,0x88,0x00,0x10,0x09,0x01,0xff,0xd0,
+       0xb7,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb7,0xcc,0x88,0x00,0xd4,0x82,0xd3,0x41,0xd2,
+       0x1d,0xd1,0x0b,0x10,0x07,0x01,0xff,0xd3,0xa1,0x00,0x01,0x00,0x10,0x09,0x01,0xff,
+       0xd0,0xb8,0xcc,0x84,0x00,0x01,0xff,0xd0,0xb8,0xcc,0x84,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd0,0xb8,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb8,0xcc,0x88,0x00,0x10,0x09,
+       0x01,0xff,0xd0,0xbe,0xcc,0x88,0x00,0x01,0xff,0xd0,0xbe,0xcc,0x88,0x00,0xd2,0x1d,
+       0xd1,0x0b,0x10,0x07,0x01,0xff,0xd3,0xa9,0x00,0x01,0x00,0x10,0x09,0x01,0xff,0xd3,
+       0xa9,0xcc,0x88,0x00,0x01,0xff,0xd3,0xa9,0xcc,0x88,0x00,0xd1,0x12,0x10,0x09,0x04,
+       0xff,0xd1,0x8d,0xcc,0x88,0x00,0x04,0xff,0xd1,0x8d,0xcc,0x88,0x00,0x10,0x09,0x01,
+       0xff,0xd1,0x83,0xcc,0x84,0x00,0x01,0xff,0xd1,0x83,0xcc,0x84,0x00,0xd3,0x41,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd1,0x83,0xcc,0x88,0x00,0x01,0xff,0xd1,0x83,
+       0xcc,0x88,0x00,0x10,0x09,0x01,0xff,0xd1,0x83,0xcc,0x8b,0x00,0x01,0xff,0xd1,0x83,
+       0xcc,0x8b,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd1,0x87,0xcc,0x88,0x00,0x01,0xff,
+       0xd1,0x87,0xcc,0x88,0x00,0x10,0x07,0x08,0xff,0xd3,0xb7,0x00,0x08,0x00,0xd2,0x1d,
+       0xd1,0x12,0x10,0x09,0x01,0xff,0xd1,0x8b,0xcc,0x88,0x00,0x01,0xff,0xd1,0x8b,0xcc,
+       0x88,0x00,0x10,0x07,0x09,0xff,0xd3,0xbb,0x00,0x09,0x00,0xd1,0x0b,0x10,0x07,0x09,
+       0xff,0xd3,0xbd,0x00,0x09,0x00,0x10,0x07,0x09,0xff,0xd3,0xbf,0x00,0x09,0x00,0xe1,
+       0x4a,0x58,0xe0,0x78,0x01,0xcf,0x86,0xd5,0xb0,0xd4,0x58,0xd3,0x2c,0xd2,0x16,0xd1,
+       0x0b,0x10,0x07,0x06,0xff,0xd4,0x81,0x00,0x06,0x00,0x10,0x07,0x06,0xff,0xd4,0x83,
+       0x00,0x06,0x00,0xd1,0x0b,0x10,0x07,0x06,0xff,0xd4,0x85,0x00,0x06,0x00,0x10,0x07,
+       0x06,0xff,0xd4,0x87,0x00,0x06,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x06,0xff,0xd4,
+       0x89,0x00,0x06,0x00,0x10,0x07,0x06,0xff,0xd4,0x8b,0x00,0x06,0x00,0xd1,0x0b,0x10,
+       0x07,0x06,0xff,0xd4,0x8d,0x00,0x06,0x00,0x10,0x07,0x06,0xff,0xd4,0x8f,0x00,0x06,
+       0x00,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x09,0xff,0xd4,0x91,0x00,0x09,0x00,
+       0x10,0x07,0x09,0xff,0xd4,0x93,0x00,0x09,0x00,0xd1,0x0b,0x10,0x07,0x0a,0xff,0xd4,
+       0x95,0x00,0x0a,0x00,0x10,0x07,0x0a,0xff,0xd4,0x97,0x00,0x0a,0x00,0xd2,0x16,0xd1,
+       0x0b,0x10,0x07,0x0a,0xff,0xd4,0x99,0x00,0x0a,0x00,0x10,0x07,0x0a,0xff,0xd4,0x9b,
+       0x00,0x0a,0x00,0xd1,0x0b,0x10,0x07,0x0a,0xff,0xd4,0x9d,0x00,0x0a,0x00,0x10,0x07,
+       0x0a,0xff,0xd4,0x9f,0x00,0x0a,0x00,0xd4,0x58,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,
+       0x07,0x0a,0xff,0xd4,0xa1,0x00,0x0a,0x00,0x10,0x07,0x0a,0xff,0xd4,0xa3,0x00,0x0a,
+       0x00,0xd1,0x0b,0x10,0x07,0x0b,0xff,0xd4,0xa5,0x00,0x0b,0x00,0x10,0x07,0x0c,0xff,
+       0xd4,0xa7,0x00,0x0c,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x07,0x10,0xff,0xd4,0xa9,0x00,
+       0x10,0x00,0x10,0x07,0x10,0xff,0xd4,0xab,0x00,0x10,0x00,0xd1,0x0b,0x10,0x07,0x10,
+       0xff,0xd4,0xad,0x00,0x10,0x00,0x10,0x07,0x10,0xff,0xd4,0xaf,0x00,0x10,0x00,0xd3,
+       0x35,0xd2,0x19,0xd1,0x0b,0x10,0x04,0x00,0x00,0x01,0xff,0xd5,0xa1,0x00,0x10,0x07,
+       0x01,0xff,0xd5,0xa2,0x00,0x01,0xff,0xd5,0xa3,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,
+       0xd5,0xa4,0x00,0x01,0xff,0xd5,0xa5,0x00,0x10,0x07,0x01,0xff,0xd5,0xa6,0x00,0x01,
+       0xff,0xd5,0xa7,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd5,0xa8,0x00,0x01,
+       0xff,0xd5,0xa9,0x00,0x10,0x07,0x01,0xff,0xd5,0xaa,0x00,0x01,0xff,0xd5,0xab,0x00,
+       0xd1,0x0e,0x10,0x07,0x01,0xff,0xd5,0xac,0x00,0x01,0xff,0xd5,0xad,0x00,0x10,0x07,
+       0x01,0xff,0xd5,0xae,0x00,0x01,0xff,0xd5,0xaf,0x00,0xcf,0x86,0xe5,0xb7,0x56,0xd4,
+       0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd5,0xb0,0x00,0x01,0xff,
+       0xd5,0xb1,0x00,0x10,0x07,0x01,0xff,0xd5,0xb2,0x00,0x01,0xff,0xd5,0xb3,0x00,0xd1,
+       0x0e,0x10,0x07,0x01,0xff,0xd5,0xb4,0x00,0x01,0xff,0xd5,0xb5,0x00,0x10,0x07,0x01,
+       0xff,0xd5,0xb6,0x00,0x01,0xff,0xd5,0xb7,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,
+       0xff,0xd5,0xb8,0x00,0x01,0xff,0xd5,0xb9,0x00,0x10,0x07,0x01,0xff,0xd5,0xba,0x00,
+       0x01,0xff,0xd5,0xbb,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd5,0xbc,0x00,0x01,0xff,
+       0xd5,0xbd,0x00,0x10,0x07,0x01,0xff,0xd5,0xbe,0x00,0x01,0xff,0xd5,0xbf,0x00,0xe3,
+       0x36,0x56,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd6,0x80,0x00,0x01,0xff,0xd6,
+       0x81,0x00,0x10,0x07,0x01,0xff,0xd6,0x82,0x00,0x01,0xff,0xd6,0x83,0x00,0xd1,0x0e,
+       0x10,0x07,0x01,0xff,0xd6,0x84,0x00,0x01,0xff,0xd6,0x85,0x00,0x10,0x07,0x01,0xff,
+       0xd6,0x86,0x00,0x00,0x00,0xe4,0x85,0x2a,0xe3,0xd3,0x20,0xe2,0x8b,0xc2,0xe1,0x6a,
+       0x14,0xd0,0x1e,0xcf,0x86,0xc5,0xe4,0x15,0x63,0xe3,0x60,0x5e,0xe2,0xf6,0x5b,0xe1,
+       0x29,0x5b,0xe0,0xee,0x5a,0xcf,0x86,0xe5,0xb3,0x5a,0x64,0x96,0x5a,0x0b,0x00,0xcf,
+       0x86,0xe5,0xfa,0x01,0xe4,0x68,0x6e,0xe3,0x76,0x01,0xe2,0xf3,0x6b,0xd1,0x0c,0xe0,
+       0x50,0x6b,0xcf,0x86,0x65,0xee,0x6a,0x04,0x00,0xe0,0x0d,0x01,0xcf,0x86,0xd5,0x0a,
+       0xe4,0x71,0x6b,0x63,0x60,0x6b,0x0a,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe2,0xb4,0x80,0x00,0x01,0xff,0xe2,0xb4,0x81,0x00,0x10,0x08,
+       0x01,0xff,0xe2,0xb4,0x82,0x00,0x01,0xff,0xe2,0xb4,0x83,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe2,0xb4,0x84,0x00,0x01,0xff,0xe2,0xb4,0x85,0x00,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x86,0x00,0x01,0xff,0xe2,0xb4,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe2,0xb4,0x88,0x00,0x01,0xff,0xe2,0xb4,0x89,0x00,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x8a,0x00,0x01,0xff,0xe2,0xb4,0x8b,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x8c,0x00,0x01,0xff,0xe2,0xb4,0x8d,0x00,0x10,0x08,0x01,0xff,0xe2,0xb4,
+       0x8e,0x00,0x01,0xff,0xe2,0xb4,0x8f,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe2,0xb4,0x90,0x00,0x01,0xff,0xe2,0xb4,0x91,0x00,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x92,0x00,0x01,0xff,0xe2,0xb4,0x93,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x94,0x00,0x01,0xff,0xe2,0xb4,0x95,0x00,0x10,0x08,0x01,0xff,0xe2,0xb4,
+       0x96,0x00,0x01,0xff,0xe2,0xb4,0x97,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe2,0xb4,0x98,0x00,0x01,0xff,0xe2,0xb4,0x99,0x00,0x10,0x08,0x01,0xff,0xe2,0xb4,
+       0x9a,0x00,0x01,0xff,0xe2,0xb4,0x9b,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe2,0xb4,
+       0x9c,0x00,0x01,0xff,0xe2,0xb4,0x9d,0x00,0x10,0x08,0x01,0xff,0xe2,0xb4,0x9e,0x00,
+       0x01,0xff,0xe2,0xb4,0x9f,0x00,0xcf,0x86,0xe5,0xa3,0x6a,0x94,0x50,0xd3,0x3c,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe2,0xb4,0xa0,0x00,0x01,0xff,0xe2,0xb4,0xa1,
+       0x00,0x10,0x08,0x01,0xff,0xe2,0xb4,0xa2,0x00,0x01,0xff,0xe2,0xb4,0xa3,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0xe2,0xb4,0xa4,0x00,0x01,0xff,0xe2,0xb4,0xa5,0x00,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xe2,0xb4,0xa7,0x00,0x52,0x04,0x00,0x00,0x91,0x0c,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xe2,0xb4,0xad,0x00,0x00,0x00,0x01,0x00,0xd2,0x1b,0xe1,
+       0x61,0x6b,0xe0,0x12,0x6b,0xcf,0x86,0x95,0x0f,0x94,0x0b,0x93,0x07,0x62,0xf7,0x6a,
+       0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xd1,0x13,0xe0,0x38,0x6c,0xcf,0x86,0x95,
+       0x0a,0xe4,0x0d,0x6c,0x63,0xfc,0x6b,0x04,0x00,0x04,0x00,0xd0,0x0d,0xcf,0x86,0x95,
+       0x07,0x64,0x87,0x6c,0x08,0x00,0x04,0x00,0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,
+       0x04,0x00,0xd3,0x07,0x62,0x94,0x6c,0x04,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x11,
+       0xff,0xe1,0x8f,0xb0,0x00,0x11,0xff,0xe1,0x8f,0xb1,0x00,0x10,0x08,0x11,0xff,0xe1,
+       0x8f,0xb2,0x00,0x11,0xff,0xe1,0x8f,0xb3,0x00,0x91,0x10,0x10,0x08,0x11,0xff,0xe1,
+       0x8f,0xb4,0x00,0x11,0xff,0xe1,0x8f,0xb5,0x00,0x00,0x00,0xd4,0x1c,0xe3,0x45,0x6f,
+       0xe2,0x7c,0x6e,0xe1,0x3f,0x6e,0xe0,0x20,0x6e,0xcf,0x86,0x95,0x0a,0xe4,0x09,0x6e,
+       0x63,0xed,0x6d,0x04,0x00,0x04,0x00,0xe3,0x7e,0x02,0xe2,0xcf,0x01,0xd1,0x0c,0xe0,
+       0xb1,0x71,0xcf,0x86,0x65,0x8a,0x71,0x0a,0x00,0xe0,0x01,0x72,0xcf,0x86,0xd5,0xc5,
+       0xd4,0x45,0xd3,0x31,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x12,0xff,0xd0,0xb2,0x00,0x12,
+       0xff,0xd0,0xb4,0x00,0x10,0x07,0x12,0xff,0xd0,0xbe,0x00,0x12,0xff,0xd1,0x81,0x00,
+       0x51,0x07,0x12,0xff,0xd1,0x82,0x00,0x10,0x07,0x12,0xff,0xd1,0x8a,0x00,0x12,0xff,
+       0xd1,0xa3,0x00,0x92,0x10,0x91,0x0c,0x10,0x08,0x12,0xff,0xea,0x99,0x8b,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,
+       0x83,0x90,0x00,0x14,0xff,0xe1,0x83,0x91,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0x92,
+       0x00,0x14,0xff,0xe1,0x83,0x93,0x00,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0x94,
+       0x00,0x14,0xff,0xe1,0x83,0x95,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0x96,0x00,0x14,
+       0xff,0xe1,0x83,0x97,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0x98,
+       0x00,0x14,0xff,0xe1,0x83,0x99,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0x9a,0x00,0x14,
+       0xff,0xe1,0x83,0x9b,0x00,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0x9c,0x00,0x14,
+       0xff,0xe1,0x83,0x9d,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0x9e,0x00,0x14,0xff,0xe1,
+       0x83,0x9f,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,
+       0x83,0xa0,0x00,0x14,0xff,0xe1,0x83,0xa1,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xa2,
+       0x00,0x14,0xff,0xe1,0x83,0xa3,0x00,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xa4,
+       0x00,0x14,0xff,0xe1,0x83,0xa5,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xa6,0x00,0x14,
+       0xff,0xe1,0x83,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xa8,
+       0x00,0x14,0xff,0xe1,0x83,0xa9,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xaa,0x00,0x14,
+       0xff,0xe1,0x83,0xab,0x00,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xac,0x00,0x14,
+       0xff,0xe1,0x83,0xad,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xae,0x00,0x14,0xff,0xe1,
+       0x83,0xaf,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xb0,
+       0x00,0x14,0xff,0xe1,0x83,0xb1,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xb2,0x00,0x14,
+       0xff,0xe1,0x83,0xb3,0x00,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xb4,0x00,0x14,
+       0xff,0xe1,0x83,0xb5,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xb6,0x00,0x14,0xff,0xe1,
+       0x83,0xb7,0x00,0xd2,0x1c,0xd1,0x10,0x10,0x08,0x14,0xff,0xe1,0x83,0xb8,0x00,0x14,
+       0xff,0xe1,0x83,0xb9,0x00,0x10,0x08,0x14,0xff,0xe1,0x83,0xba,0x00,0x00,0x00,0xd1,
+       0x0c,0x10,0x04,0x00,0x00,0x14,0xff,0xe1,0x83,0xbd,0x00,0x10,0x08,0x14,0xff,0xe1,
+       0x83,0xbe,0x00,0x14,0xff,0xe1,0x83,0xbf,0x00,0xe1,0x80,0x72,0xd0,0x85,0xcf,0x86,
+       0x55,0x04,0x07,0x00,0xd4,0x1f,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0xd1,0x0d,
+       0x10,0x06,0x07,0xff,0x61,0x00,0x07,0xff,0xc3,0xa6,0x00,0x10,0x06,0x07,0xff,0x62,
+       0x00,0x07,0x00,0xd3,0x31,0xd2,0x19,0xd1,0x0c,0x10,0x06,0x07,0xff,0x64,0x00,0x07,
+       0xff,0x65,0x00,0x10,0x07,0x07,0xff,0xc7,0x9d,0x00,0x07,0xff,0x67,0x00,0xd1,0x0c,
+       0x10,0x06,0x07,0xff,0x68,0x00,0x07,0xff,0x69,0x00,0x10,0x06,0x07,0xff,0x6a,0x00,
+       0x07,0xff,0x6b,0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,0x07,0xff,0x6c,0x00,0x07,0xff,
+       0x6d,0x00,0x10,0x06,0x07,0xff,0x6e,0x00,0x07,0x00,0xd1,0x0d,0x10,0x06,0x07,0xff,
+       0x6f,0x00,0x07,0xff,0xc8,0xa3,0x00,0x10,0x06,0x07,0xff,0x70,0x00,0x07,0xff,0x72,
+       0x00,0xcf,0x86,0xe5,0x90,0x71,0xe4,0x21,0x71,0xe3,0xef,0x70,0xe2,0xd2,0x70,0xd1,
+       0x0c,0x10,0x06,0x07,0xff,0x74,0x00,0x07,0xff,0x75,0x00,0x10,0x06,0x07,0xff,0x77,
+       0x00,0x07,0xff,0x61,0x00,0xe2,0x90,0x08,0xe1,0x48,0x04,0xe0,0x1c,0x02,0xcf,0x86,
+       0xe5,0x11,0x01,0xd4,0x84,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x61,
+       0xcc,0xa5,0x00,0x01,0xff,0x61,0xcc,0xa5,0x00,0x10,0x08,0x01,0xff,0x62,0xcc,0x87,
+       0x00,0x01,0xff,0x62,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x62,0xcc,0xa3,
+       0x00,0x01,0xff,0x62,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x62,0xcc,0xb1,0x00,0x01,
+       0xff,0x62,0xcc,0xb1,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x63,0xcc,0xa7,
+       0xcc,0x81,0x00,0x01,0xff,0x63,0xcc,0xa7,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x64,
+       0xcc,0x87,0x00,0x01,0xff,0x64,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x64,
+       0xcc,0xa3,0x00,0x01,0xff,0x64,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x64,0xcc,0xb1,
+       0x00,0x01,0xff,0x64,0xcc,0xb1,0x00,0xd3,0x48,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x64,0xcc,0xa7,0x00,0x01,0xff,0x64,0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x64,
+       0xcc,0xad,0x00,0x01,0xff,0x64,0xcc,0xad,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x65,
+       0xcc,0x84,0xcc,0x80,0x00,0x01,0xff,0x65,0xcc,0x84,0xcc,0x80,0x00,0x10,0x0a,0x01,
+       0xff,0x65,0xcc,0x84,0xcc,0x81,0x00,0x01,0xff,0x65,0xcc,0x84,0xcc,0x81,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,0xad,0x00,0x01,0xff,0x65,0xcc,0xad,
+       0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0xb0,0x00,0x01,0xff,0x65,0xcc,0xb0,0x00,0xd1,
+       0x14,0x10,0x0a,0x01,0xff,0x65,0xcc,0xa7,0xcc,0x86,0x00,0x01,0xff,0x65,0xcc,0xa7,
+       0xcc,0x86,0x00,0x10,0x08,0x01,0xff,0x66,0xcc,0x87,0x00,0x01,0xff,0x66,0xcc,0x87,
+       0x00,0xd4,0x84,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x67,0xcc,0x84,
+       0x00,0x01,0xff,0x67,0xcc,0x84,0x00,0x10,0x08,0x01,0xff,0x68,0xcc,0x87,0x00,0x01,
+       0xff,0x68,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x68,0xcc,0xa3,0x00,0x01,
+       0xff,0x68,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x68,0xcc,0x88,0x00,0x01,0xff,0x68,
+       0xcc,0x88,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x68,0xcc,0xa7,0x00,0x01,
+       0xff,0x68,0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x68,0xcc,0xae,0x00,0x01,0xff,0x68,
+       0xcc,0xae,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0xb0,0x00,0x01,0xff,0x69,
+       0xcc,0xb0,0x00,0x10,0x0a,0x01,0xff,0x69,0xcc,0x88,0xcc,0x81,0x00,0x01,0xff,0x69,
+       0xcc,0x88,0xcc,0x81,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x6b,
+       0xcc,0x81,0x00,0x01,0xff,0x6b,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x6b,0xcc,0xa3,
+       0x00,0x01,0xff,0x6b,0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6b,0xcc,0xb1,
+       0x00,0x01,0xff,0x6b,0xcc,0xb1,0x00,0x10,0x08,0x01,0xff,0x6c,0xcc,0xa3,0x00,0x01,
+       0xff,0x6c,0xcc,0xa3,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x6c,0xcc,0xa3,
+       0xcc,0x84,0x00,0x01,0xff,0x6c,0xcc,0xa3,0xcc,0x84,0x00,0x10,0x08,0x01,0xff,0x6c,
+       0xcc,0xb1,0x00,0x01,0xff,0x6c,0xcc,0xb1,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6c,
+       0xcc,0xad,0x00,0x01,0xff,0x6c,0xcc,0xad,0x00,0x10,0x08,0x01,0xff,0x6d,0xcc,0x81,
+       0x00,0x01,0xff,0x6d,0xcc,0x81,0x00,0xcf,0x86,0xe5,0x15,0x01,0xd4,0x88,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x6d,0xcc,0x87,0x00,0x01,0xff,0x6d,0xcc,
+       0x87,0x00,0x10,0x08,0x01,0xff,0x6d,0xcc,0xa3,0x00,0x01,0xff,0x6d,0xcc,0xa3,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0x87,0x00,0x01,0xff,0x6e,0xcc,0x87,0x00,
+       0x10,0x08,0x01,0xff,0x6e,0xcc,0xa3,0x00,0x01,0xff,0x6e,0xcc,0xa3,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0xb1,0x00,0x01,0xff,0x6e,0xcc,0xb1,0x00,
+       0x10,0x08,0x01,0xff,0x6e,0xcc,0xad,0x00,0x01,0xff,0x6e,0xcc,0xad,0x00,0xd1,0x14,
+       0x10,0x0a,0x01,0xff,0x6f,0xcc,0x83,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x83,0xcc,
+       0x81,0x00,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x83,0xcc,0x88,0x00,0x01,0xff,0x6f,0xcc,
+       0x83,0xcc,0x88,0x00,0xd3,0x48,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x6f,0xcc,
+       0x84,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,0x84,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,
+       0x6f,0xcc,0x84,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x84,0xcc,0x81,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x70,0xcc,0x81,0x00,0x01,0xff,0x70,0xcc,0x81,0x00,0x10,0x08,
+       0x01,0xff,0x70,0xcc,0x87,0x00,0x01,0xff,0x70,0xcc,0x87,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x72,0xcc,0x87,0x00,0x01,0xff,0x72,0xcc,0x87,0x00,0x10,0x08,
+       0x01,0xff,0x72,0xcc,0xa3,0x00,0x01,0xff,0x72,0xcc,0xa3,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x72,0xcc,0xa3,0xcc,0x84,0x00,0x01,0xff,0x72,0xcc,0xa3,0xcc,0x84,0x00,
+       0x10,0x08,0x01,0xff,0x72,0xcc,0xb1,0x00,0x01,0xff,0x72,0xcc,0xb1,0x00,0xd4,0x8c,
+       0xd3,0x48,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x73,0xcc,0x87,0x00,0x01,0xff,
+       0x73,0xcc,0x87,0x00,0x10,0x08,0x01,0xff,0x73,0xcc,0xa3,0x00,0x01,0xff,0x73,0xcc,
+       0xa3,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x73,0xcc,0x81,0xcc,0x87,0x00,0x01,0xff,
+       0x73,0xcc,0x81,0xcc,0x87,0x00,0x10,0x0a,0x01,0xff,0x73,0xcc,0x8c,0xcc,0x87,0x00,
+       0x01,0xff,0x73,0xcc,0x8c,0xcc,0x87,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x73,0xcc,0xa3,0xcc,0x87,0x00,0x01,0xff,0x73,0xcc,0xa3,0xcc,0x87,0x00,0x10,0x08,
+       0x01,0xff,0x74,0xcc,0x87,0x00,0x01,0xff,0x74,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x74,0xcc,0xa3,0x00,0x01,0xff,0x74,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,
+       0x74,0xcc,0xb1,0x00,0x01,0xff,0x74,0xcc,0xb1,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x74,0xcc,0xad,0x00,0x01,0xff,0x74,0xcc,0xad,0x00,0x10,0x08,
+       0x01,0xff,0x75,0xcc,0xa4,0x00,0x01,0xff,0x75,0xcc,0xa4,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x75,0xcc,0xb0,0x00,0x01,0xff,0x75,0xcc,0xb0,0x00,0x10,0x08,0x01,0xff,
+       0x75,0xcc,0xad,0x00,0x01,0xff,0x75,0xcc,0xad,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x75,0xcc,0x83,0xcc,0x81,0x00,0x01,0xff,0x75,0xcc,0x83,0xcc,0x81,0x00,
+       0x10,0x0a,0x01,0xff,0x75,0xcc,0x84,0xcc,0x88,0x00,0x01,0xff,0x75,0xcc,0x84,0xcc,
+       0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x76,0xcc,0x83,0x00,0x01,0xff,0x76,0xcc,
+       0x83,0x00,0x10,0x08,0x01,0xff,0x76,0xcc,0xa3,0x00,0x01,0xff,0x76,0xcc,0xa3,0x00,
+       0xe0,0x04,0x02,0xcf,0x86,0xd5,0xd5,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x77,0xcc,0x80,0x00,0x01,0xff,0x77,0xcc,0x80,0x00,0x10,0x08,0x01,
+       0xff,0x77,0xcc,0x81,0x00,0x01,0xff,0x77,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x77,0xcc,0x88,0x00,0x01,0xff,0x77,0xcc,0x88,0x00,0x10,0x08,0x01,0xff,0x77,
+       0xcc,0x87,0x00,0x01,0xff,0x77,0xcc,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x77,0xcc,0xa3,0x00,0x01,0xff,0x77,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x78,
+       0xcc,0x87,0x00,0x01,0xff,0x78,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x78,
+       0xcc,0x88,0x00,0x01,0xff,0x78,0xcc,0x88,0x00,0x10,0x08,0x01,0xff,0x79,0xcc,0x87,
+       0x00,0x01,0xff,0x79,0xcc,0x87,0x00,0xd3,0x33,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x7a,0xcc,0x82,0x00,0x01,0xff,0x7a,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x7a,
+       0xcc,0xa3,0x00,0x01,0xff,0x7a,0xcc,0xa3,0x00,0xe1,0x7e,0x73,0x10,0x08,0x01,0xff,
+       0x7a,0xcc,0xb1,0x00,0x01,0xff,0x7a,0xcc,0xb1,0x00,0xd2,0x13,0xe1,0x8b,0x73,0x10,
+       0x08,0x01,0xff,0x77,0xcc,0x8a,0x00,0x01,0xff,0x79,0xcc,0x8a,0x00,0x51,0x04,0x0a,
+       0x00,0x10,0x07,0x0a,0xff,0x73,0x73,0x00,0x0a,0x00,0xd4,0x98,0xd3,0x48,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x61,0xcc,0xa3,0x00,0x01,0xff,0x61,0xcc,0xa3,0x00,
+       0x10,0x08,0x01,0xff,0x61,0xcc,0x89,0x00,0x01,0xff,0x61,0xcc,0x89,0x00,0xd1,0x14,
+       0x10,0x0a,0x01,0xff,0x61,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,
+       0x81,0x00,0x10,0x0a,0x01,0xff,0x61,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x61,0xcc,
+       0x82,0xcc,0x80,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x61,0xcc,0x82,0xcc,
+       0x89,0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,0x89,0x00,0x10,0x0a,0x01,0xff,0x61,0xcc,
+       0x82,0xcc,0x83,0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,0x83,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x61,0xcc,0xa3,0xcc,0x82,0x00,0x01,0xff,0x61,0xcc,0xa3,0xcc,0x82,0x00,
+       0x10,0x0a,0x01,0xff,0x61,0xcc,0x86,0xcc,0x81,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,
+       0x81,0x00,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x61,0xcc,0x86,0xcc,
+       0x80,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x61,0xcc,
+       0x86,0xcc,0x89,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x89,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x61,0xcc,0x86,0xcc,0x83,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x83,0x00,
+       0x10,0x0a,0x01,0xff,0x61,0xcc,0xa3,0xcc,0x86,0x00,0x01,0xff,0x61,0xcc,0xa3,0xcc,
+       0x86,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,0xa3,0x00,0x01,0xff,
+       0x65,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0x89,0x00,0x01,0xff,0x65,0xcc,
+       0x89,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,0x83,0x00,0x01,0xff,0x65,0xcc,
+       0x83,0x00,0x10,0x0a,0x01,0xff,0x65,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x65,0xcc,
+       0x82,0xcc,0x81,0x00,0xcf,0x86,0xe5,0x31,0x01,0xd4,0x90,0xd3,0x50,0xd2,0x28,0xd1,
+       0x14,0x10,0x0a,0x01,0xff,0x65,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x65,0xcc,0x82,
+       0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x65,0xcc,0x82,0xcc,0x89,0x00,0x01,0xff,0x65,
+       0xcc,0x82,0xcc,0x89,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x65,0xcc,0x82,0xcc,0x83,
+       0x00,0x01,0xff,0x65,0xcc,0x82,0xcc,0x83,0x00,0x10,0x0a,0x01,0xff,0x65,0xcc,0xa3,
+       0xcc,0x82,0x00,0x01,0xff,0x65,0xcc,0xa3,0xcc,0x82,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x69,0xcc,0x89,0x00,0x01,0xff,0x69,0xcc,0x89,0x00,0x10,0x08,0x01,
+       0xff,0x69,0xcc,0xa3,0x00,0x01,0xff,0x69,0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x6f,0xcc,0xa3,0x00,0x01,0xff,0x6f,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x6f,
+       0xcc,0x89,0x00,0x01,0xff,0x6f,0xcc,0x89,0x00,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,
+       0x0a,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x81,
+       0x00,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,0x82,
+       0xcc,0x80,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x89,0x00,0x01,
+       0xff,0x6f,0xcc,0x82,0xcc,0x89,0x00,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x83,
+       0x00,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x83,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,
+       0xff,0x6f,0xcc,0xa3,0xcc,0x82,0x00,0x01,0xff,0x6f,0xcc,0xa3,0xcc,0x82,0x00,0x10,
+       0x0a,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x81,
+       0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x80,0x00,0x01,0xff,0x6f,
+       0xcc,0x9b,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x89,0x00,0x01,
+       0xff,0x6f,0xcc,0x9b,0xcc,0x89,0x00,0xd4,0x98,0xd3,0x48,0xd2,0x28,0xd1,0x14,0x10,
+       0x0a,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x83,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x83,
+       0x00,0x10,0x0a,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0xa3,0x00,0x01,0xff,0x6f,0xcc,0x9b,
+       0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,0xa3,0x00,0x01,0xff,0x75,
+       0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,0x89,0x00,0x01,0xff,0x75,0xcc,0x89,
+       0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x81,0x00,0x01,
+       0xff,0x75,0xcc,0x9b,0xcc,0x81,0x00,0x10,0x0a,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x80,
+       0x00,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x80,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x75,
+       0xcc,0x9b,0xcc,0x89,0x00,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x89,0x00,0x10,0x0a,0x01,
+       0xff,0x75,0xcc,0x9b,0xcc,0x83,0x00,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x83,0x00,0xd3,
+       0x44,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x75,0xcc,0x9b,0xcc,0xa3,0x00,0x01,
+       0xff,0x75,0xcc,0x9b,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x79,0xcc,0x80,0x00,0x01,
+       0xff,0x79,0xcc,0x80,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x79,0xcc,0xa3,0x00,0x01,
+       0xff,0x79,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x79,0xcc,0x89,0x00,0x01,0xff,0x79,
+       0xcc,0x89,0x00,0xd2,0x1c,0xd1,0x10,0x10,0x08,0x01,0xff,0x79,0xcc,0x83,0x00,0x01,
+       0xff,0x79,0xcc,0x83,0x00,0x10,0x08,0x0a,0xff,0xe1,0xbb,0xbb,0x00,0x0a,0x00,0xd1,
+       0x0c,0x10,0x08,0x0a,0xff,0xe1,0xbb,0xbd,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xe1,
+       0xbb,0xbf,0x00,0x0a,0x00,0xe1,0xbf,0x02,0xe0,0xa1,0x01,0xcf,0x86,0xd5,0xc6,0xd4,
+       0x6c,0xd3,0x18,0xe2,0x8a,0x73,0xe1,0x73,0x73,0x10,0x09,0x01,0xff,0xce,0xb1,0xcc,
+       0x93,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xce,0xb1,0xcc,0x93,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0x00,0x10,0x0b,0x01,
+       0xff,0xce,0xb1,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x80,
+       0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,
+       0xce,0xb1,0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcd,
+       0x82,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcd,0x82,0x00,0xd3,0x18,0xe2,0xc6,0x73,
+       0xe1,0xaf,0x73,0x10,0x09,0x01,0xff,0xce,0xb5,0xcc,0x93,0x00,0x01,0xff,0xce,0xb5,
+       0xcc,0x94,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb5,0xcc,0x93,0x00,
+       0x01,0xff,0xce,0xb5,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xb5,0xcc,0x93,0xcc,
+       0x80,0x00,0x01,0xff,0xce,0xb5,0xcc,0x94,0xcc,0x80,0x00,0x91,0x16,0x10,0x0b,0x01,
+       0xff,0xce,0xb5,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xb5,0xcc,0x94,0xcc,0x81,
+       0x00,0x00,0x00,0xd4,0x6c,0xd3,0x18,0xe2,0xf0,0x73,0xe1,0xd9,0x73,0x10,0x09,0x01,
+       0xff,0xce,0xb7,0xcc,0x93,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0x00,0xd2,0x28,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0xce,0xb7,0xcc,0x93,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,
+       0x00,0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb7,
+       0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,
+       0x81,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,
+       0xb7,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcd,0x82,0x00,0xd3,
+       0x18,0xe2,0x2c,0x74,0xe1,0x15,0x74,0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,0x93,0x00,
+       0x01,0xff,0xce,0xb9,0xcc,0x94,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,
+       0xb9,0xcc,0x93,0x00,0x01,0xff,0xce,0xb9,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,
+       0xb9,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb9,0xcc,0x94,0xcc,0x80,0x00,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xce,0xb9,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xb9,
+       0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0xb9,0xcc,0x93,0xcd,0x82,0x00,
+       0x01,0xff,0xce,0xb9,0xcc,0x94,0xcd,0x82,0x00,0xcf,0x86,0xd5,0xac,0xd4,0x5a,0xd3,
+       0x18,0xe2,0x69,0x74,0xe1,0x52,0x74,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x93,0x00,
+       0x01,0xff,0xce,0xbf,0xcc,0x94,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,
+       0xbf,0xcc,0x93,0x00,0x01,0xff,0xce,0xbf,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,
+       0xbf,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xbf,0xcc,0x94,0xcc,0x80,0x00,0x91,
+       0x16,0x10,0x0b,0x01,0xff,0xce,0xbf,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xbf,
+       0xcc,0x94,0xcc,0x81,0x00,0x00,0x00,0xd3,0x18,0xe2,0x93,0x74,0xe1,0x7c,0x74,0x10,
+       0x09,0x01,0xff,0xcf,0x85,0xcc,0x93,0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0x00,0xd2,
+       0x1c,0xd1,0x0d,0x10,0x04,0x00,0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0x00,0x10,0x04,
+       0x00,0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x0f,0x10,0x04,0x00,
+       0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0xcc,0x81,0x00,0x10,0x04,0x00,0x00,0x01,0xff,
+       0xcf,0x85,0xcc,0x94,0xcd,0x82,0x00,0xe4,0x4f,0x75,0xd3,0x18,0xe2,0xce,0x74,0xe1,
+       0xb7,0x74,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x93,0x00,0x01,0xff,0xcf,0x89,0xcc,
+       0x94,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x93,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x80,
+       0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,
+       0xcf,0x89,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x81,0x00,
+       0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xcf,0x89,0xcc,
+       0x94,0xcd,0x82,0x00,0xe0,0xdd,0x02,0xcf,0x86,0xe5,0x91,0x01,0xd4,0xc8,0xd3,0x64,
+       0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xce,0xb9,0x00,0x01,
+       0xff,0xce,0xb1,0xcc,0x94,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xce,0xb1,0xcc,0x93,
+       0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x80,0xce,0xb9,0x00,
+       0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcc,0x81,0xce,0xb9,0x00,0x01,
+       0xff,0xce,0xb1,0xcc,0x94,0xcc,0x81,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xce,0xb1,
+       0xcc,0x93,0xcd,0x82,0xce,0xb9,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcd,0x82,0xce,
+       0xb9,0x00,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xce,0xb9,
+       0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xce,0xb1,
+       0xcc,0x93,0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x80,0xce,
+       0xb9,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcc,0x81,0xce,0xb9,
+       0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x81,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,
+       0xce,0xb1,0xcc,0x93,0xcd,0x82,0xce,0xb9,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcd,
+       0x82,0xce,0xb9,0x00,0xd3,0x64,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb7,
+       0xcc,0x93,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xce,0xb9,0x00,0x10,0x0d,
+       0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xcc,
+       0x94,0xcc,0x80,0xce,0xb9,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,
+       0xcc,0x81,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcc,0x81,0xce,0xb9,0x00,
+       0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcd,0x82,0xce,0xb9,0x00,0x01,0xff,0xce,
+       0xb7,0xcc,0x94,0xcd,0x82,0xce,0xb9,0x00,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,
+       0xce,0xb7,0xcc,0x93,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xce,0xb9,0x00,
+       0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xce,
+       0xb7,0xcc,0x94,0xcc,0x80,0xce,0xb9,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb7,
+       0xcc,0x93,0xcc,0x81,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcc,0x81,0xce,
+       0xb9,0x00,0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcd,0x82,0xce,0xb9,0x00,0x01,
+       0xff,0xce,0xb7,0xcc,0x94,0xcd,0x82,0xce,0xb9,0x00,0xd4,0xc8,0xd3,0x64,0xd2,0x30,
+       0xd1,0x16,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xce,0xb9,0x00,0x01,0xff,0xcf,
+       0x89,0xcc,0x94,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x80,
+       0xce,0xb9,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x80,0xce,0xb9,0x00,0xd1,0x1a,
+       0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x81,0xce,0xb9,0x00,0x01,0xff,0xcf,
+       0x89,0xcc,0x94,0xcc,0x81,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,
+       0xcd,0x82,0xce,0xb9,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcd,0x82,0xce,0xb9,0x00,
+       0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xce,0xb9,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,
+       0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x80,0xce,0xb9,0x00,
+       0xd1,0x1a,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x81,0xce,0xb9,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0xcc,0x81,0xce,0xb9,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,
+       0xcc,0x93,0xcd,0x82,0xce,0xb9,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcd,0x82,0xce,
+       0xb9,0x00,0xd3,0x49,0xd2,0x26,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb1,0xcc,0x86,
+       0x00,0x01,0xff,0xce,0xb1,0xcc,0x84,0x00,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x80,
+       0xce,0xb9,0x00,0x01,0xff,0xce,0xb1,0xce,0xb9,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,
+       0xce,0xb1,0xcc,0x81,0xce,0xb9,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xce,0xb1,0xcd,
+       0x82,0x00,0x01,0xff,0xce,0xb1,0xcd,0x82,0xce,0xb9,0x00,0xd2,0x24,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xce,0xb1,0xcc,0x86,0x00,0x01,0xff,0xce,0xb1,0xcc,0x84,0x00,0x10,
+       0x09,0x01,0xff,0xce,0xb1,0xcc,0x80,0x00,0x01,0xff,0xce,0xb1,0xcc,0x81,0x00,0xe1,
+       0x73,0x75,0x10,0x09,0x01,0xff,0xce,0xb1,0xce,0xb9,0x00,0x01,0xff,0x20,0xcc,0x93,
+       0x00,0xcf,0x86,0xd5,0xc2,0xd4,0x83,0xd3,0x49,0xd2,0x26,0xd1,0x12,0x10,0x08,0x01,
+       0xff,0x20,0xcd,0x82,0x00,0x01,0xff,0x20,0xcc,0x88,0xcd,0x82,0x00,0x10,0x0b,0x01,
+       0xff,0xce,0xb7,0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xce,0xb7,0xce,0xb9,0x00,0xd1,
+       0x0f,0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,0x81,0xce,0xb9,0x00,0x00,0x00,0x10,0x09,
+       0x01,0xff,0xce,0xb7,0xcd,0x82,0x00,0x01,0xff,0xce,0xb7,0xcd,0x82,0xce,0xb9,0x00,
+       0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb5,0xcc,0x80,0x00,0x01,0xff,0xce,
+       0xb5,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0xb7,0xcc,0x80,0x00,0x01,0xff,0xce,
+       0xb7,0xcc,0x81,0x00,0xe1,0x82,0x75,0x10,0x09,0x01,0xff,0xce,0xb7,0xce,0xb9,0x00,
+       0x01,0xff,0x20,0xcc,0x93,0xcc,0x80,0x00,0xd3,0x18,0xe2,0xa8,0x75,0xe1,0x91,0x75,
+       0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,0x86,0x00,0x01,0xff,0xce,0xb9,0xcc,0x84,0x00,
+       0xe2,0xcc,0x75,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,0x86,0x00,0x01,0xff,
+       0xce,0xb9,0xcc,0x84,0x00,0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,0x80,0x00,0x01,0xff,
+       0xce,0xb9,0xcc,0x81,0x00,0xd4,0x52,0xd3,0x18,0xe2,0xef,0x75,0xe1,0xd8,0x75,0x10,
+       0x09,0x01,0xff,0xcf,0x85,0xcc,0x86,0x00,0x01,0xff,0xcf,0x85,0xcc,0x84,0x00,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x86,0x00,0x01,0xff,0xcf,0x85,
+       0xcc,0x84,0x00,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x80,0x00,0x01,0xff,0xcf,0x85,
+       0xcc,0x81,0x00,0xe1,0x10,0x76,0x10,0x09,0x01,0xff,0xcf,0x81,0xcc,0x94,0x00,0x01,
+       0xff,0x20,0xcc,0x88,0xcc,0x80,0x00,0xd3,0x3b,0xd2,0x18,0x51,0x04,0x00,0x00,0x10,
+       0x0b,0x01,0xff,0xcf,0x89,0xcc,0x80,0xce,0xb9,0x00,0x01,0xff,0xcf,0x89,0xce,0xb9,
+       0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x81,0xce,0xb9,0x00,0x00,0x00,
+       0x10,0x09,0x01,0xff,0xcf,0x89,0xcd,0x82,0x00,0x01,0xff,0xcf,0x89,0xcd,0x82,0xce,
+       0xb9,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x80,0x00,0x01,
+       0xff,0xce,0xbf,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x80,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x81,0x00,0xe1,0x1b,0x76,0x10,0x09,0x01,0xff,0xcf,0x89,0xce,
+       0xb9,0x00,0x01,0xff,0x20,0xcc,0x81,0x00,0xe0,0x46,0x08,0xcf,0x86,0xe5,0x64,0x03,
+       0xe4,0x51,0x02,0xe3,0x39,0x7d,0xd2,0x49,0xd1,0x14,0xe0,0xe6,0x76,0xcf,0x86,0xe5,
+       0x54,0x76,0xe4,0x2f,0x76,0x63,0x18,0x76,0x01,0xff,0x20,0x00,0xe0,0xc2,0x78,0xcf,
+       0x86,0xd5,0x18,0xe4,0x19,0x78,0xe3,0xe8,0x77,0xe2,0xcf,0x77,0xe1,0xc2,0x77,0x10,
+       0x06,0x01,0xff,0x30,0x00,0x01,0xff,0x31,0x00,0xe4,0x7b,0x78,0x53,0x04,0x01,0x00,
+       0xe2,0x6a,0x78,0xe1,0x61,0x78,0x10,0x07,0x01,0xff,0x72,0x73,0x00,0x01,0x00,0xe1,
+       0xe3,0x01,0xe0,0x4c,0x01,0xcf,0x86,0xd5,0xa1,0xd4,0x5a,0xd3,0x39,0xd2,0x1e,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x61,0x2f,0x63,0x00,0x01,0xff,0x61,0x2f,0x73,0x00,0x10,
+       0x06,0x01,0xff,0x63,0x00,0x01,0xff,0xc2,0xb0,0x63,0x00,0xd1,0x0c,0x10,0x04,0x01,
+       0x00,0x01,0xff,0x63,0x2f,0x6f,0x00,0x10,0x08,0x01,0xff,0x63,0x2f,0x75,0x00,0x01,
+       0xff,0xc9,0x9b,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,0xc2,0xb0,
+       0x66,0x00,0x10,0x06,0x01,0xff,0x67,0x00,0x01,0xff,0x68,0x00,0x61,0x01,0x79,0x01,
+       0xff,0x68,0x00,0xd3,0x27,0xd2,0x12,0x51,0x06,0x01,0xff,0x69,0x00,0x10,0x06,0x01,
+       0xff,0x6c,0x00,0x01,0xff,0x6c,0x00,0xd1,0x0a,0x10,0x04,0x01,0x00,0x01,0xff,0x6e,
+       0x00,0x10,0x07,0x01,0xff,0x6e,0x6f,0x00,0x01,0x00,0xd2,0x16,0xd1,0x0a,0x10,0x04,
+       0x01,0x00,0x01,0xff,0x70,0x00,0x10,0x06,0x01,0xff,0x71,0x00,0x01,0xff,0x72,0x00,
+       0x11,0x06,0x01,0xff,0x72,0x00,0x01,0x00,0xd4,0x56,0xd3,0x2f,0xd2,0x1a,0xd1,0x0f,
+       0x10,0x07,0x01,0xff,0x73,0x6d,0x00,0x01,0xff,0x74,0x65,0x6c,0x00,0x10,0x07,0x01,
+       0xff,0x74,0x6d,0x00,0x01,0x00,0xd1,0x0a,0x10,0x06,0x01,0xff,0x7a,0x00,0x01,0x00,
+       0x10,0x07,0x01,0xff,0xcf,0x89,0x00,0x01,0x00,0xd2,0x18,0xd1,0x0a,0x10,0x06,0x01,
+       0xff,0x7a,0x00,0x01,0x00,0x10,0x06,0x01,0xff,0x6b,0x00,0x01,0xff,0x61,0xcc,0x8a,
+       0x00,0xe1,0x11,0x79,0x10,0x06,0x01,0xff,0x62,0x00,0x01,0xff,0x63,0x00,0xd3,0x1d,
+       0xe2,0x22,0x79,0xd1,0x0c,0x10,0x06,0x01,0xff,0x65,0x00,0x01,0xff,0x66,0x00,0x10,
+       0x08,0x01,0xff,0xe2,0x85,0x8e,0x00,0x01,0xff,0x6d,0x00,0xd2,0x19,0xd1,0x0d,0x10,
+       0x07,0x01,0xff,0xd7,0x93,0x00,0x04,0xff,0x69,0x00,0x10,0x04,0x04,0x00,0x07,0xff,
+       0x66,0x61,0x78,0x00,0xd1,0x0e,0x10,0x07,0x08,0xff,0xcf,0x80,0x00,0x06,0xff,0xce,
+       0xb3,0x00,0x10,0x07,0x06,0xff,0xce,0xb3,0x00,0x06,0xff,0xcf,0x80,0x00,0xcf,0x86,
+       0xd5,0x23,0xe4,0x66,0x79,0xe3,0x45,0x79,0xd2,0x10,0x91,0x0c,0x10,0x08,0x06,0xff,
+       0xe2,0x88,0x91,0x00,0x06,0x00,0x06,0x00,0xe1,0x28,0x79,0x10,0x04,0x06,0x00,0x06,
+       0xff,0x64,0x00,0xe4,0x51,0x7a,0xd3,0x3a,0xd2,0x1c,0xd1,0x0d,0x10,0x06,0x01,0xff,
+       0x69,0x00,0x01,0xff,0x69,0x69,0x00,0x10,0x08,0x01,0xff,0x69,0x69,0x69,0x00,0x01,
+       0xff,0x69,0x76,0x00,0xd1,0x0d,0x10,0x06,0x01,0xff,0x76,0x00,0x01,0xff,0x76,0x69,
+       0x00,0x10,0x08,0x01,0xff,0x76,0x69,0x69,0x00,0x01,0xff,0x76,0x69,0x69,0x69,0x00,
+       0xd2,0x1c,0xd1,0x0d,0x10,0x07,0x01,0xff,0x69,0x78,0x00,0x01,0xff,0x78,0x00,0x10,
+       0x07,0x01,0xff,0x78,0x69,0x00,0x01,0xff,0x78,0x69,0x69,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x6c,0x00,0x01,0xff,0x63,0x00,0x10,0x06,0x01,0xff,0x64,0x00,0x01,0xff,
+       0x6d,0x00,0xe0,0xbc,0x7a,0xcf,0x86,0xe5,0x9b,0x7a,0xe4,0x7a,0x7a,0xe3,0x63,0x7a,
+       0xe2,0x56,0x7a,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x04,0xff,0xe2,0x86,0x84,
+       0x00,0xe3,0xad,0x82,0xe2,0x7a,0x82,0xd1,0x0c,0xe0,0x6a,0x7e,0xcf,0x86,0x65,0x4b,
+       0x7e,0x01,0x00,0xd0,0x98,0xcf,0x86,0xd5,0x1e,0xe4,0xe0,0x7f,0xe3,0xa7,0x7f,0xe2,
+       0x82,0x7f,0xe1,0x6f,0x7f,0x10,0x09,0x01,0xff,0x28,0x31,0x33,0x29,0x00,0x01,0xff,
+       0x28,0x31,0x34,0x29,0x00,0xd4,0x19,0xe3,0x81,0x80,0xe2,0x60,0x80,0xe1,0x4f,0x80,
+       0x10,0x08,0x01,0xff,0x28,0x65,0x29,0x00,0x01,0xff,0x28,0x66,0x29,0x00,0xd3,0x2f,
+       0xd2,0x13,0xe1,0xb8,0x80,0x10,0x08,0x01,0xff,0x28,0x75,0x29,0x00,0x01,0xff,0x28,
+       0x76,0x29,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x79,0x29,0x00,0x01,0xff,0x28,
+       0x7a,0x29,0x00,0x10,0x06,0x01,0xff,0x61,0x00,0x01,0xff,0x62,0x00,0xd2,0x18,0xd1,
+       0x0c,0x10,0x06,0x01,0xff,0x63,0x00,0x01,0xff,0x64,0x00,0x10,0x06,0x01,0xff,0x65,
+       0x00,0x01,0xff,0x66,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x67,0x00,0x01,0xff,0x68,
+       0x00,0x10,0x06,0x01,0xff,0x69,0x00,0x01,0xff,0x6a,0x00,0xcf,0x86,0xe5,0x75,0x81,
+       0xe4,0x14,0x81,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x6b,0x00,0x01,
+       0xff,0x6c,0x00,0x10,0x06,0x01,0xff,0x6d,0x00,0x01,0xff,0x6e,0x00,0xd1,0x0c,0x10,
+       0x06,0x01,0xff,0x6f,0x00,0x01,0xff,0x70,0x00,0x10,0x06,0x01,0xff,0x71,0x00,0x01,
+       0xff,0x72,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x73,0x00,0x01,0xff,0x74,
+       0x00,0x10,0x06,0x01,0xff,0x75,0x00,0x01,0xff,0x76,0x00,0xd1,0x0c,0x10,0x06,0x01,
+       0xff,0x77,0x00,0x01,0xff,0x78,0x00,0x10,0x06,0x01,0xff,0x79,0x00,0x01,0xff,0x7a,
+       0x00,0xd4,0x0c,0xe3,0xa8,0x83,0xe2,0xa1,0x83,0xcf,0x06,0x04,0x00,0xe3,0xdf,0x86,
+       0xe2,0xce,0x85,0xe1,0x36,0x02,0xe0,0x84,0x01,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb0,0xb0,0x00,0x08,0xff,
+       0xe2,0xb0,0xb1,0x00,0x10,0x08,0x08,0xff,0xe2,0xb0,0xb2,0x00,0x08,0xff,0xe2,0xb0,
+       0xb3,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb0,0xb4,0x00,0x08,0xff,0xe2,0xb0,
+       0xb5,0x00,0x10,0x08,0x08,0xff,0xe2,0xb0,0xb6,0x00,0x08,0xff,0xe2,0xb0,0xb7,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb0,0xb8,0x00,0x08,0xff,0xe2,0xb0,
+       0xb9,0x00,0x10,0x08,0x08,0xff,0xe2,0xb0,0xba,0x00,0x08,0xff,0xe2,0xb0,0xbb,0x00,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb0,0xbc,0x00,0x08,0xff,0xe2,0xb0,0xbd,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb0,0xbe,0x00,0x08,0xff,0xe2,0xb0,0xbf,0x00,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x80,0x00,0x08,0xff,0xe2,0xb1,
+       0x81,0x00,0x10,0x08,0x08,0xff,0xe2,0xb1,0x82,0x00,0x08,0xff,0xe2,0xb1,0x83,0x00,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x84,0x00,0x08,0xff,0xe2,0xb1,0x85,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x86,0x00,0x08,0xff,0xe2,0xb1,0x87,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x88,0x00,0x08,0xff,0xe2,0xb1,0x89,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x8a,0x00,0x08,0xff,0xe2,0xb1,0x8b,0x00,0xd1,0x10,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x8c,0x00,0x08,0xff,0xe2,0xb1,0x8d,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb1,0x8e,0x00,0x08,0xff,0xe2,0xb1,0x8f,0x00,0x94,0x7c,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x90,0x00,0x08,0xff,0xe2,0xb1,
+       0x91,0x00,0x10,0x08,0x08,0xff,0xe2,0xb1,0x92,0x00,0x08,0xff,0xe2,0xb1,0x93,0x00,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x94,0x00,0x08,0xff,0xe2,0xb1,0x95,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x96,0x00,0x08,0xff,0xe2,0xb1,0x97,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe2,0xb1,0x98,0x00,0x08,0xff,0xe2,0xb1,0x99,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x9a,0x00,0x08,0xff,0xe2,0xb1,0x9b,0x00,0xd1,0x10,
+       0x10,0x08,0x08,0xff,0xe2,0xb1,0x9c,0x00,0x08,0xff,0xe2,0xb1,0x9d,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb1,0x9e,0x00,0x00,0x00,0x08,0x00,0xcf,0x86,0xd5,0x07,0x64,0xb6,
+       0x83,0x08,0x00,0xd4,0x63,0xd3,0x32,0xd2,0x1b,0xd1,0x0c,0x10,0x08,0x09,0xff,0xe2,
+       0xb1,0xa1,0x00,0x09,0x00,0x10,0x07,0x09,0xff,0xc9,0xab,0x00,0x09,0xff,0xe1,0xb5,
+       0xbd,0x00,0xd1,0x0b,0x10,0x07,0x09,0xff,0xc9,0xbd,0x00,0x09,0x00,0x10,0x04,0x09,
+       0x00,0x09,0xff,0xe2,0xb1,0xa8,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x04,0x09,0x00,0x09,
+       0xff,0xe2,0xb1,0xaa,0x00,0x10,0x04,0x09,0x00,0x09,0xff,0xe2,0xb1,0xac,0x00,0xd1,
+       0x0b,0x10,0x04,0x09,0x00,0x0a,0xff,0xc9,0x91,0x00,0x10,0x07,0x0a,0xff,0xc9,0xb1,
+       0x00,0x0a,0xff,0xc9,0x90,0x00,0xd3,0x27,0xd2,0x17,0xd1,0x0b,0x10,0x07,0x0b,0xff,
+       0xc9,0x92,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xe2,0xb1,0xb3,0x00,0x0a,0x00,0x91,
+       0x0c,0x10,0x04,0x09,0x00,0x09,0xff,0xe2,0xb1,0xb6,0x00,0x09,0x00,0x52,0x04,0x0a,
+       0x00,0xd1,0x0c,0x10,0x06,0x0a,0xff,0x6a,0x00,0x0a,0xff,0x76,0x00,0x10,0x07,0x0b,
+       0xff,0xc8,0xbf,0x00,0x0b,0xff,0xc9,0x80,0x00,0xe0,0x83,0x01,0xcf,0x86,0xd5,0xc0,
+       0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0x81,0x00,
+       0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0x83,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,
+       0x08,0xff,0xe2,0xb2,0x85,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0x87,0x00,
+       0x08,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0x89,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb2,0x8b,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,
+       0xe2,0xb2,0x8d,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0x8f,0x00,0x08,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0x91,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb2,0x93,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,
+       0xe2,0xb2,0x95,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0x97,0x00,0x08,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0x99,0x00,0x08,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb2,0x9b,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,
+       0x9d,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0x9f,0x00,0x08,0x00,0xd4,0x60,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0xa1,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb2,0xa3,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,
+       0xe2,0xb2,0xa5,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0xa7,0x00,0x08,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0xa9,0x00,0x08,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb2,0xab,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,
+       0xad,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0xaf,0x00,0x08,0x00,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0xb1,0x00,0x08,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb2,0xb3,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,
+       0xb5,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0xb7,0x00,0x08,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0xb9,0x00,0x08,0x00,0x10,0x08,0x08,0xff,
+       0xe2,0xb2,0xbb,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb2,0xbd,0x00,
+       0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb2,0xbf,0x00,0x08,0x00,0xcf,0x86,0xd5,0xc0,
+       0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,0x81,0x00,
+       0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb3,0x83,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,
+       0x08,0xff,0xe2,0xb3,0x85,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb3,0x87,0x00,
+       0x08,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,0x89,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb3,0x8b,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,
+       0xe2,0xb3,0x8d,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb3,0x8f,0x00,0x08,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,0x91,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb3,0x93,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,
+       0xe2,0xb3,0x95,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb3,0x97,0x00,0x08,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,0x99,0x00,0x08,0x00,0x10,0x08,
+       0x08,0xff,0xe2,0xb3,0x9b,0x00,0x08,0x00,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,
+       0x9d,0x00,0x08,0x00,0x10,0x08,0x08,0xff,0xe2,0xb3,0x9f,0x00,0x08,0x00,0xd4,0x3b,
+       0xd3,0x1c,0x92,0x18,0xd1,0x0c,0x10,0x08,0x08,0xff,0xe2,0xb3,0xa1,0x00,0x08,0x00,
+       0x10,0x08,0x08,0xff,0xe2,0xb3,0xa3,0x00,0x08,0x00,0x08,0x00,0xd2,0x10,0x51,0x04,
+       0x08,0x00,0x10,0x04,0x08,0x00,0x0b,0xff,0xe2,0xb3,0xac,0x00,0xe1,0x02,0x81,0x10,
+       0x04,0x0b,0x00,0x0b,0xff,0xe2,0xb3,0xae,0x00,0xe3,0x07,0x81,0x92,0x10,0x51,0x04,
+       0x0b,0xe6,0x10,0x08,0x0d,0xff,0xe2,0xb3,0xb3,0x00,0x0d,0x00,0x00,0x00,0xcf,0x86,
+       0xe5,0xd2,0xa5,0xe4,0xcb,0xa5,0xd3,0x28,0xe2,0xce,0x8d,0xe1,0x8d,0x8b,0xe0,0x0b,
+       0x8a,0xcf,0x86,0xe5,0xb0,0x89,0x94,0x16,0x93,0x12,0x92,0x0e,0x91,0x0a,0x10,0x06,
+       0x01,0xff,0x20,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd2,0xd5,
+       0xd1,0x60,0xd0,0x25,0xcf,0x86,0xe5,0xfa,0x92,0xe4,0x23,0x92,0xe3,0xcc,0x91,0xe2,
+       0xa3,0x91,0xe1,0x8e,0x91,0x10,0x0a,0x01,0xff,0x28,0xe1,0x84,0x80,0x29,0x00,0x01,
+       0xff,0x28,0xe1,0x84,0x82,0x29,0x00,0xcf,0x86,0xe5,0xd4,0x94,0xd4,0x1e,0x93,0x1a,
+       0xe2,0x3e,0x94,0xe1,0x29,0x94,0x10,0x0a,0x01,0xff,0x28,0xe7,0xa5,0xad,0x29,0x00,
+       0x01,0xff,0x28,0xe4,0xbc,0x91,0x29,0x00,0x0b,0x00,0xe3,0x7d,0x94,0xe2,0x60,0x94,
+       0xe1,0x51,0x94,0x10,0x08,0x07,0xff,0x70,0x74,0x65,0x00,0x06,0xff,0x32,0x31,0x00,
+       0xd0,0x21,0xcf,0x86,0xe5,0xdb,0x96,0xe4,0x5a,0x96,0xe3,0x19,0x96,0xe2,0xf8,0x95,
+       0xe1,0xe7,0x95,0x10,0x08,0x01,0xff,0xe4,0xb8,0x80,0x00,0x01,0xff,0xe4,0xba,0x8c,
+       0x00,0xcf,0x86,0xe5,0xbb,0x98,0xe4,0x3a,0x98,0xd3,0x18,0xe2,0xd0,0x97,0xe1,0xbd,
+       0x97,0x10,0x09,0x01,0xff,0x31,0xe6,0x9c,0x88,0x00,0x01,0xff,0x32,0xe6,0x9c,0x88,
+       0x00,0xd2,0x16,0xe1,0xef,0x97,0x10,0x09,0x01,0xff,0x39,0xe6,0x9c,0x88,0x00,0x01,
+       0xff,0x31,0x30,0xe6,0x9c,0x88,0x00,0xd1,0x0f,0x10,0x07,0x07,0xff,0x68,0x67,0x00,
+       0x07,0xff,0x65,0x72,0x67,0x00,0x10,0x07,0x07,0xff,0x65,0x76,0x00,0x07,0xff,0x6c,
+       0x74,0x64,0x00,0xd1,0xd8,0xd0,0x36,0xcf,0x86,0xe5,0x9b,0x9b,0xe4,0x75,0x9a,0xe3,
+       0xf5,0x99,0xe2,0xad,0x99,0xe1,0x8a,0x99,0x10,0x14,0x01,0xff,0xe3,0x82,0xa2,0xe3,
+       0x83,0x8f,0xe3,0x82,0x9a,0xe3,0x83,0xbc,0xe3,0x83,0x88,0x00,0x01,0xff,0xe3,0x82,
+       0xa2,0xe3,0x83,0xab,0xe3,0x83,0x95,0xe3,0x82,0xa1,0x00,0xcf,0x86,0xd5,0x2e,0xe4,
+       0x85,0x9e,0xe3,0xff,0x9d,0xe2,0xc0,0x9d,0xe1,0xa0,0x9d,0x10,0x14,0x01,0xff,0xe3,
+       0x83,0x9b,0xe3,0x82,0x9a,0xe3,0x83,0xb3,0xe3,0x83,0x88,0xe3,0x82,0x99,0x00,0x01,
+       0xff,0xe3,0x83,0x9b,0xe3,0x83,0xbc,0xe3,0x83,0xab,0x00,0xd4,0x1b,0xe3,0x6c,0x9f,
+       0xe2,0x43,0x9f,0xe1,0x2e,0x9f,0x10,0x09,0x01,0xff,0x38,0xe7,0x82,0xb9,0x00,0x01,
+       0xff,0x39,0xe7,0x82,0xb9,0x00,0xd3,0x32,0xd2,0x20,0xd1,0x12,0x10,0x0a,0x01,0xff,
+       0x32,0x34,0xe7,0x82,0xb9,0x00,0x01,0xff,0x68,0x70,0x61,0x00,0x10,0x07,0x01,0xff,
+       0x64,0x61,0x00,0x01,0xff,0x61,0x75,0x00,0xe1,0xb0,0x9f,0x10,0x08,0x01,0xff,0x62,
+       0x61,0x72,0x00,0x01,0xff,0x6f,0x76,0x00,0xe2,0xce,0x9f,0xd1,0x10,0x10,0x08,0x07,
+       0xff,0x64,0x6d,0x32,0x00,0x07,0xff,0x64,0x6d,0x33,0x00,0x10,0x07,0x07,0xff,0x69,
+       0x75,0x00,0x01,0xff,0xe5,0xb9,0xb3,0xe6,0x88,0x90,0x00,0xe0,0x54,0x01,0xcf,0x86,
+       0xd5,0xa0,0xd4,0x6b,0xd3,0x39,0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0x70,0x61,
+       0x00,0x01,0xff,0x6e,0x61,0x00,0x10,0x08,0x01,0xff,0xce,0xbc,0x61,0x00,0x01,0xff,
+       0x6d,0x61,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0x6b,0x61,0x00,0x01,0xff,0x6b,0x62,
+       0x00,0x10,0x07,0x01,0xff,0x6d,0x62,0x00,0x01,0xff,0x67,0x62,0x00,0xd2,0x1f,0xd1,
+       0x11,0x10,0x08,0x01,0xff,0x63,0x61,0x6c,0x00,0x01,0xff,0x6b,0x63,0x61,0x6c,0x00,
+       0x10,0x07,0x01,0xff,0x70,0x66,0x00,0x01,0xff,0x6e,0x66,0x00,0xe1,0xeb,0x9f,0x10,
+       0x08,0x01,0xff,0xce,0xbc,0x66,0x00,0x01,0xff,0xce,0xbc,0x67,0x00,0xe3,0x23,0xa0,
+       0xd2,0x1f,0xd1,0x0f,0x10,0x07,0x01,0xff,0x68,0x7a,0x00,0x01,0xff,0x6b,0x68,0x7a,
+       0x00,0x10,0x08,0x01,0xff,0x6d,0x68,0x7a,0x00,0x01,0xff,0x67,0x68,0x7a,0x00,0xe1,
+       0xf5,0x9f,0x10,0x08,0x01,0xff,0x74,0x68,0x7a,0x00,0x01,0xff,0xce,0xbc,0x6c,0x00,
+       0xd4,0x4a,0xd3,0x15,0xe2,0x47,0xa0,0xe1,0x36,0xa0,0x10,0x08,0x01,0xff,0x63,0x6d,
+       0x32,0x00,0x01,0xff,0x6d,0x32,0x00,0xd2,0x22,0xd1,0x12,0x10,0x0b,0x01,0xff,0x6d,
+       0xe2,0x88,0x95,0x73,0x32,0x00,0x01,0xff,0x70,0x61,0x00,0x10,0x08,0x01,0xff,0x6b,
+       0x70,0x61,0x00,0x01,0xff,0x6d,0x70,0x61,0x00,0xe1,0x63,0xa0,0x10,0x08,0x01,0xff,
+       0x67,0x70,0x61,0x00,0x01,0xff,0x72,0x61,0x64,0x00,0xd3,0x2e,0xd2,0x11,0xe1,0x77,
+       0xa0,0x10,0x07,0x01,0xff,0x70,0x73,0x00,0x01,0xff,0x6e,0x73,0x00,0xd1,0x0e,0x10,
+       0x07,0x01,0xff,0x70,0x76,0x00,0x01,0xff,0x6e,0x76,0x00,0x10,0x08,0x01,0xff,0xce,
+       0xbc,0x76,0x00,0x01,0xff,0x6d,0x76,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,
+       0x6b,0x76,0x00,0x01,0xff,0x6d,0x76,0x00,0x10,0x07,0x01,0xff,0x70,0x77,0x00,0x01,
+       0xff,0x6e,0x77,0x00,0xd1,0x0f,0x10,0x08,0x01,0xff,0xce,0xbc,0x77,0x00,0x01,0xff,
+       0x6d,0x77,0x00,0x10,0x07,0x01,0xff,0x6b,0x77,0x00,0x01,0xff,0x6d,0x77,0x00,0xcf,
+       0x86,0xe5,0x6a,0xa1,0xd4,0x79,0xd3,0x41,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x6b,0xcf,0x89,0x00,0x01,0xff,0x6d,0xcf,0x89,0x00,0x10,0x09,0x01,0xff,0x61,0x2e,
+       0x6d,0x2e,0x00,0x01,0xff,0x62,0x71,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0x63,0x63,
+       0x00,0x01,0xff,0x63,0x64,0x00,0x10,0x0b,0x01,0xff,0x63,0xe2,0x88,0x95,0x6b,0x67,
+       0x00,0x01,0xff,0x63,0x6f,0x2e,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0x64,
+       0x62,0x00,0x01,0xff,0x67,0x79,0x00,0x10,0x07,0x01,0xff,0x68,0x61,0x00,0x01,0xff,
+       0x68,0x70,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0x69,0x6e,0x00,0x01,0xff,0x6b,0x6b,
+       0x00,0x10,0x07,0x01,0xff,0x6b,0x6d,0x00,0x01,0xff,0x6b,0x74,0x00,0xd3,0x2f,0xd2,
+       0x11,0xe1,0x82,0xa0,0x10,0x07,0x01,0xff,0x6c,0x6d,0x00,0x01,0xff,0x6c,0x6e,0x00,
+       0xd1,0x0f,0x10,0x07,0x01,0xff,0x6d,0x62,0x00,0x01,0xff,0x6d,0x69,0x6c,0x00,0x10,
+       0x08,0x01,0xff,0x6d,0x6f,0x6c,0x00,0x01,0xff,0x70,0x68,0x00,0xd2,0x1f,0xd1,0x11,
+       0x10,0x09,0x01,0xff,0x70,0x2e,0x6d,0x2e,0x00,0x01,0xff,0x70,0x70,0x6d,0x00,0x10,
+       0x07,0x01,0xff,0x70,0x72,0x00,0x01,0xff,0x73,0x72,0x00,0xd1,0x0e,0x10,0x07,0x01,
+       0xff,0x73,0x76,0x00,0x01,0xff,0x77,0x62,0x00,0x10,0x0a,0x07,0xff,0x76,0xe2,0x88,
+       0x95,0x6d,0x00,0x07,0xff,0x61,0xe2,0x88,0x95,0x6d,0x00,0xe2,0x7d,0x08,0xd1,0x0b,
+       0xe0,0x11,0xa2,0xcf,0x86,0xcf,0x06,0x01,0x00,0xe0,0xa4,0xa7,0xcf,0x86,0xe5,0x89,
+       0x05,0xd4,0x06,0xcf,0x06,0x04,0x00,0xd3,0x0c,0xe2,0xf8,0xa2,0xe1,0x8f,0xa2,0xcf,
+       0x06,0x04,0x00,0xe2,0xdb,0x01,0xe1,0x26,0x01,0xd0,0x09,0xcf,0x86,0x65,0xf4,0xa2,
+       0x0a,0x00,0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,
+       0x0a,0xff,0xea,0x99,0x81,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0x83,0x00,
+       0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x99,0x85,0x00,0x0a,0x00,0x10,0x08,
+       0x0a,0xff,0xea,0x99,0x87,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,
+       0xea,0x99,0x89,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0x8b,0x00,0x0a,0x00,
+       0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x99,0x8d,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x99,0x8f,0x00,0x0a,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,
+       0xea,0x99,0x91,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0x93,0x00,0x0a,0x00,
+       0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x99,0x95,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x99,0x97,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x99,
+       0x99,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0x9b,0x00,0x0a,0x00,0xd1,0x0c,
+       0x10,0x08,0x0a,0xff,0xea,0x99,0x9d,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,
+       0x9f,0x00,0x0a,0x00,0xe4,0x5d,0xa2,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0c,
+       0xff,0xea,0x99,0xa1,0x00,0x0c,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0xa3,0x00,0x0a,
+       0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x99,0xa5,0x00,0x0a,0x00,0x10,0x08,0x0a,
+       0xff,0xea,0x99,0xa7,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,
+       0x99,0xa9,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x99,0xab,0x00,0x0a,0x00,0xe1,
+       0x0c,0xa2,0x10,0x08,0x0a,0xff,0xea,0x99,0xad,0x00,0x0a,0x00,0xe0,0x3f,0xa2,0xcf,
+       0x86,0x95,0xab,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,
+       0x9a,0x81,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9a,0x83,0x00,0x0a,0x00,0xd1,
+       0x0c,0x10,0x08,0x0a,0xff,0xea,0x9a,0x85,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,
+       0x9a,0x87,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9a,0x89,
+       0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9a,0x8b,0x00,0x0a,0x00,0xd1,0x0c,0x10,
+       0x08,0x0a,0xff,0xea,0x9a,0x8d,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9a,0x8f,
+       0x00,0x0a,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9a,0x91,
+       0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9a,0x93,0x00,0x0a,0x00,0xd1,0x0c,0x10,
+       0x08,0x0a,0xff,0xea,0x9a,0x95,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9a,0x97,
+       0x00,0x0a,0x00,0xe2,0x92,0xa1,0xd1,0x0c,0x10,0x08,0x10,0xff,0xea,0x9a,0x99,0x00,
+       0x10,0x00,0x10,0x08,0x10,0xff,0xea,0x9a,0x9b,0x00,0x10,0x00,0x0b,0x00,0xe1,0x20,
+       0x02,0xd0,0xb9,0xcf,0x86,0xd5,0x07,0x64,0xa8,0xa1,0x08,0x00,0xd4,0x58,0xd3,0x28,
+       0xd2,0x10,0x51,0x04,0x09,0x00,0x10,0x08,0x0a,0xff,0xea,0x9c,0xa3,0x00,0x0a,0x00,
+       0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9c,0xa5,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x9c,0xa7,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9c,
+       0xa9,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9c,0xab,0x00,0x0a,0x00,0xd1,0x0c,
+       0x10,0x08,0x0a,0xff,0xea,0x9c,0xad,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9c,
+       0xaf,0x00,0x0a,0x00,0xd3,0x28,0xd2,0x10,0x51,0x04,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x9c,0xb3,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9c,0xb5,0x00,
+       0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9c,0xb7,0x00,0x0a,0x00,0xd2,0x18,0xd1,0x0c,
+       0x10,0x08,0x0a,0xff,0xea,0x9c,0xb9,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9c,
+       0xbb,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9c,0xbd,0x00,0x0a,0x00,
+       0x10,0x08,0x0a,0xff,0xea,0x9c,0xbf,0x00,0x0a,0x00,0xcf,0x86,0xd5,0xc0,0xd4,0x60,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0x81,0x00,0x0a,0x00,
+       0x10,0x08,0x0a,0xff,0xea,0x9d,0x83,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,
+       0xea,0x9d,0x85,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0x87,0x00,0x0a,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0x89,0x00,0x0a,0x00,0x10,0x08,
+       0x0a,0xff,0xea,0x9d,0x8b,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,
+       0x8d,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0x8f,0x00,0x0a,0x00,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0x91,0x00,0x0a,0x00,0x10,0x08,
+       0x0a,0xff,0xea,0x9d,0x93,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,
+       0x95,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0x97,0x00,0x0a,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0x99,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x9d,0x9b,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0x9d,0x00,
+       0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0x9f,0x00,0x0a,0x00,0xd4,0x60,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0xa1,0x00,0x0a,0x00,0x10,0x08,
+       0x0a,0xff,0xea,0x9d,0xa3,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,
+       0xa5,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0xa7,0x00,0x0a,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0xa9,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,
+       0xea,0x9d,0xab,0x00,0x0a,0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0xad,0x00,
+       0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0xaf,0x00,0x0a,0x00,0xd3,0x14,0x92,0x10,
+       0x91,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9d,0xaf,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x04,0x0a,0x00,0x0a,0xff,0xea,0x9d,0xba,0x00,0x10,0x04,
+       0x0a,0x00,0x0a,0xff,0xea,0x9d,0xbc,0x00,0xd1,0x0c,0x10,0x04,0x0a,0x00,0x0a,0xff,
+       0xe1,0xb5,0xb9,0x00,0x10,0x08,0x0a,0xff,0xea,0x9d,0xbf,0x00,0x0a,0x00,0xe0,0x55,
+       0x01,0xcf,0x86,0xd5,0xa6,0xd4,0x4e,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0a,
+       0xff,0xea,0x9e,0x81,0x00,0x0a,0x00,0x10,0x08,0x0a,0xff,0xea,0x9e,0x83,0x00,0x0a,
+       0x00,0xd1,0x0c,0x10,0x08,0x0a,0xff,0xea,0x9e,0x85,0x00,0x0a,0x00,0x10,0x08,0x0a,
+       0xff,0xea,0x9e,0x87,0x00,0x0a,0x00,0xd2,0x10,0x51,0x04,0x0a,0x00,0x10,0x04,0x0a,
+       0x00,0x0a,0xff,0xea,0x9e,0x8c,0x00,0xe1,0xb0,0x9f,0x10,0x04,0x0a,0x00,0x0c,0xff,
+       0xc9,0xa5,0x00,0xd3,0x28,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x0c,0xff,0xea,0x9e,0x91,
+       0x00,0x0c,0x00,0x10,0x08,0x0d,0xff,0xea,0x9e,0x93,0x00,0x0d,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x08,0x10,0xff,0xea,0x9e,0x97,0x00,0x10,0x00,0xd2,0x18,0xd1,0x0c,0x10,
+       0x08,0x10,0xff,0xea,0x9e,0x99,0x00,0x10,0x00,0x10,0x08,0x10,0xff,0xea,0x9e,0x9b,
+       0x00,0x10,0x00,0xd1,0x0c,0x10,0x08,0x10,0xff,0xea,0x9e,0x9d,0x00,0x10,0x00,0x10,
+       0x08,0x10,0xff,0xea,0x9e,0x9f,0x00,0x10,0x00,0xd4,0x63,0xd3,0x30,0xd2,0x18,0xd1,
+       0x0c,0x10,0x08,0x0c,0xff,0xea,0x9e,0xa1,0x00,0x0c,0x00,0x10,0x08,0x0c,0xff,0xea,
+       0x9e,0xa3,0x00,0x0c,0x00,0xd1,0x0c,0x10,0x08,0x0c,0xff,0xea,0x9e,0xa5,0x00,0x0c,
+       0x00,0x10,0x08,0x0c,0xff,0xea,0x9e,0xa7,0x00,0x0c,0x00,0xd2,0x1a,0xd1,0x0c,0x10,
+       0x08,0x0c,0xff,0xea,0x9e,0xa9,0x00,0x0c,0x00,0x10,0x07,0x0d,0xff,0xc9,0xa6,0x00,
+       0x10,0xff,0xc9,0x9c,0x00,0xd1,0x0e,0x10,0x07,0x10,0xff,0xc9,0xa1,0x00,0x10,0xff,
+       0xc9,0xac,0x00,0x10,0x07,0x12,0xff,0xc9,0xaa,0x00,0x14,0x00,0xd3,0x35,0xd2,0x1d,
+       0xd1,0x0e,0x10,0x07,0x10,0xff,0xca,0x9e,0x00,0x10,0xff,0xca,0x87,0x00,0x10,0x07,
+       0x11,0xff,0xca,0x9d,0x00,0x11,0xff,0xea,0xad,0x93,0x00,0xd1,0x0c,0x10,0x08,0x11,
+       0xff,0xea,0x9e,0xb5,0x00,0x11,0x00,0x10,0x08,0x11,0xff,0xea,0x9e,0xb7,0x00,0x11,
+       0x00,0x92,0x10,0x91,0x0c,0x10,0x08,0x14,0xff,0xea,0x9e,0xb9,0x00,0x14,0x00,0x00,
+       0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,0xd3,0x07,0x62,
+       0xee,0x9e,0x00,0x00,0x92,0x11,0xe1,0x01,0x9f,0x10,0x07,0x0d,0xff,0xc4,0xa7,0x00,
+       0x0d,0xff,0xc5,0x93,0x00,0x0a,0x00,0xe4,0x11,0xa2,0xd3,0x1d,0xe2,0x91,0x9f,0xe1,
+       0x40,0x9f,0xe0,0x2d,0x9f,0xcf,0x86,0xe5,0x0e,0x9f,0x94,0x0b,0x93,0x07,0x62,0xf9,
+       0x9e,0x08,0x00,0x08,0x00,0x08,0x00,0xd2,0x0f,0xe1,0x90,0xa0,0xe0,0x5d,0xa0,0xcf,
+       0x86,0x65,0x42,0xa0,0x0a,0x00,0xd1,0xae,0xd0,0x1a,0xcf,0x86,0xe5,0x4d,0xa1,0xe4,
+       0x30,0xa1,0xe3,0x17,0xa1,0xe2,0x0a,0xa1,0x91,0x08,0x10,0x04,0x00,0x00,0x0c,0x00,
+       0x0c,0x00,0xcf,0x86,0xd5,0x07,0x64,0x5d,0xa1,0x10,0x00,0xd4,0x0b,0x93,0x07,0x62,
+       0x81,0xa1,0x11,0x00,0x00,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x11,0xff,
+       0xe1,0x8e,0xa0,0x00,0x11,0xff,0xe1,0x8e,0xa1,0x00,0x10,0x08,0x11,0xff,0xe1,0x8e,
+       0xa2,0x00,0x11,0xff,0xe1,0x8e,0xa3,0x00,0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,
+       0xa4,0x00,0x11,0xff,0xe1,0x8e,0xa5,0x00,0x10,0x08,0x11,0xff,0xe1,0x8e,0xa6,0x00,
+       0x11,0xff,0xe1,0x8e,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,
+       0xa8,0x00,0x11,0xff,0xe1,0x8e,0xa9,0x00,0x10,0x08,0x11,0xff,0xe1,0x8e,0xaa,0x00,
+       0x11,0xff,0xe1,0x8e,0xab,0x00,0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,0xac,0x00,
+       0x11,0xff,0xe1,0x8e,0xad,0x00,0x10,0x08,0x11,0xff,0xe1,0x8e,0xae,0x00,0x11,0xff,
+       0xe1,0x8e,0xaf,0x00,0xe0,0x0c,0xa1,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,0xb0,0x00,0x11,0xff,0xe1,0x8e,
+       0xb1,0x00,0x10,0x08,0x11,0xff,0xe1,0x8e,0xb2,0x00,0x11,0xff,0xe1,0x8e,0xb3,0x00,
+       0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,0xb4,0x00,0x11,0xff,0xe1,0x8e,0xb5,0x00,
+       0x10,0x08,0x11,0xff,0xe1,0x8e,0xb6,0x00,0x11,0xff,0xe1,0x8e,0xb7,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8e,0xb8,0x00,0x11,0xff,0xe1,0x8e,0xb9,0x00,
+       0x10,0x08,0x11,0xff,0xe1,0x8e,0xba,0x00,0x11,0xff,0xe1,0x8e,0xbb,0x00,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8e,0xbc,0x00,0x11,0xff,0xe1,0x8e,0xbd,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8e,0xbe,0x00,0x11,0xff,0xe1,0x8e,0xbf,0x00,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8f,0x80,0x00,0x11,0xff,0xe1,0x8f,0x81,0x00,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x82,0x00,0x11,0xff,0xe1,0x8f,0x83,0x00,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x84,0x00,0x11,0xff,0xe1,0x8f,0x85,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x86,0x00,0x11,0xff,0xe1,0x8f,0x87,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x88,0x00,0x11,0xff,0xe1,0x8f,0x89,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x8a,0x00,0x11,0xff,0xe1,0x8f,0x8b,0x00,0xd1,0x10,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x8c,0x00,0x11,0xff,0xe1,0x8f,0x8d,0x00,0x10,0x08,0x11,0xff,
+       0xe1,0x8f,0x8e,0x00,0x11,0xff,0xe1,0x8f,0x8f,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x11,0xff,0xe1,0x8f,0x90,0x00,0x11,0xff,0xe1,0x8f,0x91,0x00,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x92,0x00,0x11,0xff,0xe1,0x8f,0x93,0x00,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x94,0x00,0x11,0xff,0xe1,0x8f,0x95,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x96,0x00,0x11,0xff,0xe1,0x8f,0x97,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0x98,0x00,0x11,0xff,0xe1,0x8f,0x99,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x9a,0x00,0x11,0xff,0xe1,0x8f,0x9b,0x00,0xd1,0x10,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0x9c,0x00,0x11,0xff,0xe1,0x8f,0x9d,0x00,0x10,0x08,0x11,0xff,
+       0xe1,0x8f,0x9e,0x00,0x11,0xff,0xe1,0x8f,0x9f,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x11,0xff,0xe1,0x8f,0xa0,0x00,0x11,0xff,0xe1,0x8f,0xa1,0x00,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0xa2,0x00,0x11,0xff,0xe1,0x8f,0xa3,0x00,0xd1,0x10,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0xa4,0x00,0x11,0xff,0xe1,0x8f,0xa5,0x00,0x10,0x08,0x11,0xff,
+       0xe1,0x8f,0xa6,0x00,0x11,0xff,0xe1,0x8f,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x11,0xff,0xe1,0x8f,0xa8,0x00,0x11,0xff,0xe1,0x8f,0xa9,0x00,0x10,0x08,0x11,0xff,
+       0xe1,0x8f,0xaa,0x00,0x11,0xff,0xe1,0x8f,0xab,0x00,0xd1,0x10,0x10,0x08,0x11,0xff,
+       0xe1,0x8f,0xac,0x00,0x11,0xff,0xe1,0x8f,0xad,0x00,0x10,0x08,0x11,0xff,0xe1,0x8f,
+       0xae,0x00,0x11,0xff,0xe1,0x8f,0xaf,0x00,0xd1,0x0c,0xe0,0x45,0x9f,0xcf,0x86,0xcf,
+       0x06,0x02,0xff,0xff,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x06,
+       0xcf,0x06,0x01,0x00,0xd4,0x0c,0xe3,0xbd,0xa7,0xe2,0xad,0x9f,0xcf,0x06,0x01,0x00,
+       0xd3,0x30,0xe2,0x15,0xbc,0xe1,0x79,0xb7,0xe0,0x23,0xb5,0xcf,0x86,0xe5,0x00,0xb4,
+       0xe4,0x6f,0xb3,0xe3,0x26,0xb3,0xe2,0xff,0xb2,0xe1,0xe8,0xb2,0x10,0x0b,0x01,0xff,
+       0xd9,0x8a,0xd9,0x94,0xd8,0xac,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xad,0x00,
+       0xd2,0x13,0xe1,0x2a,0xc6,0xe0,0x99,0xc4,0xcf,0x86,0xe5,0x07,0xc4,0x64,0xb8,0xc3,
+       0x06,0xff,0x00,0xe1,0x6b,0xcc,0xe0,0xa6,0xca,0xcf,0x86,0xd5,0x16,0xe4,0x83,0xc9,
+       0xe3,0x52,0xc9,0xe2,0x39,0xc9,0xe1,0x2c,0xc9,0x10,0x04,0x00,0x00,0x01,0xff,0x21,
+       0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x40,0x00,0x01,
+       0xff,0x61,0x00,0x10,0x06,0x01,0xff,0x62,0x00,0x01,0xff,0x63,0x00,0xd1,0x0c,0x10,
+       0x06,0x01,0xff,0x64,0x00,0x01,0xff,0x65,0x00,0x10,0x06,0x01,0xff,0x66,0x00,0x01,
+       0xff,0x67,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x68,0x00,0x01,0xff,0x69,
+       0x00,0x10,0x06,0x01,0xff,0x6a,0x00,0x01,0xff,0x6b,0x00,0xd1,0x0c,0x10,0x06,0x01,
+       0xff,0x6c,0x00,0x01,0xff,0x6d,0x00,0x10,0x06,0x01,0xff,0x6e,0x00,0x01,0xff,0x6f,
+       0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x70,0x00,0x01,0xff,0x71,
+       0x00,0x10,0x06,0x01,0xff,0x72,0x00,0x01,0xff,0x73,0x00,0xd1,0x0c,0x10,0x06,0x01,
+       0xff,0x74,0x00,0x01,0xff,0x75,0x00,0x10,0x06,0x01,0xff,0x76,0x00,0x01,0xff,0x77,
+       0x00,0xe2,0xe5,0xc9,0xd1,0x0c,0x10,0x06,0x01,0xff,0x78,0x00,0x01,0xff,0x79,0x00,
+       0x10,0x06,0x01,0xff,0x7a,0x00,0x01,0xff,0x5b,0x00,0x83,0xf2,0xd5,0x28,0x01,0xf1,
+       0xad,0x25,0x01,0xf0,0x29,0x24,0x01,0xcf,0x86,0xf5,0xcc,0x10,0x01,0xc4,0xe3,0xc1,
+       0x07,0xe2,0x62,0x06,0xe1,0x18,0xdf,0xe0,0x09,0x05,0xcf,0x86,0xe5,0xfb,0x02,0xd4,
+       0x1c,0xe3,0x2c,0xd0,0xe2,0x83,0xcf,0xe1,0x5e,0xcf,0xe0,0x37,0xcf,0xcf,0x86,0xe5,
+       0x04,0xcf,0x94,0x07,0x63,0xef,0xce,0x07,0x00,0x07,0x00,0xe3,0xd8,0xd1,0xe2,0x9d,
+       0xd1,0xe1,0x77,0x01,0xe0,0x35,0xd1,0xcf,0x86,0xe5,0x21,0x01,0xd4,0x90,0xd3,0x48,
+       0xd2,0x24,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xa8,0x00,0x05,0xff,0xf0,
+       0x90,0x90,0xa9,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xaa,0x00,0x05,0xff,0xf0,
+       0x90,0x90,0xab,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xac,0x00,0x05,
+       0xff,0xf0,0x90,0x90,0xad,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xae,0x00,0x05,
+       0xff,0xf0,0x90,0x90,0xaf,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,
+       0x90,0xb0,0x00,0x05,0xff,0xf0,0x90,0x90,0xb1,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,
+       0x90,0xb2,0x00,0x05,0xff,0xf0,0x90,0x90,0xb3,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,
+       0xf0,0x90,0x90,0xb4,0x00,0x05,0xff,0xf0,0x90,0x90,0xb5,0x00,0x10,0x09,0x05,0xff,
+       0xf0,0x90,0x90,0xb6,0x00,0x05,0xff,0xf0,0x90,0x90,0xb7,0x00,0xd3,0x48,0xd2,0x24,
+       0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xb8,0x00,0x05,0xff,0xf0,0x90,0x90,
+       0xb9,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xba,0x00,0x05,0xff,0xf0,0x90,0x90,
+       0xbb,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xbc,0x00,0x05,0xff,0xf0,
+       0x90,0x90,0xbd,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x90,0xbe,0x00,0x05,0xff,0xf0,
+       0x90,0x90,0xbf,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x91,0x80,
+       0x00,0x05,0xff,0xf0,0x90,0x91,0x81,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x91,0x82,
+       0x00,0x05,0xff,0xf0,0x90,0x91,0x83,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,
+       0x91,0x84,0x00,0x05,0xff,0xf0,0x90,0x91,0x85,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,
+       0x91,0x86,0x00,0x05,0xff,0xf0,0x90,0x91,0x87,0x00,0x94,0x4c,0x93,0x48,0xd2,0x24,
+       0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x91,0x88,0x00,0x05,0xff,0xf0,0x90,0x91,
+       0x89,0x00,0x10,0x09,0x05,0xff,0xf0,0x90,0x91,0x8a,0x00,0x05,0xff,0xf0,0x90,0x91,
+       0x8b,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0x90,0x91,0x8c,0x00,0x05,0xff,0xf0,
+       0x90,0x91,0x8d,0x00,0x10,0x09,0x07,0xff,0xf0,0x90,0x91,0x8e,0x00,0x07,0xff,0xf0,
+       0x90,0x91,0x8f,0x00,0x05,0x00,0x05,0x00,0xd0,0xa0,0xcf,0x86,0xd5,0x07,0x64,0xdd,
+       0xcf,0x07,0x00,0xd4,0x07,0x63,0xea,0xcf,0x07,0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,
+       0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0x98,0x00,0x12,0xff,0xf0,0x90,0x93,0x99,0x00,
+       0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0x9a,0x00,0x12,0xff,0xf0,0x90,0x93,0x9b,0x00,
+       0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0x9c,0x00,0x12,0xff,0xf0,0x90,0x93,
+       0x9d,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0x9e,0x00,0x12,0xff,0xf0,0x90,0x93,
+       0x9f,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xa0,0x00,0x12,
+       0xff,0xf0,0x90,0x93,0xa1,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xa2,0x00,0x12,
+       0xff,0xf0,0x90,0x93,0xa3,0x00,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xa4,
+       0x00,0x12,0xff,0xf0,0x90,0x93,0xa5,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xa6,
+       0x00,0x12,0xff,0xf0,0x90,0x93,0xa7,0x00,0xcf,0x86,0xe5,0x73,0xcf,0xd4,0x90,0xd3,
+       0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xa8,0x00,0x12,0xff,
+       0xf0,0x90,0x93,0xa9,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xaa,0x00,0x12,0xff,
+       0xf0,0x90,0x93,0xab,0x00,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xac,0x00,
+       0x12,0xff,0xf0,0x90,0x93,0xad,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xae,0x00,
+       0x12,0xff,0xf0,0x90,0x93,0xaf,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,
+       0x90,0x93,0xb0,0x00,0x12,0xff,0xf0,0x90,0x93,0xb1,0x00,0x10,0x09,0x12,0xff,0xf0,
+       0x90,0x93,0xb2,0x00,0x12,0xff,0xf0,0x90,0x93,0xb3,0x00,0xd1,0x12,0x10,0x09,0x12,
+       0xff,0xf0,0x90,0x93,0xb4,0x00,0x12,0xff,0xf0,0x90,0x93,0xb5,0x00,0x10,0x09,0x12,
+       0xff,0xf0,0x90,0x93,0xb6,0x00,0x12,0xff,0xf0,0x90,0x93,0xb7,0x00,0x93,0x28,0x92,
+       0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xb8,0x00,0x12,0xff,0xf0,0x90,
+       0x93,0xb9,0x00,0x10,0x09,0x12,0xff,0xf0,0x90,0x93,0xba,0x00,0x12,0xff,0xf0,0x90,
+       0x93,0xbb,0x00,0x00,0x00,0x12,0x00,0xd4,0x1f,0xe3,0x8c,0xd0,0xe2,0x17,0xd0,0xe1,
+       0xb6,0xcf,0xe0,0x97,0xcf,0xcf,0x86,0xe5,0x64,0xcf,0x94,0x0a,0xe3,0x4f,0xcf,0x62,
+       0x46,0xcf,0x07,0x00,0x07,0x00,0xe3,0x8b,0xd2,0xe2,0x5c,0xd2,0xd1,0x09,0xe0,0xf9,
+       0xd1,0xcf,0x06,0x0b,0x00,0xe0,0x2c,0xd2,0xcf,0x86,0xe5,0x21,0x01,0xd4,0x90,0xd3,
+       0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x80,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0x81,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x82,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0x83,0x00,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x84,0x00,
+       0x11,0xff,0xf0,0x90,0xb3,0x85,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x86,0x00,
+       0x11,0xff,0xf0,0x90,0xb3,0x87,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0x88,0x00,0x11,0xff,0xf0,0x90,0xb3,0x89,0x00,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0x8a,0x00,0x11,0xff,0xf0,0x90,0xb3,0x8b,0x00,0xd1,0x12,0x10,0x09,0x11,
+       0xff,0xf0,0x90,0xb3,0x8c,0x00,0x11,0xff,0xf0,0x90,0xb3,0x8d,0x00,0x10,0x09,0x11,
+       0xff,0xf0,0x90,0xb3,0x8e,0x00,0x11,0xff,0xf0,0x90,0xb3,0x8f,0x00,0xd3,0x48,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x90,0x00,0x11,0xff,0xf0,0x90,
+       0xb3,0x91,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x92,0x00,0x11,0xff,0xf0,0x90,
+       0xb3,0x93,0x00,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x94,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0x95,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0x96,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0x97,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,
+       0x98,0x00,0x11,0xff,0xf0,0x90,0xb3,0x99,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,
+       0x9a,0x00,0x11,0xff,0xf0,0x90,0xb3,0x9b,0x00,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0x9c,0x00,0x11,0xff,0xf0,0x90,0xb3,0x9d,0x00,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0x9e,0x00,0x11,0xff,0xf0,0x90,0xb3,0x9f,0x00,0xd4,0x90,0xd3,0x48,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xa0,0x00,0x11,0xff,0xf0,0x90,
+       0xb3,0xa1,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xa2,0x00,0x11,0xff,0xf0,0x90,
+       0xb3,0xa3,0x00,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xa4,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0xa5,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xa6,0x00,0x11,0xff,
+       0xf0,0x90,0xb3,0xa7,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,
+       0xa8,0x00,0x11,0xff,0xf0,0x90,0xb3,0xa9,0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,
+       0xaa,0x00,0x11,0xff,0xf0,0x90,0xb3,0xab,0x00,0xd1,0x12,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0xac,0x00,0x11,0xff,0xf0,0x90,0xb3,0xad,0x00,0x10,0x09,0x11,0xff,0xf0,
+       0x90,0xb3,0xae,0x00,0x11,0xff,0xf0,0x90,0xb3,0xaf,0x00,0x93,0x23,0x92,0x1f,0xd1,
+       0x12,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xb0,0x00,0x11,0xff,0xf0,0x90,0xb3,0xb1,
+       0x00,0x10,0x09,0x11,0xff,0xf0,0x90,0xb3,0xb2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0x15,0xe4,0x20,0xd5,0xe3,0x2a,0xd3,0xe2,0x23,0xd2,0xe1,0x73,0xd1,
+       0xe0,0x2c,0xd1,0xcf,0x06,0x0c,0x00,0xe4,0x1e,0xd8,0xe3,0x77,0xd7,0xe2,0x70,0xd7,
+       0xd1,0x0c,0xe0,0x35,0xd7,0xcf,0x86,0x65,0x16,0xd7,0x14,0x00,0xe0,0x39,0xd7,0xcf,
+       0x86,0x55,0x04,0x00,0x00,0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x10,
+       0xff,0xf0,0x91,0xa3,0x80,0x00,0x10,0xff,0xf0,0x91,0xa3,0x81,0x00,0x10,0x09,0x10,
+       0xff,0xf0,0x91,0xa3,0x82,0x00,0x10,0xff,0xf0,0x91,0xa3,0x83,0x00,0xd1,0x12,0x10,
+       0x09,0x10,0xff,0xf0,0x91,0xa3,0x84,0x00,0x10,0xff,0xf0,0x91,0xa3,0x85,0x00,0x10,
+       0x09,0x10,0xff,0xf0,0x91,0xa3,0x86,0x00,0x10,0xff,0xf0,0x91,0xa3,0x87,0x00,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x88,0x00,0x10,0xff,0xf0,0x91,
+       0xa3,0x89,0x00,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x8a,0x00,0x10,0xff,0xf0,0x91,
+       0xa3,0x8b,0x00,0xd1,0x12,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x8c,0x00,0x10,0xff,
+       0xf0,0x91,0xa3,0x8d,0x00,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x8e,0x00,0x10,0xff,
+       0xf0,0x91,0xa3,0x8f,0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x10,0xff,0xf0,
+       0x91,0xa3,0x90,0x00,0x10,0xff,0xf0,0x91,0xa3,0x91,0x00,0x10,0x09,0x10,0xff,0xf0,
+       0x91,0xa3,0x92,0x00,0x10,0xff,0xf0,0x91,0xa3,0x93,0x00,0xd1,0x12,0x10,0x09,0x10,
+       0xff,0xf0,0x91,0xa3,0x94,0x00,0x10,0xff,0xf0,0x91,0xa3,0x95,0x00,0x10,0x09,0x10,
+       0xff,0xf0,0x91,0xa3,0x96,0x00,0x10,0xff,0xf0,0x91,0xa3,0x97,0x00,0xd2,0x24,0xd1,
+       0x12,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x98,0x00,0x10,0xff,0xf0,0x91,0xa3,0x99,
+       0x00,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x9a,0x00,0x10,0xff,0xf0,0x91,0xa3,0x9b,
+       0x00,0xd1,0x12,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x9c,0x00,0x10,0xff,0xf0,0x91,
+       0xa3,0x9d,0x00,0x10,0x09,0x10,0xff,0xf0,0x91,0xa3,0x9e,0x00,0x10,0xff,0xf0,0x91,
+       0xa3,0x9f,0x00,0xd1,0x11,0xe0,0x09,0xda,0xcf,0x86,0xe5,0x00,0xda,0xe4,0xc9,0xd9,
+       0xcf,0x06,0x00,0x00,0xe0,0xbe,0xdb,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,
+       0x09,0xe3,0x07,0xda,0xcf,0x06,0x0c,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xe2,0x32,
+       0xdb,0xe1,0x0d,0xdb,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0xa5,0x21,0x01,0xd4,
+       0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xa0,0x00,
+       0x14,0xff,0xf0,0x96,0xb9,0xa1,0x00,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xa2,0x00,
+       0x14,0xff,0xf0,0x96,0xb9,0xa3,0x00,0xd1,0x12,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,
+       0xa4,0x00,0x14,0xff,0xf0,0x96,0xb9,0xa5,0x00,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,
+       0xa6,0x00,0x14,0xff,0xf0,0x96,0xb9,0xa7,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x14,
+       0xff,0xf0,0x96,0xb9,0xa8,0x00,0x14,0xff,0xf0,0x96,0xb9,0xa9,0x00,0x10,0x09,0x14,
+       0xff,0xf0,0x96,0xb9,0xaa,0x00,0x14,0xff,0xf0,0x96,0xb9,0xab,0x00,0xd1,0x12,0x10,
+       0x09,0x14,0xff,0xf0,0x96,0xb9,0xac,0x00,0x14,0xff,0xf0,0x96,0xb9,0xad,0x00,0x10,
+       0x09,0x14,0xff,0xf0,0x96,0xb9,0xae,0x00,0x14,0xff,0xf0,0x96,0xb9,0xaf,0x00,0xd3,
+       0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xb0,0x00,0x14,0xff,
+       0xf0,0x96,0xb9,0xb1,0x00,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xb2,0x00,0x14,0xff,
+       0xf0,0x96,0xb9,0xb3,0x00,0xd1,0x12,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xb4,0x00,
+       0x14,0xff,0xf0,0x96,0xb9,0xb5,0x00,0x10,0x09,0x14,0xff,0xf0,0x96,0xb9,0xb6,0x00,
+       0x14,0xff,0xf0,0x96,0xb9,0xb7,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x14,0xff,0xf0,
+       0x96,0xb9,0xb8,0x00,0x14,0xff,0xf0,0x96,0xb9,0xb9,0x00,0x10,0x09,0x14,0xff,0xf0,
+       0x96,0xb9,0xba,0x00,0x14,0xff,0xf0,0x96,0xb9,0xbb,0x00,0xd1,0x12,0x10,0x09,0x14,
+       0xff,0xf0,0x96,0xb9,0xbc,0x00,0x14,0xff,0xf0,0x96,0xb9,0xbd,0x00,0x10,0x09,0x14,
+       0xff,0xf0,0x96,0xb9,0xbe,0x00,0x14,0xff,0xf0,0x96,0xb9,0xbf,0x00,0x14,0x00,0xd2,
+       0x14,0xe1,0x08,0xdb,0xe0,0xff,0xda,0xcf,0x86,0xe5,0xc0,0xda,0xe4,0x7d,0xda,0xcf,
+       0x06,0x12,0x00,0xe1,0xad,0x0e,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xe5,0xaa,0xf7,0xd4,0x0f,0xe3,0x08,0xde,0xe2,0x36,0xdc,0xe1,0x15,0xdc,0xcf,0x06,
+       0x05,0x00,0xe3,0x29,0x07,0xe2,0x93,0x03,0xe1,0x10,0x02,0xe0,0x11,0x01,0xcf,0x86,
+       0xd5,0xa2,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x61,0x00,
+       0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,
+       0x05,0xff,0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,
+       0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,
+       0x70,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,
+       0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,
+       0x78,0x00,0xe2,0x9b,0xde,0xe1,0x8e,0xde,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,
+       0x7a,0x00,0xd4,0x15,0xe3,0xd1,0xde,0xe2,0xb8,0xde,0xe1,0xab,0xde,0x10,0x06,0x05,
+       0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd3,0x27,0xd2,0x0f,0xe1,0xf8,0xde,0x10,0x06,
+       0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x61,0x00,
+       0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,
+       0x67,0x00,0x05,0xff,0x68,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,
+       0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xcf,0x86,0xd5,0x5a,
+       0xe4,0x55,0xdf,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,
+       0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,
+       0xff,0x74,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,
+       0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe1,0x00,0xdf,0x10,0x06,
+       0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd4,0x42,0xd3,0x12,0xe2,0x71,0xdf,0xe1,
+       0x64,0xdf,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,
+       0x05,0xff,0x64,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,
+       0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,
+       0x05,0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,
+       0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,
+       0x74,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,
+       0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xd0,0xc6,0xcf,0x86,0xd5,0x4c,0xd4,0x15,
+       0xe3,0xa8,0xdf,0xe2,0x8f,0xdf,0xe1,0x82,0xdf,0x10,0x06,0x05,0xff,0x79,0x00,0x05,
+       0xff,0x7a,0x00,0xd3,0x12,0xe2,0xdb,0xdf,0xe1,0xce,0xdf,0x10,0x06,0x05,0xff,0x6f,
+       0x00,0x05,0xff,0x70,0x00,0xd2,0x0f,0xe1,0xed,0xdf,0x10,0x06,0x05,0xff,0x77,0x00,
+       0x05,0xff,0x78,0x00,0xd1,0x0a,0x10,0x06,0x05,0xff,0x61,0x00,0x00,0x00,0x10,0x06,
+       0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0xd4,0x4e,0xd3,0x22,0xd2,0x0e,0x51,0x04,
+       0x00,0x00,0x10,0x06,0x05,0xff,0x67,0x00,0x00,0x00,0xd1,0x0a,0x10,0x04,0x00,0x00,
+       0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x00,0x00,0xd2,0x16,0xd1,0x0a,
+       0x10,0x04,0x00,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,
+       0x70,0x00,0xd1,0x0a,0x10,0x06,0x05,0xff,0x71,0x00,0x00,0x00,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0xe3,0x1a,0xe0,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,
+       0x00,0xe1,0xf5,0xdf,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xcf,0x86,
+       0xd5,0x75,0xd4,0x15,0xe3,0x4a,0xe0,0xe2,0x33,0xe0,0xe1,0x26,0xe0,0x10,0x06,0x05,
+       0xff,0x6b,0x00,0x07,0xff,0x6c,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,
+       0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,
+       0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,
+       0x00,0x05,0xff,0x70,0x00,0xe4,0xc5,0xe0,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,
+       0x74,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,
+       0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe2,0x7c,0xe0,0xe1,0x6f,0xe0,0x10,0x06,
+       0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xe1,0xfc,0x01,0xd0,0xf9,0xcf,0x86,0xd5,
+       0xa4,0xd4,0x51,0xd3,0x25,0xd2,0x0f,0xe1,0xed,0xe0,0x10,0x06,0x05,0xff,0x77,0x00,
+       0x05,0xff,0x78,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,
+       0x10,0x04,0x00,0x00,0x05,0xff,0x64,0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,0x00,0x00,0xd1,0x0a,
+       0x10,0x04,0x00,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,
+       0x6c,0x00,0xd3,0x2e,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,
+       0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd1,0x0a,0x10,0x06,
+       0x05,0xff,0x71,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,
+       0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe1,0xf4,0xe0,0x10,0x06,0x05,0xff,0x79,
+       0x00,0x00,0x00,0xd4,0x15,0xe3,0x23,0xe1,0xe2,0x0a,0xe1,0xe1,0xfd,0xe0,0x10,0x06,
+       0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0xd3,0x12,0xe2,0x56,0xe1,0xe1,0x49,0xe1,
+       0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x04,0x00,0x00,0x05,0xff,0x64,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,
+       0x67,0x00,0x00,0x00,0xcf,0x86,0xd5,0x67,0xd4,0x54,0xd3,0x2c,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,
+       0x05,0xff,0x6c,0x00,0xd1,0x0a,0x10,0x06,0x05,0xff,0x6d,0x00,0x00,0x00,0x10,0x06,
+       0x05,0xff,0x6f,0x00,0x00,0x00,0xd2,0x10,0x51,0x04,0x00,0x00,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,
+       0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe3,0x8a,0xe1,0xe2,
+       0x71,0xe1,0xe1,0x64,0xe1,0x10,0x06,0x05,0xff,0x79,0x00,0x00,0x00,0xd4,0x39,0xd3,
+       0x12,0xe2,0xbf,0xe1,0xe1,0xb2,0xe1,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,
+       0x00,0xd2,0x0f,0xe1,0xd1,0xe1,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,
+       0x63,0x00,0x05,0xff,0x64,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,
+       0x6b,0x00,0x05,0xff,0x6c,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,
+       0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,
+       0x05,0xff,0x74,0x00,0xd0,0xd1,0xcf,0x86,0xd5,0x2d,0xe4,0x2f,0xe2,0xe3,0xfe,0xe1,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,
+       0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe1,0xd9,0xe1,0x10,0x06,0x05,0xff,0x79,
+       0x00,0x05,0xff,0x7a,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,
+       0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,
+       0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,
+       0x00,0x05,0xff,0x70,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x71,
+       0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,0x05,0xff,0x77,
+       0x00,0x05,0xff,0x78,0x00,0xe2,0x7a,0xe2,0xe1,0x6d,0xe2,0x10,0x06,0x05,0xff,0x79,
+       0x00,0x05,0xff,0x7a,0x00,0xcf,0x86,0xd5,0x6c,0xd4,0x15,0xe3,0xb0,0xe2,0xe2,0x97,
+       0xe2,0xe1,0x8a,0xe2,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd3,0x27,
+       0xd2,0x0f,0xe1,0xd7,0xe2,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,
+       0x00,0x05,0xff,0x64,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,
+       0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,
+       0xff,0x6c,0x00,0xe4,0x34,0xe3,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,
+       0x05,0xff,0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe1,0xdf,
+       0xe2,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xe2,0xfb,0x03,0xe1,0xf4,
+       0x01,0xd0,0xf2,0xcf,0x86,0xd5,0xa2,0xd4,0x42,0xd3,0x12,0xe2,0x53,0xe3,0xe1,0x46,
+       0xe3,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,
+       0xff,0x64,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,
+       0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,
+       0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,
+       0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,0x05,
+       0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xd4,0x15,0xe3,0x89,0xe3,0xe2,0x70,0xe3,0xe1,
+       0x63,0xe3,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd3,0x12,0xe2,0xbc,
+       0xe3,0xe1,0xaf,0xe3,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0xd2,0x0f,
+       0xe1,0xce,0xe3,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,
+       0xff,0x64,0x00,0xcf,0x86,0xd5,0x8a,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,0x05,
+       0xff,0x68,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0x10,
+       0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,
+       0xff,0x73,0x00,0x05,0xff,0x74,0x00,0xe3,0xfb,0xe3,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,
+       0x78,0x00,0xe1,0xd6,0xe3,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd4,
+       0x15,0xe3,0x31,0xe4,0xe2,0x18,0xe4,0xe1,0x0b,0xe4,0x10,0x06,0x05,0xff,0x6b,0x00,
+       0x05,0xff,0x6c,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x61,0x00,
+       0x05,0xff,0x62,0x00,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0x10,0x06,0x05,0xff,0x67,0x00,
+       0x05,0xff,0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,
+       0x6a,0x00,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,
+       0x70,0x00,0xe0,0x02,0x01,0xcf,0x86,0xd5,0x45,0xe4,0xac,0xe4,0xd3,0x30,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,
+       0x76,0x00,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0xe2,0x63,0xe4,0xe1,
+       0x56,0xe4,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd4,0x4a,0xd3,0x12,
+       0xe2,0xdf,0xe4,0xe1,0xd2,0xe4,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,
+       0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,
+       0x10,0x07,0x05,0xff,0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0x10,0x07,0x05,0xff,0xce,0xb7,
+       0x00,0x05,0xff,0xce,0xb8,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,
+       0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,
+       0xff,0xce,0xbc,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,
+       0xbe,0x00,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0xd2,0x1c,
+       0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,
+       0x05,0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,
+       0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,
+       0xff,0xcf,0x88,0x00,0xcf,0x86,0xd5,0x3a,0xd4,0x18,0xe3,0x18,0xe5,0xe2,0xfb,0xe4,
+       0xe1,0xec,0xe4,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,0x87,0x00,
+       0xe3,0x70,0xe5,0xe2,0x53,0xe5,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,
+       0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x83,0x00,
+       0xd4,0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,
+       0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,
+       0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,0x10,0x07,
+       0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xb9,
+       0x00,0x05,0xff,0xce,0xba,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,
+       0xff,0xce,0xbc,0x00,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,
+       0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,
+       0x80,0x00,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xce,0xb8,0x00,0xd1,0x0e,
+       0x10,0x07,0x05,0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0x10,0x07,0x05,0xff,
+       0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0xe2,0xa4,0xe5,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,0x00,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,
+       0x05,0xff,0xe2,0x88,0x87,0x00,0xe1,0x27,0x02,0xe0,0x1b,0x01,0xcf,0x86,0xd5,0x77,
+       0xd4,0x36,0xd3,0x14,0xe2,0xbc,0xe5,0xe1,0xad,0xe5,0x10,0x07,0x05,0xff,0xce,0xb5,
+       0x00,0x05,0xff,0xce,0xb6,0x00,0xd2,0x11,0xe1,0xd2,0xe5,0x10,0x07,0x05,0xff,0xce,
+       0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0xe1,0xdd,0xe5,0x10,0x07,0x05,0xff,0xcf,0x81,
+       0x00,0x05,0xff,0xcf,0x83,0x00,0xd3,0x14,0xe2,0xf6,0xe5,0xe1,0xe7,0xe5,0x10,0x07,
+       0x05,0xff,0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0xd2,0x11,0xe1,0x0d,0xe6,0x10,
+       0x07,0x05,0xff,0xce,0xba,0x00,0x05,0xff,0xcf,0x86,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0x10,0x07,0x05,0xff,0xce,0xb3,0x00,
+       0x05,0xff,0xce,0xb4,0x00,0xd4,0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,
+       0x05,0xff,0xce,0xb8,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,
+       0xce,0xba,0x00,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,0xd2,
+       0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0x10,
+       0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xcf,0x81,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xcf,0x83,0x00,
+       0x05,0xff,0xcf,0x84,0x00,0xe3,0x43,0xe6,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,
+       0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,
+       0xff,0xcf,0x88,0x00,0xe1,0x18,0xe6,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,
+       0xe2,0x88,0x87,0x00,0xcf,0x86,0xd5,0x95,0xd4,0x30,0xe3,0x82,0xe6,0xd2,0x11,0xe1,
+       0x57,0xe6,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,0xd1,0x0e,
+       0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,
+       0xcf,0x81,0x00,0x05,0xff,0xcf,0x83,0x00,0xd3,0x2d,0xd2,0x11,0xe1,0x99,0xe6,0x10,
+       0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb8,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,
+       0x05,0xff,0xce,0xb2,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb3,0x00,
+       0x05,0xff,0xce,0xb4,0x00,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb6,
+       0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,
+       0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0xe4,0x07,0xe7,0xd3,0x38,
+       0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,
+       0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xcf,0x81,
+       0x00,0x05,0xff,0xce,0xb8,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x83,
+       0x00,0x05,0xff,0xcf,0x84,0x00,0x10,0x07,0x05,0xff,0xcf,0x85,0x00,0x05,0xff,0xcf,
+       0x86,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,0x00,
+       0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,0x87,0x00,0xe0,0x0a,0x01,
+       0xcf,0x86,0xd5,0x87,0xd4,0x17,0xe3,0x3b,0xe7,0xe2,0x1e,0xe7,0xe1,0x0f,0xe7,0x10,
+       0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x83,0x00,0xd3,0x38,0xd2,0x1c,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0x10,0x07,0x05,
+       0xff,0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,
+       0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,0x05,0xff,
+       0xce,0xb8,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,
+       0xce,0xba,0x00,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0x10,0x07,0x05,
+       0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0xd4,0x4d,0xd3,0x38,0xd2,0x1c,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,
+       0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,
+       0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,
+       0xcf,0x88,0x00,0xe2,0x7a,0xe7,0xe1,0x6b,0xe7,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,
+       0x05,0xff,0xe2,0x88,0x87,0x00,0xd3,0x14,0xe2,0x9d,0xe7,0xe1,0x8e,0xe7,0x10,0x07,
+       0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,0xe2,0xc1,0xe7,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xcf,
+       0x81,0x00,0x05,0xff,0xcf,0x83,0x00,0xcf,0x86,0xe5,0x83,0xe8,0xe4,0x22,0xe8,0xd3,
+       0x14,0xe2,0xd9,0xe7,0xe1,0xc9,0xe7,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,
+       0xcf,0x88,0x00,0xe2,0xfd,0xe7,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,
+       0xff,0xcf,0x80,0x00,0x10,0x07,0x09,0xff,0xcf,0x9d,0x00,0x09,0xff,0xcf,0x9d,0x00,
+       0xe0,0x7f,0x01,0xcf,0x86,0xd5,0x22,0xe4,0xd2,0xe9,0xe3,0xcb,0xe9,0xe2,0xc4,0xe9,
+       0xe1,0xbd,0xe9,0xe0,0xb6,0xe9,0xcf,0x86,0xe5,0x87,0xe9,0xe4,0x6e,0xe9,0x93,0x07,
+       0x62,0x5d,0xe9,0x12,0xe6,0x12,0xe6,0xe4,0x38,0xea,0xe3,0x31,0xea,0xd2,0x09,0xe1,
+       0xba,0xe9,0xcf,0x06,0x10,0x00,0xe1,0x21,0xea,0xe0,0xee,0xe9,0xcf,0x86,0xe5,0x21,
+       0x01,0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,
+       0xa2,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xa3,0x00,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,
+       0xa4,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xa5,0x00,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,
+       0x9e,0xa4,0xa6,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xa7,0x00,0x10,0x09,0x12,0xff,0xf0,
+       0x9e,0xa4,0xa8,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xa9,0x00,0xd2,0x24,0xd1,0x12,0x10,
+       0x09,0x12,0xff,0xf0,0x9e,0xa4,0xaa,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xab,0x00,0x10,
+       0x09,0x12,0xff,0xf0,0x9e,0xa4,0xac,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xad,0x00,0xd1,
+       0x12,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,0xae,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xaf,
+       0x00,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,0xb0,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xb1,
+       0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,0xb2,0x00,
+       0x12,0xff,0xf0,0x9e,0xa4,0xb3,0x00,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,0xb4,0x00,
+       0x12,0xff,0xf0,0x9e,0xa4,0xb5,0x00,0xd1,0x12,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,
+       0xb6,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xb7,0x00,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa4,
+       0xb8,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xb9,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x12,
+       0xff,0xf0,0x9e,0xa4,0xba,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xbb,0x00,0x10,0x09,0x12,
+       0xff,0xf0,0x9e,0xa4,0xbc,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xbd,0x00,0xd1,0x12,0x10,
+       0x09,0x12,0xff,0xf0,0x9e,0xa4,0xbe,0x00,0x12,0xff,0xf0,0x9e,0xa4,0xbf,0x00,0x10,
+       0x09,0x12,0xff,0xf0,0x9e,0xa5,0x80,0x00,0x12,0xff,0xf0,0x9e,0xa5,0x81,0x00,0x94,
+       0x1e,0x93,0x1a,0x92,0x16,0x91,0x12,0x10,0x09,0x12,0xff,0xf0,0x9e,0xa5,0x82,0x00,
+       0x12,0xff,0xf0,0x9e,0xa5,0x83,0x00,0x12,0x00,0x12,0x00,0x12,0x00,0x12,0x00,0xcf,
+       0x86,0xe5,0xd2,0xf6,0xe4,0x74,0xf4,0xe3,0x5f,0xf1,0xd2,0x0f,0xe1,0xed,0xed,0xe0,
+       0xe6,0xed,0xcf,0x86,0x65,0xd3,0xed,0x0a,0x00,0xe1,0xfe,0x01,0xe0,0x74,0x01,0xcf,
+       0x86,0xd5,0x97,0xd4,0x17,0xe3,0x9a,0xee,0xe2,0x7d,0xee,0xe1,0x6e,0xee,0x10,0x07,
+       0x0b,0xff,0x30,0x2e,0x00,0x0b,0xff,0x30,0x2c,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x0b,0xff,0x28,0x61,0x29,0x00,0x0b,0xff,0x28,0x62,0x29,0x00,0x10,0x08,
+       0x0b,0xff,0x28,0x63,0x29,0x00,0x0b,0xff,0x28,0x64,0x29,0x00,0xd1,0x10,0x10,0x08,
+       0x0b,0xff,0x28,0x65,0x29,0x00,0x0b,0xff,0x28,0x66,0x29,0x00,0x10,0x08,0x0b,0xff,
+       0x28,0x67,0x29,0x00,0x0b,0xff,0x28,0x68,0x29,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x0b,0xff,0x28,0x69,0x29,0x00,0x0b,0xff,0x28,0x6a,0x29,0x00,0x10,0x08,0x0b,0xff,
+       0x28,0x6b,0x29,0x00,0x0b,0xff,0x28,0x6c,0x29,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,
+       0x28,0x6d,0x29,0x00,0x0b,0xff,0x28,0x6e,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x6f,
+       0x29,0x00,0x0b,0xff,0x28,0x70,0x29,0x00,0xd4,0x7a,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x0b,0xff,0x28,0x71,0x29,0x00,0x0b,0xff,0x28,0x72,0x29,0x00,0x10,0x08,
+       0x0b,0xff,0x28,0x73,0x29,0x00,0x0b,0xff,0x28,0x74,0x29,0x00,0xd1,0x10,0x10,0x08,
+       0x0b,0xff,0x28,0x75,0x29,0x00,0x0b,0xff,0x28,0x76,0x29,0x00,0x10,0x08,0x0b,0xff,
+       0x28,0x77,0x29,0x00,0x0b,0xff,0x28,0x78,0x29,0x00,0xd2,0x22,0xd1,0x10,0x10,0x08,
+       0x0b,0xff,0x28,0x79,0x29,0x00,0x0b,0xff,0x28,0x7a,0x29,0x00,0x10,0x0c,0x0b,0xff,
+       0xe3,0x80,0x94,0x73,0xe3,0x80,0x95,0x00,0x0b,0xff,0x63,0x00,0xd1,0x0d,0x10,0x06,
+       0x0b,0xff,0x72,0x00,0x0b,0xff,0x63,0x64,0x00,0x10,0x07,0x0b,0xff,0x77,0x7a,0x00,
+       0x14,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x61,0x00,0x0b,0xff,
+       0x62,0x00,0x10,0x06,0x0c,0xff,0x63,0x00,0x0c,0xff,0x64,0x00,0xd1,0x0c,0x10,0x06,
+       0x0c,0xff,0x65,0x00,0x0c,0xff,0x66,0x00,0x10,0x06,0x0c,0xff,0x67,0x00,0x0c,0xff,
+       0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x69,0x00,0x0c,0xff,0x6a,0x00,
+       0x10,0x06,0x0c,0xff,0x6b,0x00,0x0c,0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,0x0c,0xff,
+       0x6d,0x00,0x0b,0xff,0x6e,0x00,0x10,0x06,0x0c,0xff,0x6f,0x00,0x0b,0xff,0x70,0x00,
+       0xcf,0x86,0xd5,0x6a,0xe4,0x0f,0xef,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x0c,
+       0xff,0x71,0x00,0x0c,0xff,0x72,0x00,0x10,0x06,0x0b,0xff,0x73,0x00,0x0c,0xff,0x74,
+       0x00,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x75,0x00,0x0c,0xff,0x76,0x00,0x10,0x06,0x0b,
+       0xff,0x77,0x00,0x0c,0xff,0x78,0x00,0xd2,0x1a,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x79,
+       0x00,0x0c,0xff,0x7a,0x00,0x10,0x07,0x0b,0xff,0x68,0x76,0x00,0x0b,0xff,0x6d,0x76,
+       0x00,0xd1,0x0e,0x10,0x07,0x0b,0xff,0x73,0x64,0x00,0x0b,0xff,0x73,0x73,0x00,0x10,
+       0x08,0x0b,0xff,0x70,0x70,0x76,0x00,0x0c,0xff,0x77,0x63,0x00,0xe4,0xdf,0xee,0x53,
+       0x04,0x0c,0x00,0x92,0x12,0x51,0x04,0x0c,0x00,0x10,0x07,0x0d,0xff,0x6d,0x63,0x00,
+       0x0d,0xff,0x6d,0x64,0x00,0x00,0x00,0xe0,0x37,0xef,0xcf,0x86,0xe5,0x1c,0xef,0xd4,
+       0x07,0x63,0xe8,0xee,0x0c,0x00,0xe3,0x04,0xef,0x92,0x0f,0x91,0x0b,0x10,0x07,0x0b,
+       0xff,0x64,0x6a,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       /* nfkdi_b0000 */
+       0x57,0x04,0x01,0x00,0xc6,0xe5,0xa4,0x15,0xe4,0xfc,0x0d,0xe3,0x61,0x08,0xe2,0x74,
+       0x02,0xc1,0xd0,0xa0,0xcf,0x86,0x55,0x04,0x01,0x00,0xd4,0x3d,0xd3,0x12,0x92,0x0e,
+       0x91,0x0a,0x10,0x06,0x01,0xff,0x20,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd2,0x16,
+       0xd1,0x0c,0x10,0x08,0x01,0xff,0x20,0xcc,0x88,0x00,0x01,0x00,0x10,0x06,0x01,0xff,
+       0x61,0x00,0x01,0x00,0xd1,0x09,0x10,0x04,0x01,0x00,0x01,0xff,0x00,0x10,0x04,0x01,
+       0x00,0x01,0xff,0x20,0xcc,0x84,0x00,0xd3,0x23,0xd2,0x10,0x51,0x04,0x01,0x00,0x10,
+       0x06,0x01,0xff,0x32,0x00,0x01,0xff,0x33,0x00,0x91,0x0f,0x10,0x08,0x01,0xff,0x20,
+       0xcc,0x81,0x00,0x01,0xff,0xce,0xbc,0x00,0x01,0x00,0xd2,0x18,0xd1,0x0e,0x10,0x08,
+       0x01,0xff,0x20,0xcc,0xa7,0x00,0x01,0xff,0x31,0x00,0x10,0x06,0x01,0xff,0x6f,0x00,
+       0x01,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x31,0xe2,0x81,0x84,0x34,0x00,0x01,0xff,
+       0x31,0xe2,0x81,0x84,0x32,0x00,0x10,0x0a,0x01,0xff,0x33,0xe2,0x81,0x84,0x34,0x00,
+       0x01,0x00,0xcf,0x86,0xd5,0xe4,0xd4,0x7c,0xd3,0x3c,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x41,0xcc,0x80,0x00,0x01,0xff,0x41,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,
+       0x41,0xcc,0x82,0x00,0x01,0xff,0x41,0xcc,0x83,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x41,0xcc,0x88,0x00,0x01,0xff,0x41,0xcc,0x8a,0x00,0x10,0x04,0x01,0x00,0x01,0xff,
+       0x43,0xcc,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0x80,0x00,
+       0x01,0xff,0x45,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x45,0xcc,0x82,0x00,0x01,0xff,
+       0x45,0xcc,0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x49,0xcc,0x80,0x00,0x01,0xff,
+       0x49,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x49,0xcc,0x82,0x00,0x01,0xff,0x49,0xcc,
+       0x88,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,0x4e,0xcc,
+       0x83,0x00,0x10,0x08,0x01,0xff,0x4f,0xcc,0x80,0x00,0x01,0xff,0x4f,0xcc,0x81,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x4f,0xcc,0x82,0x00,0x01,0xff,0x4f,0xcc,0x83,0x00,
+       0x10,0x08,0x01,0xff,0x4f,0xcc,0x88,0x00,0x01,0x00,0xd2,0x1c,0xd1,0x0c,0x10,0x04,
+       0x01,0x00,0x01,0xff,0x55,0xcc,0x80,0x00,0x10,0x08,0x01,0xff,0x55,0xcc,0x81,0x00,
+       0x01,0xff,0x55,0xcc,0x82,0x00,0x91,0x10,0x10,0x08,0x01,0xff,0x55,0xcc,0x88,0x00,
+       0x01,0xff,0x59,0xcc,0x81,0x00,0x01,0x00,0xd4,0x7c,0xd3,0x3c,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x61,0xcc,0x80,0x00,0x01,0xff,0x61,0xcc,0x81,0x00,0x10,0x08,
+       0x01,0xff,0x61,0xcc,0x82,0x00,0x01,0xff,0x61,0xcc,0x83,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x61,0xcc,0x88,0x00,0x01,0xff,0x61,0xcc,0x8a,0x00,0x10,0x04,0x01,0x00,
+       0x01,0xff,0x63,0xcc,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x65,0xcc,
+       0x80,0x00,0x01,0xff,0x65,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x65,0xcc,0x82,0x00,
+       0x01,0xff,0x65,0xcc,0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x69,0xcc,0x80,0x00,
+       0x01,0xff,0x69,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x69,0xcc,0x82,0x00,0x01,0xff,
+       0x69,0xcc,0x88,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,
+       0x6e,0xcc,0x83,0x00,0x10,0x08,0x01,0xff,0x6f,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,
+       0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6f,0xcc,0x82,0x00,0x01,0xff,0x6f,0xcc,
+       0x83,0x00,0x10,0x08,0x01,0xff,0x6f,0xcc,0x88,0x00,0x01,0x00,0xd2,0x1c,0xd1,0x0c,
+       0x10,0x04,0x01,0x00,0x01,0xff,0x75,0xcc,0x80,0x00,0x10,0x08,0x01,0xff,0x75,0xcc,
+       0x81,0x00,0x01,0xff,0x75,0xcc,0x82,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x75,0xcc,
+       0x88,0x00,0x01,0xff,0x79,0xcc,0x81,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0x79,0xcc,
+       0x88,0x00,0xe1,0xb6,0x03,0xe0,0xe1,0x01,0xcf,0x86,0xd5,0xf4,0xd4,0x80,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x41,0xcc,0x84,0x00,0x01,0xff,0x61,0xcc,
+       0x84,0x00,0x10,0x08,0x01,0xff,0x41,0xcc,0x86,0x00,0x01,0xff,0x61,0xcc,0x86,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x41,0xcc,0xa8,0x00,0x01,0xff,0x61,0xcc,0xa8,0x00,
+       0x10,0x08,0x01,0xff,0x43,0xcc,0x81,0x00,0x01,0xff,0x63,0xcc,0x81,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x43,0xcc,0x82,0x00,0x01,0xff,0x63,0xcc,0x82,0x00,
+       0x10,0x08,0x01,0xff,0x43,0xcc,0x87,0x00,0x01,0xff,0x63,0xcc,0x87,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x43,0xcc,0x8c,0x00,0x01,0xff,0x63,0xcc,0x8c,0x00,0x10,0x08,
+       0x01,0xff,0x44,0xcc,0x8c,0x00,0x01,0xff,0x64,0xcc,0x8c,0x00,0xd3,0x34,0xd2,0x14,
+       0x51,0x04,0x01,0x00,0x10,0x08,0x01,0xff,0x45,0xcc,0x84,0x00,0x01,0xff,0x65,0xcc,
+       0x84,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0x86,0x00,0x01,0xff,0x65,0xcc,
+       0x86,0x00,0x10,0x08,0x01,0xff,0x45,0xcc,0x87,0x00,0x01,0xff,0x65,0xcc,0x87,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0xa8,0x00,0x01,0xff,0x65,0xcc,
+       0xa8,0x00,0x10,0x08,0x01,0xff,0x45,0xcc,0x8c,0x00,0x01,0xff,0x65,0xcc,0x8c,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x47,0xcc,0x82,0x00,0x01,0xff,0x67,0xcc,0x82,0x00,
+       0x10,0x08,0x01,0xff,0x47,0xcc,0x86,0x00,0x01,0xff,0x67,0xcc,0x86,0x00,0xd4,0x74,
+       0xd3,0x34,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x47,0xcc,0x87,0x00,0x01,0xff,
+       0x67,0xcc,0x87,0x00,0x10,0x08,0x01,0xff,0x47,0xcc,0xa7,0x00,0x01,0xff,0x67,0xcc,
+       0xa7,0x00,0x91,0x10,0x10,0x08,0x01,0xff,0x48,0xcc,0x82,0x00,0x01,0xff,0x68,0xcc,
+       0x82,0x00,0x01,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x49,0xcc,0x83,0x00,
+       0x01,0xff,0x69,0xcc,0x83,0x00,0x10,0x08,0x01,0xff,0x49,0xcc,0x84,0x00,0x01,0xff,
+       0x69,0xcc,0x84,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x49,0xcc,0x86,0x00,0x01,0xff,
+       0x69,0xcc,0x86,0x00,0x10,0x08,0x01,0xff,0x49,0xcc,0xa8,0x00,0x01,0xff,0x69,0xcc,
+       0xa8,0x00,0xd3,0x3a,0xd2,0x1a,0xd1,0x0c,0x10,0x08,0x01,0xff,0x49,0xcc,0x87,0x00,
+       0x01,0x00,0x10,0x07,0x01,0xff,0x49,0x4a,0x00,0x01,0xff,0x69,0x6a,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x4a,0xcc,0x82,0x00,0x01,0xff,0x6a,0xcc,0x82,0x00,0x10,0x08,
+       0x01,0xff,0x4b,0xcc,0xa7,0x00,0x01,0xff,0x6b,0xcc,0xa7,0x00,0xd2,0x1c,0xd1,0x0c,
+       0x10,0x04,0x01,0x00,0x01,0xff,0x4c,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x6c,0xcc,
+       0x81,0x00,0x01,0xff,0x4c,0xcc,0xa7,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6c,0xcc,
+       0xa7,0x00,0x01,0xff,0x4c,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x6c,0xcc,0x8c,0x00,
+       0x01,0xff,0x4c,0xc2,0xb7,0x00,0xcf,0x86,0xd5,0xe0,0xd4,0x6c,0xd3,0x38,0xd2,0x18,
+       0xd1,0x0c,0x10,0x08,0x01,0xff,0x6c,0xc2,0xb7,0x00,0x01,0x00,0x10,0x04,0x01,0x00,
+       0x01,0xff,0x4e,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0x81,0x00,
+       0x01,0xff,0x4e,0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x6e,0xcc,0xa7,0x00,0x01,0xff,
+       0x4e,0xcc,0x8c,0x00,0xd2,0x14,0x91,0x10,0x10,0x08,0x01,0xff,0x6e,0xcc,0x8c,0x00,
+       0x01,0xff,0xca,0xbc,0x6e,0x00,0x01,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x4f,0xcc,
+       0x84,0x00,0x01,0xff,0x6f,0xcc,0x84,0x00,0x10,0x08,0x01,0xff,0x4f,0xcc,0x86,0x00,
+       0x01,0xff,0x6f,0xcc,0x86,0x00,0xd3,0x34,0xd2,0x14,0x91,0x10,0x10,0x08,0x01,0xff,
+       0x4f,0xcc,0x8b,0x00,0x01,0xff,0x6f,0xcc,0x8b,0x00,0x01,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x52,0xcc,0x81,0x00,0x01,0xff,0x72,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,
+       0x52,0xcc,0xa7,0x00,0x01,0xff,0x72,0xcc,0xa7,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x52,0xcc,0x8c,0x00,0x01,0xff,0x72,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,
+       0x53,0xcc,0x81,0x00,0x01,0xff,0x73,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x53,0xcc,0x82,0x00,0x01,0xff,0x73,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x53,0xcc,
+       0xa7,0x00,0x01,0xff,0x73,0xcc,0xa7,0x00,0xd4,0x74,0xd3,0x34,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x53,0xcc,0x8c,0x00,0x01,0xff,0x73,0xcc,0x8c,0x00,0x10,0x08,
+       0x01,0xff,0x54,0xcc,0xa7,0x00,0x01,0xff,0x74,0xcc,0xa7,0x00,0x91,0x10,0x10,0x08,
+       0x01,0xff,0x54,0xcc,0x8c,0x00,0x01,0xff,0x74,0xcc,0x8c,0x00,0x01,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x55,0xcc,0x83,0x00,0x01,0xff,0x75,0xcc,0x83,0x00,
+       0x10,0x08,0x01,0xff,0x55,0xcc,0x84,0x00,0x01,0xff,0x75,0xcc,0x84,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x55,0xcc,0x86,0x00,0x01,0xff,0x75,0xcc,0x86,0x00,0x10,0x08,
+       0x01,0xff,0x55,0xcc,0x8a,0x00,0x01,0xff,0x75,0xcc,0x8a,0x00,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x55,0xcc,0x8b,0x00,0x01,0xff,0x75,0xcc,0x8b,0x00,
+       0x10,0x08,0x01,0xff,0x55,0xcc,0xa8,0x00,0x01,0xff,0x75,0xcc,0xa8,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x57,0xcc,0x82,0x00,0x01,0xff,0x77,0xcc,0x82,0x00,0x10,0x08,
+       0x01,0xff,0x59,0xcc,0x82,0x00,0x01,0xff,0x79,0xcc,0x82,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x59,0xcc,0x88,0x00,0x01,0xff,0x5a,0xcc,0x81,0x00,0x10,0x08,
+       0x01,0xff,0x7a,0xcc,0x81,0x00,0x01,0xff,0x5a,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x7a,0xcc,0x87,0x00,0x01,0xff,0x5a,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,
+       0x7a,0xcc,0x8c,0x00,0x01,0xff,0x73,0x00,0xd0,0x4a,0xcf,0x86,0x55,0x04,0x01,0x00,
+       0xd4,0x2c,0xd3,0x18,0x92,0x14,0x91,0x10,0x10,0x08,0x01,0xff,0x4f,0xcc,0x9b,0x00,
+       0x01,0xff,0x6f,0xcc,0x9b,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0x55,0xcc,0x9b,0x00,0x93,0x14,0x92,0x10,
+       0x91,0x0c,0x10,0x08,0x01,0xff,0x75,0xcc,0x9b,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
+       0x01,0x00,0xcf,0x86,0xd5,0xf1,0xd4,0x61,0xd3,0x26,0x52,0x04,0x01,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0x44,0x5a,0xcc,0x8c,0x00,0x01,0xff,0x44,0x7a,0xcc,0x8c,0x00,
+       0x10,0x09,0x01,0xff,0x64,0x7a,0xcc,0x8c,0x00,0x01,0xff,0x4c,0x4a,0x00,0xd2,0x1c,
+       0xd1,0x0e,0x10,0x07,0x01,0xff,0x4c,0x6a,0x00,0x01,0xff,0x6c,0x6a,0x00,0x10,0x07,
+       0x01,0xff,0x4e,0x4a,0x00,0x01,0xff,0x4e,0x6a,0x00,0xd1,0x0f,0x10,0x07,0x01,0xff,
+       0x6e,0x6a,0x00,0x01,0xff,0x41,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x61,0xcc,0x8c,
+       0x00,0x01,0xff,0x49,0xcc,0x8c,0x00,0xd3,0x46,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x69,0xcc,0x8c,0x00,0x01,0xff,0x4f,0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x6f,
+       0xcc,0x8c,0x00,0x01,0xff,0x55,0xcc,0x8c,0x00,0xd1,0x12,0x10,0x08,0x01,0xff,0x75,
+       0xcc,0x8c,0x00,0x01,0xff,0x55,0xcc,0x88,0xcc,0x84,0x00,0x10,0x0a,0x01,0xff,0x75,
+       0xcc,0x88,0xcc,0x84,0x00,0x01,0xff,0x55,0xcc,0x88,0xcc,0x81,0x00,0xd2,0x28,0xd1,
+       0x14,0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,0x81,0x00,0x01,0xff,0x55,0xcc,0x88,
+       0xcc,0x8c,0x00,0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,0x8c,0x00,0x01,0xff,0x55,
+       0xcc,0x88,0xcc,0x80,0x00,0xd1,0x0e,0x10,0x0a,0x01,0xff,0x75,0xcc,0x88,0xcc,0x80,
+       0x00,0x01,0x00,0x10,0x0a,0x01,0xff,0x41,0xcc,0x88,0xcc,0x84,0x00,0x01,0xff,0x61,
+       0xcc,0x88,0xcc,0x84,0x00,0xd4,0x80,0xd3,0x3a,0xd2,0x26,0xd1,0x14,0x10,0x0a,0x01,
+       0xff,0x41,0xcc,0x87,0xcc,0x84,0x00,0x01,0xff,0x61,0xcc,0x87,0xcc,0x84,0x00,0x10,
+       0x09,0x01,0xff,0xc3,0x86,0xcc,0x84,0x00,0x01,0xff,0xc3,0xa6,0xcc,0x84,0x00,0x51,
+       0x04,0x01,0x00,0x10,0x08,0x01,0xff,0x47,0xcc,0x8c,0x00,0x01,0xff,0x67,0xcc,0x8c,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x4b,0xcc,0x8c,0x00,0x01,0xff,0x6b,
+       0xcc,0x8c,0x00,0x10,0x08,0x01,0xff,0x4f,0xcc,0xa8,0x00,0x01,0xff,0x6f,0xcc,0xa8,
+       0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x4f,0xcc,0xa8,0xcc,0x84,0x00,0x01,0xff,0x6f,
+       0xcc,0xa8,0xcc,0x84,0x00,0x10,0x09,0x01,0xff,0xc6,0xb7,0xcc,0x8c,0x00,0x01,0xff,
+       0xca,0x92,0xcc,0x8c,0x00,0xd3,0x31,0xd2,0x1d,0xd1,0x0f,0x10,0x08,0x01,0xff,0x6a,
+       0xcc,0x8c,0x00,0x01,0xff,0x44,0x5a,0x00,0x10,0x07,0x01,0xff,0x44,0x7a,0x00,0x01,
+       0xff,0x64,0x7a,0x00,0x91,0x10,0x10,0x08,0x01,0xff,0x47,0xcc,0x81,0x00,0x01,0xff,
+       0x67,0xcc,0x81,0x00,0x04,0x00,0xd2,0x24,0xd1,0x10,0x10,0x08,0x04,0xff,0x4e,0xcc,
+       0x80,0x00,0x04,0xff,0x6e,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x41,0xcc,0x8a,0xcc,
+       0x81,0x00,0x01,0xff,0x61,0xcc,0x8a,0xcc,0x81,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xc3,0x86,0xcc,0x81,0x00,0x01,0xff,0xc3,0xa6,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,
+       0xc3,0x98,0xcc,0x81,0x00,0x01,0xff,0xc3,0xb8,0xcc,0x81,0x00,0xe2,0x95,0x02,0xe1,
+       0xae,0x01,0xe0,0x93,0x01,0xcf,0x86,0xd5,0xf4,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x41,0xcc,0x8f,0x00,0x01,0xff,0x61,0xcc,0x8f,0x00,0x10,
+       0x08,0x01,0xff,0x41,0xcc,0x91,0x00,0x01,0xff,0x61,0xcc,0x91,0x00,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x45,0xcc,0x8f,0x00,0x01,0xff,0x65,0xcc,0x8f,0x00,0x10,0x08,0x01,
+       0xff,0x45,0xcc,0x91,0x00,0x01,0xff,0x65,0xcc,0x91,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x49,0xcc,0x8f,0x00,0x01,0xff,0x69,0xcc,0x8f,0x00,0x10,0x08,0x01,
+       0xff,0x49,0xcc,0x91,0x00,0x01,0xff,0x69,0xcc,0x91,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x4f,0xcc,0x8f,0x00,0x01,0xff,0x6f,0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x4f,
+       0xcc,0x91,0x00,0x01,0xff,0x6f,0xcc,0x91,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x52,0xcc,0x8f,0x00,0x01,0xff,0x72,0xcc,0x8f,0x00,0x10,0x08,0x01,
+       0xff,0x52,0xcc,0x91,0x00,0x01,0xff,0x72,0xcc,0x91,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x55,0xcc,0x8f,0x00,0x01,0xff,0x75,0xcc,0x8f,0x00,0x10,0x08,0x01,0xff,0x55,
+       0xcc,0x91,0x00,0x01,0xff,0x75,0xcc,0x91,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,
+       0xff,0x53,0xcc,0xa6,0x00,0x04,0xff,0x73,0xcc,0xa6,0x00,0x10,0x08,0x04,0xff,0x54,
+       0xcc,0xa6,0x00,0x04,0xff,0x74,0xcc,0xa6,0x00,0x51,0x04,0x04,0x00,0x10,0x08,0x04,
+       0xff,0x48,0xcc,0x8c,0x00,0x04,0xff,0x68,0xcc,0x8c,0x00,0xd4,0x68,0xd3,0x20,0xd2,
+       0x0c,0x91,0x08,0x10,0x04,0x06,0x00,0x07,0x00,0x04,0x00,0x51,0x04,0x04,0x00,0x10,
+       0x08,0x04,0xff,0x41,0xcc,0x87,0x00,0x04,0xff,0x61,0xcc,0x87,0x00,0xd2,0x24,0xd1,
+       0x10,0x10,0x08,0x04,0xff,0x45,0xcc,0xa7,0x00,0x04,0xff,0x65,0xcc,0xa7,0x00,0x10,
+       0x0a,0x04,0xff,0x4f,0xcc,0x88,0xcc,0x84,0x00,0x04,0xff,0x6f,0xcc,0x88,0xcc,0x84,
+       0x00,0xd1,0x14,0x10,0x0a,0x04,0xff,0x4f,0xcc,0x83,0xcc,0x84,0x00,0x04,0xff,0x6f,
+       0xcc,0x83,0xcc,0x84,0x00,0x10,0x08,0x04,0xff,0x4f,0xcc,0x87,0x00,0x04,0xff,0x6f,
+       0xcc,0x87,0x00,0x93,0x30,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x04,0xff,0x4f,0xcc,0x87,
+       0xcc,0x84,0x00,0x04,0xff,0x6f,0xcc,0x87,0xcc,0x84,0x00,0x10,0x08,0x04,0xff,0x59,
+       0xcc,0x84,0x00,0x04,0xff,0x79,0xcc,0x84,0x00,0x51,0x04,0x07,0x00,0x10,0x04,0x07,
+       0x00,0x08,0x00,0x08,0x00,0xcf,0x86,0x95,0x14,0x94,0x10,0x93,0x0c,0x92,0x08,0x11,
+       0x04,0x08,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x01,0x00,0x01,0x00,0xd0,0x64,0xcf,
+       0x86,0x55,0x04,0x01,0x00,0xd4,0x18,0x53,0x04,0x01,0x00,0xd2,0x0c,0x91,0x08,0x10,
+       0x04,0x01,0x00,0x04,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x07,0x00,0xd3,0x34,0xd2,
+       0x19,0xd1,0x0d,0x10,0x06,0x01,0xff,0x68,0x00,0x01,0xff,0xc9,0xa6,0x00,0x10,0x06,
+       0x01,0xff,0x6a,0x00,0x01,0xff,0x72,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xc9,0xb9,
+       0x00,0x01,0xff,0xc9,0xbb,0x00,0x10,0x07,0x01,0xff,0xca,0x81,0x00,0x01,0xff,0x77,
+       0x00,0x92,0x0e,0x91,0x0a,0x10,0x06,0x01,0xff,0x79,0x00,0x01,0x00,0x01,0x00,0x01,
+       0x00,0xcf,0x86,0xd5,0x40,0x54,0x04,0x01,0x00,0x53,0x04,0x01,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x20,0xcc,0x86,0x00,0x01,0xff,0x20,0xcc,0x87,0x00,0x10,
+       0x08,0x01,0xff,0x20,0xcc,0x8a,0x00,0x01,0xff,0x20,0xcc,0xa8,0x00,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x20,0xcc,0x83,0x00,0x01,0xff,0x20,0xcc,0x8b,0x00,0x10,0x04,0x01,
+       0x00,0x04,0x00,0x94,0x3c,0xd3,0x28,0xd2,0x19,0xd1,0x0d,0x10,0x07,0x01,0xff,0xc9,
+       0xa3,0x00,0x01,0xff,0x6c,0x00,0x10,0x06,0x01,0xff,0x73,0x00,0x01,0xff,0x78,0x00,
+       0x91,0x0b,0x10,0x07,0x01,0xff,0xca,0x95,0x00,0x01,0x00,0x01,0x00,0xd2,0x08,0x11,
+       0x04,0x01,0x00,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x07,0x00,0x07,
+       0x00,0xe1,0x39,0x01,0xd0,0x72,0xcf,0x86,0xd5,0x24,0x54,0x04,0x01,0xe6,0xd3,0x10,
+       0x52,0x04,0x01,0xe6,0x91,0x08,0x10,0x04,0x01,0xe6,0x01,0xe8,0x01,0xdc,0x92,0x0c,
+       0x51,0x04,0x01,0xdc,0x10,0x04,0x01,0xe8,0x01,0xd8,0x01,0xdc,0xd4,0x2c,0xd3,0x1c,
+       0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0xdc,0x01,0xca,0x10,0x04,0x01,0xca,0x01,0xdc,
+       0x51,0x04,0x01,0xdc,0x10,0x04,0x01,0xdc,0x01,0xca,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x01,0xca,0x01,0xdc,0x01,0xdc,0x01,0xdc,0xd3,0x08,0x12,0x04,0x01,0xdc,0x01,0x01,
+       0xd2,0x0c,0x91,0x08,0x10,0x04,0x01,0x01,0x01,0xdc,0x01,0xdc,0x91,0x08,0x10,0x04,
+       0x01,0xdc,0x01,0xe6,0x01,0xe6,0xcf,0x86,0xd5,0x7f,0xd4,0x47,0xd3,0x2e,0xd2,0x19,
+       0xd1,0x0e,0x10,0x07,0x01,0xff,0xcc,0x80,0x00,0x01,0xff,0xcc,0x81,0x00,0x10,0x04,
+       0x01,0xe6,0x01,0xff,0xcc,0x93,0x00,0xd1,0x0d,0x10,0x09,0x01,0xff,0xcc,0x88,0xcc,
+       0x81,0x00,0x01,0xf0,0x10,0x04,0x04,0xe6,0x04,0xdc,0xd2,0x08,0x11,0x04,0x04,0xdc,
+       0x04,0xe6,0xd1,0x08,0x10,0x04,0x04,0xe6,0x04,0xdc,0x10,0x04,0x04,0xdc,0x06,0xff,
+       0x00,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x07,0xe6,0x10,0x04,0x07,0xe6,0x07,0xdc,0x51,
+       0x04,0x07,0xdc,0x10,0x04,0x07,0xdc,0x07,0xe6,0xd2,0x10,0xd1,0x08,0x10,0x04,0x08,
+       0xe8,0x08,0xdc,0x10,0x04,0x08,0xdc,0x08,0xe6,0xd1,0x08,0x10,0x04,0x08,0xe9,0x07,
+       0xea,0x10,0x04,0x07,0xea,0x07,0xe9,0xd4,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x01,
+       0xea,0x10,0x04,0x04,0xe9,0x06,0xe6,0x06,0xe6,0x06,0xe6,0xd3,0x13,0x52,0x04,0x0a,
+       0x00,0x91,0x0b,0x10,0x07,0x01,0xff,0xca,0xb9,0x00,0x01,0x00,0x0a,0x00,0xd2,0x10,
+       0x51,0x04,0x00,0x00,0x10,0x08,0x01,0xff,0x20,0xcd,0x85,0x00,0x09,0x00,0x51,0x04,
+       0x09,0x00,0x10,0x06,0x01,0xff,0x3b,0x00,0x10,0x00,0xd0,0xe6,0xcf,0x86,0xd5,0x7f,
+       0xd4,0x64,0xd3,0x26,0x52,0x04,0x00,0x00,0xd1,0x12,0x10,0x08,0x01,0xff,0x20,0xcc,
+       0x81,0x00,0x01,0xff,0x20,0xcc,0x88,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0x91,
+       0xcc,0x81,0x00,0x01,0xff,0xc2,0xb7,0x00,0xd2,0x1f,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xce,0x95,0xcc,0x81,0x00,0x01,0xff,0xce,0x97,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,
+       0xce,0x99,0xcc,0x81,0x00,0x00,0x00,0xd1,0x0d,0x10,0x09,0x01,0xff,0xce,0x9f,0xcc,
+       0x81,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xce,0xa5,0xcc,0x81,0x00,0x01,0xff,0xce,
+       0xa9,0xcc,0x81,0x00,0x93,0x17,0x92,0x13,0x91,0x0f,0x10,0x0b,0x01,0xff,0xce,0xb9,
+       0xcc,0x88,0xcc,0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,0x4a,0xd3,
+       0x10,0x92,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0xd2,
+       0x16,0x51,0x04,0x01,0x00,0x10,0x09,0x01,0xff,0xce,0x99,0xcc,0x88,0x00,0x01,0xff,
+       0xce,0xa5,0xcc,0x88,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb1,0xcc,0x81,0x00,
+       0x01,0xff,0xce,0xb5,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0xb7,0xcc,0x81,0x00,
+       0x01,0xff,0xce,0xb9,0xcc,0x81,0x00,0x93,0x17,0x92,0x13,0x91,0x0f,0x10,0x0b,0x01,
+       0xff,0xcf,0x85,0xcc,0x88,0xcc,0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
+       0xcf,0x86,0xd5,0x8e,0xd4,0x39,0x53,0x04,0x01,0x00,0xd2,0x16,0x51,0x04,0x01,0x00,
+       0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,0x88,0x00,0x01,0xff,0xcf,0x85,0xcc,0x88,0x00,
+       0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x81,0x00,0x01,0xff,0xcf,0x85,0xcc,
+       0x81,0x00,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x81,0x00,0x0a,0x00,0xd3,0x39,0xd2,
+       0x1e,0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xb2,0x00,0x01,0xff,0xce,0xb8,0x00,0x10,
+       0x07,0x01,0xff,0xce,0xa5,0x00,0x01,0xff,0xce,0xa5,0xcc,0x81,0x00,0xd1,0x10,0x10,
+       0x09,0x01,0xff,0xce,0xa5,0xcc,0x88,0x00,0x01,0xff,0xcf,0x86,0x00,0x10,0x07,0x01,
+       0xff,0xcf,0x80,0x00,0x04,0x00,0xd2,0x0c,0x51,0x04,0x06,0x00,0x10,0x04,0x01,0x00,
+       0x04,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x04,0x00,0x10,0x04,0x01,0x00,0x04,0x00,
+       0xd4,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x04,0x00,0x01,0x00,
+       0x01,0x00,0x01,0x00,0xd3,0x2f,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x01,0xff,0xce,0xba,
+       0x00,0x01,0xff,0xcf,0x81,0x00,0x10,0x07,0x01,0xff,0xcf,0x82,0x00,0x01,0x00,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xce,0x98,0x00,0x05,0xff,0xce,0xb5,0x00,0x10,0x04,0x06,
+       0x00,0x07,0x00,0x92,0x0f,0x91,0x0b,0x10,0x04,0x07,0x00,0x07,0xff,0xce,0xa3,0x00,
+       0x07,0x00,0x08,0x00,0xe3,0x58,0x04,0xe2,0xbe,0x02,0xe1,0x07,0x01,0xd0,0x8b,0xcf,
+       0x86,0xd5,0x6c,0xd4,0x53,0xd3,0x30,0xd2,0x1f,0xd1,0x12,0x10,0x09,0x04,0xff,0xd0,
+       0x95,0xcc,0x80,0x00,0x01,0xff,0xd0,0x95,0xcc,0x88,0x00,0x10,0x04,0x01,0x00,0x01,
+       0xff,0xd0,0x93,0xcc,0x81,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,
+       0xd0,0x86,0xcc,0x88,0x00,0x52,0x04,0x01,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,
+       0x9a,0xcc,0x81,0x00,0x04,0xff,0xd0,0x98,0xcc,0x80,0x00,0x10,0x09,0x01,0xff,0xd0,
+       0xa3,0xcc,0x86,0x00,0x01,0x00,0x53,0x04,0x01,0x00,0x92,0x11,0x91,0x0d,0x10,0x04,
+       0x01,0x00,0x01,0xff,0xd0,0x98,0xcc,0x86,0x00,0x01,0x00,0x01,0x00,0x54,0x04,0x01,
+       0x00,0x53,0x04,0x01,0x00,0x92,0x11,0x91,0x0d,0x10,0x04,0x01,0x00,0x01,0xff,0xd0,
+       0xb8,0xcc,0x86,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,0x57,0x54,0x04,0x01,0x00,
+       0xd3,0x30,0xd2,0x1f,0xd1,0x12,0x10,0x09,0x04,0xff,0xd0,0xb5,0xcc,0x80,0x00,0x01,
+       0xff,0xd0,0xb5,0xcc,0x88,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xd0,0xb3,0xcc,0x81,
+       0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xd1,0x96,0xcc,0x88,0x00,
+       0x52,0x04,0x01,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,0xba,0xcc,0x81,0x00,0x04,
+       0xff,0xd0,0xb8,0xcc,0x80,0x00,0x10,0x09,0x01,0xff,0xd1,0x83,0xcc,0x86,0x00,0x01,
+       0x00,0x54,0x04,0x01,0x00,0x93,0x1a,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,
+       0x09,0x01,0xff,0xd1,0xb4,0xcc,0x8f,0x00,0x01,0xff,0xd1,0xb5,0xcc,0x8f,0x00,0x01,
+       0x00,0xd0,0x2e,0xcf,0x86,0x95,0x28,0x94,0x24,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x01,
+       0x00,0x10,0x04,0x01,0x00,0x01,0xe6,0x51,0x04,0x01,0xe6,0x10,0x04,0x01,0xe6,0x0a,
+       0xe6,0x92,0x08,0x11,0x04,0x04,0x00,0x06,0x00,0x04,0x00,0x01,0x00,0x01,0x00,0xcf,
+       0x86,0xd5,0xbe,0xd4,0x4a,0xd3,0x2a,0xd2,0x1a,0xd1,0x0d,0x10,0x04,0x01,0x00,0x01,
+       0xff,0xd0,0x96,0xcc,0x86,0x00,0x10,0x09,0x01,0xff,0xd0,0xb6,0xcc,0x86,0x00,0x01,
+       0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x06,0x00,0x10,0x04,0x06,0x00,0x01,0x00,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x01,0x00,0x06,0x00,0x10,0x04,0x06,0x00,0x01,0x00,0xd1,
+       0x08,0x10,0x04,0x01,0x00,0x06,0x00,0x10,0x04,0x06,0x00,0x09,0x00,0xd3,0x3a,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,0x90,0xcc,0x86,0x00,0x01,0xff,0xd0,0xb0,
+       0xcc,0x86,0x00,0x10,0x09,0x01,0xff,0xd0,0x90,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb0,
+       0xcc,0x88,0x00,0x51,0x04,0x01,0x00,0x10,0x09,0x01,0xff,0xd0,0x95,0xcc,0x86,0x00,
+       0x01,0xff,0xd0,0xb5,0xcc,0x86,0x00,0xd2,0x16,0x51,0x04,0x01,0x00,0x10,0x09,0x01,
+       0xff,0xd3,0x98,0xcc,0x88,0x00,0x01,0xff,0xd3,0x99,0xcc,0x88,0x00,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xd0,0x96,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb6,0xcc,0x88,0x00,0x10,
+       0x09,0x01,0xff,0xd0,0x97,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb7,0xcc,0x88,0x00,0xd4,
+       0x74,0xd3,0x3a,0xd2,0x16,0x51,0x04,0x01,0x00,0x10,0x09,0x01,0xff,0xd0,0x98,0xcc,
+       0x84,0x00,0x01,0xff,0xd0,0xb8,0xcc,0x84,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,
+       0x98,0xcc,0x88,0x00,0x01,0xff,0xd0,0xb8,0xcc,0x88,0x00,0x10,0x09,0x01,0xff,0xd0,
+       0x9e,0xcc,0x88,0x00,0x01,0xff,0xd0,0xbe,0xcc,0x88,0x00,0xd2,0x16,0x51,0x04,0x01,
+       0x00,0x10,0x09,0x01,0xff,0xd3,0xa8,0xcc,0x88,0x00,0x01,0xff,0xd3,0xa9,0xcc,0x88,
+       0x00,0xd1,0x12,0x10,0x09,0x04,0xff,0xd0,0xad,0xcc,0x88,0x00,0x04,0xff,0xd1,0x8d,
+       0xcc,0x88,0x00,0x10,0x09,0x01,0xff,0xd0,0xa3,0xcc,0x84,0x00,0x01,0xff,0xd1,0x83,
+       0xcc,0x84,0x00,0xd3,0x3a,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd0,0xa3,0xcc,
+       0x88,0x00,0x01,0xff,0xd1,0x83,0xcc,0x88,0x00,0x10,0x09,0x01,0xff,0xd0,0xa3,0xcc,
+       0x8b,0x00,0x01,0xff,0xd1,0x83,0xcc,0x8b,0x00,0x91,0x12,0x10,0x09,0x01,0xff,0xd0,
+       0xa7,0xcc,0x88,0x00,0x01,0xff,0xd1,0x87,0xcc,0x88,0x00,0x08,0x00,0x92,0x16,0x91,
+       0x12,0x10,0x09,0x01,0xff,0xd0,0xab,0xcc,0x88,0x00,0x01,0xff,0xd1,0x8b,0xcc,0x88,
+       0x00,0x09,0x00,0x09,0x00,0xd1,0x74,0xd0,0x36,0xcf,0x86,0xd5,0x10,0x54,0x04,0x06,
+       0x00,0x93,0x08,0x12,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0xd4,0x10,0x93,0x0c,0x52,
+       0x04,0x0a,0x00,0x11,0x04,0x0b,0x00,0x0c,0x00,0x10,0x00,0x93,0x10,0x92,0x0c,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,
+       0x24,0x54,0x04,0x01,0x00,0xd3,0x10,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,
+       0x04,0x01,0x00,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0x01,0x00,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,0x00,0x01,
+       0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd0,0xcb,0xcf,0x86,0xd5,0x5d,0xd4,
+       0x35,0xd3,0x15,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,
+       0xff,0xd5,0xa5,0xd6,0x82,0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x14,0x00,0x01,0x00,
+       0x10,0x04,0x04,0x00,0x00,0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x04,
+       0x10,0x00,0x0d,0x00,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x02,0xdc,
+       0x02,0xe6,0x51,0x04,0x02,0xe6,0x10,0x04,0x02,0xdc,0x02,0xe6,0x92,0x0c,0x51,0x04,
+       0x02,0xe6,0x10,0x04,0x02,0xde,0x02,0xdc,0x02,0xe6,0xd4,0x2c,0xd3,0x10,0x92,0x0c,
+       0x51,0x04,0x02,0xe6,0x10,0x04,0x08,0xdc,0x02,0xdc,0x02,0xdc,0xd2,0x0c,0x51,0x04,
+       0x02,0xe6,0x10,0x04,0x02,0xdc,0x02,0xe6,0xd1,0x08,0x10,0x04,0x02,0xe6,0x02,0xde,
+       0x10,0x04,0x02,0xe4,0x02,0xe6,0xd3,0x20,0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0x0a,
+       0x01,0x0b,0x10,0x04,0x01,0x0c,0x01,0x0d,0xd1,0x08,0x10,0x04,0x01,0x0e,0x01,0x0f,
+       0x10,0x04,0x01,0x10,0x01,0x11,0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0x12,0x01,0x13,
+       0x10,0x04,0x09,0x13,0x01,0x14,0xd1,0x08,0x10,0x04,0x01,0x15,0x01,0x16,0x10,0x04,
+       0x01,0x00,0x01,0x17,0xcf,0x86,0xd5,0x28,0x94,0x24,0x93,0x20,0xd2,0x10,0xd1,0x08,
+       0x10,0x04,0x01,0x00,0x01,0x18,0x10,0x04,0x01,0x19,0x01,0x00,0xd1,0x08,0x10,0x04,
+       0x02,0xe6,0x08,0xdc,0x10,0x04,0x08,0x00,0x08,0x12,0x00,0x00,0x01,0x00,0xd4,0x1c,
+       0x53,0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x00,0x00,
+       0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x14,0x00,0x93,0x10,0x52,0x04,0x01,0x00,
+       0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe2,0x27,0x02,0xe1,
+       0x57,0x01,0xd0,0xa8,0xcf,0x86,0xd5,0x55,0xd4,0x28,0xd3,0x10,0x52,0x04,0x07,0x00,
+       0x91,0x08,0x10,0x04,0x0d,0x00,0x10,0x00,0x0a,0x00,0xd2,0x0c,0x51,0x04,0x0a,0x00,
+       0x10,0x04,0x0a,0x00,0x08,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x07,0x00,0x07,0x00,
+       0xd3,0x0c,0x52,0x04,0x07,0xe6,0x11,0x04,0x07,0xe6,0x0a,0xe6,0xd2,0x10,0xd1,0x08,
+       0x10,0x04,0x0a,0x1e,0x0a,0x1f,0x10,0x04,0x0a,0x20,0x01,0x00,0xd1,0x09,0x10,0x05,
+       0x0f,0xff,0x00,0x00,0x00,0x10,0x04,0x08,0x00,0x01,0x00,0xd4,0x3d,0x93,0x39,0xd2,
+       0x1a,0xd1,0x08,0x10,0x04,0x0c,0x00,0x01,0x00,0x10,0x09,0x01,0xff,0xd8,0xa7,0xd9,
+       0x93,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x94,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,
+       0x88,0xd9,0x94,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x95,0x00,0x10,0x09,0x01,0xff,0xd9,
+       0x8a,0xd9,0x94,0x00,0x01,0x00,0x01,0x00,0x53,0x04,0x01,0x00,0x92,0x0c,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x01,0x00,0x0a,0x00,0x0a,0x00,0xcf,0x86,0xd5,0x5c,0xd4,0x20,
+       0x53,0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0x1b,
+       0xd1,0x08,0x10,0x04,0x01,0x1c,0x01,0x1d,0x10,0x04,0x01,0x1e,0x01,0x1f,0xd3,0x20,
+       0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0x20,0x01,0x21,0x10,0x04,0x01,0x22,0x04,0xe6,
+       0xd1,0x08,0x10,0x04,0x04,0xe6,0x04,0xdc,0x10,0x04,0x07,0xdc,0x07,0xe6,0xd2,0x0c,
+       0x91,0x08,0x10,0x04,0x07,0xe6,0x08,0xe6,0x08,0xe6,0xd1,0x08,0x10,0x04,0x08,0xdc,
+       0x08,0xe6,0x10,0x04,0x08,0xe6,0x0c,0xdc,0xd4,0x10,0x53,0x04,0x01,0x00,0x52,0x04,
+       0x01,0x00,0x11,0x04,0x01,0x00,0x06,0x00,0xd3,0x2b,0xd2,0x0c,0x91,0x08,0x10,0x04,
+       0x01,0x23,0x01,0x00,0x01,0x00,0xd1,0x0d,0x10,0x04,0x01,0x00,0x01,0xff,0xd8,0xa7,
+       0xd9,0xb4,0x00,0x10,0x09,0x01,0xff,0xd9,0x88,0xd9,0xb4,0x00,0x01,0xff,0xdb,0x87,
+       0xd9,0xb4,0x00,0x92,0x11,0x91,0x0d,0x10,0x09,0x01,0xff,0xd9,0x8a,0xd9,0xb4,0x00,
+       0x01,0x00,0x01,0x00,0x01,0x00,0xd0,0x22,0xcf,0x86,0x55,0x04,0x01,0x00,0x54,0x04,
+       0x01,0x00,0x53,0x04,0x01,0x00,0xd2,0x08,0x11,0x04,0x04,0x00,0x01,0x00,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x01,0x00,0x04,0x00,0xcf,0x86,0xd5,0x5b,0xd4,0x2e,0xd3,0x1e,
+       0x92,0x1a,0xd1,0x0d,0x10,0x09,0x01,0xff,0xdb,0x95,0xd9,0x94,0x00,0x01,0x00,0x10,
+       0x09,0x01,0xff,0xdb,0x81,0xd9,0x94,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,
+       0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x04,0x00,0xd3,0x19,0xd2,0x11,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xdb,0x92,0xd9,0x94,0x00,0x11,0x04,0x01,
+       0x00,0x01,0xe6,0x52,0x04,0x01,0xe6,0xd1,0x08,0x10,0x04,0x01,0xe6,0x01,0x00,0x10,
+       0x04,0x01,0x00,0x01,0xe6,0xd4,0x38,0xd3,0x1c,0xd2,0x0c,0x51,0x04,0x01,0xe6,0x10,
+       0x04,0x01,0xe6,0x01,0xdc,0xd1,0x08,0x10,0x04,0x01,0xe6,0x01,0x00,0x10,0x04,0x01,
+       0x00,0x01,0xe6,0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0xe6,0x01,0x00,0x10,0x04,0x01,
+       0xdc,0x01,0xe6,0x91,0x08,0x10,0x04,0x01,0xe6,0x01,0xdc,0x07,0x00,0x53,0x04,0x01,
+       0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,
+       0x00,0x07,0x00,0xd1,0xc8,0xd0,0x76,0xcf,0x86,0xd5,0x28,0xd4,0x14,0x53,0x04,0x04,
+       0x00,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x00,0x00,0x04,0x00,0x93,
+       0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x04,0x00,0x04,0x24,0x04,0x00,0x04,0x00,0x04,
+       0x00,0xd4,0x14,0x53,0x04,0x04,0x00,0x52,0x04,0x04,0x00,0x91,0x08,0x10,0x04,0x04,
+       0x00,0x07,0x00,0x07,0x00,0xd3,0x1c,0xd2,0x0c,0x91,0x08,0x10,0x04,0x04,0xe6,0x04,
+       0xdc,0x04,0xe6,0xd1,0x08,0x10,0x04,0x04,0xdc,0x04,0xe6,0x10,0x04,0x04,0xe6,0x04,
+       0xdc,0xd2,0x0c,0x51,0x04,0x04,0xdc,0x10,0x04,0x04,0xe6,0x04,0xdc,0xd1,0x08,0x10,
+       0x04,0x04,0xdc,0x04,0xe6,0x10,0x04,0x04,0xdc,0x04,0xe6,0xcf,0x86,0xd5,0x3c,0x94,
+       0x38,0xd3,0x1c,0xd2,0x0c,0x51,0x04,0x04,0xe6,0x10,0x04,0x04,0xdc,0x04,0xe6,0xd1,
+       0x08,0x10,0x04,0x04,0xdc,0x04,0xe6,0x10,0x04,0x04,0xdc,0x04,0xe6,0xd2,0x10,0xd1,
+       0x08,0x10,0x04,0x04,0xdc,0x04,0xe6,0x10,0x04,0x04,0xe6,0x00,0x00,0x91,0x08,0x10,
+       0x04,0x00,0x00,0x07,0x00,0x07,0x00,0x08,0x00,0x94,0x10,0x53,0x04,0x08,0x00,0x52,
+       0x04,0x08,0x00,0x11,0x04,0x08,0x00,0x0a,0x00,0x0a,0x00,0xd0,0x1e,0xcf,0x86,0x55,
+       0x04,0x04,0x00,0x54,0x04,0x04,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x04,
+       0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x09,0x00,0xd4,
+       0x14,0x53,0x04,0x09,0x00,0x92,0x0c,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,0x09,
+       0xe6,0x09,0xe6,0xd3,0x10,0x92,0x0c,0x51,0x04,0x09,0xe6,0x10,0x04,0x09,0xdc,0x09,
+       0xe6,0x09,0x00,0xd2,0x0c,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,0x00,0x00,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x14,0xdc,0x14,0x00,0xe4,0xe3,0x9e,0xe3,0x48,0x68,0xe2,
+       0xf7,0x67,0xe1,0xe9,0x2f,0xe0,0x75,0x10,0xcf,0x86,0xc5,0xe4,0x80,0x08,0xe3,0xcb,
+       0x03,0xe2,0x61,0x01,0xd1,0x94,0xd0,0x5a,0xcf,0x86,0xd5,0x20,0x54,0x04,0x0b,0x00,
+       0xd3,0x0c,0x52,0x04,0x0b,0x00,0x11,0x04,0x0b,0x00,0x0b,0xe6,0x92,0x0c,0x51,0x04,
+       0x0b,0xe6,0x10,0x04,0x0b,0x00,0x0b,0xe6,0x0b,0xe6,0xd4,0x24,0xd3,0x10,0x52,0x04,
+       0x0b,0xe6,0x91,0x08,0x10,0x04,0x0b,0x00,0x0b,0xe6,0x0b,0xe6,0xd2,0x0c,0x91,0x08,
+       0x10,0x04,0x0b,0x00,0x0b,0xe6,0x0b,0xe6,0x11,0x04,0x0b,0xe6,0x00,0x00,0x53,0x04,
+       0x0b,0x00,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0x20,0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0xd2,0x0c,0x91,0x08,
+       0x10,0x04,0x0c,0x00,0x0c,0xdc,0x0c,0xdc,0x51,0x04,0x00,0x00,0x10,0x04,0x0c,0x00,
+       0x00,0x00,0x94,0x14,0x53,0x04,0x13,0x00,0x92,0x0c,0x51,0x04,0x13,0x00,0x10,0x04,
+       0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x4a,0xcf,0x86,0x55,0x04,0x00,0x00,
+       0xd4,0x20,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0d,0x00,0x10,0x00,0x0d,0x00,
+       0x0d,0x00,0x52,0x04,0x0d,0x00,0x91,0x08,0x10,0x04,0x0d,0x00,0x10,0x00,0x10,0x00,
+       0xd3,0x18,0xd2,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x11,0x00,0x91,0x08,
+       0x10,0x04,0x11,0x00,0x00,0x00,0x12,0x00,0x52,0x04,0x12,0x00,0x11,0x04,0x12,0x00,
+       0x00,0x00,0xcf,0x86,0xd5,0x18,0x54,0x04,0x00,0x00,0x93,0x10,0x92,0x0c,0x51,0x04,
+       0x00,0x00,0x10,0x04,0x00,0x00,0x14,0xdc,0x12,0xe6,0x12,0xe6,0xd4,0x30,0xd3,0x18,
+       0xd2,0x0c,0x51,0x04,0x12,0xe6,0x10,0x04,0x12,0x00,0x11,0xdc,0x51,0x04,0x0d,0xe6,
+       0x10,0x04,0x0d,0xdc,0x0d,0xe6,0xd2,0x0c,0x91,0x08,0x10,0x04,0x0d,0xe6,0x0d,0xdc,
+       0x0d,0xe6,0x91,0x08,0x10,0x04,0x0d,0xe6,0x0d,0xdc,0x0d,0xdc,0xd3,0x1c,0xd2,0x10,
+       0xd1,0x08,0x10,0x04,0x0d,0x1b,0x0d,0x1c,0x10,0x04,0x0d,0x1d,0x0d,0xe6,0x51,0x04,
+       0x0d,0xe6,0x10,0x04,0x0d,0xdc,0x0d,0xe6,0xd2,0x10,0xd1,0x08,0x10,0x04,0x0d,0xe6,
+       0x0d,0xdc,0x10,0x04,0x0d,0xdc,0x0d,0xe6,0x51,0x04,0x0d,0xe6,0x10,0x04,0x0d,0xe6,
+       0x10,0xe6,0xe1,0x3a,0x01,0xd0,0x77,0xcf,0x86,0xd5,0x20,0x94,0x1c,0x93,0x18,0xd2,
+       0x0c,0x91,0x08,0x10,0x04,0x0b,0x00,0x01,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x07,
+       0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,0x1b,0x53,0x04,0x01,0x00,0x92,
+       0x13,0x91,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe0,0xa4,0xa8,0xe0,0xa4,0xbc,0x00,
+       0x01,0x00,0x01,0x00,0xd3,0x26,0xd2,0x13,0x91,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,
+       0xe0,0xa4,0xb0,0xe0,0xa4,0xbc,0x00,0x01,0x00,0x91,0x0f,0x10,0x0b,0x01,0xff,0xe0,
+       0xa4,0xb3,0xe0,0xa4,0xbc,0x00,0x01,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,0x01,0x00,
+       0x0c,0x00,0x91,0x08,0x10,0x04,0x01,0x07,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,0x8c,
+       0xd4,0x18,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,
+       0x01,0x09,0x10,0x04,0x0b,0x00,0x0c,0x00,0xd3,0x1c,0xd2,0x10,0xd1,0x08,0x10,0x04,
+       0x01,0x00,0x01,0xe6,0x10,0x04,0x01,0xdc,0x01,0xe6,0x91,0x08,0x10,0x04,0x01,0xe6,
+       0x0b,0x00,0x0c,0x00,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe0,0xa4,0x95,0xe0,
+       0xa4,0xbc,0x00,0x01,0xff,0xe0,0xa4,0x96,0xe0,0xa4,0xbc,0x00,0x10,0x0b,0x01,0xff,
+       0xe0,0xa4,0x97,0xe0,0xa4,0xbc,0x00,0x01,0xff,0xe0,0xa4,0x9c,0xe0,0xa4,0xbc,0x00,
+       0xd1,0x16,0x10,0x0b,0x01,0xff,0xe0,0xa4,0xa1,0xe0,0xa4,0xbc,0x00,0x01,0xff,0xe0,
+       0xa4,0xa2,0xe0,0xa4,0xbc,0x00,0x10,0x0b,0x01,0xff,0xe0,0xa4,0xab,0xe0,0xa4,0xbc,
+       0x00,0x01,0xff,0xe0,0xa4,0xaf,0xe0,0xa4,0xbc,0x00,0x54,0x04,0x01,0x00,0xd3,0x14,
+       0x92,0x10,0xd1,0x08,0x10,0x04,0x01,0x00,0x0a,0x00,0x10,0x04,0x0a,0x00,0x0c,0x00,
+       0x0c,0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x10,0x00,0x0b,0x00,0x10,0x04,0x0b,0x00,
+       0x09,0x00,0x91,0x08,0x10,0x04,0x09,0x00,0x08,0x00,0x09,0x00,0xd0,0x86,0xcf,0x86,
+       0xd5,0x44,0xd4,0x2c,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x10,0x00,0x01,0x00,
+       0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,
+       0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x93,0x14,
+       0x92,0x10,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,
+       0x01,0x00,0x01,0x00,0xd4,0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0xd3,0x18,0xd2,0x10,0xd1,0x08,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x01,0x00,
+       0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,0x91,0x08,0x10,0x04,0x01,0x07,0x07,0x00,
+       0x01,0x00,0xcf,0x86,0xd5,0x7b,0xd4,0x42,0xd3,0x14,0x52,0x04,0x01,0x00,0xd1,0x08,
+       0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0xd2,0x17,0xd1,0x08,
+       0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xe0,0xa7,0x87,0xe0,
+       0xa6,0xbe,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xa7,0x87,0xe0,0xa7,0x97,0x00,
+       0x01,0x09,0x10,0x04,0x08,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,0x00,0x00,0x51,0x04,
+       0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x52,0x04,0x00,0x00,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xe0,0xa6,0xa1,0xe0,0xa6,0xbc,0x00,0x01,0xff,0xe0,0xa6,0xa2,0xe0,0xa6,
+       0xbc,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xe0,0xa6,0xaf,0xe0,0xa6,0xbc,0x00,0xd4,
+       0x10,0x93,0x0c,0x52,0x04,0x01,0x00,0x11,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x53,
+       0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x0b,0x00,0x51,
+       0x04,0x13,0x00,0x10,0x04,0x14,0xe6,0x00,0x00,0xe2,0x48,0x02,0xe1,0x4f,0x01,0xd0,
+       0xa4,0xcf,0x86,0xd5,0x4c,0xd4,0x34,0xd3,0x1c,0xd2,0x10,0xd1,0x08,0x10,0x04,0x00,
+       0x00,0x07,0x00,0x10,0x04,0x01,0x00,0x07,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,
+       0x00,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x51,
+       0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x93,0x14,0x92,0x10,0xd1,0x08,0x10,
+       0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,
+       0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,
+       0x00,0x01,0x00,0xd3,0x2e,0xd2,0x17,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,
+       0x04,0x01,0x00,0x01,0xff,0xe0,0xa8,0xb2,0xe0,0xa8,0xbc,0x00,0xd1,0x08,0x10,0x04,
+       0x00,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe0,0xa8,0xb8,0xe0,0xa8,0xbc,0x00,0x00,
+       0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,0x91,0x08,0x10,0x04,0x01,0x07,0x00,
+       0x00,0x01,0x00,0xcf,0x86,0xd5,0x80,0xd4,0x34,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x01,
+       0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x01,
+       0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,
+       0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x01,0x09,0x00,0x00,0xd3,0x10,0x92,0x0c,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0xd2,0x25,0xd1,0x0f,0x10,
+       0x04,0x00,0x00,0x01,0xff,0xe0,0xa8,0x96,0xe0,0xa8,0xbc,0x00,0x10,0x0b,0x01,0xff,
+       0xe0,0xa8,0x97,0xe0,0xa8,0xbc,0x00,0x01,0xff,0xe0,0xa8,0x9c,0xe0,0xa8,0xbc,0x00,
+       0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x0b,0x01,0xff,0xe0,0xa8,0xab,0xe0,
+       0xa8,0xbc,0x00,0x00,0x00,0xd4,0x10,0x93,0x0c,0x52,0x04,0x00,0x00,0x11,0x04,0x00,
+       0x00,0x01,0x00,0x01,0x00,0x93,0x14,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,0x01,
+       0x00,0x0a,0x00,0x10,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0xd0,0x82,0xcf,0x86,0xd5,
+       0x40,0xd4,0x2c,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,
+       0x08,0x10,0x04,0x07,0x00,0x01,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x93,0x10,0x92,
+       0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,
+       0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,
+       0x00,0x01,0x00,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,
+       0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,0x01,
+       0x00,0x00,0x00,0x91,0x08,0x10,0x04,0x01,0x07,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,
+       0x3c,0xd4,0x28,0xd3,0x10,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x00,
+       0x00,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x91,
+       0x08,0x10,0x04,0x01,0x00,0x01,0x09,0x00,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x18,0x93,0x14,0xd2,
+       0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x07,0x00,0x07,0x00,0x11,0x04,0x00,0x00,0x01,
+       0x00,0x01,0x00,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0d,0x00,0x07,0x00,0x00,
+       0x00,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x11,0x00,0x13,0x00,0x13,
+       0x00,0xe1,0x24,0x01,0xd0,0x86,0xcf,0x86,0xd5,0x44,0xd4,0x2c,0xd3,0x18,0xd2,0x0c,
+       0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,
+       0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,
+       0x10,0x04,0x00,0x00,0x01,0x00,0x93,0x14,0x92,0x10,0xd1,0x08,0x10,0x04,0x01,0x00,
+       0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,0x14,0x53,0x04,
+       0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,
+       0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x91,0x08,
+       0x10,0x04,0x00,0x00,0x07,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,
+       0x91,0x08,0x10,0x04,0x01,0x07,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,0x73,0xd4,0x45,
+       0xd3,0x14,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,0x0a,0x00,0x00,0x00,0x10,0x04,
+       0x00,0x00,0x01,0x00,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xad,0x87,0xe0,
+       0xad,0x96,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xe0,0xad,0x87,0xe0,0xac,
+       0xbe,0x00,0x91,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xad,0x87,0xe0,0xad,0x97,0x00,0x01,
+       0x09,0x00,0x00,0xd3,0x0c,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x01,0x00,0x52,
+       0x04,0x00,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe0,0xac,0xa1,0xe0,0xac,0xbc,0x00,
+       0x01,0xff,0xe0,0xac,0xa2,0xe0,0xac,0xbc,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0xd4,
+       0x14,0x93,0x10,0xd2,0x08,0x11,0x04,0x01,0x00,0x0a,0x00,0x11,0x04,0x00,0x00,0x01,
+       0x00,0x01,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x07,0x00,0x0c,
+       0x00,0x0c,0x00,0x00,0x00,0xd0,0xb1,0xcf,0x86,0xd5,0x63,0xd4,0x28,0xd3,0x14,0xd2,
+       0x08,0x11,0x04,0x00,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x11,0x04,0x00,
+       0x00,0x01,0x00,0xd3,0x1f,0xd2,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,
+       0x00,0x91,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xae,0x92,0xe0,0xaf,0x97,0x00,0x01,0x00,
+       0x00,0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x10,0x04,0x01,0x00,
+       0x00,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0xd4,0x2c,0xd3,0x18,
+       0xd2,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x91,0x08,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x00,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,
+       0x00,0x00,0x11,0x04,0x00,0x00,0x01,0x00,0xd3,0x10,0x52,0x04,0x01,0x00,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x08,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,
+       0x11,0x04,0x00,0x00,0x01,0x00,0xcf,0x86,0xd5,0x61,0xd4,0x45,0xd3,0x14,0xd2,0x0c,
+       0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x01,0x00,
+       0xd2,0x1e,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x0b,0x01,0xff,0xe0,0xaf,
+       0x86,0xe0,0xae,0xbe,0x00,0x01,0xff,0xe0,0xaf,0x87,0xe0,0xae,0xbe,0x00,0x91,0x0f,
+       0x10,0x0b,0x01,0xff,0xe0,0xaf,0x86,0xe0,0xaf,0x97,0x00,0x01,0x09,0x00,0x00,0x93,
+       0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x0a,0x00,0x00,0x00,0x00,0x00,0x51,0x04,0x00,
+       0x00,0x10,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0xd4,0x14,0x93,0x10,0x52,0x04,0x00,
+       0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x08,0x00,0x01,0x00,0x01,0x00,0xd3,0x10,0x92,
+       0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x07,0x00,0x07,0x00,0x92,0x0c,0x51,
+       0x04,0x07,0x00,0x10,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0xe3,0x10,0x04,0xe2,0x0e,
+       0x02,0xd1,0xe7,0xd0,0x76,0xcf,0x86,0xd5,0x3c,0xd4,0x28,0xd3,0x18,0xd2,0x0c,0x91,
+       0x08,0x10,0x04,0x10,0x00,0x01,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x14,0x00,0x01,
+       0x00,0x01,0x00,0x52,0x04,0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,
+       0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x01,
+       0x00,0x01,0x00,0xd4,0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,
+       0x00,0x00,0x00,0x01,0x00,0x01,0x00,0xd3,0x10,0x52,0x04,0x01,0x00,0x91,0x08,0x10,
+       0x04,0x10,0x00,0x01,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x0a,0x00,0x01,0x00,0xcf,0x86,0xd5,0x53,0xd4,0x2f,0xd3,
+       0x10,0x52,0x04,0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0xd2,
+       0x13,0x91,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xb1,0x86,0xe0,0xb1,0x96,0x00,0x00,0x00,
+       0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x01,0x09,0x00,0x00,0xd3,0x14,0x52,0x04,
+       0x00,0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x54,0x10,0x04,0x01,0x5b,0x00,0x00,
+       0x92,0x0c,0x51,0x04,0x0a,0x00,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0xd4,0x14,
+       0x93,0x10,0xd2,0x08,0x11,0x04,0x01,0x00,0x0a,0x00,0x11,0x04,0x00,0x00,0x01,0x00,
+       0x01,0x00,0x13,0x04,0x00,0x00,0x0a,0x00,0xd0,0x76,0xcf,0x86,0xd5,0x3c,0xd4,0x28,
+       0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x12,0x00,0x10,0x00,0x01,0x00,0x91,0x08,
+       0x10,0x04,0x14,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0x91,0x08,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x01,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,
+       0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,0x14,0x53,0x04,0x01,0x00,0x92,0x0c,
+       0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0xd3,0x10,0x52,0x04,
+       0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0xd2,0x08,0x11,0x04,
+       0x01,0x00,0x00,0x00,0x91,0x08,0x10,0x04,0x07,0x07,0x07,0x00,0x01,0x00,0xcf,0x86,
+       0xd5,0x82,0xd4,0x5e,0xd3,0x2a,0xd2,0x13,0x91,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xb2,
+       0xbf,0xe0,0xb3,0x95,0x00,0x01,0x00,0x01,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,
+       0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe0,0xb3,0x86,0xe0,0xb3,0x95,0x00,0xd2,0x28,
+       0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xb3,0x86,0xe0,0xb3,0x96,0x00,0x00,0x00,0x10,
+       0x0b,0x01,0xff,0xe0,0xb3,0x86,0xe0,0xb3,0x82,0x00,0x01,0xff,0xe0,0xb3,0x86,0xe0,
+       0xb3,0x82,0xe0,0xb3,0x95,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x01,0x09,0x00,0x00,
+       0xd3,0x14,0x52,0x04,0x00,0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x52,0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x01,0x00,
+       0x00,0x00,0xd4,0x14,0x93,0x10,0xd2,0x08,0x11,0x04,0x01,0x00,0x09,0x00,0x11,0x04,
+       0x00,0x00,0x01,0x00,0x01,0x00,0x93,0x14,0x92,0x10,0xd1,0x08,0x10,0x04,0x00,0x00,
+       0x09,0x00,0x10,0x04,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe1,0x06,0x01,0xd0,
+       0x6e,0xcf,0x86,0xd5,0x3c,0xd4,0x28,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x13,
+       0x00,0x10,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x52,
+       0x04,0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x93,0x10,0x92,
+       0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd4,
+       0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x0c,0x00,0x01,
+       0x00,0x01,0x00,0x53,0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x0c,
+       0x00,0x13,0x09,0x91,0x08,0x10,0x04,0x13,0x09,0x0a,0x00,0x01,0x00,0xcf,0x86,0xd5,
+       0x65,0xd4,0x45,0xd3,0x10,0x52,0x04,0x01,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x00,
+       0x00,0x01,0x00,0xd2,0x1e,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x0b,0x01,
+       0xff,0xe0,0xb5,0x86,0xe0,0xb4,0xbe,0x00,0x01,0xff,0xe0,0xb5,0x87,0xe0,0xb4,0xbe,
+       0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe0,0xb5,0x86,0xe0,0xb5,0x97,0x00,0x01,0x09,
+       0x10,0x04,0x0c,0x00,0x12,0x00,0xd3,0x10,0x52,0x04,0x00,0x00,0x51,0x04,0x12,0x00,
+       0x10,0x04,0x12,0x00,0x01,0x00,0x52,0x04,0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,
+       0x12,0x00,0x11,0x00,0xd4,0x14,0x93,0x10,0xd2,0x08,0x11,0x04,0x01,0x00,0x0a,0x00,
+       0x11,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0xd3,0x0c,0x52,0x04,0x0a,0x00,0x11,0x04,
+       0x0a,0x00,0x12,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x12,0x00,0x0a,0x00,0x0a,0x00,
+       0x0a,0x00,0xd0,0x5a,0xcf,0x86,0xd5,0x34,0xd4,0x18,0x93,0x14,0xd2,0x08,0x11,0x04,
+       0x00,0x00,0x04,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x04,0x00,0x04,0x00,0x04,0x00,
+       0xd3,0x10,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x00,0x00,
+       0x92,0x08,0x11,0x04,0x00,0x00,0x04,0x00,0x04,0x00,0x54,0x04,0x04,0x00,0xd3,0x10,
+       0x92,0x0c,0x51,0x04,0x04,0x00,0x10,0x04,0x00,0x00,0x04,0x00,0x04,0x00,0x52,0x04,
+       0x04,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0xcf,0x86,0xd5,0x77,
+       0xd4,0x28,0xd3,0x10,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,
+       0x00,0x00,0xd2,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x04,0x09,0x00,0x00,0x51,0x04,
+       0x00,0x00,0x10,0x04,0x00,0x00,0x04,0x00,0xd3,0x14,0x52,0x04,0x04,0x00,0xd1,0x08,
+       0x10,0x04,0x04,0x00,0x00,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0xd2,0x13,0x51,0x04,
+       0x04,0x00,0x10,0x0b,0x04,0xff,0xe0,0xb7,0x99,0xe0,0xb7,0x8a,0x00,0x04,0x00,0xd1,
+       0x19,0x10,0x0b,0x04,0xff,0xe0,0xb7,0x99,0xe0,0xb7,0x8f,0x00,0x04,0xff,0xe0,0xb7,
+       0x99,0xe0,0xb7,0x8f,0xe0,0xb7,0x8a,0x00,0x10,0x0b,0x04,0xff,0xe0,0xb7,0x99,0xe0,
+       0xb7,0x9f,0x00,0x04,0x00,0xd4,0x10,0x93,0x0c,0x52,0x04,0x00,0x00,0x11,0x04,0x00,
+       0x00,0x10,0x00,0x10,0x00,0x93,0x14,0xd2,0x08,0x11,0x04,0x00,0x00,0x04,0x00,0x91,
+       0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe2,0x69,0x01,0xd1,0x6b,
+       0xd0,0x4d,0xcf,0x86,0xd5,0x18,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x54,0x04,0x01,0x00,
+       0xd3,0x17,0x92,0x13,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe0,0xb9,
+       0x8d,0xe0,0xb8,0xb2,0x00,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x67,0x10,0x04,0x01,
+       0x09,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0xcf,0x86,0x95,
+       0x18,0xd4,0x0c,0x53,0x04,0x01,0x00,0x12,0x04,0x01,0x6b,0x01,0x00,0x53,0x04,0x01,
+       0x00,0x12,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0xd0,0xb1,0xcf,0x86,0xd5,0x54,0xd4,
+       0x3c,0xd3,0x20,0xd2,0x10,0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x10,0x04,0x01,
+       0x00,0x00,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x01,
+       0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,0x01,0x00,0x00,
+       0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0xd3,0x08,0x12,0x04,0x00,
+       0x00,0x01,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,
+       0x00,0xd4,0x30,0xd3,0x1c,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x10,0x04,0x00,0x00,0x01,0x00,0xd2,
+       0x08,0x11,0x04,0x00,0x00,0x01,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0xd3,0x17,0x92,0x13,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe0,
+       0xbb,0x8d,0xe0,0xba,0xb2,0x00,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x76,0x10,0x04,
+       0x00,0x00,0x01,0x00,0x11,0x04,0x01,0x00,0x00,0x00,0xcf,0x86,0x95,0x46,0xd4,0x20,
+       0xd3,0x14,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x00,0x00,0x10,0x04,
+       0x01,0x00,0x00,0x00,0x52,0x04,0x01,0x7a,0x11,0x04,0x01,0x00,0x00,0x00,0x53,0x04,
+       0x01,0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x00,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,
+       0xe0,0xba,0xab,0xe0,0xba,0x99,0x00,0x01,0xff,0xe0,0xba,0xab,0xe0,0xba,0xa1,0x00,
+       0x0d,0x00,0x00,0x00,0xe1,0x53,0x01,0xd0,0x52,0xcf,0x86,0xd5,0x28,0xd4,0x18,0x53,
+       0x04,0x02,0x00,0x52,0x04,0x02,0x00,0x91,0x0c,0x10,0x08,0x02,0xff,0xe0,0xbc,0x8b,
+       0x00,0x02,0x00,0x02,0x00,0x53,0x04,0x02,0x00,0x92,0x08,0x11,0x04,0x02,0xdc,0x02,
+       0x00,0x02,0x00,0x54,0x04,0x02,0x00,0xd3,0x14,0x52,0x04,0x02,0x00,0xd1,0x08,0x10,
+       0x04,0x02,0x00,0x02,0xdc,0x10,0x04,0x02,0x00,0x02,0xdc,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x02,0x00,0x02,0xd8,0x02,0x00,0x02,0x00,0xcf,0x86,0xd5,0x73,0xd4,0x36,0xd3,
+       0x17,0x92,0x13,0x51,0x04,0x02,0x00,0x10,0x04,0x02,0x00,0x02,0xff,0xe0,0xbd,0x82,
+       0xe0,0xbe,0xb7,0x00,0x02,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x02,0x00,
+       0x02,0x00,0x91,0x0f,0x10,0x04,0x02,0x00,0x02,0xff,0xe0,0xbd,0x8c,0xe0,0xbe,0xb7,
+       0x00,0x02,0x00,0xd3,0x26,0xd2,0x13,0x51,0x04,0x02,0x00,0x10,0x0b,0x02,0xff,0xe0,
+       0xbd,0x91,0xe0,0xbe,0xb7,0x00,0x02,0x00,0x51,0x04,0x02,0x00,0x10,0x04,0x02,0x00,
+       0x02,0xff,0xe0,0xbd,0x96,0xe0,0xbe,0xb7,0x00,0x52,0x04,0x02,0x00,0x91,0x0f,0x10,
+       0x0b,0x02,0xff,0xe0,0xbd,0x9b,0xe0,0xbe,0xb7,0x00,0x02,0x00,0x02,0x00,0xd4,0x27,
+       0x53,0x04,0x02,0x00,0xd2,0x17,0xd1,0x0f,0x10,0x04,0x02,0x00,0x02,0xff,0xe0,0xbd,
+       0x80,0xe0,0xbe,0xb5,0x00,0x10,0x04,0x04,0x00,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,
+       0x00,0x00,0x00,0x00,0x00,0xd3,0x3f,0xd2,0x17,0xd1,0x08,0x10,0x04,0x00,0x00,0x02,
+       0x81,0x10,0x04,0x02,0x82,0x02,0xff,0xe0,0xbd,0xb1,0xe0,0xbd,0xb2,0x00,0xd1,0x0f,
+       0x10,0x04,0x02,0x84,0x02,0xff,0xe0,0xbd,0xb1,0xe0,0xbd,0xb4,0x00,0x10,0x0b,0x02,
+       0xff,0xe0,0xbe,0xb2,0xe0,0xbe,0x80,0x00,0x02,0xff,0xe0,0xbe,0xb2,0xe0,0xbd,0xb1,
+       0xe0,0xbe,0x80,0x00,0xd2,0x1d,0x91,0x19,0x10,0x0b,0x02,0xff,0xe0,0xbe,0xb3,0xe0,
+       0xbe,0x80,0x00,0x02,0xff,0xe0,0xbe,0xb3,0xe0,0xbd,0xb1,0xe0,0xbe,0x80,0x00,0x02,
+       0x82,0x11,0x04,0x02,0x82,0x02,0x00,0xd0,0xd3,0xcf,0x86,0xd5,0x65,0xd4,0x27,0xd3,
+       0x1f,0xd2,0x13,0x91,0x0f,0x10,0x04,0x02,0x82,0x02,0xff,0xe0,0xbd,0xb1,0xe0,0xbe,
+       0x80,0x00,0x02,0xe6,0x91,0x08,0x10,0x04,0x02,0x09,0x02,0x00,0x02,0xe6,0x12,0x04,
+       0x02,0x00,0x0c,0x00,0xd3,0x1f,0xd2,0x13,0x51,0x04,0x02,0x00,0x10,0x04,0x02,0x00,
+       0x02,0xff,0xe0,0xbe,0x92,0xe0,0xbe,0xb7,0x00,0x51,0x04,0x02,0x00,0x10,0x04,0x04,
+       0x00,0x02,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x02,0x00,0x02,0x00,0x91,
+       0x0f,0x10,0x04,0x02,0x00,0x02,0xff,0xe0,0xbe,0x9c,0xe0,0xbe,0xb7,0x00,0x02,0x00,
+       0xd4,0x3d,0xd3,0x26,0xd2,0x13,0x51,0x04,0x02,0x00,0x10,0x0b,0x02,0xff,0xe0,0xbe,
+       0xa1,0xe0,0xbe,0xb7,0x00,0x02,0x00,0x51,0x04,0x02,0x00,0x10,0x04,0x02,0x00,0x02,
+       0xff,0xe0,0xbe,0xa6,0xe0,0xbe,0xb7,0x00,0x52,0x04,0x02,0x00,0x91,0x0f,0x10,0x0b,
+       0x02,0xff,0xe0,0xbe,0xab,0xe0,0xbe,0xb7,0x00,0x02,0x00,0x04,0x00,0xd3,0x10,0x92,
+       0x0c,0x91,0x08,0x10,0x04,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xd2,0x13,0x91,
+       0x0f,0x10,0x04,0x04,0x00,0x02,0xff,0xe0,0xbe,0x90,0xe0,0xbe,0xb5,0x00,0x04,0x00,
+       0x91,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0xcf,0x86,0x95,0x4c,0xd4,0x24,
+       0xd3,0x10,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0xdc,0x04,0x00,
+       0x52,0x04,0x04,0x00,0xd1,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x10,0x04,0x0a,0x00,
+       0x04,0x00,0xd3,0x14,0xd2,0x08,0x11,0x04,0x08,0x00,0x0a,0x00,0x91,0x08,0x10,0x04,
+       0x0a,0x00,0x0b,0x00,0x0b,0x00,0x92,0x10,0xd1,0x08,0x10,0x04,0x0b,0x00,0x0c,0x00,
+       0x10,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xe5,0xfb,0x04,0xe4,
+       0x7d,0x03,0xe3,0x7f,0x01,0xe2,0x08,0x01,0xd1,0x7f,0xd0,0x65,0xcf,0x86,0x55,0x04,
+       0x04,0x00,0xd4,0x33,0xd3,0x1f,0xd2,0x0c,0x51,0x04,0x04,0x00,0x10,0x04,0x0a,0x00,
+       0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x0b,0x04,0xff,0xe1,0x80,0xa5,0xe1,0x80,0xae,
+       0x00,0x04,0x00,0x92,0x10,0xd1,0x08,0x10,0x04,0x0a,0x00,0x04,0x00,0x10,0x04,0x04,
+       0x00,0x0a,0x00,0x04,0x00,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x04,0x00,0x10,0x04,0x04,
+       0x00,0x0a,0x00,0x51,0x04,0x0a,0x00,0x10,0x04,0x04,0x00,0x04,0x07,0x92,0x10,0xd1,
+       0x08,0x10,0x04,0x04,0x00,0x04,0x09,0x10,0x04,0x0a,0x09,0x0a,0x00,0x0a,0x00,0xcf,
+       0x86,0x95,0x14,0x54,0x04,0x04,0x00,0x53,0x04,0x04,0x00,0x92,0x08,0x11,0x04,0x04,
+       0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0xd0,0x2e,0xcf,0x86,0x95,0x28,0xd4,0x14,0x53,
+       0x04,0x0a,0x00,0x52,0x04,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x0a,0xdc,0x0a,
+       0x00,0x53,0x04,0x0a,0x00,0xd2,0x08,0x11,0x04,0x0a,0x00,0x0b,0x00,0x11,0x04,0x0b,
+       0x00,0x0a,0x00,0x01,0x00,0xcf,0x86,0xd5,0x24,0x94,0x20,0xd3,0x10,0x52,0x04,0x01,
+       0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x00,0x00,0x0d,0x00,0x52,0x04,0x00,0x00,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x0d,0x00,0x00,0x00,0x01,0x00,0x54,0x04,0x01,0x00,0xd3,
+       0x10,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x06,0x00,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x06,0x00,0x08,0x00,0x10,0x04,0x08,0x00,0x01,0x00,0x91,
+       0x0c,0x10,0x08,0x08,0xff,0xe1,0x83,0x9c,0x00,0x0d,0x00,0x0d,0x00,0xd1,0x3e,0xd0,
+       0x06,0xcf,0x06,0x01,0x00,0xcf,0x86,0xd5,0x1d,0x54,0x04,0x01,0x00,0x53,0x04,0x01,
+       0x00,0xd2,0x08,0x11,0x04,0x01,0x00,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,
+       0x00,0x01,0xff,0x00,0x94,0x15,0x93,0x11,0x92,0x0d,0x91,0x09,0x10,0x05,0x01,0xff,
+       0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xd0,0x1e,0xcf,0x86,0x55,
+       0x04,0x01,0x00,0x94,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,
+       0x00,0x0b,0x00,0x0b,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0x55,0x04,0x01,0x00,0x54,
+       0x04,0x01,0x00,0x53,0x04,0x01,0x00,0x92,0x08,0x11,0x04,0x01,0x00,0x0b,0x00,0x0b,
+       0x00,0xe2,0x21,0x01,0xd1,0x6c,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x94,0x14,0x93,0x10,
+       0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0x04,0x00,
+       0x04,0x00,0x04,0x00,0xcf,0x86,0x95,0x48,0xd4,0x24,0xd3,0x10,0x52,0x04,0x04,0x00,
+       0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,
+       0x04,0x00,0x00,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,
+       0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0xd2,0x0c,0x91,0x08,
+       0x10,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x00,0x00,0x04,0x00,
+       0xd0,0x62,0xcf,0x86,0xd5,0x28,0x94,0x24,0xd3,0x10,0x52,0x04,0x04,0x00,0x51,0x04,
+       0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x04,0x00,
+       0x00,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0xd4,0x14,0x53,0x04,
+       0x04,0x00,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,
+       0xd3,0x14,0xd2,0x0c,0x91,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x11,0x04,
+       0x04,0x00,0x00,0x00,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,
+       0x00,0x00,0xcf,0x86,0xd5,0x38,0xd4,0x24,0xd3,0x14,0xd2,0x0c,0x91,0x08,0x10,0x04,
+       0x04,0x00,0x00,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x00,0x00,0x52,0x04,0x04,0x00,
+       0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0x93,0x10,0x52,0x04,0x04,0x00,
+       0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x94,0x14,0x53,0x04,
+       0x04,0x00,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,
+       0x04,0x00,0xd1,0x9c,0xd0,0x3e,0xcf,0x86,0x95,0x38,0xd4,0x14,0x53,0x04,0x04,0x00,
+       0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0xd3,0x14,
+       0xd2,0x0c,0x91,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x04,0x00,0x11,0x04,0x04,0x00,
+       0x00,0x00,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,
+       0x04,0x00,0xcf,0x86,0xd5,0x34,0xd4,0x14,0x93,0x10,0x52,0x04,0x04,0x00,0x51,0x04,
+       0x04,0x00,0x10,0x04,0x04,0x00,0x08,0x00,0x04,0x00,0x53,0x04,0x04,0x00,0xd2,0x0c,
+       0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0xd1,0x08,0x10,0x04,0x00,0x00,
+       0x0c,0xe6,0x10,0x04,0x0c,0xe6,0x08,0xe6,0xd4,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x53,0x04,0x04,0x00,
+       0x52,0x04,0x04,0x00,0x91,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0xd0,0x1a,
+       0xcf,0x86,0x95,0x14,0x54,0x04,0x08,0x00,0x53,0x04,0x08,0x00,0x92,0x08,0x11,0x04,
+       0x08,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,
+       0x04,0x00,0xd3,0x10,0x52,0x04,0x04,0x00,0x91,0x08,0x10,0x04,0x04,0x00,0x11,0x00,
+       0x00,0x00,0x52,0x04,0x11,0x00,0x11,0x04,0x11,0x00,0x00,0x00,0xd3,0x30,0xd2,0x2a,
+       0xd1,0x24,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0b,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,
+       0xcf,0x06,0x04,0x00,0xcf,0x06,0x04,0x00,0xcf,0x06,0x04,0x00,0xd2,0x6c,0xd1,0x24,
+       0xd0,0x06,0xcf,0x06,0x04,0x00,0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,0x04,0x00,
+       0x93,0x10,0x52,0x04,0x04,0x00,0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x0b,0x00,
+       0x0b,0x00,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x54,0x04,0x04,0x00,0x53,0x04,0x04,0x00,
+       0x52,0x04,0x04,0x00,0x91,0x08,0x10,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
+       0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,0x04,0x00,0xd3,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x04,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x80,0xd0,0x46,0xcf,0x86,0xd5,0x28,
+       0xd4,0x14,0x53,0x04,0x06,0x00,0x52,0x04,0x06,0x00,0x91,0x08,0x10,0x04,0x06,0x00,
+       0x00,0x00,0x06,0x00,0x93,0x10,0x52,0x04,0x06,0x00,0x91,0x08,0x10,0x04,0x06,0x09,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x54,0x04,0x06,0x00,0x93,0x14,0x52,0x04,0x06,0x00,
+       0xd1,0x08,0x10,0x04,0x06,0x09,0x06,0x00,0x10,0x04,0x06,0x00,0x00,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0x10,0x54,0x04,0x06,0x00,0x93,0x08,0x12,0x04,0x06,0x00,0x00,0x00,
+       0x00,0x00,0xd4,0x14,0x53,0x04,0x06,0x00,0x52,0x04,0x06,0x00,0x91,0x08,0x10,0x04,
+       0x06,0x00,0x00,0x00,0x06,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x06,0x00,
+       0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0xd0,0x1b,0xcf,0x86,0x55,0x04,0x04,0x00,
+       0x54,0x04,0x04,0x00,0x93,0x0d,0x52,0x04,0x04,0x00,0x11,0x05,0x04,0xff,0x00,0x04,
+       0x00,0x04,0x00,0xcf,0x86,0xd5,0x24,0x54,0x04,0x04,0x00,0xd3,0x10,0x92,0x0c,0x51,
+       0x04,0x04,0x00,0x10,0x04,0x04,0x09,0x04,0x00,0x04,0x00,0x52,0x04,0x04,0x00,0x91,
+       0x08,0x10,0x04,0x04,0x00,0x07,0xe6,0x00,0x00,0xd4,0x10,0x53,0x04,0x04,0x00,0x92,
+       0x08,0x11,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x07,0x00,0x92,0x08,0x11,
+       0x04,0x07,0x00,0x00,0x00,0x00,0x00,0xe4,0xb7,0x03,0xe3,0x58,0x01,0xd2,0x8f,0xd1,
+       0x53,0xd0,0x35,0xcf,0x86,0x95,0x2f,0xd4,0x1f,0x53,0x04,0x04,0x00,0xd2,0x0d,0x51,
+       0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x04,0xff,0x00,0x51,0x05,0x04,0xff,0x00,0x10,
+       0x05,0x04,0xff,0x00,0x00,0x00,0x53,0x04,0x04,0x00,0x92,0x08,0x11,0x04,0x04,0x00,
+       0x00,0x00,0x00,0x00,0x04,0x00,0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,0x04,0x00,
+       0x53,0x04,0x04,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0xd0,0x22,0xcf,0x86,0x55,0x04,0x04,0x00,0x94,0x18,0x53,0x04,0x04,0x00,
+       0x92,0x10,0xd1,0x08,0x10,0x04,0x04,0x00,0x04,0xe4,0x10,0x04,0x0a,0x00,0x00,0x00,
+       0x00,0x00,0x0b,0x00,0xcf,0x86,0x55,0x04,0x0b,0x00,0x54,0x04,0x0b,0x00,0x93,0x0c,
+       0x52,0x04,0x0b,0x00,0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0xd1,0x80,0xd0,0x42,
+       0xcf,0x86,0xd5,0x1c,0x54,0x04,0x07,0x00,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,
+       0xd1,0x08,0x10,0x04,0x07,0x00,0x10,0x00,0x10,0x04,0x10,0x00,0x00,0x00,0xd4,0x0c,
+       0x53,0x04,0x07,0x00,0x12,0x04,0x07,0x00,0x00,0x00,0x53,0x04,0x07,0x00,0x92,0x10,
+       0xd1,0x08,0x10,0x04,0x07,0x00,0x07,0xde,0x10,0x04,0x07,0xe6,0x07,0xdc,0x00,0x00,
+       0xcf,0x86,0xd5,0x18,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x07,0x00,
+       0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0xd4,0x10,0x53,0x04,0x07,0x00,
+       0x52,0x04,0x07,0x00,0x11,0x04,0x07,0x00,0x00,0x00,0x93,0x10,0x52,0x04,0x07,0x00,
+       0x91,0x08,0x10,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x1a,0xcf,0x86,
+       0x55,0x04,0x08,0x00,0x94,0x10,0x53,0x04,0x08,0x00,0x92,0x08,0x11,0x04,0x08,0x00,
+       0x0b,0x00,0x00,0x00,0x08,0x00,0xcf,0x86,0x95,0x28,0xd4,0x10,0x53,0x04,0x08,0x00,
+       0x92,0x08,0x11,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x08,0x00,0xd2,0x0c,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x0b,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x08,0x00,
+       0x07,0x00,0xd2,0xe4,0xd1,0x80,0xd0,0x2e,0xcf,0x86,0x95,0x28,0x54,0x04,0x08,0x00,
+       0xd3,0x10,0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x08,0xe6,
+       0xd2,0x0c,0x91,0x08,0x10,0x04,0x08,0xdc,0x08,0x00,0x08,0x00,0x11,0x04,0x00,0x00,
+       0x08,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x18,0x54,0x04,0x0b,0x00,0x53,0x04,0x0b,0x00,
+       0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,0x00,0x00,0xd4,0x14,
+       0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0b,0x09,0x0b,0x00,0x0b,0x00,0x0b,0x00,
+       0x0b,0x00,0xd3,0x10,0x52,0x04,0x0b,0x00,0x91,0x08,0x10,0x04,0x0b,0x00,0x0b,0xe6,
+       0x0b,0xe6,0x52,0x04,0x0b,0xe6,0xd1,0x08,0x10,0x04,0x0b,0xe6,0x00,0x00,0x10,0x04,
+       0x00,0x00,0x0b,0xdc,0xd0,0x5e,0xcf,0x86,0xd5,0x20,0xd4,0x10,0x53,0x04,0x0b,0x00,
+       0x92,0x08,0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x0b,0x00,0x92,0x08,
+       0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0xd4,0x10,0x53,0x04,0x0b,0x00,0x52,0x04,
+       0x0b,0x00,0x11,0x04,0x0b,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,0x10,0xe6,0x91,0x08,
+       0x10,0x04,0x10,0xe6,0x10,0xdc,0x10,0xdc,0xd2,0x0c,0x51,0x04,0x10,0xdc,0x10,0x04,
+       0x10,0xdc,0x10,0xe6,0xd1,0x08,0x10,0x04,0x10,0xe6,0x10,0xdc,0x10,0x04,0x10,0x00,
+       0x00,0x00,0xcf,0x06,0x00,0x00,0xe1,0x1e,0x01,0xd0,0xaa,0xcf,0x86,0xd5,0x6e,0xd4,
+       0x53,0xd3,0x17,0x52,0x04,0x09,0x00,0x51,0x04,0x09,0x00,0x10,0x0b,0x09,0xff,0xe1,
+       0xac,0x85,0xe1,0xac,0xb5,0x00,0x09,0x00,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x09,0xff,
+       0xe1,0xac,0x87,0xe1,0xac,0xb5,0x00,0x09,0x00,0x10,0x0b,0x09,0xff,0xe1,0xac,0x89,
+       0xe1,0xac,0xb5,0x00,0x09,0x00,0xd1,0x0f,0x10,0x0b,0x09,0xff,0xe1,0xac,0x8b,0xe1,
+       0xac,0xb5,0x00,0x09,0x00,0x10,0x0b,0x09,0xff,0xe1,0xac,0x8d,0xe1,0xac,0xb5,0x00,
+       0x09,0x00,0x93,0x17,0x92,0x13,0x51,0x04,0x09,0x00,0x10,0x0b,0x09,0xff,0xe1,0xac,
+       0x91,0xe1,0xac,0xb5,0x00,0x09,0x00,0x09,0x00,0x09,0x00,0x54,0x04,0x09,0x00,0xd3,
+       0x10,0x52,0x04,0x09,0x00,0x91,0x08,0x10,0x04,0x09,0x07,0x09,0x00,0x09,0x00,0xd2,
+       0x13,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,0x09,0xff,0xe1,0xac,0xba,0xe1,0xac,
+       0xb5,0x00,0x91,0x0f,0x10,0x04,0x09,0x00,0x09,0xff,0xe1,0xac,0xbc,0xe1,0xac,0xb5,
+       0x00,0x09,0x00,0xcf,0x86,0xd5,0x3d,0x94,0x39,0xd3,0x31,0xd2,0x25,0xd1,0x16,0x10,
+       0x0b,0x09,0xff,0xe1,0xac,0xbe,0xe1,0xac,0xb5,0x00,0x09,0xff,0xe1,0xac,0xbf,0xe1,
+       0xac,0xb5,0x00,0x10,0x04,0x09,0x00,0x09,0xff,0xe1,0xad,0x82,0xe1,0xac,0xb5,0x00,
+       0x91,0x08,0x10,0x04,0x09,0x09,0x09,0x00,0x09,0x00,0x12,0x04,0x09,0x00,0x00,0x00,
+       0x09,0x00,0xd4,0x1c,0x53,0x04,0x09,0x00,0xd2,0x0c,0x51,0x04,0x09,0x00,0x10,0x04,
+       0x09,0x00,0x09,0xe6,0x91,0x08,0x10,0x04,0x09,0xdc,0x09,0xe6,0x09,0xe6,0xd3,0x08,
+       0x12,0x04,0x09,0xe6,0x09,0x00,0x52,0x04,0x09,0x00,0x91,0x08,0x10,0x04,0x09,0x00,
+       0x00,0x00,0x00,0x00,0xd0,0x2e,0xcf,0x86,0x55,0x04,0x0a,0x00,0xd4,0x18,0x53,0x04,
+       0x0a,0x00,0xd2,0x0c,0x51,0x04,0x0a,0x00,0x10,0x04,0x0a,0x09,0x0d,0x09,0x11,0x04,
+       0x0d,0x00,0x0a,0x00,0x53,0x04,0x0a,0x00,0x92,0x08,0x11,0x04,0x0a,0x00,0x0d,0x00,
+       0x0d,0x00,0xcf,0x86,0x55,0x04,0x0c,0x00,0xd4,0x14,0x93,0x10,0x52,0x04,0x0c,0x00,
+       0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x07,0x0c,0x00,0x0c,0x00,0xd3,0x0c,0x92,0x08,
+       0x11,0x04,0x0c,0x00,0x0c,0x09,0x00,0x00,0x12,0x04,0x00,0x00,0x0c,0x00,0xe3,0x65,
+       0x04,0xe2,0x05,0x01,0xd1,0x4c,0xd0,0x2a,0xcf,0x86,0x55,0x04,0x0a,0x00,0x54,0x04,
+       0x0a,0x00,0xd3,0x10,0x52,0x04,0x0a,0x00,0x51,0x04,0x0a,0x00,0x10,0x04,0x0a,0x00,
+       0x0a,0x07,0x92,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x0a,0x00,0x0a,0x00,
+       0xcf,0x86,0x95,0x1c,0x94,0x18,0x53,0x04,0x0a,0x00,0xd2,0x08,0x11,0x04,0x0a,0x00,
+       0x00,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,
+       0xd0,0x3a,0xcf,0x86,0xd5,0x18,0x94,0x14,0x53,0x04,0x12,0x00,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x54,0x04,0x14,0x00,
+       0x53,0x04,0x14,0x00,0xd2,0x0c,0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,0x00,0x00,
+       0x91,0x08,0x10,0x04,0x00,0x00,0x14,0x00,0x14,0x00,0xcf,0x86,0xd5,0x2c,0xd4,0x08,
+       0x13,0x04,0x0d,0x00,0x00,0x00,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x0b,0xe6,0x10,0x04,
+       0x0b,0xe6,0x0b,0x00,0x91,0x08,0x10,0x04,0x0b,0x01,0x0b,0xdc,0x0b,0xdc,0x92,0x08,
+       0x11,0x04,0x0b,0xdc,0x0b,0xe6,0x0b,0xdc,0xd4,0x28,0xd3,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0b,0xe6,0x0b,0x00,0x0b,0x01,0x0b,0x01,0xd2,0x0c,0x91,0x08,0x10,0x04,
+       0x0b,0x01,0x0b,0x00,0x0b,0x00,0x91,0x08,0x10,0x04,0x0b,0x00,0x0b,0xdc,0x0b,0x00,
+       0xd3,0x1c,0xd2,0x0c,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,0x0d,0x00,0xd1,0x08,
+       0x10,0x04,0x0d,0xe6,0x0d,0x00,0x10,0x04,0x0d,0x00,0x13,0x00,0x92,0x08,0x11,0x04,
+       0x10,0xe6,0x00,0x00,0x00,0x00,0xe1,0xc3,0x01,0xd0,0x85,0xcf,0x86,0x55,0x04,0x07,
+       0x00,0xd4,0x1f,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0xd1,0x0d,0x10,0x06,0x07,
+       0xff,0x41,0x00,0x07,0xff,0xc3,0x86,0x00,0x10,0x06,0x07,0xff,0x42,0x00,0x07,0x00,
+       0xd3,0x31,0xd2,0x19,0xd1,0x0c,0x10,0x06,0x07,0xff,0x44,0x00,0x07,0xff,0x45,0x00,
+       0x10,0x07,0x07,0xff,0xc6,0x8e,0x00,0x07,0xff,0x47,0x00,0xd1,0x0c,0x10,0x06,0x07,
+       0xff,0x48,0x00,0x07,0xff,0x49,0x00,0x10,0x06,0x07,0xff,0x4a,0x00,0x07,0xff,0x4b,
+       0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,0x07,0xff,0x4c,0x00,0x07,0xff,0x4d,0x00,0x10,
+       0x06,0x07,0xff,0x4e,0x00,0x07,0x00,0xd1,0x0d,0x10,0x06,0x07,0xff,0x4f,0x00,0x07,
+       0xff,0xc8,0xa2,0x00,0x10,0x06,0x07,0xff,0x50,0x00,0x07,0xff,0x52,0x00,0xcf,0x86,
+       0xd5,0xd3,0xd4,0x65,0xd3,0x34,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x07,0xff,0x54,0x00,
+       0x07,0xff,0x55,0x00,0x10,0x06,0x07,0xff,0x57,0x00,0x07,0xff,0x61,0x00,0xd1,0x0e,
+       0x10,0x07,0x07,0xff,0xc9,0x90,0x00,0x07,0xff,0xc9,0x91,0x00,0x10,0x08,0x07,0xff,
+       0xe1,0xb4,0x82,0x00,0x07,0xff,0x62,0x00,0xd2,0x1a,0xd1,0x0c,0x10,0x06,0x07,0xff,
+       0x64,0x00,0x07,0xff,0x65,0x00,0x10,0x07,0x07,0xff,0xc9,0x99,0x00,0x07,0xff,0xc9,
+       0x9b,0x00,0xd1,0x0d,0x10,0x07,0x07,0xff,0xc9,0x9c,0x00,0x07,0xff,0x67,0x00,0x10,
+       0x04,0x07,0x00,0x07,0xff,0x6b,0x00,0xd3,0x36,0xd2,0x1a,0xd1,0x0d,0x10,0x06,0x07,
+       0xff,0x6d,0x00,0x07,0xff,0xc5,0x8b,0x00,0x10,0x06,0x07,0xff,0x6f,0x00,0x07,0xff,
+       0xc9,0x94,0x00,0xd1,0x10,0x10,0x08,0x07,0xff,0xe1,0xb4,0x96,0x00,0x07,0xff,0xe1,
+       0xb4,0x97,0x00,0x10,0x06,0x07,0xff,0x70,0x00,0x07,0xff,0x74,0x00,0xd2,0x1b,0xd1,
+       0x0e,0x10,0x06,0x07,0xff,0x75,0x00,0x07,0xff,0xe1,0xb4,0x9d,0x00,0x10,0x07,0x07,
+       0xff,0xc9,0xaf,0x00,0x07,0xff,0x76,0x00,0xd1,0x0f,0x10,0x08,0x07,0xff,0xe1,0xb4,
+       0xa5,0x00,0x07,0xff,0xce,0xb2,0x00,0x10,0x07,0x07,0xff,0xce,0xb3,0x00,0x07,0xff,
+       0xce,0xb4,0x00,0xd4,0x51,0xd3,0x34,0xd2,0x1a,0xd1,0x0e,0x10,0x07,0x07,0xff,0xcf,
+       0x86,0x00,0x07,0xff,0xcf,0x87,0x00,0x10,0x06,0x07,0xff,0x69,0x00,0x07,0xff,0x72,
+       0x00,0xd1,0x0c,0x10,0x06,0x07,0xff,0x75,0x00,0x07,0xff,0x76,0x00,0x10,0x07,0x07,
+       0xff,0xce,0xb2,0x00,0x07,0xff,0xce,0xb3,0x00,0x92,0x19,0xd1,0x0e,0x10,0x07,0x07,
+       0xff,0xcf,0x81,0x00,0x07,0xff,0xcf,0x86,0x00,0x10,0x07,0x07,0xff,0xcf,0x87,0x00,
+       0x07,0x00,0x08,0x00,0x53,0x04,0x08,0x00,0x92,0x0f,0x91,0x0b,0x10,0x07,0x08,0xff,
+       0xd0,0xbd,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xe0,0x16,0x01,0xcf,0x86,0xd5,0x32,
+       0x54,0x04,0x08,0x00,0x53,0x04,0x08,0x00,0xd2,0x0f,0x51,0x04,0x08,0x00,0x10,0x04,
+       0x08,0x00,0x08,0xff,0xc9,0x92,0x00,0xd1,0x0d,0x10,0x06,0x08,0xff,0x63,0x00,0x08,
+       0xff,0xc9,0x95,0x00,0x10,0x07,0x08,0xff,0xc3,0xb0,0x00,0x08,0xff,0xc9,0x9c,0x00,
+       0xd4,0x71,0xd3,0x38,0xd2,0x1b,0xd1,0x0d,0x10,0x06,0x08,0xff,0x66,0x00,0x08,0xff,
+       0xc9,0x9f,0x00,0x10,0x07,0x08,0xff,0xc9,0xa1,0x00,0x08,0xff,0xc9,0xa5,0x00,0xd1,
+       0x0e,0x10,0x07,0x08,0xff,0xc9,0xa8,0x00,0x08,0xff,0xc9,0xa9,0x00,0x10,0x07,0x08,
+       0xff,0xc9,0xaa,0x00,0x08,0xff,0xe1,0xb5,0xbb,0x00,0xd2,0x1d,0xd1,0x0e,0x10,0x07,
+       0x08,0xff,0xca,0x9d,0x00,0x08,0xff,0xc9,0xad,0x00,0x10,0x08,0x08,0xff,0xe1,0xb6,
+       0x85,0x00,0x08,0xff,0xca,0x9f,0x00,0xd1,0x0e,0x10,0x07,0x08,0xff,0xc9,0xb1,0x00,
+       0x08,0xff,0xc9,0xb0,0x00,0x10,0x07,0x08,0xff,0xc9,0xb2,0x00,0x08,0xff,0xc9,0xb3,
+       0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x08,0xff,0xc9,0xb4,0x00,0x08,0xff,
+       0xc9,0xb5,0x00,0x10,0x07,0x08,0xff,0xc9,0xb8,0x00,0x08,0xff,0xca,0x82,0x00,0xd1,
+       0x0e,0x10,0x07,0x08,0xff,0xca,0x83,0x00,0x08,0xff,0xc6,0xab,0x00,0x10,0x07,0x08,
+       0xff,0xca,0x89,0x00,0x08,0xff,0xca,0x8a,0x00,0xd2,0x1c,0xd1,0x0f,0x10,0x08,0x08,
+       0xff,0xe1,0xb4,0x9c,0x00,0x08,0xff,0xca,0x8b,0x00,0x10,0x07,0x08,0xff,0xca,0x8c,
+       0x00,0x08,0xff,0x7a,0x00,0xd1,0x0e,0x10,0x07,0x08,0xff,0xca,0x90,0x00,0x08,0xff,
+       0xca,0x91,0x00,0x10,0x07,0x08,0xff,0xca,0x92,0x00,0x08,0xff,0xce,0xb8,0x00,0xcf,
+       0x86,0xd5,0x40,0xd4,0x2c,0xd3,0x10,0x92,0x0c,0x51,0x04,0x08,0xe6,0x10,0x04,0x08,
+       0xdc,0x08,0xe6,0x09,0xe6,0xd2,0x0c,0x51,0x04,0x09,0xe6,0x10,0x04,0x09,0xdc,0x0a,
+       0xe6,0xd1,0x08,0x10,0x04,0x0a,0xe6,0x0a,0xea,0x10,0x04,0x0a,0xd6,0x0a,0xdc,0x93,
+       0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0a,0xca,0x0a,0xe6,0x0a,0xe6,0x0a,0xe6,0x0a,
+       0xe6,0xd4,0x14,0x93,0x10,0x52,0x04,0x0a,0xe6,0x51,0x04,0x0a,0xe6,0x10,0x04,0x0a,
+       0xe6,0x10,0xe6,0x10,0xe6,0xd3,0x10,0x52,0x04,0x10,0xe6,0x51,0x04,0x10,0xe6,0x10,
+       0x04,0x13,0xe8,0x13,0xe4,0xd2,0x10,0xd1,0x08,0x10,0x04,0x13,0xe4,0x13,0xdc,0x10,
+       0x04,0x00,0x00,0x12,0xe6,0xd1,0x08,0x10,0x04,0x0c,0xe9,0x0b,0xdc,0x10,0x04,0x09,
+       0xe6,0x09,0xdc,0xe2,0x83,0x08,0xe1,0x48,0x04,0xe0,0x1c,0x02,0xcf,0x86,0xe5,0x11,
+       0x01,0xd4,0x84,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x41,0xcc,0xa5,
+       0x00,0x01,0xff,0x61,0xcc,0xa5,0x00,0x10,0x08,0x01,0xff,0x42,0xcc,0x87,0x00,0x01,
+       0xff,0x62,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x42,0xcc,0xa3,0x00,0x01,
+       0xff,0x62,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x42,0xcc,0xb1,0x00,0x01,0xff,0x62,
+       0xcc,0xb1,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x43,0xcc,0xa7,0xcc,0x81,
+       0x00,0x01,0xff,0x63,0xcc,0xa7,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x44,0xcc,0x87,
+       0x00,0x01,0xff,0x64,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x44,0xcc,0xa3,
+       0x00,0x01,0xff,0x64,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x44,0xcc,0xb1,0x00,0x01,
+       0xff,0x64,0xcc,0xb1,0x00,0xd3,0x48,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x44,
+       0xcc,0xa7,0x00,0x01,0xff,0x64,0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x44,0xcc,0xad,
+       0x00,0x01,0xff,0x64,0xcc,0xad,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x45,0xcc,0x84,
+       0xcc,0x80,0x00,0x01,0xff,0x65,0xcc,0x84,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x45,
+       0xcc,0x84,0xcc,0x81,0x00,0x01,0xff,0x65,0xcc,0x84,0xcc,0x81,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0xad,0x00,0x01,0xff,0x65,0xcc,0xad,0x00,0x10,
+       0x08,0x01,0xff,0x45,0xcc,0xb0,0x00,0x01,0xff,0x65,0xcc,0xb0,0x00,0xd1,0x14,0x10,
+       0x0a,0x01,0xff,0x45,0xcc,0xa7,0xcc,0x86,0x00,0x01,0xff,0x65,0xcc,0xa7,0xcc,0x86,
+       0x00,0x10,0x08,0x01,0xff,0x46,0xcc,0x87,0x00,0x01,0xff,0x66,0xcc,0x87,0x00,0xd4,
+       0x84,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x47,0xcc,0x84,0x00,0x01,
+       0xff,0x67,0xcc,0x84,0x00,0x10,0x08,0x01,0xff,0x48,0xcc,0x87,0x00,0x01,0xff,0x68,
+       0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x48,0xcc,0xa3,0x00,0x01,0xff,0x68,
+       0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x48,0xcc,0x88,0x00,0x01,0xff,0x68,0xcc,0x88,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x48,0xcc,0xa7,0x00,0x01,0xff,0x68,
+       0xcc,0xa7,0x00,0x10,0x08,0x01,0xff,0x48,0xcc,0xae,0x00,0x01,0xff,0x68,0xcc,0xae,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x49,0xcc,0xb0,0x00,0x01,0xff,0x69,0xcc,0xb0,
+       0x00,0x10,0x0a,0x01,0xff,0x49,0xcc,0x88,0xcc,0x81,0x00,0x01,0xff,0x69,0xcc,0x88,
+       0xcc,0x81,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x4b,0xcc,0x81,
+       0x00,0x01,0xff,0x6b,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,0x4b,0xcc,0xa3,0x00,0x01,
+       0xff,0x6b,0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x4b,0xcc,0xb1,0x00,0x01,
+       0xff,0x6b,0xcc,0xb1,0x00,0x10,0x08,0x01,0xff,0x4c,0xcc,0xa3,0x00,0x01,0xff,0x6c,
+       0xcc,0xa3,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x4c,0xcc,0xa3,0xcc,0x84,
+       0x00,0x01,0xff,0x6c,0xcc,0xa3,0xcc,0x84,0x00,0x10,0x08,0x01,0xff,0x4c,0xcc,0xb1,
+       0x00,0x01,0xff,0x6c,0xcc,0xb1,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x4c,0xcc,0xad,
+       0x00,0x01,0xff,0x6c,0xcc,0xad,0x00,0x10,0x08,0x01,0xff,0x4d,0xcc,0x81,0x00,0x01,
+       0xff,0x6d,0xcc,0x81,0x00,0xcf,0x86,0xe5,0x15,0x01,0xd4,0x88,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x4d,0xcc,0x87,0x00,0x01,0xff,0x6d,0xcc,0x87,0x00,
+       0x10,0x08,0x01,0xff,0x4d,0xcc,0xa3,0x00,0x01,0xff,0x6d,0xcc,0xa3,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x4e,0xcc,0x87,0x00,0x01,0xff,0x6e,0xcc,0x87,0x00,0x10,0x08,
+       0x01,0xff,0x4e,0xcc,0xa3,0x00,0x01,0xff,0x6e,0xcc,0xa3,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x4e,0xcc,0xb1,0x00,0x01,0xff,0x6e,0xcc,0xb1,0x00,0x10,0x08,
+       0x01,0xff,0x4e,0xcc,0xad,0x00,0x01,0xff,0x6e,0xcc,0xad,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x4f,0xcc,0x83,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x83,0xcc,0x81,0x00,
+       0x10,0x0a,0x01,0xff,0x4f,0xcc,0x83,0xcc,0x88,0x00,0x01,0xff,0x6f,0xcc,0x83,0xcc,
+       0x88,0x00,0xd3,0x48,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x4f,0xcc,0x84,0xcc,
+       0x80,0x00,0x01,0xff,0x6f,0xcc,0x84,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x4f,0xcc,
+       0x84,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x84,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x50,0xcc,0x81,0x00,0x01,0xff,0x70,0xcc,0x81,0x00,0x10,0x08,0x01,0xff,
+       0x50,0xcc,0x87,0x00,0x01,0xff,0x70,0xcc,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x52,0xcc,0x87,0x00,0x01,0xff,0x72,0xcc,0x87,0x00,0x10,0x08,0x01,0xff,
+       0x52,0xcc,0xa3,0x00,0x01,0xff,0x72,0xcc,0xa3,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x52,0xcc,0xa3,0xcc,0x84,0x00,0x01,0xff,0x72,0xcc,0xa3,0xcc,0x84,0x00,0x10,0x08,
+       0x01,0xff,0x52,0xcc,0xb1,0x00,0x01,0xff,0x72,0xcc,0xb1,0x00,0xd4,0x8c,0xd3,0x48,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x53,0xcc,0x87,0x00,0x01,0xff,0x73,0xcc,
+       0x87,0x00,0x10,0x08,0x01,0xff,0x53,0xcc,0xa3,0x00,0x01,0xff,0x73,0xcc,0xa3,0x00,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x53,0xcc,0x81,0xcc,0x87,0x00,0x01,0xff,0x73,0xcc,
+       0x81,0xcc,0x87,0x00,0x10,0x0a,0x01,0xff,0x53,0xcc,0x8c,0xcc,0x87,0x00,0x01,0xff,
+       0x73,0xcc,0x8c,0xcc,0x87,0x00,0xd2,0x24,0xd1,0x14,0x10,0x0a,0x01,0xff,0x53,0xcc,
+       0xa3,0xcc,0x87,0x00,0x01,0xff,0x73,0xcc,0xa3,0xcc,0x87,0x00,0x10,0x08,0x01,0xff,
+       0x54,0xcc,0x87,0x00,0x01,0xff,0x74,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x54,0xcc,0xa3,0x00,0x01,0xff,0x74,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x54,0xcc,
+       0xb1,0x00,0x01,0xff,0x74,0xcc,0xb1,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x54,0xcc,0xad,0x00,0x01,0xff,0x74,0xcc,0xad,0x00,0x10,0x08,0x01,0xff,
+       0x55,0xcc,0xa4,0x00,0x01,0xff,0x75,0xcc,0xa4,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x55,0xcc,0xb0,0x00,0x01,0xff,0x75,0xcc,0xb0,0x00,0x10,0x08,0x01,0xff,0x55,0xcc,
+       0xad,0x00,0x01,0xff,0x75,0xcc,0xad,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x55,0xcc,0x83,0xcc,0x81,0x00,0x01,0xff,0x75,0xcc,0x83,0xcc,0x81,0x00,0x10,0x0a,
+       0x01,0xff,0x55,0xcc,0x84,0xcc,0x88,0x00,0x01,0xff,0x75,0xcc,0x84,0xcc,0x88,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x56,0xcc,0x83,0x00,0x01,0xff,0x76,0xcc,0x83,0x00,
+       0x10,0x08,0x01,0xff,0x56,0xcc,0xa3,0x00,0x01,0xff,0x76,0xcc,0xa3,0x00,0xe0,0x13,
+       0x02,0xcf,0x86,0xd5,0xe4,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0x57,0xcc,0x80,0x00,0x01,0xff,0x77,0xcc,0x80,0x00,0x10,0x08,0x01,0xff,0x57,
+       0xcc,0x81,0x00,0x01,0xff,0x77,0xcc,0x81,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x57,
+       0xcc,0x88,0x00,0x01,0xff,0x77,0xcc,0x88,0x00,0x10,0x08,0x01,0xff,0x57,0xcc,0x87,
+       0x00,0x01,0xff,0x77,0xcc,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x57,
+       0xcc,0xa3,0x00,0x01,0xff,0x77,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x58,0xcc,0x87,
+       0x00,0x01,0xff,0x78,0xcc,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x58,0xcc,0x88,
+       0x00,0x01,0xff,0x78,0xcc,0x88,0x00,0x10,0x08,0x01,0xff,0x59,0xcc,0x87,0x00,0x01,
+       0xff,0x79,0xcc,0x87,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x5a,
+       0xcc,0x82,0x00,0x01,0xff,0x7a,0xcc,0x82,0x00,0x10,0x08,0x01,0xff,0x5a,0xcc,0xa3,
+       0x00,0x01,0xff,0x7a,0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x5a,0xcc,0xb1,
+       0x00,0x01,0xff,0x7a,0xcc,0xb1,0x00,0x10,0x08,0x01,0xff,0x68,0xcc,0xb1,0x00,0x01,
+       0xff,0x74,0xcc,0x88,0x00,0x92,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x77,0xcc,0x8a,
+       0x00,0x01,0xff,0x79,0xcc,0x8a,0x00,0x10,0x08,0x01,0xff,0x61,0xca,0xbe,0x00,0x02,
+       0xff,0x73,0xcc,0x87,0x00,0x0a,0x00,0xd4,0x98,0xd3,0x48,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0x41,0xcc,0xa3,0x00,0x01,0xff,0x61,0xcc,0xa3,0x00,0x10,0x08,0x01,
+       0xff,0x41,0xcc,0x89,0x00,0x01,0xff,0x61,0xcc,0x89,0x00,0xd1,0x14,0x10,0x0a,0x01,
+       0xff,0x41,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,0x81,0x00,0x10,
+       0x0a,0x01,0xff,0x41,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,0x80,
+       0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x41,0xcc,0x82,0xcc,0x89,0x00,0x01,
+       0xff,0x61,0xcc,0x82,0xcc,0x89,0x00,0x10,0x0a,0x01,0xff,0x41,0xcc,0x82,0xcc,0x83,
+       0x00,0x01,0xff,0x61,0xcc,0x82,0xcc,0x83,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x41,
+       0xcc,0xa3,0xcc,0x82,0x00,0x01,0xff,0x61,0xcc,0xa3,0xcc,0x82,0x00,0x10,0x0a,0x01,
+       0xff,0x41,0xcc,0x86,0xcc,0x81,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x81,0x00,0xd3,
+       0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x41,0xcc,0x86,0xcc,0x80,0x00,0x01,
+       0xff,0x61,0xcc,0x86,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x41,0xcc,0x86,0xcc,0x89,
+       0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x89,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x41,
+       0xcc,0x86,0xcc,0x83,0x00,0x01,0xff,0x61,0xcc,0x86,0xcc,0x83,0x00,0x10,0x0a,0x01,
+       0xff,0x41,0xcc,0xa3,0xcc,0x86,0x00,0x01,0xff,0x61,0xcc,0xa3,0xcc,0x86,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0xa3,0x00,0x01,0xff,0x65,0xcc,0xa3,
+       0x00,0x10,0x08,0x01,0xff,0x45,0xcc,0x89,0x00,0x01,0xff,0x65,0xcc,0x89,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0x45,0xcc,0x83,0x00,0x01,0xff,0x65,0xcc,0x83,0x00,0x10,
+       0x0a,0x01,0xff,0x45,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x65,0xcc,0x82,0xcc,0x81,
+       0x00,0xcf,0x86,0xe5,0x31,0x01,0xd4,0x90,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x45,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x65,0xcc,0x82,0xcc,0x80,0x00,
+       0x10,0x0a,0x01,0xff,0x45,0xcc,0x82,0xcc,0x89,0x00,0x01,0xff,0x65,0xcc,0x82,0xcc,
+       0x89,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x45,0xcc,0x82,0xcc,0x83,0x00,0x01,0xff,
+       0x65,0xcc,0x82,0xcc,0x83,0x00,0x10,0x0a,0x01,0xff,0x45,0xcc,0xa3,0xcc,0x82,0x00,
+       0x01,0xff,0x65,0xcc,0xa3,0xcc,0x82,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x49,0xcc,0x89,0x00,0x01,0xff,0x69,0xcc,0x89,0x00,0x10,0x08,0x01,0xff,0x49,0xcc,
+       0xa3,0x00,0x01,0xff,0x69,0xcc,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x4f,0xcc,
+       0xa3,0x00,0x01,0xff,0x6f,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x4f,0xcc,0x89,0x00,
+       0x01,0xff,0x6f,0xcc,0x89,0x00,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x4f,0xcc,0x82,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x81,0x00,0x10,0x0a,
+       0x01,0xff,0x4f,0xcc,0x82,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,0x82,0xcc,0x80,0x00,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x4f,0xcc,0x82,0xcc,0x89,0x00,0x01,0xff,0x6f,0xcc,
+       0x82,0xcc,0x89,0x00,0x10,0x0a,0x01,0xff,0x4f,0xcc,0x82,0xcc,0x83,0x00,0x01,0xff,
+       0x6f,0xcc,0x82,0xcc,0x83,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x4f,0xcc,
+       0xa3,0xcc,0x82,0x00,0x01,0xff,0x6f,0xcc,0xa3,0xcc,0x82,0x00,0x10,0x0a,0x01,0xff,
+       0x4f,0xcc,0x9b,0xcc,0x81,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x81,0x00,0xd1,0x14,
+       0x10,0x0a,0x01,0xff,0x4f,0xcc,0x9b,0xcc,0x80,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,
+       0x80,0x00,0x10,0x0a,0x01,0xff,0x4f,0xcc,0x9b,0xcc,0x89,0x00,0x01,0xff,0x6f,0xcc,
+       0x9b,0xcc,0x89,0x00,0xd4,0x98,0xd3,0x48,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x4f,0xcc,0x9b,0xcc,0x83,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0x83,0x00,0x10,0x0a,
+       0x01,0xff,0x4f,0xcc,0x9b,0xcc,0xa3,0x00,0x01,0xff,0x6f,0xcc,0x9b,0xcc,0xa3,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0x55,0xcc,0xa3,0x00,0x01,0xff,0x75,0xcc,0xa3,0x00,
+       0x10,0x08,0x01,0xff,0x55,0xcc,0x89,0x00,0x01,0xff,0x75,0xcc,0x89,0x00,0xd2,0x28,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x55,0xcc,0x9b,0xcc,0x81,0x00,0x01,0xff,0x75,0xcc,
+       0x9b,0xcc,0x81,0x00,0x10,0x0a,0x01,0xff,0x55,0xcc,0x9b,0xcc,0x80,0x00,0x01,0xff,
+       0x75,0xcc,0x9b,0xcc,0x80,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x55,0xcc,0x9b,0xcc,
+       0x89,0x00,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x89,0x00,0x10,0x0a,0x01,0xff,0x55,0xcc,
+       0x9b,0xcc,0x83,0x00,0x01,0xff,0x75,0xcc,0x9b,0xcc,0x83,0x00,0xd3,0x44,0xd2,0x24,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x55,0xcc,0x9b,0xcc,0xa3,0x00,0x01,0xff,0x75,0xcc,
+       0x9b,0xcc,0xa3,0x00,0x10,0x08,0x01,0xff,0x59,0xcc,0x80,0x00,0x01,0xff,0x79,0xcc,
+       0x80,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x59,0xcc,0xa3,0x00,0x01,0xff,0x79,0xcc,
+       0xa3,0x00,0x10,0x08,0x01,0xff,0x59,0xcc,0x89,0x00,0x01,0xff,0x79,0xcc,0x89,0x00,
+       0x92,0x14,0x91,0x10,0x10,0x08,0x01,0xff,0x59,0xcc,0x83,0x00,0x01,0xff,0x79,0xcc,
+       0x83,0x00,0x0a,0x00,0x0a,0x00,0xe1,0xc0,0x04,0xe0,0x80,0x02,0xcf,0x86,0xe5,0x2d,
+       0x01,0xd4,0xa8,0xd3,0x54,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb1,0xcc,
+       0x93,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,
+       0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,
+       0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,
+       0xce,0xb1,0xcc,0x94,0xcd,0x82,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,
+       0x91,0xcc,0x93,0x00,0x01,0xff,0xce,0x91,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,
+       0x91,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0x91,0xcc,0x94,0xcc,0x80,0x00,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xce,0x91,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0x91,
+       0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0x91,0xcc,0x93,0xcd,0x82,0x00,
+       0x01,0xff,0xce,0x91,0xcc,0x94,0xcd,0x82,0x00,0xd3,0x42,0xd2,0x28,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xce,0xb5,0xcc,0x93,0x00,0x01,0xff,0xce,0xb5,0xcc,0x94,0x00,0x10,
+       0x0b,0x01,0xff,0xce,0xb5,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb5,0xcc,0x94,
+       0xcc,0x80,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,0xce,0xb5,0xcc,0x93,0xcc,0x81,0x00,
+       0x01,0xff,0xce,0xb5,0xcc,0x94,0xcc,0x81,0x00,0x00,0x00,0xd2,0x28,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xce,0x95,0xcc,0x93,0x00,0x01,0xff,0xce,0x95,0xcc,0x94,0x00,0x10,
+       0x0b,0x01,0xff,0xce,0x95,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0x95,0xcc,0x94,
+       0xcc,0x80,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,0xce,0x95,0xcc,0x93,0xcc,0x81,0x00,
+       0x01,0xff,0xce,0x95,0xcc,0x94,0xcc,0x81,0x00,0x00,0x00,0xd4,0xa8,0xd3,0x54,0xd2,
+       0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb7,0xcc,0x93,0x00,0x01,0xff,0xce,0xb7,
+       0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,
+       0xce,0xb7,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,
+       0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,
+       0xff,0xce,0xb7,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcd,0x82,
+       0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0x97,0xcc,0x93,0x00,0x01,0xff,
+       0xce,0x97,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0x97,0xcc,0x93,0xcc,0x80,0x00,
+       0x01,0xff,0xce,0x97,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,
+       0x97,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0x97,0xcc,0x94,0xcc,0x81,0x00,0x10,
+       0x0b,0x01,0xff,0xce,0x97,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xce,0x97,0xcc,0x94,
+       0xcd,0x82,0x00,0xd3,0x54,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb9,0xcc,
+       0x93,0x00,0x01,0xff,0xce,0xb9,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xb9,0xcc,
+       0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0xb9,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xce,0xb9,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xb9,0xcc,0x94,
+       0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0xb9,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,
+       0xce,0xb9,0xcc,0x94,0xcd,0x82,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,
+       0x99,0xcc,0x93,0x00,0x01,0xff,0xce,0x99,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,
+       0x99,0xcc,0x93,0xcc,0x80,0x00,0x01,0xff,0xce,0x99,0xcc,0x94,0xcc,0x80,0x00,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xce,0x99,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0x99,
+       0xcc,0x94,0xcc,0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0x99,0xcc,0x93,0xcd,0x82,0x00,
+       0x01,0xff,0xce,0x99,0xcc,0x94,0xcd,0x82,0x00,0xcf,0x86,0xe5,0x13,0x01,0xd4,0x84,
+       0xd3,0x42,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x93,0x00,0x01,
+       0xff,0xce,0xbf,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xbf,0xcc,0x93,0xcc,0x80,
+       0x00,0x01,0xff,0xce,0xbf,0xcc,0x94,0xcc,0x80,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,
+       0xce,0xbf,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xbf,0xcc,0x94,0xcc,0x81,0x00,
+       0x00,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0x9f,0xcc,0x93,0x00,0x01,
+       0xff,0xce,0x9f,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0x9f,0xcc,0x93,0xcc,0x80,
+       0x00,0x01,0xff,0xce,0x9f,0xcc,0x94,0xcc,0x80,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,
+       0xce,0x9f,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0x9f,0xcc,0x94,0xcc,0x81,0x00,
+       0x00,0x00,0xd3,0x54,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x93,
+       0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xcf,0x85,0xcc,0x93,
+       0xcc,0x80,0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xcf,0x85,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xcf,0x85,0xcc,0x94,0xcc,
+       0x81,0x00,0x10,0x0b,0x01,0xff,0xcf,0x85,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xcf,
+       0x85,0xcc,0x94,0xcd,0x82,0x00,0xd2,0x1c,0xd1,0x0d,0x10,0x04,0x00,0x00,0x01,0xff,
+       0xce,0xa5,0xcc,0x94,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xce,0xa5,0xcc,0x94,0xcc,
+       0x80,0x00,0xd1,0x0f,0x10,0x04,0x00,0x00,0x01,0xff,0xce,0xa5,0xcc,0x94,0xcc,0x81,
+       0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xce,0xa5,0xcc,0x94,0xcd,0x82,0x00,0xd4,0xa8,
+       0xd3,0x54,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x93,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x80,
+       0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,
+       0xcf,0x89,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x81,0x00,
+       0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xcf,0x89,0xcc,
+       0x94,0xcd,0x82,0x00,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xa9,0xcc,0x93,
+       0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0x00,0x10,0x0b,0x01,0xff,0xce,0xa9,0xcc,0x93,
+       0xcc,0x80,0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcc,0x80,0x00,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xce,0xa9,0xcc,0x93,0xcc,0x81,0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcc,
+       0x81,0x00,0x10,0x0b,0x01,0xff,0xce,0xa9,0xcc,0x93,0xcd,0x82,0x00,0x01,0xff,0xce,
+       0xa9,0xcc,0x94,0xcd,0x82,0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xce,0xb1,0xcc,0x80,0x00,0x01,0xff,0xce,0xb1,0xcc,0x81,0x00,0x10,0x09,0x01,0xff,
+       0xce,0xb5,0xcc,0x80,0x00,0x01,0xff,0xce,0xb5,0xcc,0x81,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xce,0xb7,0xcc,0x80,0x00,0x01,0xff,0xce,0xb7,0xcc,0x81,0x00,0x10,0x09,
+       0x01,0xff,0xce,0xb9,0xcc,0x80,0x00,0x01,0xff,0xce,0xb9,0xcc,0x81,0x00,0xd2,0x24,
+       0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xbf,0xcc,0x80,0x00,0x01,0xff,0xce,0xbf,0xcc,
+       0x81,0x00,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x80,0x00,0x01,0xff,0xcf,0x85,0xcc,
+       0x81,0x00,0x91,0x12,0x10,0x09,0x01,0xff,0xcf,0x89,0xcc,0x80,0x00,0x01,0xff,0xcf,
+       0x89,0xcc,0x81,0x00,0x00,0x00,0xe0,0xe9,0x02,0xcf,0x86,0xe5,0x91,0x01,0xd4,0xc8,
+       0xd3,0x64,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcd,0x85,
+       0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,0xce,0xb1,
+       0xcc,0x93,0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x80,0xcd,
+       0x85,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb1,0xcc,0x93,0xcc,0x81,0xcd,0x85,
+       0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcc,0x81,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,
+       0xce,0xb1,0xcc,0x93,0xcd,0x82,0xcd,0x85,0x00,0x01,0xff,0xce,0xb1,0xcc,0x94,0xcd,
+       0x82,0xcd,0x85,0x00,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0x91,0xcc,0x93,
+       0xcd,0x85,0x00,0x01,0xff,0xce,0x91,0xcc,0x94,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,
+       0xce,0x91,0xcc,0x93,0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,0x91,0xcc,0x94,0xcc,
+       0x80,0xcd,0x85,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0x91,0xcc,0x93,0xcc,0x81,
+       0xcd,0x85,0x00,0x01,0xff,0xce,0x91,0xcc,0x94,0xcc,0x81,0xcd,0x85,0x00,0x10,0x0d,
+       0x01,0xff,0xce,0x91,0xcc,0x93,0xcd,0x82,0xcd,0x85,0x00,0x01,0xff,0xce,0x91,0xcc,
+       0x94,0xcd,0x82,0xcd,0x85,0x00,0xd3,0x64,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,
+       0xce,0xb7,0xcc,0x93,0xcd,0x85,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcd,0x85,0x00,
+       0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,
+       0xb7,0xcc,0x94,0xcc,0x80,0xcd,0x85,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xb7,
+       0xcc,0x93,0xcc,0x81,0xcd,0x85,0x00,0x01,0xff,0xce,0xb7,0xcc,0x94,0xcc,0x81,0xcd,
+       0x85,0x00,0x10,0x0d,0x01,0xff,0xce,0xb7,0xcc,0x93,0xcd,0x82,0xcd,0x85,0x00,0x01,
+       0xff,0xce,0xb7,0xcc,0x94,0xcd,0x82,0xcd,0x85,0x00,0xd2,0x30,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xce,0x97,0xcc,0x93,0xcd,0x85,0x00,0x01,0xff,0xce,0x97,0xcc,0x94,0xcd,
+       0x85,0x00,0x10,0x0d,0x01,0xff,0xce,0x97,0xcc,0x93,0xcc,0x80,0xcd,0x85,0x00,0x01,
+       0xff,0xce,0x97,0xcc,0x94,0xcc,0x80,0xcd,0x85,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,
+       0xce,0x97,0xcc,0x93,0xcc,0x81,0xcd,0x85,0x00,0x01,0xff,0xce,0x97,0xcc,0x94,0xcc,
+       0x81,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,0xce,0x97,0xcc,0x93,0xcd,0x82,0xcd,0x85,
+       0x00,0x01,0xff,0xce,0x97,0xcc,0x94,0xcd,0x82,0xcd,0x85,0x00,0xd4,0xc8,0xd3,0x64,
+       0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcd,0x85,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,
+       0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcc,0x80,0xcd,0x85,0x00,
+       0xd1,0x1a,0x10,0x0d,0x01,0xff,0xcf,0x89,0xcc,0x93,0xcc,0x81,0xcd,0x85,0x00,0x01,
+       0xff,0xcf,0x89,0xcc,0x94,0xcc,0x81,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,0xcf,0x89,
+       0xcc,0x93,0xcd,0x82,0xcd,0x85,0x00,0x01,0xff,0xcf,0x89,0xcc,0x94,0xcd,0x82,0xcd,
+       0x85,0x00,0xd2,0x30,0xd1,0x16,0x10,0x0b,0x01,0xff,0xce,0xa9,0xcc,0x93,0xcd,0x85,
+       0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,0xce,0xa9,
+       0xcc,0x93,0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcc,0x80,0xcd,
+       0x85,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0xce,0xa9,0xcc,0x93,0xcc,0x81,0xcd,0x85,
+       0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcc,0x81,0xcd,0x85,0x00,0x10,0x0d,0x01,0xff,
+       0xce,0xa9,0xcc,0x93,0xcd,0x82,0xcd,0x85,0x00,0x01,0xff,0xce,0xa9,0xcc,0x94,0xcd,
+       0x82,0xcd,0x85,0x00,0xd3,0x49,0xd2,0x26,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0xb1,
+       0xcc,0x86,0x00,0x01,0xff,0xce,0xb1,0xcc,0x84,0x00,0x10,0x0b,0x01,0xff,0xce,0xb1,
+       0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,0xb1,0xcd,0x85,0x00,0xd1,0x0f,0x10,0x0b,
+       0x01,0xff,0xce,0xb1,0xcc,0x81,0xcd,0x85,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xce,
+       0xb1,0xcd,0x82,0x00,0x01,0xff,0xce,0xb1,0xcd,0x82,0xcd,0x85,0x00,0xd2,0x24,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0xce,0x91,0xcc,0x86,0x00,0x01,0xff,0xce,0x91,0xcc,0x84,
+       0x00,0x10,0x09,0x01,0xff,0xce,0x91,0xcc,0x80,0x00,0x01,0xff,0xce,0x91,0xcc,0x81,
+       0x00,0xd1,0x11,0x10,0x09,0x01,0xff,0xce,0x91,0xcd,0x85,0x00,0x01,0xff,0x20,0xcc,
+       0x93,0x00,0x10,0x07,0x01,0xff,0xce,0xb9,0x00,0x01,0xff,0x20,0xcc,0x93,0x00,0xcf,
+       0x86,0xe5,0x1b,0x01,0xd4,0x94,0xd3,0x49,0xd2,0x26,0xd1,0x12,0x10,0x08,0x01,0xff,
+       0x20,0xcd,0x82,0x00,0x01,0xff,0x20,0xcc,0x88,0xcd,0x82,0x00,0x10,0x0b,0x01,0xff,
+       0xce,0xb7,0xcc,0x80,0xcd,0x85,0x00,0x01,0xff,0xce,0xb7,0xcd,0x85,0x00,0xd1,0x0f,
+       0x10,0x0b,0x01,0xff,0xce,0xb7,0xcc,0x81,0xcd,0x85,0x00,0x00,0x00,0x10,0x09,0x01,
+       0xff,0xce,0xb7,0xcd,0x82,0x00,0x01,0xff,0xce,0xb7,0xcd,0x82,0xcd,0x85,0x00,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xce,0x95,0xcc,0x80,0x00,0x01,0xff,0xce,0x95,
+       0xcc,0x81,0x00,0x10,0x09,0x01,0xff,0xce,0x97,0xcc,0x80,0x00,0x01,0xff,0xce,0x97,
+       0xcc,0x81,0x00,0xd1,0x13,0x10,0x09,0x01,0xff,0xce,0x97,0xcd,0x85,0x00,0x01,0xff,
+       0x20,0xcc,0x93,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x20,0xcc,0x93,0xcc,0x81,0x00,
+       0x01,0xff,0x20,0xcc,0x93,0xcd,0x82,0x00,0xd3,0x40,0xd2,0x28,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xce,0xb9,0xcc,0x86,0x00,0x01,0xff,0xce,0xb9,0xcc,0x84,0x00,0x10,0x0b,
+       0x01,0xff,0xce,0xb9,0xcc,0x88,0xcc,0x80,0x00,0x01,0xff,0xce,0xb9,0xcc,0x88,0xcc,
+       0x81,0x00,0x51,0x04,0x00,0x00,0x10,0x09,0x01,0xff,0xce,0xb9,0xcd,0x82,0x00,0x01,
+       0xff,0xce,0xb9,0xcc,0x88,0xcd,0x82,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xce,0x99,0xcc,0x86,0x00,0x01,0xff,0xce,0x99,0xcc,0x84,0x00,0x10,0x09,0x01,0xff,
+       0xce,0x99,0xcc,0x80,0x00,0x01,0xff,0xce,0x99,0xcc,0x81,0x00,0xd1,0x0e,0x10,0x04,
+       0x00,0x00,0x01,0xff,0x20,0xcc,0x94,0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x20,0xcc,
+       0x94,0xcc,0x81,0x00,0x01,0xff,0x20,0xcc,0x94,0xcd,0x82,0x00,0xd4,0x95,0xd3,0x4e,
+       0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x85,0xcc,0x86,0x00,0x01,0xff,0xcf,
+       0x85,0xcc,0x84,0x00,0x10,0x0b,0x01,0xff,0xcf,0x85,0xcc,0x88,0xcc,0x80,0x00,0x01,
+       0xff,0xcf,0x85,0xcc,0x88,0xcc,0x81,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xcf,0x81,
+       0xcc,0x93,0x00,0x01,0xff,0xcf,0x81,0xcc,0x94,0x00,0x10,0x09,0x01,0xff,0xcf,0x85,
+       0xcd,0x82,0x00,0x01,0xff,0xcf,0x85,0xcc,0x88,0xcd,0x82,0x00,0xd2,0x24,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xce,0xa5,0xcc,0x86,0x00,0x01,0xff,0xce,0xa5,0xcc,0x84,0x00,
+       0x10,0x09,0x01,0xff,0xce,0xa5,0xcc,0x80,0x00,0x01,0xff,0xce,0xa5,0xcc,0x81,0x00,
+       0xd1,0x13,0x10,0x09,0x01,0xff,0xce,0xa1,0xcc,0x94,0x00,0x01,0xff,0x20,0xcc,0x88,
+       0xcc,0x80,0x00,0x10,0x0a,0x01,0xff,0x20,0xcc,0x88,0xcc,0x81,0x00,0x01,0xff,0x60,
+       0x00,0xd3,0x3b,0xd2,0x18,0x51,0x04,0x00,0x00,0x10,0x0b,0x01,0xff,0xcf,0x89,0xcc,
+       0x80,0xcd,0x85,0x00,0x01,0xff,0xcf,0x89,0xcd,0x85,0x00,0xd1,0x0f,0x10,0x0b,0x01,
+       0xff,0xcf,0x89,0xcc,0x81,0xcd,0x85,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xcf,0x89,
+       0xcd,0x82,0x00,0x01,0xff,0xcf,0x89,0xcd,0x82,0xcd,0x85,0x00,0xd2,0x24,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xce,0x9f,0xcc,0x80,0x00,0x01,0xff,0xce,0x9f,0xcc,0x81,0x00,
+       0x10,0x09,0x01,0xff,0xce,0xa9,0xcc,0x80,0x00,0x01,0xff,0xce,0xa9,0xcc,0x81,0x00,
+       0xd1,0x11,0x10,0x09,0x01,0xff,0xce,0xa9,0xcd,0x85,0x00,0x01,0xff,0x20,0xcc,0x81,
+       0x00,0x10,0x08,0x01,0xff,0x20,0xcc,0x94,0x00,0x00,0x00,0xe0,0xc9,0x1b,0xcf,0x86,
+       0xe5,0xec,0x10,0xe4,0x85,0x0a,0xe3,0x26,0x07,0xe2,0x31,0x03,0xe1,0xb9,0x01,0xd0,
+       0xd1,0xcf,0x86,0xd5,0x40,0xd4,0x1c,0x53,0x06,0x01,0xff,0x20,0x00,0x92,0x11,0x51,
+       0x06,0x01,0xff,0x20,0x00,0x10,0x06,0x01,0xff,0x20,0x00,0x01,0xff,0x00,0x01,0xff,
+       0x00,0x93,0x20,0xd2,0x10,0x91,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x80,0x90,
+       0x00,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0x20,0xcc,0xb3,
+       0x00,0x01,0x00,0xd4,0x36,0xd3,0x1d,0x52,0x04,0x01,0x00,0xd1,0x0d,0x10,0x06,0x01,
+       0xff,0x2e,0x00,0x01,0xff,0x2e,0x2e,0x00,0x10,0x08,0x01,0xff,0x2e,0x2e,0x2e,0x00,
+       0x01,0x00,0xd2,0x09,0x11,0x04,0x01,0x00,0x01,0xff,0x00,0x51,0x05,0x01,0xff,0x00,
+       0x10,0x05,0x01,0xff,0x00,0x04,0xff,0x20,0x00,0xd3,0x3e,0xd2,0x13,0x51,0x04,0x01,
+       0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x80,0xb2,0xe2,0x80,0xb2,0x00,0xd1,0x12,
+       0x10,0x0e,0x01,0xff,0xe2,0x80,0xb2,0xe2,0x80,0xb2,0xe2,0x80,0xb2,0x00,0x01,0x00,
+       0x10,0x0b,0x01,0xff,0xe2,0x80,0xb5,0xe2,0x80,0xb5,0x00,0x01,0xff,0xe2,0x80,0xb5,
+       0xe2,0x80,0xb5,0xe2,0x80,0xb5,0x00,0x52,0x04,0x01,0x00,0xd1,0x0b,0x10,0x07,0x01,
+       0xff,0x21,0x21,0x00,0x01,0x00,0x10,0x08,0x01,0xff,0x20,0xcc,0x85,0x00,0x01,0x00,
+       0xcf,0x86,0xd5,0x68,0xd4,0x2d,0xd3,0x13,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,
+       0x10,0x04,0x01,0x00,0x06,0xff,0x3f,0x3f,0x00,0xd2,0x12,0x91,0x0e,0x10,0x07,0x04,
+       0xff,0x3f,0x21,0x00,0x04,0xff,0x21,0x3f,0x00,0x04,0x00,0x11,0x04,0x04,0x00,0x06,
+       0x00,0xd3,0x29,0xd2,0x0c,0x51,0x04,0x06,0x00,0x10,0x04,0x06,0x00,0x07,0x00,0xd1,
+       0x08,0x10,0x04,0x07,0x00,0x08,0x00,0x10,0x04,0x08,0x00,0x06,0xff,0xe2,0x80,0xb2,
+       0xe2,0x80,0xb2,0xe2,0x80,0xb2,0xe2,0x80,0xb2,0x00,0x52,0x04,0x08,0x00,0x51,0x04,
+       0x08,0x00,0x10,0x04,0x08,0x00,0x06,0xff,0x20,0x00,0xd4,0x23,0xd3,0x14,0x52,0x05,
+       0x06,0xff,0x00,0x91,0x0a,0x10,0x05,0x0a,0xff,0x00,0x00,0xff,0x00,0x0f,0xff,0x00,
+       0x92,0x0a,0x11,0x05,0x0f,0xff,0x00,0x01,0xff,0x00,0x01,0xff,0x00,0xd3,0x28,0xd2,
+       0x10,0x91,0x0c,0x10,0x06,0x01,0xff,0x30,0x00,0x06,0xff,0x69,0x00,0x00,0x00,0xd1,
+       0x0c,0x10,0x06,0x01,0xff,0x34,0x00,0x01,0xff,0x35,0x00,0x10,0x06,0x01,0xff,0x36,
+       0x00,0x01,0xff,0x37,0x00,0xd2,0x1a,0xd1,0x0c,0x10,0x06,0x01,0xff,0x38,0x00,0x01,
+       0xff,0x39,0x00,0x10,0x06,0x01,0xff,0x2b,0x00,0x01,0xff,0xe2,0x88,0x92,0x00,0xd1,
+       0x0c,0x10,0x06,0x01,0xff,0x3d,0x00,0x01,0xff,0x28,0x00,0x10,0x06,0x01,0xff,0x29,
+       0x00,0x01,0xff,0x6e,0x00,0xe0,0x09,0x01,0xcf,0x86,0xd5,0xb7,0xd4,0x60,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x30,0x00,0x01,0xff,0x31,0x00,0x10,0x06,
+       0x01,0xff,0x32,0x00,0x01,0xff,0x33,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x34,0x00,
+       0x01,0xff,0x35,0x00,0x10,0x06,0x01,0xff,0x36,0x00,0x01,0xff,0x37,0x00,0xd2,0x1a,
+       0xd1,0x0c,0x10,0x06,0x01,0xff,0x38,0x00,0x01,0xff,0x39,0x00,0x10,0x06,0x01,0xff,
+       0x2b,0x00,0x01,0xff,0xe2,0x88,0x92,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x3d,0x00,
+       0x01,0xff,0x28,0x00,0x10,0x06,0x01,0xff,0x29,0x00,0x00,0x00,0xd3,0x31,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x08,0xff,0x61,0x00,0x08,0xff,0x65,0x00,0x10,0x06,0x08,0xff,
+       0x6f,0x00,0x08,0xff,0x78,0x00,0xd1,0x0d,0x10,0x07,0x08,0xff,0xc9,0x99,0x00,0x0c,
+       0xff,0x68,0x00,0x10,0x06,0x0c,0xff,0x6b,0x00,0x0c,0xff,0x6c,0x00,0xd2,0x18,0xd1,
+       0x0c,0x10,0x06,0x0c,0xff,0x6d,0x00,0x0c,0xff,0x6e,0x00,0x10,0x06,0x0c,0xff,0x70,
+       0x00,0x0c,0xff,0x73,0x00,0x91,0x0a,0x10,0x06,0x0c,0xff,0x74,0x00,0x00,0x00,0x00,
+       0x00,0xd4,0x23,0x53,0x04,0x01,0x00,0xd2,0x13,0xd1,0x0b,0x10,0x07,0x01,0xff,0x52,
+       0x73,0x00,0x01,0x00,0x10,0x04,0x01,0x00,0x02,0x00,0x91,0x08,0x10,0x04,0x03,0x00,
+       0x04,0x00,0x04,0x00,0xd3,0x10,0xd2,0x08,0x11,0x04,0x06,0x00,0x08,0x00,0x11,0x04,
+       0x08,0x00,0x0b,0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x0b,0x00,0x0c,0x00,0x10,0x04,
+       0x0e,0x00,0x10,0x00,0x51,0x04,0x10,0x00,0x10,0x04,0x11,0x00,0x13,0x00,0xcf,0x86,
+       0xd5,0x28,0x54,0x04,0x00,0x00,0xd3,0x0c,0x92,0x08,0x11,0x04,0x01,0xe6,0x01,0x01,
+       0x01,0xe6,0xd2,0x0c,0x51,0x04,0x01,0x01,0x10,0x04,0x01,0x01,0x01,0xe6,0x91,0x08,
+       0x10,0x04,0x01,0xe6,0x01,0x00,0x01,0x00,0xd4,0x30,0xd3,0x1c,0xd2,0x0c,0x91,0x08,
+       0x10,0x04,0x01,0x00,0x01,0xe6,0x04,0x00,0xd1,0x08,0x10,0x04,0x06,0x00,0x06,0x01,
+       0x10,0x04,0x06,0x01,0x06,0xe6,0x92,0x10,0xd1,0x08,0x10,0x04,0x06,0xdc,0x06,0xe6,
+       0x10,0x04,0x06,0x01,0x08,0x01,0x09,0xdc,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x0a,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe1,0x36,0x03,0xe0,0x71,0x01,
+       0xcf,0x86,0xd5,0xab,0xd4,0x64,0xd3,0x39,0xd2,0x1e,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x61,0x2f,0x63,0x00,0x01,0xff,0x61,0x2f,0x73,0x00,0x10,0x06,0x01,0xff,0x43,0x00,
+       0x01,0xff,0xc2,0xb0,0x43,0x00,0xd1,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,0x63,0x2f,
+       0x6f,0x00,0x10,0x08,0x01,0xff,0x63,0x2f,0x75,0x00,0x01,0xff,0xc6,0x90,0x00,0xd2,
+       0x18,0xd1,0x0c,0x10,0x04,0x01,0x00,0x01,0xff,0xc2,0xb0,0x46,0x00,0x10,0x06,0x01,
+       0xff,0x67,0x00,0x01,0xff,0x48,0x00,0x51,0x06,0x01,0xff,0x48,0x00,0x10,0x06,0x01,
+       0xff,0x68,0x00,0x01,0xff,0xc4,0xa7,0x00,0xd3,0x27,0xd2,0x12,0x51,0x06,0x01,0xff,
+       0x49,0x00,0x10,0x06,0x01,0xff,0x4c,0x00,0x01,0xff,0x6c,0x00,0xd1,0x0a,0x10,0x04,
+       0x01,0x00,0x01,0xff,0x4e,0x00,0x10,0x07,0x01,0xff,0x4e,0x6f,0x00,0x01,0x00,0xd2,
+       0x16,0xd1,0x0a,0x10,0x04,0x01,0x00,0x01,0xff,0x50,0x00,0x10,0x06,0x01,0xff,0x51,
+       0x00,0x01,0xff,0x52,0x00,0x11,0x06,0x01,0xff,0x52,0x00,0x01,0x00,0xd4,0x5d,0xd3,
+       0x2f,0xd2,0x1a,0xd1,0x0f,0x10,0x07,0x01,0xff,0x53,0x4d,0x00,0x01,0xff,0x54,0x45,
+       0x4c,0x00,0x10,0x07,0x01,0xff,0x54,0x4d,0x00,0x01,0x00,0xd1,0x0a,0x10,0x06,0x01,
+       0xff,0x5a,0x00,0x01,0x00,0x10,0x07,0x01,0xff,0xce,0xa9,0x00,0x01,0x00,0xd2,0x18,
+       0xd1,0x0a,0x10,0x06,0x01,0xff,0x5a,0x00,0x01,0x00,0x10,0x06,0x01,0xff,0x4b,0x00,
+       0x01,0xff,0x41,0xcc,0x8a,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x42,0x00,0x01,0xff,
+       0x43,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0x65,0x00,0xd3,0x31,0xd2,0x16,0xd1,0x0c,
+       0x10,0x06,0x01,0xff,0x45,0x00,0x01,0xff,0x46,0x00,0x10,0x04,0x01,0x00,0x01,0xff,
+       0x4d,0x00,0xd1,0x0d,0x10,0x06,0x01,0xff,0x6f,0x00,0x01,0xff,0xd7,0x90,0x00,0x10,
+       0x07,0x01,0xff,0xd7,0x91,0x00,0x01,0xff,0xd7,0x92,0x00,0xd2,0x19,0xd1,0x0d,0x10,
+       0x07,0x01,0xff,0xd7,0x93,0x00,0x04,0xff,0x69,0x00,0x10,0x04,0x04,0x00,0x07,0xff,
+       0x46,0x41,0x58,0x00,0xd1,0x0e,0x10,0x07,0x08,0xff,0xcf,0x80,0x00,0x06,0xff,0xce,
+       0xb3,0x00,0x10,0x07,0x06,0xff,0xce,0x93,0x00,0x06,0xff,0xce,0xa0,0x00,0xcf,0x86,
+       0xd5,0xe6,0xd4,0x46,0xd3,0x26,0xd2,0x10,0x91,0x0c,0x10,0x08,0x06,0xff,0xe2,0x88,
+       0x91,0x00,0x06,0x00,0x06,0x00,0xd1,0x0a,0x10,0x04,0x06,0x00,0x06,0xff,0x44,0x00,
+       0x10,0x06,0x06,0xff,0x64,0x00,0x06,0xff,0x65,0x00,0xd2,0x10,0x91,0x0c,0x10,0x06,
+       0x06,0xff,0x69,0x00,0x06,0xff,0x6a,0x00,0x06,0x00,0xd1,0x08,0x10,0x04,0x08,0x00,
+       0x09,0x00,0x10,0x04,0x09,0x00,0x0a,0x00,0xd3,0x51,0xd2,0x29,0xd1,0x14,0x10,0x0a,
+       0x0b,0xff,0x31,0xe2,0x81,0x84,0x37,0x00,0x0b,0xff,0x31,0xe2,0x81,0x84,0x39,0x00,
+       0x10,0x0b,0x0b,0xff,0x31,0xe2,0x81,0x84,0x31,0x30,0x00,0x01,0xff,0x31,0xe2,0x81,
+       0x84,0x33,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x32,0xe2,0x81,0x84,0x33,0x00,0x01,
+       0xff,0x31,0xe2,0x81,0x84,0x35,0x00,0x10,0x0a,0x01,0xff,0x32,0xe2,0x81,0x84,0x35,
+       0x00,0x01,0xff,0x33,0xe2,0x81,0x84,0x35,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,
+       0xff,0x34,0xe2,0x81,0x84,0x35,0x00,0x01,0xff,0x31,0xe2,0x81,0x84,0x36,0x00,0x10,
+       0x0a,0x01,0xff,0x35,0xe2,0x81,0x84,0x36,0x00,0x01,0xff,0x31,0xe2,0x81,0x84,0x38,
+       0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x33,0xe2,0x81,0x84,0x38,0x00,0x01,0xff,0x35,
+       0xe2,0x81,0x84,0x38,0x00,0x10,0x0a,0x01,0xff,0x37,0xe2,0x81,0x84,0x38,0x00,0x01,
+       0xff,0x31,0xe2,0x81,0x84,0x00,0xd4,0x6e,0xd3,0x3a,0xd2,0x1c,0xd1,0x0d,0x10,0x06,
+       0x01,0xff,0x49,0x00,0x01,0xff,0x49,0x49,0x00,0x10,0x08,0x01,0xff,0x49,0x49,0x49,
+       0x00,0x01,0xff,0x49,0x56,0x00,0xd1,0x0d,0x10,0x06,0x01,0xff,0x56,0x00,0x01,0xff,
+       0x56,0x49,0x00,0x10,0x08,0x01,0xff,0x56,0x49,0x49,0x00,0x01,0xff,0x56,0x49,0x49,
+       0x49,0x00,0xd2,0x1c,0xd1,0x0d,0x10,0x07,0x01,0xff,0x49,0x58,0x00,0x01,0xff,0x58,
+       0x00,0x10,0x07,0x01,0xff,0x58,0x49,0x00,0x01,0xff,0x58,0x49,0x49,0x00,0xd1,0x0c,
+       0x10,0x06,0x01,0xff,0x4c,0x00,0x01,0xff,0x43,0x00,0x10,0x06,0x01,0xff,0x44,0x00,
+       0x01,0xff,0x4d,0x00,0xd3,0x3a,0xd2,0x1c,0xd1,0x0d,0x10,0x06,0x01,0xff,0x69,0x00,
+       0x01,0xff,0x69,0x69,0x00,0x10,0x08,0x01,0xff,0x69,0x69,0x69,0x00,0x01,0xff,0x69,
+       0x76,0x00,0xd1,0x0d,0x10,0x06,0x01,0xff,0x76,0x00,0x01,0xff,0x76,0x69,0x00,0x10,
+       0x08,0x01,0xff,0x76,0x69,0x69,0x00,0x01,0xff,0x76,0x69,0x69,0x69,0x00,0xd2,0x1c,
+       0xd1,0x0d,0x10,0x07,0x01,0xff,0x69,0x78,0x00,0x01,0xff,0x78,0x00,0x10,0x07,0x01,
+       0xff,0x78,0x69,0x00,0x01,0xff,0x78,0x69,0x69,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x6c,0x00,0x01,0xff,0x63,0x00,0x10,0x06,0x01,0xff,0x64,0x00,0x01,0xff,0x6d,0x00,
+       0xd0,0x6e,0xcf,0x86,0xd5,0x4e,0xd4,0x2e,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x01,0x00,
+       0x10,0x04,0x01,0x00,0x04,0x00,0x91,0x08,0x10,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,
+       0x92,0x12,0x91,0x0e,0x10,0x04,0x0a,0x00,0x0b,0xff,0x30,0xe2,0x81,0x84,0x33,0x00,
+       0x11,0x00,0x00,0x00,0x53,0x04,0x01,0x00,0x92,0x18,0x51,0x04,0x01,0x00,0x10,0x0a,
+       0x01,0xff,0xe2,0x86,0x90,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x86,0x92,0xcc,0xb8,0x00,
+       0x01,0x00,0x94,0x1a,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,
+       0x10,0x0a,0x01,0xff,0xe2,0x86,0x94,0xcc,0xb8,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,
+       0xd5,0x2e,0x94,0x2a,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x0e,0x10,0x04,
+       0x01,0x00,0x01,0xff,0xe2,0x87,0x90,0xcc,0xb8,0x00,0x10,0x0a,0x01,0xff,0xe2,0x87,
+       0x94,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x87,0x92,0xcc,0xb8,0x00,0x01,0x00,0xd4,0x14,
+       0x53,0x04,0x01,0x00,0x92,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x04,0x00,
+       0x04,0x00,0x93,0x08,0x12,0x04,0x04,0x00,0x06,0x00,0x06,0x00,0xe2,0x7a,0x02,0xe1,
+       0x81,0x01,0xd0,0xaa,0xcf,0x86,0xd5,0x3e,0x94,0x3a,0xd3,0x16,0x52,0x04,0x01,0x00,
+       0x91,0x0e,0x10,0x0a,0x01,0xff,0xe2,0x88,0x83,0xcc,0xb8,0x00,0x01,0x00,0x01,0x00,
+       0xd2,0x12,0x91,0x0e,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x88,0x88,0xcc,0xb8,0x00,
+       0x01,0x00,0x91,0x0e,0x10,0x0a,0x01,0xff,0xe2,0x88,0x8b,0xcc,0xb8,0x00,0x01,0x00,
+       0x01,0x00,0x01,0x00,0xd4,0x4c,0xd3,0x20,0x52,0x04,0x01,0x00,0xd1,0x0e,0x10,0x0a,
+       0x01,0xff,0xe2,0x88,0xa3,0xcc,0xb8,0x00,0x01,0x00,0x10,0x0a,0x01,0xff,0xe2,0x88,
+       0xa5,0xcc,0xb8,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x19,0x10,0x0b,0x01,0xff,
+       0xe2,0x88,0xab,0xe2,0x88,0xab,0x00,0x01,0xff,0xe2,0x88,0xab,0xe2,0x88,0xab,0xe2,
+       0x88,0xab,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x88,0xae,0xe2,0x88,0xae,0x00,
+       0x93,0x1a,0x92,0x16,0x91,0x12,0x10,0x0e,0x01,0xff,0xe2,0x88,0xae,0xe2,0x88,0xae,
+       0xe2,0x88,0xae,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0xd5,0x48,
+       0x94,0x44,0xd3,0x2e,0xd2,0x12,0x91,0x0e,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x88,
+       0xbc,0xcc,0xb8,0x00,0x01,0x00,0xd1,0x0e,0x10,0x0a,0x01,0xff,0xe2,0x89,0x83,0xcc,
+       0xb8,0x00,0x01,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x89,0x85,0xcc,0xb8,0x00,
+       0x92,0x12,0x91,0x0e,0x10,0x04,0x01,0x00,0x01,0xff,0xe2,0x89,0x88,0xcc,0xb8,0x00,
+       0x01,0x00,0x01,0x00,0x01,0x00,0xd4,0x40,0xd3,0x1e,0x92,0x1a,0xd1,0x0c,0x10,0x08,
+       0x01,0xff,0x3d,0xcc,0xb8,0x00,0x01,0x00,0x10,0x0a,0x01,0xff,0xe2,0x89,0xa1,0xcc,
+       0xb8,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x0e,0x10,0x04,0x01,0x00,
+       0x01,0xff,0xe2,0x89,0x8d,0xcc,0xb8,0x00,0x10,0x08,0x01,0xff,0x3c,0xcc,0xb8,0x00,
+       0x01,0xff,0x3e,0xcc,0xb8,0x00,0xd3,0x30,0xd2,0x18,0x91,0x14,0x10,0x0a,0x01,0xff,
+       0xe2,0x89,0xa4,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x89,0xa5,0xcc,0xb8,0x00,0x01,0x00,
+       0x91,0x14,0x10,0x0a,0x01,0xff,0xe2,0x89,0xb2,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x89,
+       0xb3,0xcc,0xb8,0x00,0x01,0x00,0x92,0x18,0x91,0x14,0x10,0x0a,0x01,0xff,0xe2,0x89,
+       0xb6,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x89,0xb7,0xcc,0xb8,0x00,0x01,0x00,0x01,0x00,
+       0xd0,0x86,0xcf,0x86,0xd5,0x50,0x94,0x4c,0xd3,0x30,0xd2,0x18,0x91,0x14,0x10,0x0a,
+       0x01,0xff,0xe2,0x89,0xba,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x89,0xbb,0xcc,0xb8,0x00,
+       0x01,0x00,0x91,0x14,0x10,0x0a,0x01,0xff,0xe2,0x8a,0x82,0xcc,0xb8,0x00,0x01,0xff,
+       0xe2,0x8a,0x83,0xcc,0xb8,0x00,0x01,0x00,0x92,0x18,0x91,0x14,0x10,0x0a,0x01,0xff,
+       0xe2,0x8a,0x86,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x8a,0x87,0xcc,0xb8,0x00,0x01,0x00,
+       0x01,0x00,0x01,0x00,0x94,0x30,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x14,
+       0x10,0x0a,0x01,0xff,0xe2,0x8a,0xa2,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x8a,0xa8,0xcc,
+       0xb8,0x00,0x10,0x0a,0x01,0xff,0xe2,0x8a,0xa9,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x8a,
+       0xab,0xcc,0xb8,0x00,0x01,0x00,0xcf,0x86,0x55,0x04,0x01,0x00,0xd4,0x5c,0xd3,0x2c,
+       0x92,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0xe2,0x89,0xbc,0xcc,0xb8,0x00,0x01,0xff,
+       0xe2,0x89,0xbd,0xcc,0xb8,0x00,0x10,0x0a,0x01,0xff,0xe2,0x8a,0x91,0xcc,0xb8,0x00,
+       0x01,0xff,0xe2,0x8a,0x92,0xcc,0xb8,0x00,0x01,0x00,0xd2,0x18,0x51,0x04,0x01,0x00,
+       0x10,0x0a,0x01,0xff,0xe2,0x8a,0xb2,0xcc,0xb8,0x00,0x01,0xff,0xe2,0x8a,0xb3,0xcc,
+       0xb8,0x00,0x91,0x14,0x10,0x0a,0x01,0xff,0xe2,0x8a,0xb4,0xcc,0xb8,0x00,0x01,0xff,
+       0xe2,0x8a,0xb5,0xcc,0xb8,0x00,0x01,0x00,0x93,0x0c,0x92,0x08,0x11,0x04,0x01,0x00,
+       0x06,0x00,0x06,0x00,0x06,0x00,0xd1,0x64,0xd0,0x3e,0xcf,0x86,0xd5,0x18,0x94,0x14,
+       0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x01,0x00,0x04,0x00,0x01,0x00,0x01,0x00,
+       0x01,0x00,0x01,0x00,0x94,0x20,0x53,0x04,0x01,0x00,0x92,0x18,0xd1,0x0c,0x10,0x04,
+       0x01,0x00,0x01,0xff,0xe3,0x80,0x88,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,0x89,0x00,
+       0x01,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0x55,0x04,0x01,0x00,0x54,0x04,0x01,0x00,
+       0x53,0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x04,0x00,
+       0x91,0x08,0x10,0x04,0x06,0x00,0x04,0x00,0x04,0x00,0xd0,0x1e,0xcf,0x86,0x95,0x18,
+       0x54,0x04,0x04,0x00,0x53,0x04,0x04,0x00,0x92,0x0c,0x51,0x04,0x04,0x00,0x10,0x04,
+       0x04,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xcf,0x86,0xd5,0x2c,0xd4,0x14,0x53,0x04,
+       0x06,0x00,0x52,0x04,0x06,0x00,0x51,0x04,0x06,0x00,0x10,0x04,0x06,0x00,0x07,0x00,
+       0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x07,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
+       0x12,0x04,0x08,0x00,0x09,0x00,0xd4,0x14,0x53,0x04,0x09,0x00,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0b,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0xd3,0x08,0x12,0x04,0x0c,0x00,
+       0x10,0x00,0xd2,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x12,0x00,0x51,0x04,
+       0x12,0x00,0x10,0x04,0x12,0x00,0x13,0x00,0xe3,0x66,0x04,0xe2,0x33,0x04,0xe1,0x23,
+       0x01,0xd0,0x22,0xcf,0x86,0x55,0x04,0x01,0x00,0x94,0x18,0x93,0x14,0x52,0x04,0x01,
+       0x00,0xd1,0x08,0x10,0x04,0x01,0x00,0x04,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0xcf,0x86,0xd5,0x18,0x94,0x14,0x53,0x04,0x01,0x00,0x92,0x0c,0x51,
+       0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x67,0xd3,
+       0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x31,0x00,0x01,0xff,0x32,0x00,0x10,
+       0x06,0x01,0xff,0x33,0x00,0x01,0xff,0x34,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x35,
+       0x00,0x01,0xff,0x36,0x00,0x10,0x06,0x01,0xff,0x37,0x00,0x01,0xff,0x38,0x00,0xd2,
+       0x1b,0xd1,0x0d,0x10,0x06,0x01,0xff,0x39,0x00,0x01,0xff,0x31,0x30,0x00,0x10,0x07,
+       0x01,0xff,0x31,0x31,0x00,0x01,0xff,0x31,0x32,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,
+       0x31,0x33,0x00,0x01,0xff,0x31,0x34,0x00,0x10,0x07,0x01,0xff,0x31,0x35,0x00,0x01,
+       0xff,0x31,0x36,0x00,0xd3,0x3c,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0x31,0x37,
+       0x00,0x01,0xff,0x31,0x38,0x00,0x10,0x07,0x01,0xff,0x31,0x39,0x00,0x01,0xff,0x32,
+       0x30,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x31,0x29,0x00,0x01,0xff,0x28,0x32,
+       0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x33,0x29,0x00,0x01,0xff,0x28,0x34,0x29,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x35,0x29,0x00,0x01,0xff,0x28,0x36,
+       0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x37,0x29,0x00,0x01,0xff,0x28,0x38,0x29,0x00,
+       0xd1,0x11,0x10,0x08,0x01,0xff,0x28,0x39,0x29,0x00,0x01,0xff,0x28,0x31,0x30,0x29,
+       0x00,0x10,0x09,0x01,0xff,0x28,0x31,0x31,0x29,0x00,0x01,0xff,0x28,0x31,0x32,0x29,
+       0x00,0xe0,0xef,0x01,0xcf,0x86,0xe5,0x00,0x01,0xd4,0x80,0xd3,0x48,0xd2,0x24,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0x28,0x31,0x33,0x29,0x00,0x01,0xff,0x28,0x31,0x34,0x29,
+       0x00,0x10,0x09,0x01,0xff,0x28,0x31,0x35,0x29,0x00,0x01,0xff,0x28,0x31,0x36,0x29,
+       0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0x28,0x31,0x37,0x29,0x00,0x01,0xff,0x28,0x31,
+       0x38,0x29,0x00,0x10,0x09,0x01,0xff,0x28,0x31,0x39,0x29,0x00,0x01,0xff,0x28,0x32,
+       0x30,0x29,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0x31,0x2e,0x00,0x01,0xff,
+       0x32,0x2e,0x00,0x10,0x07,0x01,0xff,0x33,0x2e,0x00,0x01,0xff,0x34,0x2e,0x00,0xd1,
+       0x0e,0x10,0x07,0x01,0xff,0x35,0x2e,0x00,0x01,0xff,0x36,0x2e,0x00,0x10,0x07,0x01,
+       0xff,0x37,0x2e,0x00,0x01,0xff,0x38,0x2e,0x00,0xd3,0x3f,0xd2,0x1f,0xd1,0x0f,0x10,
+       0x07,0x01,0xff,0x39,0x2e,0x00,0x01,0xff,0x31,0x30,0x2e,0x00,0x10,0x08,0x01,0xff,
+       0x31,0x31,0x2e,0x00,0x01,0xff,0x31,0x32,0x2e,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x31,0x33,0x2e,0x00,0x01,0xff,0x31,0x34,0x2e,0x00,0x10,0x08,0x01,0xff,0x31,0x35,
+       0x2e,0x00,0x01,0xff,0x31,0x36,0x2e,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x31,0x37,0x2e,0x00,0x01,0xff,0x31,0x38,0x2e,0x00,0x10,0x08,0x01,0xff,0x31,0x39,
+       0x2e,0x00,0x01,0xff,0x32,0x30,0x2e,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x61,
+       0x29,0x00,0x01,0xff,0x28,0x62,0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x63,0x29,0x00,
+       0x01,0xff,0x28,0x64,0x29,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x28,0x65,0x29,0x00,0x01,0xff,0x28,0x66,0x29,0x00,0x10,0x08,0x01,0xff,
+       0x28,0x67,0x29,0x00,0x01,0xff,0x28,0x68,0x29,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x28,0x69,0x29,0x00,0x01,0xff,0x28,0x6a,0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x6b,
+       0x29,0x00,0x01,0xff,0x28,0x6c,0x29,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x28,0x6d,0x29,0x00,0x01,0xff,0x28,0x6e,0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x6f,
+       0x29,0x00,0x01,0xff,0x28,0x70,0x29,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x71,
+       0x29,0x00,0x01,0xff,0x28,0x72,0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x73,0x29,0x00,
+       0x01,0xff,0x28,0x74,0x29,0x00,0xd3,0x3c,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0x28,0x75,0x29,0x00,0x01,0xff,0x28,0x76,0x29,0x00,0x10,0x08,0x01,0xff,0x28,0x77,
+       0x29,0x00,0x01,0xff,0x28,0x78,0x29,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x28,0x79,
+       0x29,0x00,0x01,0xff,0x28,0x7a,0x29,0x00,0x10,0x06,0x01,0xff,0x41,0x00,0x01,0xff,
+       0x42,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x43,0x00,0x01,0xff,0x44,0x00,
+       0x10,0x06,0x01,0xff,0x45,0x00,0x01,0xff,0x46,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x47,0x00,0x01,0xff,0x48,0x00,0x10,0x06,0x01,0xff,0x49,0x00,0x01,0xff,0x4a,0x00,
+       0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x4b,0x00,0x01,0xff,0x4c,0x00,0x10,0x06,0x01,0xff,0x4d,0x00,0x01,0xff,0x4e,0x00,
+       0xd1,0x0c,0x10,0x06,0x01,0xff,0x4f,0x00,0x01,0xff,0x50,0x00,0x10,0x06,0x01,0xff,
+       0x51,0x00,0x01,0xff,0x52,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x53,0x00,
+       0x01,0xff,0x54,0x00,0x10,0x06,0x01,0xff,0x55,0x00,0x01,0xff,0x56,0x00,0xd1,0x0c,
+       0x10,0x06,0x01,0xff,0x57,0x00,0x01,0xff,0x58,0x00,0x10,0x06,0x01,0xff,0x59,0x00,
+       0x01,0xff,0x5a,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x61,0x00,
+       0x01,0xff,0x62,0x00,0x10,0x06,0x01,0xff,0x63,0x00,0x01,0xff,0x64,0x00,0xd1,0x0c,
+       0x10,0x06,0x01,0xff,0x65,0x00,0x01,0xff,0x66,0x00,0x10,0x06,0x01,0xff,0x67,0x00,
+       0x01,0xff,0x68,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x69,0x00,0x01,0xff,
+       0x6a,0x00,0x10,0x06,0x01,0xff,0x6b,0x00,0x01,0xff,0x6c,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x6d,0x00,0x01,0xff,0x6e,0x00,0x10,0x06,0x01,0xff,0x6f,0x00,0x01,0xff,
+       0x70,0x00,0xd4,0x4a,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x71,0x00,
+       0x01,0xff,0x72,0x00,0x10,0x06,0x01,0xff,0x73,0x00,0x01,0xff,0x74,0x00,0xd1,0x0c,
+       0x10,0x06,0x01,0xff,0x75,0x00,0x01,0xff,0x76,0x00,0x10,0x06,0x01,0xff,0x77,0x00,
+       0x01,0xff,0x78,0x00,0x92,0x16,0xd1,0x0c,0x10,0x06,0x01,0xff,0x79,0x00,0x01,0xff,
+       0x7a,0x00,0x10,0x06,0x01,0xff,0x30,0x00,0x06,0x00,0x06,0x00,0x53,0x04,0x06,0x00,
+       0x52,0x04,0x06,0x00,0x51,0x04,0x06,0x00,0x10,0x04,0x06,0x00,0x07,0x00,0xd1,0x06,
+       0xcf,0x06,0x01,0x00,0xd0,0x1a,0xcf,0x86,0x95,0x14,0x54,0x04,0x01,0x00,0x93,0x0c,
+       0x52,0x04,0x01,0x00,0x11,0x04,0x01,0x00,0x06,0x00,0x06,0x00,0x01,0x00,0xcf,0x86,
+       0x55,0x04,0x01,0x00,0x54,0x04,0x01,0x00,0x13,0x04,0x04,0x00,0x06,0x00,0xd2,0xdc,
+       0xd1,0x48,0xd0,0x26,0xcf,0x86,0x95,0x20,0x54,0x04,0x01,0x00,0xd3,0x0c,0x52,0x04,
+       0x01,0x00,0x11,0x04,0x07,0x00,0x06,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x08,0x00,
+       0x04,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,0x55,0x04,0x01,0x00,0x54,0x04,
+       0x01,0x00,0xd3,0x0c,0x92,0x08,0x11,0x04,0x04,0x00,0x06,0x00,0x06,0x00,0x52,0x04,
+       0x06,0x00,0x11,0x04,0x06,0x00,0x08,0x00,0xd0,0x5e,0xcf,0x86,0xd5,0x2c,0xd4,0x10,
+       0x53,0x04,0x06,0x00,0x92,0x08,0x11,0x04,0x06,0x00,0x07,0x00,0x07,0x00,0xd3,0x0c,
+       0x92,0x08,0x11,0x04,0x07,0x00,0x08,0x00,0x08,0x00,0x52,0x04,0x08,0x00,0x91,0x08,
+       0x10,0x04,0x08,0x00,0x0a,0x00,0x0b,0x00,0xd4,0x10,0x93,0x0c,0x92,0x08,0x11,0x04,
+       0x07,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xd3,0x10,0x92,0x0c,0x51,0x04,0x08,0x00,
+       0x10,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0x52,0x04,0x0a,0x00,0x91,0x08,0x10,0x04,
+       0x0a,0x00,0x0b,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x1c,0x94,0x18,0xd3,0x08,0x12,0x04,
+       0x0a,0x00,0x0b,0x00,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0c,0x00,
+       0x0b,0x00,0x0b,0x00,0x94,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x0b,0x00,0x10,0x04,
+       0x0c,0x00,0x0b,0x00,0x0c,0x00,0x0b,0x00,0x0b,0x00,0xd1,0xa8,0xd0,0x42,0xcf,0x86,
+       0xd5,0x28,0x94,0x24,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x10,0x00,0x01,0x00,
+       0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x0c,0x00,0x01,0x00,0x92,0x08,0x11,0x04,
+       0x01,0x00,0x0c,0x00,0x01,0x00,0x01,0x00,0x94,0x14,0x53,0x04,0x01,0x00,0x92,0x0c,
+       0x91,0x08,0x10,0x04,0x0c,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xcf,0x86,
+       0xd5,0x40,0xd4,0x18,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x08,0x10,0x04,
+       0x0c,0x00,0x01,0x00,0x10,0x04,0x0c,0x00,0x01,0x00,0xd3,0x18,0xd2,0x0c,0x51,0x04,
+       0x01,0x00,0x10,0x04,0x01,0x00,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x01,0x00,
+       0x0b,0x00,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x0c,0x00,
+       0xd4,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,0x01,0x00,0x01,0x00,
+       0x01,0x00,0x06,0x00,0x93,0x0c,0x52,0x04,0x06,0x00,0x11,0x04,0x06,0x00,0x01,0x00,
+       0x01,0x00,0xd0,0x3e,0xcf,0x86,0xd5,0x18,0x54,0x04,0x01,0x00,0x93,0x10,0x52,0x04,
+       0x01,0x00,0x91,0x08,0x10,0x04,0x01,0x00,0x0c,0x00,0x0c,0x00,0x01,0x00,0x54,0x04,
+       0x01,0x00,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,0x01,0x00,0x01,0x00,
+       0x01,0x00,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x04,0x01,0x00,0x0c,0x00,
+       0xcf,0x86,0xd5,0x2c,0x94,0x28,0xd3,0x10,0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,
+       0x10,0x04,0x08,0x00,0x09,0x00,0xd2,0x0c,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,
+       0x0d,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x0d,0x00,0x0c,0x00,0x06,0x00,0x94,0x0c,
+       0x53,0x04,0x06,0x00,0x12,0x04,0x06,0x00,0x0a,0x00,0x06,0x00,0xe4,0x8b,0x01,0xd3,
+       0x0c,0xd2,0x06,0xcf,0x06,0x04,0x00,0xcf,0x06,0x06,0x00,0xd2,0x82,0xd1,0x58,0xd0,
+       0x2b,0xcf,0x86,0x95,0x25,0x94,0x21,0x53,0x04,0x06,0x00,0x52,0x04,0x06,0x00,0x91,
+       0x15,0x10,0x11,0x06,0xff,0xe2,0x88,0xab,0xe2,0x88,0xab,0xe2,0x88,0xab,0xe2,0x88,
+       0xab,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xcf,0x86,0x55,0x04,0x06,0x00,
+       0x54,0x04,0x06,0x00,0x93,0x1f,0x52,0x04,0x06,0x00,0xd1,0x0f,0x10,0x08,0x06,0xff,
+       0x3a,0x3a,0x3d,0x00,0x06,0xff,0x3d,0x3d,0x00,0x10,0x08,0x06,0xff,0x3d,0x3d,0x3d,
+       0x00,0x06,0x00,0x06,0x00,0xd0,0x06,0xcf,0x06,0x06,0x00,0xcf,0x86,0x95,0x1e,0x54,
+       0x04,0x06,0x00,0x53,0x04,0x06,0x00,0x52,0x04,0x06,0x00,0x91,0x0e,0x10,0x0a,0x06,
+       0xff,0xe2,0xab,0x9d,0xcc,0xb8,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xd1,0x80,0xd0,
+       0x3a,0xcf,0x86,0xd5,0x28,0xd4,0x10,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0x11,
+       0x04,0x07,0x00,0x08,0x00,0xd3,0x08,0x12,0x04,0x08,0x00,0x09,0x00,0x92,0x0c,0x51,
+       0x04,0x09,0x00,0x10,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0x94,0x0c,0x93,0x08,0x12,
+       0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0xcf,0x86,0xd5,0x30,0xd4,0x14,0x53,
+       0x04,0x0a,0x00,0x52,0x04,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x10,0x00,0x10,
+       0x00,0xd3,0x10,0x52,0x04,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x0b,0x00,0x0b,
+       0x00,0x92,0x08,0x11,0x04,0x0b,0x00,0x10,0x00,0x10,0x00,0x54,0x04,0x10,0x00,0x93,
+       0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0xd0,0x32,0xcf,
+       0x86,0xd5,0x14,0x54,0x04,0x10,0x00,0x93,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x10,
+       0x00,0x00,0x00,0x10,0x00,0x54,0x04,0x10,0x00,0x53,0x04,0x10,0x00,0xd2,0x08,0x11,
+       0x04,0x10,0x00,0x14,0x00,0x91,0x08,0x10,0x04,0x14,0x00,0x10,0x00,0x10,0x00,0xcf,
+       0x86,0xd5,0x28,0xd4,0x14,0x53,0x04,0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x10,
+       0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x93,0x10,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,
+       0x04,0x13,0x00,0x14,0x00,0x14,0x00,0x14,0x00,0xd4,0x0c,0x53,0x04,0x14,0x00,0x12,
+       0x04,0x14,0x00,0x11,0x00,0x53,0x04,0x14,0x00,0x52,0x04,0x14,0x00,0x51,0x04,0x14,
+       0x00,0x10,0x04,0x14,0x00,0x00,0x00,0xe3,0xc5,0x01,0xd2,0xb4,0xd1,0x70,0xd0,0x1e,
+       0xcf,0x86,0x55,0x04,0x08,0x00,0x94,0x14,0x53,0x04,0x08,0x00,0x52,0x04,0x08,0x00,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x08,0x00,0xcf,0x86,0xd5,0x18,
+       0x54,0x04,0x08,0x00,0x53,0x04,0x08,0x00,0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,
+       0x10,0x04,0x08,0x00,0x00,0x00,0xd4,0x14,0x53,0x04,0x09,0x00,0x52,0x04,0x09,0x00,
+       0x91,0x08,0x10,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0xd3,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0b,0x00,0x0a,0x00,0x0a,0x00,0x09,0x00,0x52,0x04,0x0a,0x00,0x91,0x0c,
+       0x10,0x06,0x0a,0xff,0x6a,0x00,0x0a,0xff,0x56,0x00,0x0b,0x00,0xd0,0x06,0xcf,0x06,
+       0x08,0x00,0xcf,0x86,0x55,0x04,0x08,0x00,0xd4,0x1c,0x53,0x04,0x08,0x00,0xd2,0x0c,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,
+       0x0b,0x00,0x0b,0xe6,0xd3,0x0c,0x92,0x08,0x11,0x04,0x0b,0xe6,0x0d,0x00,0x00,0x00,
+       0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xd1,0x70,
+       0xd0,0x2a,0xcf,0x86,0x55,0x04,0x08,0x00,0x94,0x20,0xd3,0x10,0x52,0x04,0x08,0x00,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x00,0x00,0x0d,0x00,0x52,0x04,0x00,0x00,0x91,0x08,
+       0x10,0x04,0x00,0x00,0x0d,0x00,0x00,0x00,0x08,0x00,0xcf,0x86,0x55,0x04,0x08,0x00,
+       0xd4,0x20,0xd3,0x0c,0x52,0x04,0x08,0x00,0x11,0x04,0x08,0x00,0x0d,0x00,0x52,0x04,
+       0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x08,0xff,0xe2,0xb5,0xa1,0x00,
+       0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x52,0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x0c,0x09,0xd0,0x5a,
+       0xcf,0x86,0xd5,0x18,0x54,0x04,0x08,0x00,0x93,0x10,0x52,0x04,0x08,0x00,0x51,0x04,
+       0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0xd4,0x20,0xd3,0x10,0x52,0x04,
+       0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x52,0x04,0x08,0x00,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,0x08,0x00,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x52,0x04,0x08,0x00,0x51,0x04,
+       0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0xcf,0x86,0x95,0x40,0xd4,0x20,0xd3,0x10,
+       0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x52,0x04,
+       0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,
+       0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x52,0x04,0x08,0x00,
+       0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x00,0x00,0x0a,0xe6,0xd2,0xb4,0xd1,0x68,
+       0xd0,0x32,0xcf,0x86,0xd5,0x14,0x54,0x04,0x08,0x00,0x53,0x04,0x08,0x00,0x52,0x04,
+       0x0a,0x00,0x11,0x04,0x08,0x00,0x0a,0x00,0x54,0x04,0x0a,0x00,0xd3,0x10,0x92,0x0c,
+       0x91,0x08,0x10,0x04,0x0a,0x00,0x0b,0x00,0x0d,0x00,0x0d,0x00,0x12,0x04,0x0d,0x00,
+       0x10,0x00,0xcf,0x86,0x95,0x30,0x94,0x2c,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x10,0x00,
+       0x10,0x04,0x10,0x00,0x12,0x00,0x91,0x08,0x10,0x04,0x12,0x00,0x13,0x00,0x13,0x00,
+       0xd2,0x08,0x11,0x04,0x13,0x00,0x14,0x00,0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x2a,0xcf,0x86,0x95,0x24,0x54,0x04,0x04,0x00,
+       0x53,0x04,0x04,0x00,0xd2,0x0c,0x51,0x04,0x04,0x00,0x10,0x04,0x00,0x00,0x04,0x00,
+       0x51,0x04,0x04,0x00,0x10,0x04,0x04,0x00,0x04,0xff,0xe6,0xaf,0x8d,0x00,0x04,0x00,
+       0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,0x04,0x00,0x93,0x14,0x92,0x10,0x51,0x04,
+       0x04,0x00,0x10,0x04,0x04,0x00,0x04,0xff,0xe9,0xbe,0x9f,0x00,0x00,0x00,0x00,0x00,
+       0xe1,0x08,0x04,0xe0,0x04,0x02,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe4,0xb8,0x80,0x00,0x04,0xff,0xe4,0xb8,0xa8,
+       0x00,0x10,0x08,0x04,0xff,0xe4,0xb8,0xb6,0x00,0x04,0xff,0xe4,0xb8,0xbf,0x00,0xd1,
+       0x10,0x10,0x08,0x04,0xff,0xe4,0xb9,0x99,0x00,0x04,0xff,0xe4,0xba,0x85,0x00,0x10,
+       0x08,0x04,0xff,0xe4,0xba,0x8c,0x00,0x04,0xff,0xe4,0xba,0xa0,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x04,0xff,0xe4,0xba,0xba,0x00,0x04,0xff,0xe5,0x84,0xbf,0x00,0x10,
+       0x08,0x04,0xff,0xe5,0x85,0xa5,0x00,0x04,0xff,0xe5,0x85,0xab,0x00,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0x86,0x82,0x00,0x04,0xff,0xe5,0x86,0x96,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0x86,0xab,0x00,0x04,0xff,0xe5,0x87,0xa0,0x00,0xd3,0x40,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x04,0xff,0xe5,0x87,0xb5,0x00,0x04,0xff,0xe5,0x88,0x80,0x00,0x10,
+       0x08,0x04,0xff,0xe5,0x8a,0x9b,0x00,0x04,0xff,0xe5,0x8b,0xb9,0x00,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0x8c,0x95,0x00,0x04,0xff,0xe5,0x8c,0x9a,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0x8c,0xb8,0x00,0x04,0xff,0xe5,0x8d,0x81,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0x8d,0x9c,0x00,0x04,0xff,0xe5,0x8d,0xa9,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0x8e,0x82,0x00,0x04,0xff,0xe5,0x8e,0xb6,0x00,0xd1,0x10,0x10,0x08,0x04,
+       0xff,0xe5,0x8f,0x88,0x00,0x04,0xff,0xe5,0x8f,0xa3,0x00,0x10,0x08,0x04,0xff,0xe5,
+       0x9b,0x97,0x00,0x04,0xff,0xe5,0x9c,0x9f,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x04,0xff,0xe5,0xa3,0xab,0x00,0x04,0xff,0xe5,0xa4,0x82,0x00,0x10,
+       0x08,0x04,0xff,0xe5,0xa4,0x8a,0x00,0x04,0xff,0xe5,0xa4,0x95,0x00,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0xa4,0xa7,0x00,0x04,0xff,0xe5,0xa5,0xb3,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0xad,0x90,0x00,0x04,0xff,0xe5,0xae,0x80,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0xaf,0xb8,0x00,0x04,0xff,0xe5,0xb0,0x8f,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0xb0,0xa2,0x00,0x04,0xff,0xe5,0xb0,0xb8,0x00,0xd1,0x10,0x10,0x08,0x04,
+       0xff,0xe5,0xb1,0xae,0x00,0x04,0xff,0xe5,0xb1,0xb1,0x00,0x10,0x08,0x04,0xff,0xe5,
+       0xb7,0x9b,0x00,0x04,0xff,0xe5,0xb7,0xa5,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x04,0xff,0xe5,0xb7,0xb1,0x00,0x04,0xff,0xe5,0xb7,0xbe,0x00,0x10,0x08,0x04,
+       0xff,0xe5,0xb9,0xb2,0x00,0x04,0xff,0xe5,0xb9,0xba,0x00,0xd1,0x10,0x10,0x08,0x04,
+       0xff,0xe5,0xb9,0xbf,0x00,0x04,0xff,0xe5,0xbb,0xb4,0x00,0x10,0x08,0x04,0xff,0xe5,
+       0xbb,0xbe,0x00,0x04,0xff,0xe5,0xbc,0x8b,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,
+       0xff,0xe5,0xbc,0x93,0x00,0x04,0xff,0xe5,0xbd,0x90,0x00,0x10,0x08,0x04,0xff,0xe5,
+       0xbd,0xa1,0x00,0x04,0xff,0xe5,0xbd,0xb3,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe5,
+       0xbf,0x83,0x00,0x04,0xff,0xe6,0x88,0x88,0x00,0x10,0x08,0x04,0xff,0xe6,0x88,0xb6,
+       0x00,0x04,0xff,0xe6,0x89,0x8b,0x00,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe6,0x94,0xaf,0x00,0x04,0xff,0xe6,0x94,
+       0xb4,0x00,0x10,0x08,0x04,0xff,0xe6,0x96,0x87,0x00,0x04,0xff,0xe6,0x96,0x97,0x00,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe6,0x96,0xa4,0x00,0x04,0xff,0xe6,0x96,0xb9,0x00,
+       0x10,0x08,0x04,0xff,0xe6,0x97,0xa0,0x00,0x04,0xff,0xe6,0x97,0xa5,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe6,0x9b,0xb0,0x00,0x04,0xff,0xe6,0x9c,0x88,0x00,
+       0x10,0x08,0x04,0xff,0xe6,0x9c,0xa8,0x00,0x04,0xff,0xe6,0xac,0xa0,0x00,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe6,0xad,0xa2,0x00,0x04,0xff,0xe6,0xad,0xb9,0x00,0x10,0x08,
+       0x04,0xff,0xe6,0xae,0xb3,0x00,0x04,0xff,0xe6,0xaf,0x8b,0x00,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe6,0xaf,0x94,0x00,0x04,0xff,0xe6,0xaf,0x9b,0x00,
+       0x10,0x08,0x04,0xff,0xe6,0xb0,0x8f,0x00,0x04,0xff,0xe6,0xb0,0x94,0x00,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe6,0xb0,0xb4,0x00,0x04,0xff,0xe7,0x81,0xab,0x00,0x10,0x08,
+       0x04,0xff,0xe7,0x88,0xaa,0x00,0x04,0xff,0xe7,0x88,0xb6,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe7,0x88,0xbb,0x00,0x04,0xff,0xe7,0x88,0xbf,0x00,0x10,0x08,
+       0x04,0xff,0xe7,0x89,0x87,0x00,0x04,0xff,0xe7,0x89,0x99,0x00,0xd1,0x10,0x10,0x08,
+       0x04,0xff,0xe7,0x89,0x9b,0x00,0x04,0xff,0xe7,0x8a,0xac,0x00,0x10,0x08,0x04,0xff,
+       0xe7,0x8e,0x84,0x00,0x04,0xff,0xe7,0x8e,0x89,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe7,0x93,0x9c,0x00,0x04,0xff,0xe7,0x93,0xa6,0x00,
+       0x10,0x08,0x04,0xff,0xe7,0x94,0x98,0x00,0x04,0xff,0xe7,0x94,0x9f,0x00,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe7,0x94,0xa8,0x00,0x04,0xff,0xe7,0x94,0xb0,0x00,0x10,0x08,
+       0x04,0xff,0xe7,0x96,0x8b,0x00,0x04,0xff,0xe7,0x96,0x92,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe7,0x99,0xb6,0x00,0x04,0xff,0xe7,0x99,0xbd,0x00,0x10,0x08,
+       0x04,0xff,0xe7,0x9a,0xae,0x00,0x04,0xff,0xe7,0x9a,0xbf,0x00,0xd1,0x10,0x10,0x08,
+       0x04,0xff,0xe7,0x9b,0xae,0x00,0x04,0xff,0xe7,0x9f,0x9b,0x00,0x10,0x08,0x04,0xff,
+       0xe7,0x9f,0xa2,0x00,0x04,0xff,0xe7,0x9f,0xb3,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe7,0xa4,0xba,0x00,0x04,0xff,0xe7,0xa6,0xb8,0x00,0x10,0x08,
+       0x04,0xff,0xe7,0xa6,0xbe,0x00,0x04,0xff,0xe7,0xa9,0xb4,0x00,0xd1,0x10,0x10,0x08,
+       0x04,0xff,0xe7,0xab,0x8b,0x00,0x04,0xff,0xe7,0xab,0xb9,0x00,0x10,0x08,0x04,0xff,
+       0xe7,0xb1,0xb3,0x00,0x04,0xff,0xe7,0xb3,0xb8,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x04,0xff,0xe7,0xbc,0xb6,0x00,0x04,0xff,0xe7,0xbd,0x91,0x00,0x10,0x08,0x04,0xff,
+       0xe7,0xbe,0x8a,0x00,0x04,0xff,0xe7,0xbe,0xbd,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,
+       0xe8,0x80,0x81,0x00,0x04,0xff,0xe8,0x80,0x8c,0x00,0x10,0x08,0x04,0xff,0xe8,0x80,
+       0x92,0x00,0x04,0xff,0xe8,0x80,0xb3,0x00,0xe0,0x04,0x02,0xcf,0x86,0xe5,0x01,0x01,
+       0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0x81,0xbf,0x00,
+       0x04,0xff,0xe8,0x82,0x89,0x00,0x10,0x08,0x04,0xff,0xe8,0x87,0xa3,0x00,0x04,0xff,
+       0xe8,0x87,0xaa,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0x87,0xb3,0x00,0x04,0xff,
+       0xe8,0x87,0xbc,0x00,0x10,0x08,0x04,0xff,0xe8,0x88,0x8c,0x00,0x04,0xff,0xe8,0x88,
+       0x9b,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0x88,0x9f,0x00,0x04,0xff,
+       0xe8,0x89,0xae,0x00,0x10,0x08,0x04,0xff,0xe8,0x89,0xb2,0x00,0x04,0xff,0xe8,0x89,
+       0xb8,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0x99,0x8d,0x00,0x04,0xff,0xe8,0x99,
+       0xab,0x00,0x10,0x08,0x04,0xff,0xe8,0xa1,0x80,0x00,0x04,0xff,0xe8,0xa1,0x8c,0x00,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0xa1,0xa3,0x00,0x04,0xff,
+       0xe8,0xa5,0xbe,0x00,0x10,0x08,0x04,0xff,0xe8,0xa6,0x8b,0x00,0x04,0xff,0xe8,0xa7,
+       0x92,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0xa8,0x80,0x00,0x04,0xff,0xe8,0xb0,
+       0xb7,0x00,0x10,0x08,0x04,0xff,0xe8,0xb1,0x86,0x00,0x04,0xff,0xe8,0xb1,0x95,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0xb1,0xb8,0x00,0x04,0xff,0xe8,0xb2,
+       0x9d,0x00,0x10,0x08,0x04,0xff,0xe8,0xb5,0xa4,0x00,0x04,0xff,0xe8,0xb5,0xb0,0x00,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0xb6,0xb3,0x00,0x04,0xff,0xe8,0xba,0xab,0x00,
+       0x10,0x08,0x04,0xff,0xe8,0xbb,0x8a,0x00,0x04,0xff,0xe8,0xbe,0x9b,0x00,0xd4,0x80,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe8,0xbe,0xb0,0x00,0x04,0xff,
+       0xe8,0xbe,0xb5,0x00,0x10,0x08,0x04,0xff,0xe9,0x82,0x91,0x00,0x04,0xff,0xe9,0x85,
+       0x89,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0x87,0x86,0x00,0x04,0xff,0xe9,0x87,
+       0x8c,0x00,0x10,0x08,0x04,0xff,0xe9,0x87,0x91,0x00,0x04,0xff,0xe9,0x95,0xb7,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0x96,0x80,0x00,0x04,0xff,0xe9,0x98,
+       0x9c,0x00,0x10,0x08,0x04,0xff,0xe9,0x9a,0xb6,0x00,0x04,0xff,0xe9,0x9a,0xb9,0x00,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0x9b,0xa8,0x00,0x04,0xff,0xe9,0x9d,0x91,0x00,
+       0x10,0x08,0x04,0xff,0xe9,0x9d,0x9e,0x00,0x04,0xff,0xe9,0x9d,0xa2,0x00,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0x9d,0xa9,0x00,0x04,0xff,0xe9,0x9f,
+       0x8b,0x00,0x10,0x08,0x04,0xff,0xe9,0x9f,0xad,0x00,0x04,0xff,0xe9,0x9f,0xb3,0x00,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xa0,0x81,0x00,0x04,0xff,0xe9,0xa2,0xa8,0x00,
+       0x10,0x08,0x04,0xff,0xe9,0xa3,0x9b,0x00,0x04,0xff,0xe9,0xa3,0x9f,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xa6,0x96,0x00,0x04,0xff,0xe9,0xa6,0x99,0x00,
+       0x10,0x08,0x04,0xff,0xe9,0xa6,0xac,0x00,0x04,0xff,0xe9,0xaa,0xa8,0x00,0xd1,0x10,
+       0x10,0x08,0x04,0xff,0xe9,0xab,0x98,0x00,0x04,0xff,0xe9,0xab,0x9f,0x00,0x10,0x08,
+       0x04,0xff,0xe9,0xac,0xa5,0x00,0x04,0xff,0xe9,0xac,0xaf,0x00,0xcf,0x86,0xd5,0xb8,
+       0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xac,0xb2,0x00,
+       0x04,0xff,0xe9,0xac,0xbc,0x00,0x10,0x08,0x04,0xff,0xe9,0xad,0x9a,0x00,0x04,0xff,
+       0xe9,0xb3,0xa5,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xb9,0xb5,0x00,0x04,0xff,
+       0xe9,0xb9,0xbf,0x00,0x10,0x08,0x04,0xff,0xe9,0xba,0xa5,0x00,0x04,0xff,0xe9,0xba,
+       0xbb,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xbb,0x83,0x00,0x04,0xff,
+       0xe9,0xbb,0x8d,0x00,0x10,0x08,0x04,0xff,0xe9,0xbb,0x91,0x00,0x04,0xff,0xe9,0xbb,
+       0xb9,0x00,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xbb,0xbd,0x00,0x04,0xff,0xe9,0xbc,
+       0x8e,0x00,0x10,0x08,0x04,0xff,0xe9,0xbc,0x93,0x00,0x04,0xff,0xe9,0xbc,0xa0,0x00,
+       0x93,0x34,0xd2,0x20,0xd1,0x10,0x10,0x08,0x04,0xff,0xe9,0xbc,0xbb,0x00,0x04,0xff,
+       0xe9,0xbd,0x8a,0x00,0x10,0x08,0x04,0xff,0xe9,0xbd,0x92,0x00,0x04,0xff,0xe9,0xbe,
+       0x8d,0x00,0x91,0x10,0x10,0x08,0x04,0xff,0xe9,0xbe,0x9c,0x00,0x04,0xff,0xe9,0xbe,
+       0xa0,0x00,0x00,0x00,0x00,0x00,0x54,0x04,0x00,0x00,0x53,0x04,0x04,0x00,0x12,0x04,
+       0x04,0x00,0x00,0x00,0xcf,0x86,0xe5,0x3c,0x1c,0xe4,0x35,0x1c,0xe3,0x0c,0x08,0xe2,
+       0x37,0x04,0xe1,0xf6,0x01,0xd0,0x74,0xcf,0x86,0xd5,0x1a,0x94,0x16,0x93,0x12,0x92,
+       0x0e,0x91,0x0a,0x10,0x06,0x01,0xff,0x20,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
+       0x00,0x01,0x00,0xd4,0x1c,0x53,0x04,0x01,0x00,0xd2,0x0c,0x51,0x04,0x01,0x00,0x10,
+       0x04,0x01,0xda,0x01,0xe4,0x91,0x08,0x10,0x04,0x01,0xe8,0x01,0xde,0x01,0xe0,0xd3,
+       0x14,0x52,0x04,0x01,0x00,0x51,0x04,0x01,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,0x92,
+       0x00,0x01,0x00,0xd2,0x1c,0xd1,0x10,0x10,0x08,0x04,0xff,0xe5,0x8d,0x81,0x00,0x04,
+       0xff,0xe5,0x8d,0x84,0x00,0x10,0x08,0x04,0xff,0xe5,0x8d,0x85,0x00,0x06,0x00,0x51,
+       0x04,0x06,0x00,0x10,0x04,0x04,0x00,0x01,0x00,0xcf,0x86,0xd5,0xaa,0xd4,0x32,0xd3,
+       0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x52,
+       0x04,0x01,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x81,0x8b,0xe3,0x82,0x99,0x00,
+       0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x81,0x8d,0xe3,0x82,0x99,0x00,0x01,0x00,0xd3,
+       0x3c,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x81,0x8f,0xe3,0x82,0x99,0x00,
+       0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x81,0x91,0xe3,0x82,0x99,0x00,0x01,0x00,0xd1,
+       0x0f,0x10,0x0b,0x01,0xff,0xe3,0x81,0x93,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,
+       0x01,0xff,0xe3,0x81,0x95,0xe3,0x82,0x99,0x00,0x01,0x00,0xd2,0x1e,0xd1,0x0f,0x10,
+       0x0b,0x01,0xff,0xe3,0x81,0x97,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,
+       0xe3,0x81,0x99,0xe3,0x82,0x99,0x00,0x01,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,
+       0x81,0x9b,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x81,0x9d,0xe3,
+       0x82,0x99,0x00,0x01,0x00,0xd4,0x53,0xd3,0x3c,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,
+       0xff,0xe3,0x81,0x9f,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x81,
+       0xa1,0xe3,0x82,0x99,0x00,0x01,0x00,0xd1,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,
+       0x81,0xa4,0xe3,0x82,0x99,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x81,0xa6,0xe3,
+       0x82,0x99,0x00,0x92,0x13,0x91,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x81,0xa8,
+       0xe3,0x82,0x99,0x00,0x01,0x00,0x01,0x00,0xd3,0x4a,0xd2,0x25,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xe3,0x81,0xaf,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x81,0xaf,0xe3,0x82,
+       0x9a,0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x81,0xb2,0xe3,0x82,0x99,0x00,0xd1,
+       0x0f,0x10,0x0b,0x01,0xff,0xe3,0x81,0xb2,0xe3,0x82,0x9a,0x00,0x01,0x00,0x10,0x0b,
+       0x01,0xff,0xe3,0x81,0xb5,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x81,0xb5,0xe3,0x82,
+       0x9a,0x00,0xd2,0x1e,0xd1,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x81,0xb8,0xe3,
+       0x82,0x99,0x00,0x10,0x0b,0x01,0xff,0xe3,0x81,0xb8,0xe3,0x82,0x9a,0x00,0x01,0x00,
+       0x91,0x16,0x10,0x0b,0x01,0xff,0xe3,0x81,0xbb,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,
+       0x81,0xbb,0xe3,0x82,0x9a,0x00,0x01,0x00,0xe0,0x04,0x01,0xcf,0x86,0xd5,0x57,0x54,
+       0x04,0x01,0x00,0xd3,0x1b,0x52,0x04,0x01,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,
+       0x81,0x86,0xe3,0x82,0x99,0x00,0x06,0x00,0x10,0x04,0x06,0x00,0x00,0x00,0xd2,0x15,
+       0xd1,0x08,0x10,0x04,0x00,0x00,0x01,0x08,0x10,0x04,0x01,0x08,0x01,0xff,0x20,0xe3,
+       0x82,0x99,0x00,0xd1,0x0d,0x10,0x09,0x01,0xff,0x20,0xe3,0x82,0x9a,0x00,0x01,0x00,
+       0x10,0x0b,0x01,0xff,0xe3,0x82,0x9d,0xe3,0x82,0x99,0x00,0x06,0xff,0xe3,0x82,0x88,
+       0xe3,0x82,0x8a,0x00,0xd4,0x32,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x06,0x00,
+       0x01,0x00,0x01,0x00,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,
+       0xe3,0x82,0xab,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x82,0xad,
+       0xe3,0x82,0x99,0x00,0x01,0x00,0xd3,0x3c,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,0xff,
+       0xe3,0x82,0xaf,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x82,0xb1,
+       0xe3,0x82,0x99,0x00,0x01,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x82,0xb3,0xe3,
+       0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x82,0xb5,0xe3,0x82,0x99,0x00,
+       0x01,0x00,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x82,0xb7,0xe3,0x82,0x99,
+       0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x82,0xb9,0xe3,0x82,0x99,0x00,0x01,0x00,
+       0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x82,0xbb,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,
+       0x0b,0x01,0xff,0xe3,0x82,0xbd,0xe3,0x82,0x99,0x00,0x01,0x00,0xcf,0x86,0xd5,0xd5,
+       0xd4,0x53,0xd3,0x3c,0xd2,0x1e,0xd1,0x0f,0x10,0x0b,0x01,0xff,0xe3,0x82,0xbf,0xe3,
+       0x82,0x99,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x83,0x81,0xe3,0x82,0x99,0x00,
+       0x01,0x00,0xd1,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x83,0x84,0xe3,0x82,0x99,
+       0x00,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x83,0x86,0xe3,0x82,0x99,0x00,0x92,0x13,
+       0x91,0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x83,0x88,0xe3,0x82,0x99,0x00,0x01,
+       0x00,0x01,0x00,0xd3,0x4a,0xd2,0x25,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe3,0x83,0x8f,
+       0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0x8f,0xe3,0x82,0x9a,0x00,0x10,0x04,0x01,
+       0x00,0x01,0xff,0xe3,0x83,0x92,0xe3,0x82,0x99,0x00,0xd1,0x0f,0x10,0x0b,0x01,0xff,
+       0xe3,0x83,0x92,0xe3,0x82,0x9a,0x00,0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x83,0x95,
+       0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0x95,0xe3,0x82,0x9a,0x00,0xd2,0x1e,0xd1,
+       0x0f,0x10,0x04,0x01,0x00,0x01,0xff,0xe3,0x83,0x98,0xe3,0x82,0x99,0x00,0x10,0x0b,
+       0x01,0xff,0xe3,0x83,0x98,0xe3,0x82,0x9a,0x00,0x01,0x00,0x91,0x16,0x10,0x0b,0x01,
+       0xff,0xe3,0x83,0x9b,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0x9b,0xe3,0x82,0x9a,
+       0x00,0x01,0x00,0x54,0x04,0x01,0x00,0xd3,0x22,0x52,0x04,0x01,0x00,0xd1,0x0f,0x10,
+       0x0b,0x01,0xff,0xe3,0x82,0xa6,0xe3,0x82,0x99,0x00,0x01,0x00,0x10,0x04,0x01,0x00,
+       0x01,0xff,0xe3,0x83,0xaf,0xe3,0x82,0x99,0x00,0xd2,0x25,0xd1,0x16,0x10,0x0b,0x01,
+       0xff,0xe3,0x83,0xb0,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0xb1,0xe3,0x82,0x99,
+       0x00,0x10,0x0b,0x01,0xff,0xe3,0x83,0xb2,0xe3,0x82,0x99,0x00,0x01,0x00,0x51,0x04,
+       0x01,0x00,0x10,0x0b,0x01,0xff,0xe3,0x83,0xbd,0xe3,0x82,0x99,0x00,0x06,0xff,0xe3,
+       0x82,0xb3,0xe3,0x83,0x88,0x00,0xe1,0xaf,0x02,0xd0,0xae,0xcf,0x86,0xd5,0x18,0x94,
+       0x14,0x93,0x10,0x52,0x04,0x00,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x01,0x00,0x01,
+       0x00,0x01,0x00,0x01,0x00,0xd4,0x18,0x53,0x04,0x01,0x00,0x52,0x04,0x01,0x00,0xd1,
+       0x08,0x10,0x04,0x01,0x00,0x0a,0x00,0x10,0x04,0x13,0x00,0x14,0x00,0xd3,0x3c,0xd2,
+       0x1c,0xd1,0x0c,0x10,0x04,0x00,0x00,0x01,0xff,0xe1,0x84,0x80,0x00,0x10,0x08,0x01,
+       0xff,0xe1,0x84,0x81,0x00,0x01,0xff,0xe1,0x86,0xaa,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe1,0x84,0x82,0x00,0x01,0xff,0xe1,0x86,0xac,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x86,0xad,0x00,0x01,0xff,0xe1,0x84,0x83,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe1,0x84,0x84,0x00,0x01,0xff,0xe1,0x84,0x85,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x86,0xb0,0x00,0x01,0xff,0xe1,0x86,0xb1,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,
+       0x86,0xb2,0x00,0x01,0xff,0xe1,0x86,0xb3,0x00,0x10,0x08,0x01,0xff,0xe1,0x86,0xb4,
+       0x00,0x01,0xff,0xe1,0x86,0xb5,0x00,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x9a,0x00,0x01,0xff,0xe1,0x84,
+       0x86,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x87,0x00,0x01,0xff,0xe1,0x84,0x88,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0xa1,0x00,0x01,0xff,0xe1,0x84,0x89,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x84,0x8a,0x00,0x01,0xff,0xe1,0x84,0x8b,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x8c,0x00,0x01,0xff,0xe1,0x84,0x8d,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x84,0x8e,0x00,0x01,0xff,0xe1,0x84,0x8f,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe1,0x84,0x90,0x00,0x01,0xff,0xe1,0x84,0x91,0x00,0x10,0x08,
+       0x01,0xff,0xe1,0x84,0x92,0x00,0x01,0xff,0xe1,0x85,0xa1,0x00,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x85,0xa2,0x00,0x01,0xff,0xe1,0x85,0xa3,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x85,0xa4,0x00,0x01,0xff,0xe1,0x85,0xa5,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe1,0x85,0xa6,0x00,0x01,0xff,0xe1,0x85,0xa7,0x00,0x10,0x08,
+       0x01,0xff,0xe1,0x85,0xa8,0x00,0x01,0xff,0xe1,0x85,0xa9,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe1,0x85,0xaa,0x00,0x01,0xff,0xe1,0x85,0xab,0x00,0x10,0x08,
+       0x01,0xff,0xe1,0x85,0xac,0x00,0x01,0xff,0xe1,0x85,0xad,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe1,0x85,0xae,0x00,0x01,0xff,0xe1,0x85,0xaf,0x00,0x10,0x08,0x01,0xff,
+       0xe1,0x85,0xb0,0x00,0x01,0xff,0xe1,0x85,0xb1,0x00,0xd4,0x7d,0xd3,0x3d,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x85,0xb2,0x00,0x01,0xff,0xe1,0x85,0xb3,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x85,0xb4,0x00,0x01,0xff,0xe1,0x85,0xb5,0x00,0xd1,0x0d,
+       0x10,0x05,0x01,0xff,0x00,0x01,0xff,0xe1,0x84,0x94,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x84,0x95,0x00,0x01,0xff,0xe1,0x87,0x87,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe1,0x87,0x88,0x00,0x01,0xff,0xe1,0x87,0x8c,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x87,0x8e,0x00,0x01,0xff,0xe1,0x87,0x93,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,
+       0x87,0x97,0x00,0x01,0xff,0xe1,0x87,0x99,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x9c,
+       0x00,0x01,0xff,0xe1,0x87,0x9d,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe1,0x87,0x9f,0x00,0x01,0xff,0xe1,0x84,0x9d,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x84,0x9e,0x00,0x01,0xff,0xe1,0x84,0xa0,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,
+       0x84,0xa2,0x00,0x01,0xff,0xe1,0x84,0xa3,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0xa7,
+       0x00,0x01,0xff,0xe1,0x84,0xa9,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,
+       0x84,0xab,0x00,0x01,0xff,0xe1,0x84,0xac,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0xad,
+       0x00,0x01,0xff,0xe1,0x84,0xae,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0xaf,
+       0x00,0x01,0xff,0xe1,0x84,0xb2,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0xb6,0x00,0x01,
+       0xff,0xe1,0x85,0x80,0x00,0xe0,0x0b,0x01,0xcf,0x86,0xd5,0xf0,0xd4,0x7c,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x85,0x87,0x00,0x01,0xff,0xe1,0x85,
+       0x8c,0x00,0x10,0x08,0x01,0xff,0xe1,0x87,0xb1,0x00,0x01,0xff,0xe1,0x87,0xb2,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x85,0x97,0x00,0x01,0xff,0xe1,0x85,0x98,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x85,0x99,0x00,0x01,0xff,0xe1,0x86,0x84,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x86,0x85,0x00,0x01,0xff,0xe1,0x86,0x88,0x00,
+       0x10,0x08,0x01,0xff,0xe1,0x86,0x91,0x00,0x01,0xff,0xe1,0x86,0x92,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe1,0x86,0x94,0x00,0x01,0xff,0xe1,0x86,0x9e,0x00,0x10,0x08,
+       0x01,0xff,0xe1,0x86,0xa1,0x00,0x00,0x00,0xd3,0x34,0xd2,0x14,0x51,0x04,0x01,0x00,
+       0x10,0x08,0x01,0xff,0xe4,0xb8,0x80,0x00,0x01,0xff,0xe4,0xba,0x8c,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe4,0xb8,0x89,0x00,0x01,0xff,0xe5,0x9b,0x9b,0x00,0x10,0x08,
+       0x01,0xff,0xe4,0xb8,0x8a,0x00,0x01,0xff,0xe4,0xb8,0xad,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe4,0xb8,0x8b,0x00,0x01,0xff,0xe7,0x94,0xb2,0x00,0x10,0x08,
+       0x01,0xff,0xe4,0xb9,0x99,0x00,0x01,0xff,0xe4,0xb8,0x99,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe4,0xb8,0x81,0x00,0x01,0xff,0xe5,0xa4,0xa9,0x00,0x10,0x08,0x01,0xff,
+       0xe5,0x9c,0xb0,0x00,0x01,0xff,0xe4,0xba,0xba,0x00,0x54,0x04,0x04,0x00,0x53,0x04,
+       0x04,0x00,0x92,0x0c,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0x08,0x14,0x04,0x08,0x00,0x0a,0x00,0x94,0x0c,0x93,0x08,0x12,0x04,
+       0x0a,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xe2,0xc0,0x08,0xe1,0xbe,0x04,0xe0,0xc0,
+       0x02,0xcf,0x86,0xe5,0x7d,0x01,0xd4,0xa6,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x28,0xe1,0x84,0x80,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x82,0x29,0x00,
+       0x10,0x0a,0x01,0xff,0x28,0xe1,0x84,0x83,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x85,
+       0x29,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe1,0x84,0x86,0x29,0x00,0x01,0xff,
+       0x28,0xe1,0x84,0x87,0x29,0x00,0x10,0x0a,0x01,0xff,0x28,0xe1,0x84,0x89,0x29,0x00,
+       0x01,0xff,0x28,0xe1,0x84,0x8b,0x29,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x28,0xe1,0x84,0x8c,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x8e,0x29,0x00,0x10,0x0a,
+       0x01,0xff,0x28,0xe1,0x84,0x8f,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x90,0x29,0x00,
+       0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe1,0x84,0x91,0x29,0x00,0x01,0xff,0x28,0xe1,
+       0x84,0x92,0x29,0x00,0x10,0x0d,0x01,0xff,0x28,0xe1,0x84,0x80,0xe1,0x85,0xa1,0x29,
+       0x00,0x01,0xff,0x28,0xe1,0x84,0x82,0xe1,0x85,0xa1,0x29,0x00,0xd3,0x68,0xd2,0x34,
+       0xd1,0x1a,0x10,0x0d,0x01,0xff,0x28,0xe1,0x84,0x83,0xe1,0x85,0xa1,0x29,0x00,0x01,
+       0xff,0x28,0xe1,0x84,0x85,0xe1,0x85,0xa1,0x29,0x00,0x10,0x0d,0x01,0xff,0x28,0xe1,
+       0x84,0x86,0xe1,0x85,0xa1,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x87,0xe1,0x85,0xa1,
+       0x29,0x00,0xd1,0x1a,0x10,0x0d,0x01,0xff,0x28,0xe1,0x84,0x89,0xe1,0x85,0xa1,0x29,
+       0x00,0x01,0xff,0x28,0xe1,0x84,0x8b,0xe1,0x85,0xa1,0x29,0x00,0x10,0x0d,0x01,0xff,
+       0x28,0xe1,0x84,0x8c,0xe1,0x85,0xa1,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x8e,0xe1,
+       0x85,0xa1,0x29,0x00,0xd2,0x34,0xd1,0x1a,0x10,0x0d,0x01,0xff,0x28,0xe1,0x84,0x8f,
+       0xe1,0x85,0xa1,0x29,0x00,0x01,0xff,0x28,0xe1,0x84,0x90,0xe1,0x85,0xa1,0x29,0x00,
+       0x10,0x0d,0x01,0xff,0x28,0xe1,0x84,0x91,0xe1,0x85,0xa1,0x29,0x00,0x01,0xff,0x28,
+       0xe1,0x84,0x92,0xe1,0x85,0xa1,0x29,0x00,0xd1,0x23,0x10,0x0d,0x01,0xff,0x28,0xe1,
+       0x84,0x8c,0xe1,0x85,0xae,0x29,0x00,0x07,0xff,0x28,0xe1,0x84,0x8b,0xe1,0x85,0xa9,
+       0xe1,0x84,0x8c,0xe1,0x85,0xa5,0xe1,0x86,0xab,0x29,0x00,0x10,0x13,0x07,0xff,0x28,
+       0xe1,0x84,0x8b,0xe1,0x85,0xa9,0xe1,0x84,0x92,0xe1,0x85,0xae,0x29,0x00,0x00,0x00,
+       0xd4,0xa0,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe4,0xb8,0x80,
+       0x29,0x00,0x01,0xff,0x28,0xe4,0xba,0x8c,0x29,0x00,0x10,0x0a,0x01,0xff,0x28,0xe4,
+       0xb8,0x89,0x29,0x00,0x01,0xff,0x28,0xe5,0x9b,0x9b,0x29,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x28,0xe4,0xba,0x94,0x29,0x00,0x01,0xff,0x28,0xe5,0x85,0xad,0x29,0x00,
+       0x10,0x0a,0x01,0xff,0x28,0xe4,0xb8,0x83,0x29,0x00,0x01,0xff,0x28,0xe5,0x85,0xab,
+       0x29,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe4,0xb9,0x9d,0x29,0x00,
+       0x01,0xff,0x28,0xe5,0x8d,0x81,0x29,0x00,0x10,0x0a,0x01,0xff,0x28,0xe6,0x9c,0x88,
+       0x29,0x00,0x01,0xff,0x28,0xe7,0x81,0xab,0x29,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x28,0xe6,0xb0,0xb4,0x29,0x00,0x01,0xff,0x28,0xe6,0x9c,0xa8,0x29,0x00,0x10,0x0a,
+       0x01,0xff,0x28,0xe9,0x87,0x91,0x29,0x00,0x01,0xff,0x28,0xe5,0x9c,0x9f,0x29,0x00,
+       0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe6,0x97,0xa5,0x29,0x00,
+       0x01,0xff,0x28,0xe6,0xa0,0xaa,0x29,0x00,0x10,0x0a,0x01,0xff,0x28,0xe6,0x9c,0x89,
+       0x29,0x00,0x01,0xff,0x28,0xe7,0xa4,0xbe,0x29,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x28,0xe5,0x90,0x8d,0x29,0x00,0x01,0xff,0x28,0xe7,0x89,0xb9,0x29,0x00,0x10,0x0a,
+       0x01,0xff,0x28,0xe8,0xb2,0xa1,0x29,0x00,0x01,0xff,0x28,0xe7,0xa5,0x9d,0x29,0x00,
+       0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe5,0x8a,0xb4,0x29,0x00,0x01,0xff,
+       0x28,0xe4,0xbb,0xa3,0x29,0x00,0x10,0x0a,0x01,0xff,0x28,0xe5,0x91,0xbc,0x29,0x00,
+       0x01,0xff,0x28,0xe5,0xad,0xa6,0x29,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe7,
+       0x9b,0xa3,0x29,0x00,0x01,0xff,0x28,0xe4,0xbc,0x81,0x29,0x00,0x10,0x0a,0x01,0xff,
+       0x28,0xe8,0xb3,0x87,0x29,0x00,0x01,0xff,0x28,0xe5,0x8d,0x94,0x29,0x00,0xcf,0x86,
+       0xd5,0xbd,0xd4,0x4c,0x93,0x48,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x28,0xe7,
+       0xa5,0xad,0x29,0x00,0x01,0xff,0x28,0xe4,0xbc,0x91,0x29,0x00,0x10,0x0a,0x01,0xff,
+       0x28,0xe8,0x87,0xaa,0x29,0x00,0x01,0xff,0x28,0xe8,0x87,0xb3,0x29,0x00,0xd1,0x10,
+       0x10,0x08,0x0b,0xff,0xe5,0x95,0x8f,0x00,0x0b,0xff,0xe5,0xb9,0xbc,0x00,0x10,0x08,
+       0x0b,0xff,0xe6,0x96,0x87,0x00,0x0b,0xff,0xe7,0xae,0x8f,0x00,0x0b,0x00,0xd3,0x39,
+       0xd2,0x1d,0xd1,0x0f,0x10,0x08,0x07,0xff,0x50,0x54,0x45,0x00,0x06,0xff,0x32,0x31,
+       0x00,0x10,0x07,0x06,0xff,0x32,0x32,0x00,0x06,0xff,0x32,0x33,0x00,0xd1,0x0e,0x10,
+       0x07,0x06,0xff,0x32,0x34,0x00,0x06,0xff,0x32,0x35,0x00,0x10,0x07,0x06,0xff,0x32,
+       0x36,0x00,0x06,0xff,0x32,0x37,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x06,0xff,0x32,
+       0x38,0x00,0x06,0xff,0x32,0x39,0x00,0x10,0x07,0x06,0xff,0x33,0x30,0x00,0x06,0xff,
+       0x33,0x31,0x00,0xd1,0x0e,0x10,0x07,0x06,0xff,0x33,0x32,0x00,0x06,0xff,0x33,0x33,
+       0x00,0x10,0x07,0x06,0xff,0x33,0x34,0x00,0x06,0xff,0x33,0x35,0x00,0xd4,0x86,0xd3,
+       0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x80,0x00,0x01,0xff,0xe1,
+       0x84,0x82,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x83,0x00,0x01,0xff,0xe1,0x84,0x85,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x86,0x00,0x01,0xff,0xe1,0x84,0x87,
+       0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x89,0x00,0x01,0xff,0xe1,0x84,0x8b,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x8c,0x00,0x01,0xff,0xe1,0x84,0x8e,
+       0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x8f,0x00,0x01,0xff,0xe1,0x84,0x90,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x91,0x00,0x01,0xff,0xe1,0x84,0x92,0x00,0x10,
+       0x0b,0x01,0xff,0xe1,0x84,0x80,0xe1,0x85,0xa1,0x00,0x01,0xff,0xe1,0x84,0x82,0xe1,
+       0x85,0xa1,0x00,0xd3,0x58,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe1,0x84,0x83,
+       0xe1,0x85,0xa1,0x00,0x01,0xff,0xe1,0x84,0x85,0xe1,0x85,0xa1,0x00,0x10,0x0b,0x01,
+       0xff,0xe1,0x84,0x86,0xe1,0x85,0xa1,0x00,0x01,0xff,0xe1,0x84,0x87,0xe1,0x85,0xa1,
+       0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe1,0x84,0x89,0xe1,0x85,0xa1,0x00,0x01,0xff,
+       0xe1,0x84,0x8b,0xe1,0x85,0xa1,0x00,0x10,0x0b,0x01,0xff,0xe1,0x84,0x8c,0xe1,0x85,
+       0xa1,0x00,0x01,0xff,0xe1,0x84,0x8e,0xe1,0x85,0xa1,0x00,0xd2,0x2c,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xe1,0x84,0x8f,0xe1,0x85,0xa1,0x00,0x01,0xff,0xe1,0x84,0x90,0xe1,
+       0x85,0xa1,0x00,0x10,0x0b,0x01,0xff,0xe1,0x84,0x91,0xe1,0x85,0xa1,0x00,0x01,0xff,
+       0xe1,0x84,0x92,0xe1,0x85,0xa1,0x00,0xd1,0x25,0x10,0x14,0x07,0xff,0xe1,0x84,0x8e,
+       0xe1,0x85,0xa1,0xe1,0x86,0xb7,0xe1,0x84,0x80,0xe1,0x85,0xa9,0x00,0x07,0xff,0xe1,
+       0x84,0x8c,0xe1,0x85,0xae,0xe1,0x84,0x8b,0xe1,0x85,0xb4,0x00,0x10,0x0b,0x08,0xff,
+       0xe1,0x84,0x8b,0xe1,0x85,0xae,0x00,0x01,0x00,0xe0,0xf5,0x01,0xcf,0x86,0xe5,0x01,
+       0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe4,0xb8,0x80,
+       0x00,0x01,0xff,0xe4,0xba,0x8c,0x00,0x10,0x08,0x01,0xff,0xe4,0xb8,0x89,0x00,0x01,
+       0xff,0xe5,0x9b,0x9b,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe4,0xba,0x94,0x00,0x01,
+       0xff,0xe5,0x85,0xad,0x00,0x10,0x08,0x01,0xff,0xe4,0xb8,0x83,0x00,0x01,0xff,0xe5,
+       0x85,0xab,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe4,0xb9,0x9d,0x00,0x01,
+       0xff,0xe5,0x8d,0x81,0x00,0x10,0x08,0x01,0xff,0xe6,0x9c,0x88,0x00,0x01,0xff,0xe7,
+       0x81,0xab,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xb0,0xb4,0x00,0x01,0xff,0xe6,
+       0x9c,0xa8,0x00,0x10,0x08,0x01,0xff,0xe9,0x87,0x91,0x00,0x01,0xff,0xe5,0x9c,0x9f,
+       0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x97,0xa5,0x00,0x01,
+       0xff,0xe6,0xa0,0xaa,0x00,0x10,0x08,0x01,0xff,0xe6,0x9c,0x89,0x00,0x01,0xff,0xe7,
+       0xa4,0xbe,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x90,0x8d,0x00,0x01,0xff,0xe7,
+       0x89,0xb9,0x00,0x10,0x08,0x01,0xff,0xe8,0xb2,0xa1,0x00,0x01,0xff,0xe7,0xa5,0x9d,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x8a,0xb4,0x00,0x01,0xff,0xe7,
+       0xa7,0x98,0x00,0x10,0x08,0x01,0xff,0xe7,0x94,0xb7,0x00,0x01,0xff,0xe5,0xa5,0xb3,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x81,0xa9,0x00,0x01,0xff,0xe5,0x84,0xaa,
+       0x00,0x10,0x08,0x01,0xff,0xe5,0x8d,0xb0,0x00,0x01,0xff,0xe6,0xb3,0xa8,0x00,0xd4,
+       0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xa0,0x85,0x00,0x01,
+       0xff,0xe4,0xbc,0x91,0x00,0x10,0x08,0x01,0xff,0xe5,0x86,0x99,0x00,0x01,0xff,0xe6,
+       0xad,0xa3,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe4,0xb8,0x8a,0x00,0x01,0xff,0xe4,
+       0xb8,0xad,0x00,0x10,0x08,0x01,0xff,0xe4,0xb8,0x8b,0x00,0x01,0xff,0xe5,0xb7,0xa6,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x8f,0xb3,0x00,0x01,0xff,0xe5,
+       0x8c,0xbb,0x00,0x10,0x08,0x01,0xff,0xe5,0xae,0x97,0x00,0x01,0xff,0xe5,0xad,0xa6,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0x9b,0xa3,0x00,0x01,0xff,0xe4,0xbc,0x81,
+       0x00,0x10,0x08,0x01,0xff,0xe8,0xb3,0x87,0x00,0x01,0xff,0xe5,0x8d,0x94,0x00,0xd3,
+       0x39,0xd2,0x1d,0xd1,0x0f,0x10,0x08,0x01,0xff,0xe5,0xa4,0x9c,0x00,0x06,0xff,0x33,
+       0x36,0x00,0x10,0x07,0x06,0xff,0x33,0x37,0x00,0x06,0xff,0x33,0x38,0x00,0xd1,0x0e,
+       0x10,0x07,0x06,0xff,0x33,0x39,0x00,0x06,0xff,0x34,0x30,0x00,0x10,0x07,0x06,0xff,
+       0x34,0x31,0x00,0x06,0xff,0x34,0x32,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x06,0xff,
+       0x34,0x33,0x00,0x06,0xff,0x34,0x34,0x00,0x10,0x07,0x06,0xff,0x34,0x35,0x00,0x06,
+       0xff,0x34,0x36,0x00,0xd1,0x0e,0x10,0x07,0x06,0xff,0x34,0x37,0x00,0x06,0xff,0x34,
+       0x38,0x00,0x10,0x07,0x06,0xff,0x34,0x39,0x00,0x06,0xff,0x35,0x30,0x00,0xcf,0x86,
+       0xe5,0x0e,0x01,0xd4,0x8d,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0x31,
+       0xe6,0x9c,0x88,0x00,0x01,0xff,0x32,0xe6,0x9c,0x88,0x00,0x10,0x09,0x01,0xff,0x33,
+       0xe6,0x9c,0x88,0x00,0x01,0xff,0x34,0xe6,0x9c,0x88,0x00,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0x35,0xe6,0x9c,0x88,0x00,0x01,0xff,0x36,0xe6,0x9c,0x88,0x00,0x10,0x09,0x01,
+       0xff,0x37,0xe6,0x9c,0x88,0x00,0x01,0xff,0x38,0xe6,0x9c,0x88,0x00,0xd2,0x27,0xd1,
+       0x13,0x10,0x09,0x01,0xff,0x39,0xe6,0x9c,0x88,0x00,0x01,0xff,0x31,0x30,0xe6,0x9c,
+       0x88,0x00,0x10,0x0a,0x01,0xff,0x31,0x31,0xe6,0x9c,0x88,0x00,0x01,0xff,0x31,0x32,
+       0xe6,0x9c,0x88,0x00,0xd1,0x0f,0x10,0x07,0x07,0xff,0x48,0x67,0x00,0x07,0xff,0x65,
+       0x72,0x67,0x00,0x10,0x07,0x07,0xff,0x65,0x56,0x00,0x07,0xff,0x4c,0x54,0x44,0x00,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xa2,0x00,0x01,0xff,
+       0xe3,0x82,0xa4,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xa6,0x00,0x01,0xff,0xe3,0x82,
+       0xa8,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xaa,0x00,0x01,0xff,0xe3,0x82,
+       0xab,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xad,0x00,0x01,0xff,0xe3,0x82,0xaf,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xb1,0x00,0x01,0xff,0xe3,0x82,
+       0xb3,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xb5,0x00,0x01,0xff,0xe3,0x82,0xb7,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xb9,0x00,0x01,0xff,0xe3,0x82,0xbb,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x82,0xbd,0x00,0x01,0xff,0xe3,0x82,0xbf,0x00,0xd4,0x80,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0x81,0x00,0x01,0xff,
+       0xe3,0x83,0x84,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0x86,0x00,0x01,0xff,0xe3,0x83,
+       0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0x8a,0x00,0x01,0xff,0xe3,0x83,
+       0x8b,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0x8c,0x00,0x01,0xff,0xe3,0x83,0x8d,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0x8e,0x00,0x01,0xff,0xe3,0x83,
+       0x8f,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0x92,0x00,0x01,0xff,0xe3,0x83,0x95,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0x98,0x00,0x01,0xff,0xe3,0x83,0x9b,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x83,0x9e,0x00,0x01,0xff,0xe3,0x83,0x9f,0x00,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xa0,0x00,0x01,0xff,0xe3,0x83,
+       0xa1,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0xa2,0x00,0x01,0xff,0xe3,0x83,0xa4,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xa6,0x00,0x01,0xff,0xe3,0x83,0xa8,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x83,0xa9,0x00,0x01,0xff,0xe3,0x83,0xaa,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0xac,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x83,0xad,0x00,0x01,0xff,0xe3,0x83,0xaf,0x00,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0xe3,0x83,0xb0,0x00,0x01,0xff,0xe3,0x83,0xb1,0x00,0x10,0x08,
+       0x01,0xff,0xe3,0x83,0xb2,0x00,0x00,0x00,0xe1,0x4e,0x07,0xe0,0x4f,0x04,0xcf,0x86,
+       0xe5,0x34,0x02,0xe4,0x0e,0x01,0xd3,0x8e,0xd2,0x47,0xd1,0x25,0x10,0x14,0x01,0xff,
+       0xe3,0x82,0xa2,0xe3,0x83,0x8f,0xe3,0x82,0x9a,0xe3,0x83,0xbc,0xe3,0x83,0x88,0x00,
+       0x01,0xff,0xe3,0x82,0xa2,0xe3,0x83,0xab,0xe3,0x83,0x95,0xe3,0x82,0xa1,0x00,0x10,
+       0x14,0x01,0xff,0xe3,0x82,0xa2,0xe3,0x83,0xb3,0xe3,0x83,0x98,0xe3,0x82,0x9a,0xe3,
+       0x82,0xa2,0x00,0x01,0xff,0xe3,0x82,0xa2,0xe3,0x83,0xbc,0xe3,0x83,0xab,0x00,0xd1,
+       0x22,0x10,0x14,0x01,0xff,0xe3,0x82,0xa4,0xe3,0x83,0x8b,0xe3,0x83,0xb3,0xe3,0x82,
+       0xaf,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x82,0xa4,0xe3,0x83,0xb3,0xe3,0x83,0x81,
+       0x00,0x10,0x0e,0x01,0xff,0xe3,0x82,0xa6,0xe3,0x82,0xa9,0xe3,0x83,0xb3,0x00,0x01,
+       0xff,0xe3,0x82,0xa8,0xe3,0x82,0xb9,0xe3,0x82,0xaf,0xe3,0x83,0xbc,0xe3,0x83,0x88,
+       0xe3,0x82,0x99,0x00,0xd2,0x3b,0xd1,0x1f,0x10,0x11,0x01,0xff,0xe3,0x82,0xa8,0xe3,
+       0x83,0xbc,0xe3,0x82,0xab,0xe3,0x83,0xbc,0x00,0x01,0xff,0xe3,0x82,0xaa,0xe3,0x83,
+       0xb3,0xe3,0x82,0xb9,0x00,0x10,0x0e,0x01,0xff,0xe3,0x82,0xaa,0xe3,0x83,0xbc,0xe3,
+       0x83,0xa0,0x00,0x01,0xff,0xe3,0x82,0xab,0xe3,0x82,0xa4,0xe3,0x83,0xaa,0x00,0xd1,
+       0x22,0x10,0x11,0x01,0xff,0xe3,0x82,0xab,0xe3,0x83,0xa9,0xe3,0x83,0x83,0xe3,0x83,
+       0x88,0x00,0x01,0xff,0xe3,0x82,0xab,0xe3,0x83,0xad,0xe3,0x83,0xaa,0xe3,0x83,0xbc,
+       0x00,0x10,0x11,0x01,0xff,0xe3,0x82,0xab,0xe3,0x82,0x99,0xe3,0x83,0xad,0xe3,0x83,
+       0xb3,0x00,0x01,0xff,0xe3,0x82,0xab,0xe3,0x82,0x99,0xe3,0x83,0xb3,0xe3,0x83,0x9e,
+       0x00,0xd3,0x97,0xd2,0x4a,0xd1,0x22,0x10,0x11,0x01,0xff,0xe3,0x82,0xad,0xe3,0x82,
+       0x99,0xe3,0x82,0xab,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x82,0xad,0xe3,0x82,0x99,
+       0xe3,0x83,0x8b,0xe3,0x83,0xbc,0x00,0x10,0x11,0x01,0xff,0xe3,0x82,0xad,0xe3,0x83,
+       0xa5,0xe3,0x83,0xaa,0xe3,0x83,0xbc,0x00,0x01,0xff,0xe3,0x82,0xad,0xe3,0x82,0x99,
+       0xe3,0x83,0xab,0xe3,0x82,0xbf,0xe3,0x82,0x99,0xe3,0x83,0xbc,0x00,0xd1,0x22,0x10,
+       0x0b,0x01,0xff,0xe3,0x82,0xad,0xe3,0x83,0xad,0x00,0x01,0xff,0xe3,0x82,0xad,0xe3,
+       0x83,0xad,0xe3,0x82,0xaf,0xe3,0x82,0x99,0xe3,0x83,0xa9,0xe3,0x83,0xa0,0x00,0x10,
+       0x17,0x01,0xff,0xe3,0x82,0xad,0xe3,0x83,0xad,0xe3,0x83,0xa1,0xe3,0x83,0xbc,0xe3,
+       0x83,0x88,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x82,0xad,0xe3,0x83,0xad,0xe3,0x83,
+       0xaf,0xe3,0x83,0x83,0xe3,0x83,0x88,0x00,0xd2,0x50,0xd1,0x28,0x10,0x11,0x01,0xff,
+       0xe3,0x82,0xaf,0xe3,0x82,0x99,0xe3,0x83,0xa9,0xe3,0x83,0xa0,0x00,0x01,0xff,0xe3,
+       0x82,0xaf,0xe3,0x82,0x99,0xe3,0x83,0xa9,0xe3,0x83,0xa0,0xe3,0x83,0x88,0xe3,0x83,
+       0xb3,0x00,0x10,0x17,0x01,0xff,0xe3,0x82,0xaf,0xe3,0x83,0xab,0xe3,0x82,0xbb,0xe3,
+       0x82,0x99,0xe3,0x82,0xa4,0xe3,0x83,0xad,0x00,0x01,0xff,0xe3,0x82,0xaf,0xe3,0x83,
+       0xad,0xe3,0x83,0xbc,0xe3,0x83,0x8d,0x00,0xd1,0x1c,0x10,0x0e,0x01,0xff,0xe3,0x82,
+       0xb1,0xe3,0x83,0xbc,0xe3,0x82,0xb9,0x00,0x01,0xff,0xe3,0x82,0xb3,0xe3,0x83,0xab,
+       0xe3,0x83,0x8a,0x00,0x10,0x11,0x01,0xff,0xe3,0x82,0xb3,0xe3,0x83,0xbc,0xe3,0x83,
+       0x9b,0xe3,0x82,0x9a,0x00,0x01,0xff,0xe3,0x82,0xb5,0xe3,0x82,0xa4,0xe3,0x82,0xaf,
+       0xe3,0x83,0xab,0x00,0xe4,0x08,0x01,0xd3,0x7c,0xd2,0x44,0xd1,0x28,0x10,0x14,0x01,
+       0xff,0xe3,0x82,0xb5,0xe3,0x83,0xb3,0xe3,0x83,0x81,0xe3,0x83,0xbc,0xe3,0x83,0xa0,
+       0x00,0x01,0xff,0xe3,0x82,0xb7,0xe3,0x83,0xaa,0xe3,0x83,0xb3,0xe3,0x82,0xaf,0xe3,
+       0x82,0x99,0x00,0x10,0x0e,0x01,0xff,0xe3,0x82,0xbb,0xe3,0x83,0xb3,0xe3,0x83,0x81,
+       0x00,0x01,0xff,0xe3,0x82,0xbb,0xe3,0x83,0xb3,0xe3,0x83,0x88,0x00,0xd1,0x1f,0x10,
+       0x11,0x01,0xff,0xe3,0x82,0xbf,0xe3,0x82,0x99,0xe3,0x83,0xbc,0xe3,0x82,0xb9,0x00,
+       0x01,0xff,0xe3,0x83,0x86,0xe3,0x82,0x99,0xe3,0x82,0xb7,0x00,0x10,0x0e,0x01,0xff,
+       0xe3,0x83,0x88,0xe3,0x82,0x99,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0x88,0xe3,
+       0x83,0xb3,0x00,0xd2,0x3e,0xd1,0x19,0x10,0x0b,0x01,0xff,0xe3,0x83,0x8a,0xe3,0x83,
+       0x8e,0x00,0x01,0xff,0xe3,0x83,0x8e,0xe3,0x83,0x83,0xe3,0x83,0x88,0x00,0x10,0x0e,
+       0x01,0xff,0xe3,0x83,0x8f,0xe3,0x82,0xa4,0xe3,0x83,0x84,0x00,0x01,0xff,0xe3,0x83,
+       0x8f,0xe3,0x82,0x9a,0xe3,0x83,0xbc,0xe3,0x82,0xbb,0xe3,0x83,0xb3,0xe3,0x83,0x88,
+       0x00,0xd1,0x25,0x10,0x11,0x01,0xff,0xe3,0x83,0x8f,0xe3,0x82,0x9a,0xe3,0x83,0xbc,
+       0xe3,0x83,0x84,0x00,0x01,0xff,0xe3,0x83,0x8f,0xe3,0x82,0x99,0xe3,0x83,0xbc,0xe3,
+       0x83,0xac,0xe3,0x83,0xab,0x00,0x10,0x17,0x01,0xff,0xe3,0x83,0x92,0xe3,0x82,0x9a,
+       0xe3,0x82,0xa2,0xe3,0x82,0xb9,0xe3,0x83,0x88,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,
+       0x83,0x92,0xe3,0x82,0x9a,0xe3,0x82,0xaf,0xe3,0x83,0xab,0x00,0xd3,0x8b,0xd2,0x44,
+       0xd1,0x1c,0x10,0x0e,0x01,0xff,0xe3,0x83,0x92,0xe3,0x82,0x9a,0xe3,0x82,0xb3,0x00,
+       0x01,0xff,0xe3,0x83,0x92,0xe3,0x82,0x99,0xe3,0x83,0xab,0x00,0x10,0x17,0x01,0xff,
+       0xe3,0x83,0x95,0xe3,0x82,0xa1,0xe3,0x83,0xa9,0xe3,0x83,0x83,0xe3,0x83,0x88,0xe3,
+       0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0x95,0xe3,0x82,0xa3,0xe3,0x83,0xbc,0xe3,0x83,
+       0x88,0x00,0xd1,0x25,0x10,0x17,0x01,0xff,0xe3,0x83,0x95,0xe3,0x82,0x99,0xe3,0x83,
+       0x83,0xe3,0x82,0xb7,0xe3,0x82,0xa7,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0x95,
+       0xe3,0x83,0xa9,0xe3,0x83,0xb3,0x00,0x10,0x14,0x01,0xff,0xe3,0x83,0x98,0xe3,0x82,
+       0xaf,0xe3,0x82,0xbf,0xe3,0x83,0xbc,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0x98,
+       0xe3,0x82,0x9a,0xe3,0x82,0xbd,0x00,0xd2,0x44,0xd1,0x1f,0x10,0x11,0x01,0xff,0xe3,
+       0x83,0x98,0xe3,0x82,0x9a,0xe3,0x83,0x8b,0xe3,0x83,0x92,0x00,0x01,0xff,0xe3,0x83,
+       0x98,0xe3,0x83,0xab,0xe3,0x83,0x84,0x00,0x10,0x11,0x01,0xff,0xe3,0x83,0x98,0xe3,
+       0x82,0x9a,0xe3,0x83,0xb3,0xe3,0x82,0xb9,0x00,0x01,0xff,0xe3,0x83,0x98,0xe3,0x82,
+       0x9a,0xe3,0x83,0xbc,0xe3,0x82,0xb7,0xe3,0x82,0x99,0x00,0xd1,0x25,0x10,0x11,0x01,
+       0xff,0xe3,0x83,0x98,0xe3,0x82,0x99,0xe3,0x83,0xbc,0xe3,0x82,0xbf,0x00,0x01,0xff,
+       0xe3,0x83,0x9b,0xe3,0x82,0x9a,0xe3,0x82,0xa4,0xe3,0x83,0xb3,0xe3,0x83,0x88,0x00,
+       0x10,0x11,0x01,0xff,0xe3,0x83,0x9b,0xe3,0x82,0x99,0xe3,0x83,0xab,0xe3,0x83,0x88,
+       0x00,0x01,0xff,0xe3,0x83,0x9b,0xe3,0x83,0xb3,0x00,0xcf,0x86,0xe5,0xcd,0x01,0xe4,
+       0x05,0x01,0xd3,0x7f,0xd2,0x41,0xd1,0x22,0x10,0x14,0x01,0xff,0xe3,0x83,0x9b,0xe3,
+       0x82,0x9a,0xe3,0x83,0xb3,0xe3,0x83,0x88,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,
+       0x9b,0xe3,0x83,0xbc,0xe3,0x83,0xab,0x00,0x10,0x0e,0x01,0xff,0xe3,0x83,0x9b,0xe3,
+       0x83,0xbc,0xe3,0x83,0xb3,0x00,0x01,0xff,0xe3,0x83,0x9e,0xe3,0x82,0xa4,0xe3,0x82,
+       0xaf,0xe3,0x83,0xad,0x00,0xd1,0x1c,0x10,0x0e,0x01,0xff,0xe3,0x83,0x9e,0xe3,0x82,
+       0xa4,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0x9e,0xe3,0x83,0x83,0xe3,0x83,0x8f,
+       0x00,0x10,0x0e,0x01,0xff,0xe3,0x83,0x9e,0xe3,0x83,0xab,0xe3,0x82,0xaf,0x00,0x01,
+       0xff,0xe3,0x83,0x9e,0xe3,0x83,0xb3,0xe3,0x82,0xb7,0xe3,0x83,0xa7,0xe3,0x83,0xb3,
+       0x00,0xd2,0x41,0xd1,0x1c,0x10,0x11,0x01,0xff,0xe3,0x83,0x9f,0xe3,0x82,0xaf,0xe3,
+       0x83,0xad,0xe3,0x83,0xb3,0x00,0x01,0xff,0xe3,0x83,0x9f,0xe3,0x83,0xaa,0x00,0x10,
+       0x17,0x01,0xff,0xe3,0x83,0x9f,0xe3,0x83,0xaa,0xe3,0x83,0x8f,0xe3,0x82,0x99,0xe3,
+       0x83,0xbc,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0xa1,0xe3,0x82,0xab,0xe3,0x82,
+       0x99,0x00,0xd1,0x25,0x10,0x14,0x01,0xff,0xe3,0x83,0xa1,0xe3,0x82,0xab,0xe3,0x82,
+       0x99,0xe3,0x83,0x88,0xe3,0x83,0xb3,0x00,0x01,0xff,0xe3,0x83,0xa1,0xe3,0x83,0xbc,
+       0xe3,0x83,0x88,0xe3,0x83,0xab,0x00,0x10,0x11,0x01,0xff,0xe3,0x83,0xa4,0xe3,0x83,
+       0xbc,0xe3,0x83,0x88,0xe3,0x82,0x99,0x00,0x01,0xff,0xe3,0x83,0xa4,0xe3,0x83,0xbc,
+       0xe3,0x83,0xab,0x00,0xd3,0x7f,0xd2,0x3b,0xd1,0x1f,0x10,0x0e,0x01,0xff,0xe3,0x83,
+       0xa6,0xe3,0x82,0xa2,0xe3,0x83,0xb3,0x00,0x01,0xff,0xe3,0x83,0xaa,0xe3,0x83,0x83,
+       0xe3,0x83,0x88,0xe3,0x83,0xab,0x00,0x10,0x0b,0x01,0xff,0xe3,0x83,0xaa,0xe3,0x83,
+       0xa9,0x00,0x01,0xff,0xe3,0x83,0xab,0xe3,0x83,0x92,0xe3,0x82,0x9a,0xe3,0x83,0xbc,
+       0x00,0xd1,0x1f,0x10,0x14,0x01,0xff,0xe3,0x83,0xab,0xe3,0x83,0xbc,0xe3,0x83,0x95,
+       0xe3,0x82,0x99,0xe3,0x83,0xab,0x00,0x01,0xff,0xe3,0x83,0xac,0xe3,0x83,0xa0,0x00,
+       0x10,0x17,0x01,0xff,0xe3,0x83,0xac,0xe3,0x83,0xb3,0xe3,0x83,0x88,0xe3,0x82,0xb1,
+       0xe3,0x82,0x99,0xe3,0x83,0xb3,0x00,0x01,0xff,0xe3,0x83,0xaf,0xe3,0x83,0x83,0xe3,
+       0x83,0x88,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0x30,0xe7,0x82,0xb9,0x00,
+       0x01,0xff,0x31,0xe7,0x82,0xb9,0x00,0x10,0x09,0x01,0xff,0x32,0xe7,0x82,0xb9,0x00,
+       0x01,0xff,0x33,0xe7,0x82,0xb9,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0x34,0xe7,0x82,
+       0xb9,0x00,0x01,0xff,0x35,0xe7,0x82,0xb9,0x00,0x10,0x09,0x01,0xff,0x36,0xe7,0x82,
+       0xb9,0x00,0x01,0xff,0x37,0xe7,0x82,0xb9,0x00,0xd4,0x9e,0xd3,0x4e,0xd2,0x26,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0x38,0xe7,0x82,0xb9,0x00,0x01,0xff,0x39,0xe7,0x82,0xb9,
+       0x00,0x10,0x0a,0x01,0xff,0x31,0x30,0xe7,0x82,0xb9,0x00,0x01,0xff,0x31,0x31,0xe7,
+       0x82,0xb9,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x31,0x32,0xe7,0x82,0xb9,0x00,0x01,
+       0xff,0x31,0x33,0xe7,0x82,0xb9,0x00,0x10,0x0a,0x01,0xff,0x31,0x34,0xe7,0x82,0xb9,
+       0x00,0x01,0xff,0x31,0x35,0xe7,0x82,0xb9,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,
+       0xff,0x31,0x36,0xe7,0x82,0xb9,0x00,0x01,0xff,0x31,0x37,0xe7,0x82,0xb9,0x00,0x10,
+       0x0a,0x01,0xff,0x31,0x38,0xe7,0x82,0xb9,0x00,0x01,0xff,0x31,0x39,0xe7,0x82,0xb9,
+       0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,0x32,0x30,0xe7,0x82,0xb9,0x00,0x01,0xff,0x32,
+       0x31,0xe7,0x82,0xb9,0x00,0x10,0x0a,0x01,0xff,0x32,0x32,0xe7,0x82,0xb9,0x00,0x01,
+       0xff,0x32,0x33,0xe7,0x82,0xb9,0x00,0xd3,0x3d,0xd2,0x20,0xd1,0x12,0x10,0x0a,0x01,
+       0xff,0x32,0x34,0xe7,0x82,0xb9,0x00,0x01,0xff,0x68,0x50,0x61,0x00,0x10,0x07,0x01,
+       0xff,0x64,0x61,0x00,0x01,0xff,0x41,0x55,0x00,0xd1,0x0f,0x10,0x08,0x01,0xff,0x62,
+       0x61,0x72,0x00,0x01,0xff,0x6f,0x56,0x00,0x10,0x07,0x01,0xff,0x70,0x63,0x00,0x07,
+       0xff,0x64,0x6d,0x00,0xd2,0x22,0xd1,0x10,0x10,0x08,0x07,0xff,0x64,0x6d,0x32,0x00,
+       0x07,0xff,0x64,0x6d,0x33,0x00,0x10,0x07,0x07,0xff,0x49,0x55,0x00,0x01,0xff,0xe5,
+       0xb9,0xb3,0xe6,0x88,0x90,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xe6,0x98,0xad,0xe5,
+       0x92,0x8c,0x00,0x01,0xff,0xe5,0xa4,0xa7,0xe6,0xad,0xa3,0x00,0x10,0x0b,0x01,0xff,
+       0xe6,0x98,0x8e,0xe6,0xb2,0xbb,0x00,0x01,0xff,0xe6,0xa0,0xaa,0xe5,0xbc,0x8f,0xe4,
+       0xbc,0x9a,0xe7,0xa4,0xbe,0x00,0xe0,0xee,0x01,0xcf,0x86,0xd5,0xed,0xd4,0x76,0xd3,
+       0x39,0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0x70,0x41,0x00,0x01,0xff,0x6e,0x41,
+       0x00,0x10,0x08,0x01,0xff,0xce,0xbc,0x41,0x00,0x01,0xff,0x6d,0x41,0x00,0xd1,0x0e,
+       0x10,0x07,0x01,0xff,0x6b,0x41,0x00,0x01,0xff,0x4b,0x42,0x00,0x10,0x07,0x01,0xff,
+       0x4d,0x42,0x00,0x01,0xff,0x47,0x42,0x00,0xd2,0x1f,0xd1,0x11,0x10,0x08,0x01,0xff,
+       0x63,0x61,0x6c,0x00,0x01,0xff,0x6b,0x63,0x61,0x6c,0x00,0x10,0x07,0x01,0xff,0x70,
+       0x46,0x00,0x01,0xff,0x6e,0x46,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xce,0xbc,0x46,
+       0x00,0x01,0xff,0xce,0xbc,0x67,0x00,0x10,0x07,0x01,0xff,0x6d,0x67,0x00,0x01,0xff,
+       0x6b,0x67,0x00,0xd3,0x3d,0xd2,0x1f,0xd1,0x0f,0x10,0x07,0x01,0xff,0x48,0x7a,0x00,
+       0x01,0xff,0x6b,0x48,0x7a,0x00,0x10,0x08,0x01,0xff,0x4d,0x48,0x7a,0x00,0x01,0xff,
+       0x47,0x48,0x7a,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0x54,0x48,0x7a,0x00,0x01,0xff,
+       0xce,0xbc,0x6c,0x00,0x10,0x07,0x01,0xff,0x6d,0x6c,0x00,0x01,0xff,0x64,0x6c,0x00,
+       0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0x6b,0x6c,0x00,0x01,0xff,0x66,0x6d,0x00,
+       0x10,0x07,0x01,0xff,0x6e,0x6d,0x00,0x01,0xff,0xce,0xbc,0x6d,0x00,0xd1,0x0e,0x10,
+       0x07,0x01,0xff,0x6d,0x6d,0x00,0x01,0xff,0x63,0x6d,0x00,0x10,0x07,0x01,0xff,0x6b,
+       0x6d,0x00,0x01,0xff,0x6d,0x6d,0x32,0x00,0xd4,0x8b,0xd3,0x40,0xd2,0x1f,0xd1,0x0f,
+       0x10,0x08,0x01,0xff,0x63,0x6d,0x32,0x00,0x01,0xff,0x6d,0x32,0x00,0x10,0x08,0x01,
+       0xff,0x6b,0x6d,0x32,0x00,0x01,0xff,0x6d,0x6d,0x33,0x00,0xd1,0x0f,0x10,0x08,0x01,
+       0xff,0x63,0x6d,0x33,0x00,0x01,0xff,0x6d,0x33,0x00,0x10,0x08,0x01,0xff,0x6b,0x6d,
+       0x33,0x00,0x01,0xff,0x6d,0xe2,0x88,0x95,0x73,0x00,0xd2,0x22,0xd1,0x12,0x10,0x0b,
+       0x01,0xff,0x6d,0xe2,0x88,0x95,0x73,0x32,0x00,0x01,0xff,0x50,0x61,0x00,0x10,0x08,
+       0x01,0xff,0x6b,0x50,0x61,0x00,0x01,0xff,0x4d,0x50,0x61,0x00,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0x47,0x50,0x61,0x00,0x01,0xff,0x72,0x61,0x64,0x00,0x10,0x0c,0x01,0xff,
+       0x72,0x61,0x64,0xe2,0x88,0x95,0x73,0x00,0x01,0xff,0x72,0x61,0x64,0xe2,0x88,0x95,
+       0x73,0x32,0x00,0xd3,0x3a,0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0x70,0x73,0x00,
+       0x01,0xff,0x6e,0x73,0x00,0x10,0x08,0x01,0xff,0xce,0xbc,0x73,0x00,0x01,0xff,0x6d,
+       0x73,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0x70,0x56,0x00,0x01,0xff,0x6e,0x56,0x00,
+       0x10,0x08,0x01,0xff,0xce,0xbc,0x56,0x00,0x01,0xff,0x6d,0x56,0x00,0xd2,0x1c,0xd1,
+       0x0e,0x10,0x07,0x01,0xff,0x6b,0x56,0x00,0x01,0xff,0x4d,0x56,0x00,0x10,0x07,0x01,
+       0xff,0x70,0x57,0x00,0x01,0xff,0x6e,0x57,0x00,0xd1,0x0f,0x10,0x08,0x01,0xff,0xce,
+       0xbc,0x57,0x00,0x01,0xff,0x6d,0x57,0x00,0x10,0x07,0x01,0xff,0x6b,0x57,0x00,0x01,
+       0xff,0x4d,0x57,0x00,0xcf,0x86,0xd5,0xf5,0xd4,0x79,0xd3,0x41,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x01,0xff,0x6b,0xce,0xa9,0x00,0x01,0xff,0x4d,0xce,0xa9,0x00,0x10,0x09,
+       0x01,0xff,0x61,0x2e,0x6d,0x2e,0x00,0x01,0xff,0x42,0x71,0x00,0xd1,0x0e,0x10,0x07,
+       0x01,0xff,0x63,0x63,0x00,0x01,0xff,0x63,0x64,0x00,0x10,0x0b,0x01,0xff,0x43,0xe2,
+       0x88,0x95,0x6b,0x67,0x00,0x01,0xff,0x43,0x6f,0x2e,0x00,0xd2,0x1c,0xd1,0x0e,0x10,
+       0x07,0x01,0xff,0x64,0x42,0x00,0x01,0xff,0x47,0x79,0x00,0x10,0x07,0x01,0xff,0x68,
+       0x61,0x00,0x01,0xff,0x48,0x50,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0x69,0x6e,0x00,
+       0x01,0xff,0x4b,0x4b,0x00,0x10,0x07,0x01,0xff,0x4b,0x4d,0x00,0x01,0xff,0x6b,0x74,
+       0x00,0xd3,0x3b,0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0x6c,0x6d,0x00,0x01,0xff,
+       0x6c,0x6e,0x00,0x10,0x08,0x01,0xff,0x6c,0x6f,0x67,0x00,0x01,0xff,0x6c,0x78,0x00,
+       0xd1,0x0f,0x10,0x07,0x01,0xff,0x6d,0x62,0x00,0x01,0xff,0x6d,0x69,0x6c,0x00,0x10,
+       0x08,0x01,0xff,0x6d,0x6f,0x6c,0x00,0x01,0xff,0x50,0x48,0x00,0xd2,0x1f,0xd1,0x11,
+       0x10,0x09,0x01,0xff,0x70,0x2e,0x6d,0x2e,0x00,0x01,0xff,0x50,0x50,0x4d,0x00,0x10,
+       0x07,0x01,0xff,0x50,0x52,0x00,0x01,0xff,0x73,0x72,0x00,0xd1,0x0e,0x10,0x07,0x01,
+       0xff,0x53,0x76,0x00,0x01,0xff,0x57,0x62,0x00,0x10,0x0a,0x07,0xff,0x56,0xe2,0x88,
+       0x95,0x6d,0x00,0x07,0xff,0x41,0xe2,0x88,0x95,0x6d,0x00,0xd4,0x97,0xd3,0x48,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0x31,0xe6,0x97,0xa5,0x00,0x01,0xff,0x32,0xe6,
+       0x97,0xa5,0x00,0x10,0x09,0x01,0xff,0x33,0xe6,0x97,0xa5,0x00,0x01,0xff,0x34,0xe6,
+       0x97,0xa5,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0x35,0xe6,0x97,0xa5,0x00,0x01,0xff,
+       0x36,0xe6,0x97,0xa5,0x00,0x10,0x09,0x01,0xff,0x37,0xe6,0x97,0xa5,0x00,0x01,0xff,
+       0x38,0xe6,0x97,0xa5,0x00,0xd2,0x27,0xd1,0x13,0x10,0x09,0x01,0xff,0x39,0xe6,0x97,
+       0xa5,0x00,0x01,0xff,0x31,0x30,0xe6,0x97,0xa5,0x00,0x10,0x0a,0x01,0xff,0x31,0x31,
+       0xe6,0x97,0xa5,0x00,0x01,0xff,0x31,0x32,0xe6,0x97,0xa5,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x31,0x33,0xe6,0x97,0xa5,0x00,0x01,0xff,0x31,0x34,0xe6,0x97,0xa5,0x00,
+       0x10,0x0a,0x01,0xff,0x31,0x35,0xe6,0x97,0xa5,0x00,0x01,0xff,0x31,0x36,0xe6,0x97,
+       0xa5,0x00,0xd3,0x50,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x31,0x37,0xe6,0x97,
+       0xa5,0x00,0x01,0xff,0x31,0x38,0xe6,0x97,0xa5,0x00,0x10,0x0a,0x01,0xff,0x31,0x39,
+       0xe6,0x97,0xa5,0x00,0x01,0xff,0x32,0x30,0xe6,0x97,0xa5,0x00,0xd1,0x14,0x10,0x0a,
+       0x01,0xff,0x32,0x31,0xe6,0x97,0xa5,0x00,0x01,0xff,0x32,0x32,0xe6,0x97,0xa5,0x00,
+       0x10,0x0a,0x01,0xff,0x32,0x33,0xe6,0x97,0xa5,0x00,0x01,0xff,0x32,0x34,0xe6,0x97,
+       0xa5,0x00,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x32,0x35,0xe6,0x97,0xa5,0x00,
+       0x01,0xff,0x32,0x36,0xe6,0x97,0xa5,0x00,0x10,0x0a,0x01,0xff,0x32,0x37,0xe6,0x97,
+       0xa5,0x00,0x01,0xff,0x32,0x38,0xe6,0x97,0xa5,0x00,0xd1,0x14,0x10,0x0a,0x01,0xff,
+       0x32,0x39,0xe6,0x97,0xa5,0x00,0x01,0xff,0x33,0x30,0xe6,0x97,0xa5,0x00,0x10,0x0a,
+       0x01,0xff,0x33,0x31,0xe6,0x97,0xa5,0x00,0x07,0xff,0x67,0x61,0x6c,0x00,0xcf,0x06,
+       0x04,0x00,0xcf,0x06,0x04,0x00,0xd1,0x48,0xd0,0x40,0xcf,0x86,0xd5,0x06,0xcf,0x06,
+       0x04,0x00,0xd4,0x06,0xcf,0x06,0x04,0x00,0xd3,0x2c,0xd2,0x06,0xcf,0x06,0x04,0x00,
+       0xd1,0x06,0xcf,0x06,0x04,0x00,0xd0,0x1a,0xcf,0x86,0x55,0x04,0x04,0x00,0x54,0x04,
+       0x04,0x00,0x93,0x0c,0x52,0x04,0x04,0x00,0x11,0x04,0x04,0x00,0x00,0x00,0x00,0x00,
+       0xcf,0x06,0x07,0x00,0xcf,0x06,0x01,0x00,0xcf,0x86,0xcf,0x06,0x01,0x00,0xcf,0x86,
+       0xcf,0x06,0x01,0x00,0xe2,0xb0,0x05,0xd1,0x8c,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x01,
+       0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01,0x00,0xd4,0x06,0xcf,0x06,0x01,0x00,0xd3,
+       0x06,0xcf,0x06,0x01,0x00,0xd2,0x06,0xcf,0x06,0x01,0x00,0xd1,0x06,0xcf,0x06,0x01,
+       0x00,0xd0,0x22,0xcf,0x86,0x55,0x04,0x01,0x00,0xd4,0x10,0x93,0x0c,0x52,0x04,0x01,
+       0x00,0x11,0x04,0x01,0x00,0x08,0x00,0x08,0x00,0x53,0x04,0x08,0x00,0x12,0x04,0x08,
+       0x00,0x0a,0x00,0xcf,0x86,0xd5,0x28,0xd4,0x18,0xd3,0x08,0x12,0x04,0x0a,0x00,0x0b,
+       0x00,0x52,0x04,0x0b,0x00,0x91,0x08,0x10,0x04,0x0d,0x00,0x11,0x00,0x11,0x00,0x93,
+       0x0c,0x52,0x04,0x11,0x00,0x11,0x04,0x11,0x00,0x13,0x00,0x13,0x00,0x94,0x14,0x53,
+       0x04,0x13,0x00,0x92,0x0c,0x51,0x04,0x13,0x00,0x10,0x04,0x13,0x00,0x14,0x00,0x14,
+       0x00,0x00,0x00,0xe0,0x1a,0x05,0xcf,0x86,0xe5,0xf7,0x01,0xd4,0x06,0xcf,0x06,0x04,
+       0x00,0xd3,0x74,0xd2,0x6e,0xd1,0x06,0xcf,0x06,0x04,0x00,0xd0,0x3e,0xcf,0x86,0xd5,
+       0x18,0x94,0x14,0x53,0x04,0x04,0x00,0x52,0x04,0x04,0x00,0x91,0x08,0x10,0x04,0x04,
+       0x00,0x00,0x00,0x00,0x00,0x04,0x00,0xd4,0x10,0x93,0x0c,0x92,0x08,0x11,0x04,0x04,
+       0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x93,0x10,0x52,0x04,0x04,0x00,0x91,0x08,0x10,
+       0x04,0x06,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0xcf,0x86,0x95,0x24,0x94,0x20,0x93,
+       0x1c,0xd2,0x0c,0x91,0x08,0x10,0x04,0x04,0x00,0x06,0x00,0x04,0x00,0xd1,0x08,0x10,
+       0x04,0x04,0x00,0x06,0x00,0x10,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x0b,
+       0x00,0xcf,0x06,0x0a,0x00,0xd2,0x8e,0xd1,0x4c,0xd0,0x16,0xcf,0x86,0x55,0x04,0x0a,
+       0x00,0x94,0x0c,0x53,0x04,0x0a,0x00,0x12,0x04,0x0a,0x00,0x00,0x00,0x00,0x00,0xcf,
+       0x86,0x55,0x04,0x0a,0x00,0xd4,0x1c,0xd3,0x0c,0x92,0x08,0x11,0x04,0x0c,0x00,0x0a,
+       0x00,0x0a,0x00,0x52,0x04,0x0a,0x00,0x51,0x04,0x0a,0x00,0x10,0x04,0x0a,0x00,0x0a,
+       0xe6,0xd3,0x08,0x12,0x04,0x0a,0x00,0x0d,0xe6,0x52,0x04,0x0d,0xe6,0x11,0x04,0x0a,
+       0xe6,0x0a,0x00,0xd0,0x28,0xcf,0x86,0x95,0x22,0x54,0x04,0x0a,0x00,0x53,0x04,0x0a,
+       0x00,0x52,0x04,0x10,0x00,0xd1,0x0e,0x10,0x07,0x10,0xff,0xd1,0x8a,0x00,0x10,0xff,
+       0xd1,0x8c,0x00,0x10,0x04,0x11,0xe6,0x0d,0xe6,0x0b,0x00,0xcf,0x86,0x55,0x04,0x0b,
+       0x00,0x54,0x04,0x0b,0x00,0x93,0x0c,0x92,0x08,0x11,0x04,0x0b,0xe6,0x0b,0x00,0x0b,
+       0x00,0x00,0x00,0xd1,0x5c,0xd0,0x3a,0xcf,0x86,0xd5,0x24,0x54,0x04,0x08,0x00,0xd3,
+       0x10,0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x09,0x00,0x92,
+       0x0c,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0x94,0x10,0x93,
+       0x0c,0x92,0x08,0x11,0x04,0x09,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0xcf,
+       0x86,0x55,0x04,0x0a,0x00,0x54,0x04,0x0a,0x00,0x93,0x14,0x92,0x10,0x91,0x0c,0x10,
+       0x08,0x0a,0xff,0xea,0x9d,0xaf,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0x0a,0x00,0xd0,
+       0x5e,0xcf,0x86,0xd5,0x28,0xd4,0x18,0x53,0x04,0x0a,0x00,0x52,0x04,0x0a,0x00,0xd1,
+       0x08,0x10,0x04,0x0a,0x00,0x0c,0x00,0x10,0x04,0x0c,0x00,0x11,0x00,0x93,0x0c,0x92,
+       0x08,0x11,0x04,0x0c,0x00,0x0d,0x00,0x10,0x00,0x10,0x00,0xd4,0x1c,0x53,0x04,0x0c,
+       0x00,0xd2,0x0c,0x51,0x04,0x0c,0x00,0x10,0x04,0x0d,0x00,0x10,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x12,0x00,0x14,0x00,0xd3,0x0c,0x92,0x08,0x11,0x04,0x10,0x00,0x11,
+       0x00,0x11,0x00,0x92,0x08,0x11,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0x55,
+       0x04,0x00,0x00,0x54,0x04,0x00,0x00,0xd3,0x10,0x52,0x04,0x00,0x00,0x51,0x04,0x00,
+       0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x92,0x16,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xc4,
+       0xa6,0x00,0x0d,0xff,0xc5,0x93,0x00,0x10,0x04,0x0c,0x00,0x0a,0x00,0x0a,0x00,0xe4,
+       0x19,0x03,0xe3,0x65,0x01,0xd2,0x98,0xd1,0x48,0xd0,0x36,0xcf,0x86,0xd5,0x18,0x94,
+       0x14,0x93,0x10,0x52,0x04,0x08,0x00,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x09,0x08,
+       0x00,0x08,0x00,0x08,0x00,0xd4,0x0c,0x53,0x04,0x08,0x00,0x12,0x04,0x08,0x00,0x00,
+       0x00,0x53,0x04,0x0b,0x00,0x92,0x08,0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0xcf,
+       0x86,0x55,0x04,0x09,0x00,0x54,0x04,0x09,0x00,0x13,0x04,0x09,0x00,0x00,0x00,0xd0,
+       0x06,0xcf,0x06,0x0a,0x00,0xcf,0x86,0xd5,0x2c,0xd4,0x1c,0xd3,0x10,0x52,0x04,0x0a,
+       0x00,0x91,0x08,0x10,0x04,0x0a,0x09,0x12,0x00,0x00,0x00,0x52,0x04,0x00,0x00,0x11,
+       0x04,0x00,0x00,0x0a,0x00,0x53,0x04,0x0a,0x00,0x92,0x08,0x11,0x04,0x0a,0x00,0x00,
+       0x00,0x00,0x00,0x54,0x04,0x0b,0xe6,0xd3,0x0c,0x92,0x08,0x11,0x04,0x0b,0xe6,0x0b,
+       0x00,0x0b,0x00,0x52,0x04,0x0b,0x00,0x11,0x04,0x11,0x00,0x14,0x00,0xd1,0x60,0xd0,
+       0x22,0xcf,0x86,0x55,0x04,0x0a,0x00,0x94,0x18,0x53,0x04,0x0a,0x00,0xd2,0x0c,0x51,
+       0x04,0x0a,0x00,0x10,0x04,0x0a,0x00,0x0a,0xdc,0x11,0x04,0x0a,0xdc,0x0a,0x00,0x0a,
+       0x00,0xcf,0x86,0xd5,0x24,0x54,0x04,0x0a,0x00,0xd3,0x10,0x92,0x0c,0x51,0x04,0x0a,
+       0x00,0x10,0x04,0x0a,0x00,0x0a,0x09,0x00,0x00,0x52,0x04,0x00,0x00,0x51,0x04,0x00,
+       0x00,0x10,0x04,0x00,0x00,0x0a,0x00,0x54,0x04,0x0b,0x00,0x53,0x04,0x0b,0x00,0x52,
+       0x04,0x0b,0x00,0x91,0x08,0x10,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0xd0,0x1e,0xcf,
+       0x86,0x55,0x04,0x0b,0x00,0x54,0x04,0x0b,0x00,0x93,0x10,0x92,0x0c,0x51,0x04,0x0b,
+       0x00,0x10,0x04,0x0b,0x00,0x0b,0x07,0x0b,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x34,0xd4,
+       0x20,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0b,0x09,0x0b,0x00,0x0b,0x00,0x0b,
+       0x00,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x00,0x00,0x0b,0x00,0x53,
+       0x04,0x0b,0x00,0xd2,0x08,0x11,0x04,0x0b,0x00,0x00,0x00,0x11,0x04,0x00,0x00,0x0b,
+       0x00,0x54,0x04,0x10,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x10,0x00,0x00,0x00,0xd2,0xd0,0xd1,0x50,0xd0,0x1e,0xcf,0x86,0x55,
+       0x04,0x0a,0x00,0x54,0x04,0x0a,0x00,0x93,0x10,0x52,0x04,0x0a,0x00,0x51,0x04,0x0a,
+       0x00,0x10,0x04,0x0a,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xd5,0x20,0xd4,0x10,0x53,
+       0x04,0x0a,0x00,0x52,0x04,0x0a,0x00,0x11,0x04,0x0a,0x00,0x00,0x00,0x53,0x04,0x0a,
+       0x00,0x92,0x08,0x11,0x04,0x0a,0x00,0x00,0x00,0x0a,0x00,0x54,0x04,0x0b,0x00,0x53,
+       0x04,0x0b,0x00,0x12,0x04,0x0b,0x00,0x10,0x00,0xd0,0x3a,0xcf,0x86,0x55,0x04,0x0b,
+       0x00,0x54,0x04,0x0b,0x00,0xd3,0x1c,0xd2,0x0c,0x91,0x08,0x10,0x04,0x0b,0xe6,0x0b,
+       0x00,0x0b,0xe6,0xd1,0x08,0x10,0x04,0x0b,0xdc,0x0b,0x00,0x10,0x04,0x0b,0x00,0x0b,
+       0xe6,0xd2,0x0c,0x91,0x08,0x10,0x04,0x0b,0xe6,0x0b,0x00,0x0b,0x00,0x11,0x04,0x0b,
+       0x00,0x0b,0xe6,0xcf,0x86,0xd5,0x2c,0xd4,0x18,0x93,0x14,0x92,0x10,0xd1,0x08,0x10,
+       0x04,0x0b,0x00,0x0b,0xe6,0x10,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,
+       0x04,0x00,0x00,0x92,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x0b,0x00,0x0b,
+       0x00,0x54,0x04,0x0d,0x00,0x93,0x10,0x52,0x04,0x0d,0x00,0x51,0x04,0x0d,0x00,0x10,
+       0x04,0x0d,0x09,0x00,0x00,0x00,0x00,0xd1,0xb3,0xd0,0x72,0xcf,0x86,0xd5,0x4c,0xd4,
+       0x30,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x0c,0x00,0x0c,0x00,0x51,
+       0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,
+       0x00,0x0c,0x00,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0x93,
+       0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x0c,0x00,0x0c,0x00,0x51,0x04,0x0c,
+       0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x94,0x20,0xd3,0x10,0x52,0x04,0x0c,
+       0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0x52,0x04,0x0c,0x00,0x51,
+       0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,0x00,0x10,0x00,0xcf,0x86,0xd5,0x2b,0x54,
+       0x04,0x10,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0xd1,0x10,0x10,0x08,0x10,
+       0xff,0xea,0x9c,0xa7,0x00,0x10,0xff,0xea,0xac,0xb7,0x00,0x10,0x07,0x10,0xff,0xc9,
+       0xab,0x00,0x10,0xff,0xea,0xad,0x92,0x00,0x94,0x10,0x93,0x0c,0x52,0x04,0x11,0x00,
+       0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0xd0,0x06,0xcf,0x06,0x11,0x00,
+       0xcf,0x86,0x55,0x04,0x0b,0x00,0xd4,0x14,0x53,0x04,0x0b,0x00,0x52,0x04,0x0b,0x00,
+       0x91,0x08,0x10,0x04,0x0b,0x00,0x0b,0x09,0x00,0x00,0x53,0x04,0x0b,0x00,0x92,0x08,
+       0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x02,0xff,0xff,0xcf,0x86,0xcf,
+       0x06,0x02,0xff,0xff,0xd1,0x76,0xd0,0x09,0xcf,0x86,0xcf,0x06,0x02,0xff,0xff,0xcf,
+       0x86,0x85,0xd4,0x07,0xcf,0x06,0x02,0xff,0xff,0xd3,0x07,0xcf,0x06,0x02,0xff,0xff,
+       0xd2,0x07,0xcf,0x06,0x02,0xff,0xff,0xd1,0x07,0xcf,0x06,0x02,0xff,0xff,0xd0,0x18,
+       0xcf,0x86,0x55,0x05,0x02,0xff,0xff,0x94,0x0d,0x93,0x09,0x12,0x05,0x02,0xff,0xff,
+       0x00,0x00,0x00,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x24,0x94,0x20,0xd3,0x10,0x52,0x04,
+       0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,0x00,0x00,0x92,0x0c,0x51,0x04,
+       0x00,0x00,0x10,0x04,0x00,0x00,0x0b,0x00,0x0b,0x00,0x0b,0x00,0x54,0x04,0x0b,0x00,
+       0x53,0x04,0x0b,0x00,0x12,0x04,0x0b,0x00,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,
+       0x01,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x01,0x00,0xe4,0x3a,0x13,0xe3,0x16,0x08,
+       0xd2,0x06,0xcf,0x06,0x01,0x00,0xe1,0x08,0x04,0xe0,0x04,0x02,0xcf,0x86,0xe5,0x01,
+       0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xb1,0x88,
+       0x00,0x01,0xff,0xe6,0x9b,0xb4,0x00,0x10,0x08,0x01,0xff,0xe8,0xbb,0x8a,0x00,0x01,
+       0xff,0xe8,0xb3,0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xbb,0x91,0x00,0x01,
+       0xff,0xe4,0xb8,0xb2,0x00,0x10,0x08,0x01,0xff,0xe5,0x8f,0xa5,0x00,0x01,0xff,0xe9,
+       0xbe,0x9c,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xbe,0x9c,0x00,0x01,
+       0xff,0xe5,0xa5,0x91,0x00,0x10,0x08,0x01,0xff,0xe9,0x87,0x91,0x00,0x01,0xff,0xe5,
+       0x96,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0xa5,0x88,0x00,0x01,0xff,0xe6,
+       0x87,0xb6,0x00,0x10,0x08,0x01,0xff,0xe7,0x99,0xa9,0x00,0x01,0xff,0xe7,0xbe,0x85,
+       0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x98,0xbf,0x00,0x01,
+       0xff,0xe8,0x9e,0xba,0x00,0x10,0x08,0x01,0xff,0xe8,0xa3,0xb8,0x00,0x01,0xff,0xe9,
+       0x82,0x8f,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xa8,0x82,0x00,0x01,0xff,0xe6,
+       0xb4,0x9b,0x00,0x10,0x08,0x01,0xff,0xe7,0x83,0x99,0x00,0x01,0xff,0xe7,0x8f,0x9e,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x90,0xbd,0x00,0x01,0xff,0xe9,
+       0x85,0xaa,0x00,0x10,0x08,0x01,0xff,0xe9,0xa7,0xb1,0x00,0x01,0xff,0xe4,0xba,0x82,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x8d,0xb5,0x00,0x01,0xff,0xe6,0xac,0x84,
+       0x00,0x10,0x08,0x01,0xff,0xe7,0x88,0x9b,0x00,0x01,0xff,0xe8,0x98,0xad,0x00,0xd4,
+       0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xb8,0x9e,0x00,0x01,
+       0xff,0xe5,0xb5,0x90,0x00,0x10,0x08,0x01,0xff,0xe6,0xbf,0xab,0x00,0x01,0xff,0xe8,
+       0x97,0x8d,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xa5,0xa4,0x00,0x01,0xff,0xe6,
+       0x8b,0x89,0x00,0x10,0x08,0x01,0xff,0xe8,0x87,0x98,0x00,0x01,0xff,0xe8,0xa0,0x9f,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0xbb,0x8a,0x00,0x01,0xff,0xe6,
+       0x9c,0x97,0x00,0x10,0x08,0x01,0xff,0xe6,0xb5,0xaa,0x00,0x01,0xff,0xe7,0x8b,0xbc,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x83,0x8e,0x00,0x01,0xff,0xe4,0xbe,0x86,
+       0x00,0x10,0x08,0x01,0xff,0xe5,0x86,0xb7,0x00,0x01,0xff,0xe5,0x8b,0x9e,0x00,0xd3,
+       0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x93,0x84,0x00,0x01,0xff,0xe6,
+       0xab,0x93,0x00,0x10,0x08,0x01,0xff,0xe7,0x88,0x90,0x00,0x01,0xff,0xe7,0x9b,0xa7,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x80,0x81,0x00,0x01,0xff,0xe8,0x98,0x86,
+       0x00,0x10,0x08,0x01,0xff,0xe8,0x99,0x9c,0x00,0x01,0xff,0xe8,0xb7,0xaf,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x9c,0xb2,0x00,0x01,0xff,0xe9,0xad,0xaf,
+       0x00,0x10,0x08,0x01,0xff,0xe9,0xb7,0xba,0x00,0x01,0xff,0xe7,0xa2,0x8c,0x00,0xd1,
+       0x10,0x10,0x08,0x01,0xff,0xe7,0xa5,0xbf,0x00,0x01,0xff,0xe7,0xb6,0xa0,0x00,0x10,
+       0x08,0x01,0xff,0xe8,0x8f,0x89,0x00,0x01,0xff,0xe9,0x8c,0x84,0x00,0xcf,0x86,0xe5,
+       0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xb9,
+       0xbf,0x00,0x01,0xff,0xe8,0xab,0x96,0x00,0x10,0x08,0x01,0xff,0xe5,0xa3,0x9f,0x00,
+       0x01,0xff,0xe5,0xbc,0x84,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0xb1,0xa0,0x00,
+       0x01,0xff,0xe8,0x81,0xbe,0x00,0x10,0x08,0x01,0xff,0xe7,0x89,0xa2,0x00,0x01,0xff,
+       0xe7,0xa3,0x8a,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xb3,0x82,0x00,
+       0x01,0xff,0xe9,0x9b,0xb7,0x00,0x10,0x08,0x01,0xff,0xe5,0xa3,0x98,0x00,0x01,0xff,
+       0xe5,0xb1,0xa2,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xa8,0x93,0x00,0x01,0xff,
+       0xe6,0xb7,0x9a,0x00,0x10,0x08,0x01,0xff,0xe6,0xbc,0x8f,0x00,0x01,0xff,0xe7,0xb4,
+       0xaf,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0xb8,0xb7,0x00,
+       0x01,0xff,0xe9,0x99,0x8b,0x00,0x10,0x08,0x01,0xff,0xe5,0x8b,0x92,0x00,0x01,0xff,
+       0xe8,0x82,0x8b,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x87,0x9c,0x00,0x01,0xff,
+       0xe5,0x87,0x8c,0x00,0x10,0x08,0x01,0xff,0xe7,0xa8,0x9c,0x00,0x01,0xff,0xe7,0xb6,
+       0xbe,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x8f,0xb1,0x00,0x01,0xff,
+       0xe9,0x99,0xb5,0x00,0x10,0x08,0x01,0xff,0xe8,0xae,0x80,0x00,0x01,0xff,0xe6,0x8b,
+       0x8f,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xa8,0x82,0x00,0x01,0xff,0xe8,0xab,
+       0xbe,0x00,0x10,0x08,0x01,0xff,0xe4,0xb8,0xb9,0x00,0x01,0xff,0xe5,0xaf,0xa7,0x00,
+       0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x80,0x92,0x00,
+       0x01,0xff,0xe7,0x8e,0x87,0x00,0x10,0x08,0x01,0xff,0xe7,0x95,0xb0,0x00,0x01,0xff,
+       0xe5,0x8c,0x97,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0xa3,0xbb,0x00,0x01,0xff,
+       0xe4,0xbe,0xbf,0x00,0x10,0x08,0x01,0xff,0xe5,0xbe,0xa9,0x00,0x01,0xff,0xe4,0xb8,
+       0x8d,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xb3,0x8c,0x00,0x01,0xff,
+       0xe6,0x95,0xb8,0x00,0x10,0x08,0x01,0xff,0xe7,0xb4,0xa2,0x00,0x01,0xff,0xe5,0x8f,
+       0x83,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0xa1,0x9e,0x00,0x01,0xff,0xe7,0x9c,
+       0x81,0x00,0x10,0x08,0x01,0xff,0xe8,0x91,0x89,0x00,0x01,0xff,0xe8,0xaa,0xaa,0x00,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xae,0xba,0x00,0x01,0xff,
+       0xe8,0xbe,0xb0,0x00,0x10,0x08,0x01,0xff,0xe6,0xb2,0x88,0x00,0x01,0xff,0xe6,0x8b,
+       0xbe,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x8b,0xa5,0x00,0x01,0xff,0xe6,0x8e,
+       0xa0,0x00,0x10,0x08,0x01,0xff,0xe7,0x95,0xa5,0x00,0x01,0xff,0xe4,0xba,0xae,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x85,0xa9,0x00,0x01,0xff,0xe5,0x87,
+       0x89,0x00,0x10,0x08,0x01,0xff,0xe6,0xa2,0x81,0x00,0x01,0xff,0xe7,0xb3,0xa7,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x89,0xaf,0x00,0x01,0xff,0xe8,0xab,0x92,0x00,
+       0x10,0x08,0x01,0xff,0xe9,0x87,0x8f,0x00,0x01,0xff,0xe5,0x8b,0xb5,0x00,0xe0,0x04,
+       0x02,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe5,0x91,0x82,0x00,0x01,0xff,0xe5,0xa5,0xb3,0x00,0x10,0x08,0x01,0xff,
+       0xe5,0xbb,0xac,0x00,0x01,0xff,0xe6,0x97,0x85,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe6,0xbf,0xbe,0x00,0x01,0xff,0xe7,0xa4,0xaa,0x00,0x10,0x08,0x01,0xff,0xe9,0x96,
+       0xad,0x00,0x01,0xff,0xe9,0xa9,0xaa,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe9,0xba,0x97,0x00,0x01,0xff,0xe9,0xbb,0x8e,0x00,0x10,0x08,0x01,0xff,0xe5,0x8a,
+       0x9b,0x00,0x01,0xff,0xe6,0x9b,0x86,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xad,
+       0xb7,0x00,0x01,0xff,0xe8,0xbd,0xa2,0x00,0x10,0x08,0x01,0xff,0xe5,0xb9,0xb4,0x00,
+       0x01,0xff,0xe6,0x86,0x90,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe6,0x88,0x80,0x00,0x01,0xff,0xe6,0x92,0x9a,0x00,0x10,0x08,0x01,0xff,0xe6,0xbc,
+       0xa3,0x00,0x01,0xff,0xe7,0x85,0x89,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0x92,
+       0x89,0x00,0x01,0xff,0xe7,0xa7,0x8a,0x00,0x10,0x08,0x01,0xff,0xe7,0xb7,0xb4,0x00,
+       0x01,0xff,0xe8,0x81,0xaf,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xbc,
+       0xa6,0x00,0x01,0xff,0xe8,0x93,0xae,0x00,0x10,0x08,0x01,0xff,0xe9,0x80,0xa3,0x00,
+       0x01,0xff,0xe9,0x8d,0x8a,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x88,0x97,0x00,
+       0x01,0xff,0xe5,0x8a,0xa3,0x00,0x10,0x08,0x01,0xff,0xe5,0x92,0xbd,0x00,0x01,0xff,
+       0xe7,0x83,0x88,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe8,0xa3,0x82,0x00,0x01,0xff,0xe8,0xaa,0xaa,0x00,0x10,0x08,0x01,0xff,0xe5,0xbb,
+       0x89,0x00,0x01,0xff,0xe5,0xbf,0xb5,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x8d,
+       0xbb,0x00,0x01,0xff,0xe6,0xae,0xae,0x00,0x10,0x08,0x01,0xff,0xe7,0xb0,0xbe,0x00,
+       0x01,0xff,0xe7,0x8d,0xb5,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe4,0xbb,
+       0xa4,0x00,0x01,0xff,0xe5,0x9b,0xb9,0x00,0x10,0x08,0x01,0xff,0xe5,0xaf,0xa7,0x00,
+       0x01,0xff,0xe5,0xb6,0xba,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x80,0x9c,0x00,
+       0x01,0xff,0xe7,0x8e,0xb2,0x00,0x10,0x08,0x01,0xff,0xe7,0x91,0xa9,0x00,0x01,0xff,
+       0xe7,0xbe,0x9a,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0x81,
+       0x86,0x00,0x01,0xff,0xe9,0x88,0xb4,0x00,0x10,0x08,0x01,0xff,0xe9,0x9b,0xb6,0x00,
+       0x01,0xff,0xe9,0x9d,0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xa0,0x98,0x00,
+       0x01,0xff,0xe4,0xbe,0x8b,0x00,0x10,0x08,0x01,0xff,0xe7,0xa6,0xae,0x00,0x01,0xff,
+       0xe9,0x86,0xb4,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x9a,0xb8,0x00,
+       0x01,0xff,0xe6,0x83,0xa1,0x00,0x10,0x08,0x01,0xff,0xe4,0xba,0x86,0x00,0x01,0xff,
+       0xe5,0x83,0x9a,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0xaf,0xae,0x00,0x01,0xff,
+       0xe5,0xb0,0xbf,0x00,0x10,0x08,0x01,0xff,0xe6,0x96,0x99,0x00,0x01,0xff,0xe6,0xa8,
+       0x82,0x00,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0xe7,0x87,0x8e,0x00,0x01,0xff,0xe7,0x99,0x82,0x00,0x10,0x08,0x01,
+       0xff,0xe8,0x93,0xbc,0x00,0x01,0xff,0xe9,0x81,0xbc,0x00,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe9,0xbe,0x8d,0x00,0x01,0xff,0xe6,0x9a,0x88,0x00,0x10,0x08,0x01,0xff,0xe9,
+       0x98,0xae,0x00,0x01,0xff,0xe5,0x8a,0x89,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe6,0x9d,0xbb,0x00,0x01,0xff,0xe6,0x9f,0xb3,0x00,0x10,0x08,0x01,0xff,0xe6,
+       0xb5,0x81,0x00,0x01,0xff,0xe6,0xba,0x9c,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,
+       0x90,0x89,0x00,0x01,0xff,0xe7,0x95,0x99,0x00,0x10,0x08,0x01,0xff,0xe7,0xa1,0xab,
+       0x00,0x01,0xff,0xe7,0xb4,0x90,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe9,0xa1,0x9e,0x00,0x01,0xff,0xe5,0x85,0xad,0x00,0x10,0x08,0x01,0xff,0xe6,
+       0x88,0xae,0x00,0x01,0xff,0xe9,0x99,0xb8,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,
+       0x80,0xab,0x00,0x01,0xff,0xe5,0xb4,0x99,0x00,0x10,0x08,0x01,0xff,0xe6,0xb7,0xaa,
+       0x00,0x01,0xff,0xe8,0xbc,0xaa,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,
+       0xbe,0x8b,0x00,0x01,0xff,0xe6,0x85,0x84,0x00,0x10,0x08,0x01,0xff,0xe6,0xa0,0x97,
+       0x00,0x01,0xff,0xe7,0x8e,0x87,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x9a,0x86,
+       0x00,0x01,0xff,0xe5,0x88,0xa9,0x00,0x10,0x08,0x01,0xff,0xe5,0x90,0x8f,0x00,0x01,
+       0xff,0xe5,0xb1,0xa5,0x00,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,
+       0xff,0xe6,0x98,0x93,0x00,0x01,0xff,0xe6,0x9d,0x8e,0x00,0x10,0x08,0x01,0xff,0xe6,
+       0xa2,0xa8,0x00,0x01,0xff,0xe6,0xb3,0xa5,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,
+       0x90,0x86,0x00,0x01,0xff,0xe7,0x97,0xa2,0x00,0x10,0x08,0x01,0xff,0xe7,0xbd,0xb9,
+       0x00,0x01,0xff,0xe8,0xa3,0x8f,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,
+       0xa3,0xa1,0x00,0x01,0xff,0xe9,0x87,0x8c,0x00,0x10,0x08,0x01,0xff,0xe9,0x9b,0xa2,
+       0x00,0x01,0xff,0xe5,0x8c,0xbf,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0xba,0xba,
+       0x00,0x01,0xff,0xe5,0x90,0x9d,0x00,0x10,0x08,0x01,0xff,0xe7,0x87,0x90,0x00,0x01,
+       0xff,0xe7,0x92,0x98,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,
+       0x97,0xba,0x00,0x01,0xff,0xe9,0x9a,0xa3,0x00,0x10,0x08,0x01,0xff,0xe9,0xb1,0x97,
+       0x00,0x01,0xff,0xe9,0xba,0x9f,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe6,0x9e,0x97,
+       0x00,0x01,0xff,0xe6,0xb7,0x8b,0x00,0x10,0x08,0x01,0xff,0xe8,0x87,0xa8,0x00,0x01,
+       0xff,0xe7,0xab,0x8b,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe7,0xac,0xa0,
+       0x00,0x01,0xff,0xe7,0xb2,0x92,0x00,0x10,0x08,0x01,0xff,0xe7,0x8b,0x80,0x00,0x01,
+       0xff,0xe7,0x82,0x99,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xad,0x98,0x00,0x01,
+       0xff,0xe4,0xbb,0x80,0x00,0x10,0x08,0x01,0xff,0xe8,0x8c,0xb6,0x00,0x01,0xff,0xe5,
+       0x88,0xba,0x00,0xe2,0xad,0x06,0xe1,0xc4,0x03,0xe0,0xcb,0x01,0xcf,0x86,0xd5,0xe4,
+       0xd4,0x74,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0x88,0x87,0x00,
+       0x01,0xff,0xe5,0xba,0xa6,0x00,0x10,0x08,0x01,0xff,0xe6,0x8b,0x93,0x00,0x01,0xff,
+       0xe7,0xb3,0x96,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe5,0xae,0x85,0x00,0x01,0xff,
+       0xe6,0xb4,0x9e,0x00,0x10,0x08,0x01,0xff,0xe6,0x9a,0xb4,0x00,0x01,0xff,0xe8,0xbc,
+       0xbb,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe8,0xa1,0x8c,0x00,0x01,0xff,
+       0xe9,0x99,0x8d,0x00,0x10,0x08,0x01,0xff,0xe8,0xa6,0x8b,0x00,0x01,0xff,0xe5,0xbb,
+       0x93,0x00,0x91,0x10,0x10,0x08,0x01,0xff,0xe5,0x85,0x80,0x00,0x01,0xff,0xe5,0x97,
+       0x80,0x00,0x01,0x00,0xd3,0x34,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x01,0xff,0xe5,0xa1,
+       0x9a,0x00,0x01,0x00,0x10,0x08,0x01,0xff,0xe6,0x99,0xb4,0x00,0x01,0x00,0xd1,0x0c,
+       0x10,0x04,0x01,0x00,0x01,0xff,0xe5,0x87,0x9e,0x00,0x10,0x08,0x01,0xff,0xe7,0x8c,
+       0xaa,0x00,0x01,0xff,0xe7,0x9b,0x8a,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe7,0xa4,0xbc,0x00,0x01,0xff,0xe7,0xa5,0x9e,0x00,0x10,0x08,0x01,0xff,0xe7,0xa5,
+       0xa5,0x00,0x01,0xff,0xe7,0xa6,0x8f,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0x9d,
+       0x96,0x00,0x01,0xff,0xe7,0xb2,0xbe,0x00,0x10,0x08,0x01,0xff,0xe7,0xbe,0xbd,0x00,
+       0x01,0x00,0xd4,0x64,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x08,0x01,0xff,0xe8,0x98,
+       0x92,0x00,0x01,0x00,0x10,0x08,0x01,0xff,0xe8,0xab,0xb8,0x00,0x01,0x00,0xd1,0x0c,
+       0x10,0x04,0x01,0x00,0x01,0xff,0xe9,0x80,0xb8,0x00,0x10,0x08,0x01,0xff,0xe9,0x83,
+       0xbd,0x00,0x01,0x00,0xd2,0x14,0x51,0x04,0x01,0x00,0x10,0x08,0x01,0xff,0xe9,0xa3,
+       0xaf,0x00,0x01,0xff,0xe9,0xa3,0xbc,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe9,0xa4,
+       0xa8,0x00,0x01,0xff,0xe9,0xb6,0xb4,0x00,0x10,0x08,0x0d,0xff,0xe9,0x83,0x9e,0x00,
+       0x0d,0xff,0xe9,0x9a,0xb7,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x06,0xff,
+       0xe4,0xbe,0xae,0x00,0x06,0xff,0xe5,0x83,0xa7,0x00,0x10,0x08,0x06,0xff,0xe5,0x85,
+       0x8d,0x00,0x06,0xff,0xe5,0x8b,0x89,0x00,0xd1,0x10,0x10,0x08,0x06,0xff,0xe5,0x8b,
+       0xa4,0x00,0x06,0xff,0xe5,0x8d,0x91,0x00,0x10,0x08,0x06,0xff,0xe5,0x96,0x9d,0x00,
+       0x06,0xff,0xe5,0x98,0x86,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x06,0xff,0xe5,0x99,
+       0xa8,0x00,0x06,0xff,0xe5,0xa1,0x80,0x00,0x10,0x08,0x06,0xff,0xe5,0xa2,0xa8,0x00,
+       0x06,0xff,0xe5,0xb1,0xa4,0x00,0xd1,0x10,0x10,0x08,0x06,0xff,0xe5,0xb1,0xae,0x00,
+       0x06,0xff,0xe6,0x82,0x94,0x00,0x10,0x08,0x06,0xff,0xe6,0x85,0xa8,0x00,0x06,0xff,
+       0xe6,0x86,0x8e,0x00,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x06,0xff,0xe6,0x87,0xb2,0x00,0x06,0xff,0xe6,0x95,0x8f,0x00,0x10,
+       0x08,0x06,0xff,0xe6,0x97,0xa2,0x00,0x06,0xff,0xe6,0x9a,0x91,0x00,0xd1,0x10,0x10,
+       0x08,0x06,0xff,0xe6,0xa2,0x85,0x00,0x06,0xff,0xe6,0xb5,0xb7,0x00,0x10,0x08,0x06,
+       0xff,0xe6,0xb8,0x9a,0x00,0x06,0xff,0xe6,0xbc,0xa2,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x06,0xff,0xe7,0x85,0xae,0x00,0x06,0xff,0xe7,0x88,0xab,0x00,0x10,0x08,0x06,
+       0xff,0xe7,0x90,0xa2,0x00,0x06,0xff,0xe7,0xa2,0x91,0x00,0xd1,0x10,0x10,0x08,0x06,
+       0xff,0xe7,0xa4,0xbe,0x00,0x06,0xff,0xe7,0xa5,0x89,0x00,0x10,0x08,0x06,0xff,0xe7,
+       0xa5,0x88,0x00,0x06,0xff,0xe7,0xa5,0x90,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x06,0xff,0xe7,0xa5,0x96,0x00,0x06,0xff,0xe7,0xa5,0x9d,0x00,0x10,0x08,0x06,
+       0xff,0xe7,0xa6,0x8d,0x00,0x06,0xff,0xe7,0xa6,0x8e,0x00,0xd1,0x10,0x10,0x08,0x06,
+       0xff,0xe7,0xa9,0x80,0x00,0x06,0xff,0xe7,0xaa,0x81,0x00,0x10,0x08,0x06,0xff,0xe7,
+       0xaf,0x80,0x00,0x06,0xff,0xe7,0xb7,0xb4,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x06,
+       0xff,0xe7,0xb8,0x89,0x00,0x06,0xff,0xe7,0xb9,0x81,0x00,0x10,0x08,0x06,0xff,0xe7,
+       0xbd,0xb2,0x00,0x06,0xff,0xe8,0x80,0x85,0x00,0xd1,0x10,0x10,0x08,0x06,0xff,0xe8,
+       0x87,0xad,0x00,0x06,0xff,0xe8,0x89,0xb9,0x00,0x10,0x08,0x06,0xff,0xe8,0x89,0xb9,
+       0x00,0x06,0xff,0xe8,0x91,0x97,0x00,0xd4,0x75,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x06,0xff,0xe8,0xa4,0x90,0x00,0x06,0xff,0xe8,0xa6,0x96,0x00,0x10,0x08,0x06,
+       0xff,0xe8,0xac,0x81,0x00,0x06,0xff,0xe8,0xac,0xb9,0x00,0xd1,0x10,0x10,0x08,0x06,
+       0xff,0xe8,0xb3,0x93,0x00,0x06,0xff,0xe8,0xb4,0x88,0x00,0x10,0x08,0x06,0xff,0xe8,
+       0xbe,0xb6,0x00,0x06,0xff,0xe9,0x80,0xb8,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x06,
+       0xff,0xe9,0x9b,0xa3,0x00,0x06,0xff,0xe9,0x9f,0xbf,0x00,0x10,0x08,0x06,0xff,0xe9,
+       0xa0,0xbb,0x00,0x0b,0xff,0xe6,0x81,0xb5,0x00,0x91,0x11,0x10,0x09,0x0b,0xff,0xf0,
+       0xa4,0x8b,0xae,0x00,0x0b,0xff,0xe8,0x88,0x98,0x00,0x00,0x00,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe4,0xb8,0xa6,0x00,0x08,0xff,0xe5,0x86,0xb5,0x00,
+       0x10,0x08,0x08,0xff,0xe5,0x85,0xa8,0x00,0x08,0xff,0xe4,0xbe,0x80,0x00,0xd1,0x10,
+       0x10,0x08,0x08,0xff,0xe5,0x85,0x85,0x00,0x08,0xff,0xe5,0x86,0x80,0x00,0x10,0x08,
+       0x08,0xff,0xe5,0x8b,0x87,0x00,0x08,0xff,0xe5,0x8b,0xba,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x08,0xff,0xe5,0x96,0x9d,0x00,0x08,0xff,0xe5,0x95,0x95,0x00,0x10,0x08,
+       0x08,0xff,0xe5,0x96,0x99,0x00,0x08,0xff,0xe5,0x97,0xa2,0x00,0xd1,0x10,0x10,0x08,
+       0x08,0xff,0xe5,0xa1,0x9a,0x00,0x08,0xff,0xe5,0xa2,0xb3,0x00,0x10,0x08,0x08,0xff,
+       0xe5,0xa5,0x84,0x00,0x08,0xff,0xe5,0xa5,0x94,0x00,0xe0,0x04,0x02,0xcf,0x86,0xe5,
+       0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe5,0xa9,
+       0xa2,0x00,0x08,0xff,0xe5,0xac,0xa8,0x00,0x10,0x08,0x08,0xff,0xe5,0xbb,0x92,0x00,
+       0x08,0xff,0xe5,0xbb,0x99,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe5,0xbd,0xa9,0x00,
+       0x08,0xff,0xe5,0xbe,0xad,0x00,0x10,0x08,0x08,0xff,0xe6,0x83,0x98,0x00,0x08,0xff,
+       0xe6,0x85,0x8e,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe6,0x84,0x88,0x00,
+       0x08,0xff,0xe6,0x86,0x8e,0x00,0x10,0x08,0x08,0xff,0xe6,0x85,0xa0,0x00,0x08,0xff,
+       0xe6,0x87,0xb2,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe6,0x88,0xb4,0x00,0x08,0xff,
+       0xe6,0x8f,0x84,0x00,0x10,0x08,0x08,0xff,0xe6,0x90,0x9c,0x00,0x08,0xff,0xe6,0x91,
+       0x92,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe6,0x95,0x96,0x00,
+       0x08,0xff,0xe6,0x99,0xb4,0x00,0x10,0x08,0x08,0xff,0xe6,0x9c,0x97,0x00,0x08,0xff,
+       0xe6,0x9c,0x9b,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe6,0x9d,0x96,0x00,0x08,0xff,
+       0xe6,0xad,0xb9,0x00,0x10,0x08,0x08,0xff,0xe6,0xae,0xba,0x00,0x08,0xff,0xe6,0xb5,
+       0x81,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe6,0xbb,0x9b,0x00,0x08,0xff,
+       0xe6,0xbb,0x8b,0x00,0x10,0x08,0x08,0xff,0xe6,0xbc,0xa2,0x00,0x08,0xff,0xe7,0x80,
+       0x9e,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0x85,0xae,0x00,0x08,0xff,0xe7,0x9e,
+       0xa7,0x00,0x10,0x08,0x08,0xff,0xe7,0x88,0xb5,0x00,0x08,0xff,0xe7,0x8a,0xaf,0x00,
+       0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0x8c,0xaa,0x00,
+       0x08,0xff,0xe7,0x91,0xb1,0x00,0x10,0x08,0x08,0xff,0xe7,0x94,0x86,0x00,0x08,0xff,
+       0xe7,0x94,0xbb,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0x98,0x9d,0x00,0x08,0xff,
+       0xe7,0x98,0x9f,0x00,0x10,0x08,0x08,0xff,0xe7,0x9b,0x8a,0x00,0x08,0xff,0xe7,0x9b,
+       0x9b,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0x9b,0xb4,0x00,0x08,0xff,
+       0xe7,0x9d,0x8a,0x00,0x10,0x08,0x08,0xff,0xe7,0x9d,0x80,0x00,0x08,0xff,0xe7,0xa3,
+       0x8c,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0xaa,0xb1,0x00,0x08,0xff,0xe7,0xaf,
+       0x80,0x00,0x10,0x08,0x08,0xff,0xe7,0xb1,0xbb,0x00,0x08,0xff,0xe7,0xb5,0x9b,0x00,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe7,0xb7,0xb4,0x00,0x08,0xff,
+       0xe7,0xbc,0xbe,0x00,0x10,0x08,0x08,0xff,0xe8,0x80,0x85,0x00,0x08,0xff,0xe8,0x8d,
+       0x92,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe8,0x8f,0xaf,0x00,0x08,0xff,0xe8,0x9d,
+       0xb9,0x00,0x10,0x08,0x08,0xff,0xe8,0xa5,0x81,0x00,0x08,0xff,0xe8,0xa6,0x86,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe8,0xa6,0x96,0x00,0x08,0xff,0xe8,0xaa,
+       0xbf,0x00,0x10,0x08,0x08,0xff,0xe8,0xab,0xb8,0x00,0x08,0xff,0xe8,0xab,0x8b,0x00,
+       0xd1,0x10,0x10,0x08,0x08,0xff,0xe8,0xac,0x81,0x00,0x08,0xff,0xe8,0xab,0xbe,0x00,
+       0x10,0x08,0x08,0xff,0xe8,0xab,0xad,0x00,0x08,0xff,0xe8,0xac,0xb9,0x00,0xcf,0x86,
+       0x95,0xde,0xd4,0x81,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe8,0xae,
+       0x8a,0x00,0x08,0xff,0xe8,0xb4,0x88,0x00,0x10,0x08,0x08,0xff,0xe8,0xbc,0xb8,0x00,
+       0x08,0xff,0xe9,0x81,0xb2,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe9,0x86,0x99,0x00,
+       0x08,0xff,0xe9,0x89,0xb6,0x00,0x10,0x08,0x08,0xff,0xe9,0x99,0xbc,0x00,0x08,0xff,
+       0xe9,0x9b,0xa3,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x08,0xff,0xe9,0x9d,0x96,0x00,
+       0x08,0xff,0xe9,0x9f,0x9b,0x00,0x10,0x08,0x08,0xff,0xe9,0x9f,0xbf,0x00,0x08,0xff,
+       0xe9,0xa0,0x8b,0x00,0xd1,0x10,0x10,0x08,0x08,0xff,0xe9,0xa0,0xbb,0x00,0x08,0xff,
+       0xe9,0xac,0x92,0x00,0x10,0x08,0x08,0xff,0xe9,0xbe,0x9c,0x00,0x08,0xff,0xf0,0xa2,
+       0xa1,0x8a,0x00,0xd3,0x45,0xd2,0x22,0xd1,0x12,0x10,0x09,0x08,0xff,0xf0,0xa2,0xa1,
+       0x84,0x00,0x08,0xff,0xf0,0xa3,0x8f,0x95,0x00,0x10,0x08,0x08,0xff,0xe3,0xae,0x9d,
+       0x00,0x08,0xff,0xe4,0x80,0x98,0x00,0xd1,0x11,0x10,0x08,0x08,0xff,0xe4,0x80,0xb9,
+       0x00,0x08,0xff,0xf0,0xa5,0x89,0x89,0x00,0x10,0x09,0x08,0xff,0xf0,0xa5,0xb3,0x90,
+       0x00,0x08,0xff,0xf0,0xa7,0xbb,0x93,0x00,0x92,0x14,0x91,0x10,0x10,0x08,0x08,0xff,
+       0xe9,0xbd,0x83,0x00,0x08,0xff,0xe9,0xbe,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0xe1,0xc2,0x02,0xe0,0x91,0x01,0xcf,0x86,0xd5,0x8e,0xd4,0x3b,0x93,0x37,0xd2,0x1d,
+       0xd1,0x0e,0x10,0x07,0x01,0xff,0x66,0x66,0x00,0x01,0xff,0x66,0x69,0x00,0x10,0x07,
+       0x01,0xff,0x66,0x6c,0x00,0x01,0xff,0x66,0x66,0x69,0x00,0xd1,0x0f,0x10,0x08,0x01,
+       0xff,0x66,0x66,0x6c,0x00,0x01,0xff,0x73,0x74,0x00,0x10,0x07,0x01,0xff,0x73,0x74,
+       0x00,0x00,0x00,0x00,0x00,0xd3,0x35,0xd2,0x11,0x51,0x04,0x00,0x00,0x10,0x04,0x00,
+       0x00,0x01,0xff,0xd5,0xb4,0xd5,0xb6,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd5,0xb4,
+       0xd5,0xa5,0x00,0x01,0xff,0xd5,0xb4,0xd5,0xab,0x00,0x10,0x09,0x01,0xff,0xd5,0xbe,
+       0xd5,0xb6,0x00,0x01,0xff,0xd5,0xb4,0xd5,0xad,0x00,0x52,0x04,0x00,0x00,0xd1,0x0d,
+       0x10,0x04,0x00,0x00,0x04,0xff,0xd7,0x99,0xd6,0xb4,0x00,0x10,0x04,0x01,0x1a,0x01,
+       0xff,0xd7,0xb2,0xd6,0xb7,0x00,0xd4,0x7f,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x01,0xff,0xd7,0xa2,0x00,0x01,0xff,0xd7,0x90,0x00,0x10,0x07,0x01,0xff,0xd7,0x93,
+       0x00,0x01,0xff,0xd7,0x94,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd7,0x9b,0x00,0x01,
+       0xff,0xd7,0x9c,0x00,0x10,0x07,0x01,0xff,0xd7,0x9d,0x00,0x01,0xff,0xd7,0xa8,0x00,
+       0xd2,0x1f,0xd1,0x0d,0x10,0x07,0x01,0xff,0xd7,0xaa,0x00,0x01,0xff,0x2b,0x00,0x10,
+       0x09,0x01,0xff,0xd7,0xa9,0xd7,0x81,0x00,0x01,0xff,0xd7,0xa9,0xd7,0x82,0x00,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xd7,0xa9,0xd6,0xbc,0xd7,0x81,0x00,0x01,0xff,0xd7,0xa9,
+       0xd6,0xbc,0xd7,0x82,0x00,0x10,0x09,0x01,0xff,0xd7,0x90,0xd6,0xb7,0x00,0x01,0xff,
+       0xd7,0x90,0xd6,0xb8,0x00,0xd3,0x43,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd7,
+       0x90,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x91,0xd6,0xbc,0x00,0x10,0x09,0x01,0xff,0xd7,
+       0x92,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x93,0xd6,0xbc,0x00,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd7,0x94,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x95,0xd6,0xbc,0x00,0x10,0x09,0x01,
+       0xff,0xd7,0x96,0xd6,0xbc,0x00,0x00,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd7,0x98,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x99,0xd6,0xbc,0x00,0x10,0x09,0x01,0xff,
+       0xd7,0x9a,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x9b,0xd6,0xbc,0x00,0xd1,0x0d,0x10,0x09,
+       0x01,0xff,0xd7,0x9c,0xd6,0xbc,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xd7,0x9e,0xd6,
+       0xbc,0x00,0x00,0x00,0xcf,0x86,0xd5,0xbe,0xd4,0x86,0xd3,0x3e,0xd2,0x1f,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd7,0xa0,0xd6,0xbc,0x00,0x01,0xff,0xd7,0xa1,0xd6,0xbc,0x00,
+       0x10,0x04,0x00,0x00,0x01,0xff,0xd7,0xa3,0xd6,0xbc,0x00,0xd1,0x0d,0x10,0x09,0x01,
+       0xff,0xd7,0xa4,0xd6,0xbc,0x00,0x00,0x00,0x10,0x09,0x01,0xff,0xd7,0xa6,0xd6,0xbc,
+       0x00,0x01,0xff,0xd7,0xa7,0xd6,0xbc,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd7,0xa8,0xd6,0xbc,0x00,0x01,0xff,0xd7,0xa9,0xd6,0xbc,0x00,0x10,0x09,0x01,0xff,
+       0xd7,0xaa,0xd6,0xbc,0x00,0x01,0xff,0xd7,0x95,0xd6,0xb9,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd7,0x91,0xd6,0xbf,0x00,0x01,0xff,0xd7,0x9b,0xd6,0xbf,0x00,0x10,0x09,
+       0x01,0xff,0xd7,0xa4,0xd6,0xbf,0x00,0x01,0xff,0xd7,0x90,0xd7,0x9c,0x00,0xd3,0x1c,
+       0xd2,0x0e,0x11,0x07,0x01,0xff,0xd9,0xb1,0x00,0x01,0xff,0xd9,0xbb,0x00,0x11,0x07,
+       0x01,0xff,0xd9,0xbb,0x00,0x01,0xff,0xd9,0xbe,0x00,0xd2,0x0e,0x11,0x07,0x01,0xff,
+       0xd9,0xbe,0x00,0x01,0xff,0xda,0x80,0x00,0x11,0x07,0x01,0xff,0xda,0x80,0x00,0x01,
+       0xff,0xd9,0xba,0x00,0xd4,0x38,0xd3,0x1c,0xd2,0x0e,0x11,0x07,0x01,0xff,0xd9,0xba,
+       0x00,0x01,0xff,0xd9,0xbf,0x00,0x11,0x07,0x01,0xff,0xd9,0xbf,0x00,0x01,0xff,0xd9,
+       0xb9,0x00,0xd2,0x0e,0x11,0x07,0x01,0xff,0xd9,0xb9,0x00,0x01,0xff,0xda,0xa4,0x00,
+       0x11,0x07,0x01,0xff,0xda,0xa4,0x00,0x01,0xff,0xda,0xa6,0x00,0xd3,0x1c,0xd2,0x0e,
+       0x11,0x07,0x01,0xff,0xda,0xa6,0x00,0x01,0xff,0xda,0x84,0x00,0x11,0x07,0x01,0xff,
+       0xda,0x84,0x00,0x01,0xff,0xda,0x83,0x00,0xd2,0x0e,0x11,0x07,0x01,0xff,0xda,0x83,
+       0x00,0x01,0xff,0xda,0x86,0x00,0x11,0x07,0x01,0xff,0xda,0x86,0x00,0x01,0xff,0xda,
+       0x87,0x00,0xd0,0xba,0xcf,0x86,0xd5,0x70,0xd4,0x38,0xd3,0x1c,0xd2,0x0e,0x11,0x07,
+       0x01,0xff,0xda,0x87,0x00,0x01,0xff,0xda,0x8d,0x00,0x11,0x07,0x01,0xff,0xda,0x8c,
+       0x00,0x01,0xff,0xda,0x8e,0x00,0xd2,0x0e,0x11,0x07,0x01,0xff,0xda,0x88,0x00,0x01,
+       0xff,0xda,0x98,0x00,0x11,0x07,0x01,0xff,0xda,0x91,0x00,0x01,0xff,0xda,0xa9,0x00,
+       0xd3,0x1c,0xd2,0x0e,0x11,0x07,0x01,0xff,0xda,0xa9,0x00,0x01,0xff,0xda,0xaf,0x00,
+       0x11,0x07,0x01,0xff,0xda,0xaf,0x00,0x01,0xff,0xda,0xb3,0x00,0xd2,0x0e,0x11,0x07,
+       0x01,0xff,0xda,0xb3,0x00,0x01,0xff,0xda,0xb1,0x00,0x11,0x07,0x01,0xff,0xda,0xb1,
+       0x00,0x01,0xff,0xda,0xba,0x00,0xd4,0x33,0xd3,0x17,0x52,0x07,0x01,0xff,0xda,0xbb,
+       0x00,0x11,0x09,0x01,0xff,0xdb,0x95,0xd9,0x94,0x00,0x01,0xff,0xdb,0x81,0x00,0xd2,
+       0x0e,0x11,0x07,0x01,0xff,0xdb,0x81,0x00,0x01,0xff,0xda,0xbe,0x00,0x11,0x07,0x01,
+       0xff,0xda,0xbe,0x00,0x01,0xff,0xdb,0x92,0x00,0x93,0x11,0x92,0x0d,0x11,0x09,0x01,
+       0xff,0xdb,0x92,0xd9,0x94,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0xcf,0x86,0xd5,0x67,
+       0xd4,0x10,0x93,0x0c,0x92,0x08,0x11,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0xd3,0x24,0xd2,0x0f,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x01,0xff,0xda,0xad,
+       0x00,0x51,0x07,0x01,0xff,0xda,0xad,0x00,0x10,0x07,0x01,0xff,0xda,0xad,0x00,0x01,
+       0xff,0xdb,0x87,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xdb,0x87,0x00,0x01,
+       0xff,0xdb,0x86,0x00,0x10,0x07,0x01,0xff,0xdb,0x86,0x00,0x01,0xff,0xdb,0x88,0x00,
+       0x91,0x10,0x10,0x07,0x01,0xff,0xdb,0x88,0x00,0x01,0xff,0xdb,0x87,0xd9,0xb4,0x00,
+       0x01,0xff,0xdb,0x8b,0x00,0xd4,0x3d,0xd3,0x15,0x92,0x0e,0x11,0x07,0x01,0xff,0xdb,
+       0x85,0x00,0x01,0xff,0xdb,0x89,0x00,0x01,0xff,0xdb,0x90,0x00,0xd2,0x12,0x11,0x07,
+       0x01,0xff,0xd9,0x89,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xa7,0x00,0x11,0x0b,
+       0x01,0xff,0xd9,0x8a,0xd9,0x94,0xdb,0x95,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,
+       0x88,0x00,0xd3,0x2c,0xd2,0x16,0x11,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xdb,0x87,
+       0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xdb,0x86,0x00,0x11,0x0b,0x01,0xff,0xd9,0x8a,
+       0xd9,0x94,0xdb,0x88,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xdb,0x90,0x00,0x92,0x21,
+       0x91,0x16,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xdb,0x90,0x00,0x01,0xff,0xd9,
+       0x8a,0xd9,0x94,0xd9,0x89,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x89,0x00,0x01,
+       0xff,0xdb,0x8c,0x00,0xe3,0x10,0x11,0xe2,0x40,0x09,0xe1,0xa4,0x04,0xe0,0x4e,0x02,
+       0xcf,0x86,0xe5,0x2b,0x01,0xd4,0x9a,0xd3,0x52,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,
+       0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xac,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xad,
+       0x00,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x85,0x00,0x01,0xff,0xd9,0x8a,
+       0xd9,0x94,0xd9,0x89,0x00,0xd1,0x14,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,
+       0x8a,0x00,0x01,0xff,0xd8,0xa8,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,0xa8,0xd8,
+       0xad,0x00,0x01,0xff,0xd8,0xa8,0xd8,0xae,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd8,0xa8,0xd9,0x85,0x00,0x01,0xff,0xd8,0xa8,0xd9,0x89,0x00,0x10,0x09,0x01,
+       0xff,0xd8,0xa8,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xaa,0xd8,0xac,0x00,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xd8,0xaa,0xd8,0xad,0x00,0x01,0xff,0xd8,0xaa,0xd8,0xae,0x00,0x10,
+       0x09,0x01,0xff,0xd8,0xaa,0xd9,0x85,0x00,0x01,0xff,0xd8,0xaa,0xd9,0x89,0x00,0xd3,
+       0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd9,0x8a,0x00,0x01,0xff,
+       0xd8,0xab,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,0xab,0xd9,0x85,0x00,0x01,0xff,
+       0xd8,0xab,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xab,0xd9,0x8a,0x00,
+       0x01,0xff,0xd8,0xac,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd8,0xac,0xd9,0x85,0x00,
+       0x01,0xff,0xd8,0xad,0xd8,0xac,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,
+       0xad,0xd9,0x85,0x00,0x01,0xff,0xd8,0xae,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,
+       0xae,0xd8,0xad,0x00,0x01,0xff,0xd8,0xae,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd8,0xb3,0xd8,0xac,0x00,0x01,0xff,0xd8,0xb3,0xd8,0xad,0x00,0x10,0x09,0x01,
+       0xff,0xd8,0xb3,0xd8,0xae,0x00,0x01,0xff,0xd8,0xb3,0xd9,0x85,0x00,0xd4,0x90,0xd3,
+       0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb5,0xd8,0xad,0x00,0x01,0xff,
+       0xd8,0xb5,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xac,0x00,0x01,0xff,
+       0xd8,0xb6,0xd8,0xad,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xae,0x00,
+       0x01,0xff,0xd8,0xb6,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd8,0xb7,0xd8,0xad,0x00,
+       0x01,0xff,0xd8,0xb7,0xd9,0x85,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,
+       0xb8,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb9,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,
+       0xb9,0xd9,0x85,0x00,0x01,0xff,0xd8,0xba,0xd8,0xac,0x00,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd8,0xba,0xd9,0x85,0x00,0x01,0xff,0xd9,0x81,0xd8,0xac,0x00,0x10,0x09,0x01,
+       0xff,0xd9,0x81,0xd8,0xad,0x00,0x01,0xff,0xd9,0x81,0xd8,0xae,0x00,0xd3,0x48,0xd2,
+       0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x81,0xd9,0x85,0x00,0x01,0xff,0xd9,0x81,
+       0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd9,0x81,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x82,
+       0xd8,0xad,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x82,0xd9,0x85,0x00,0x01,0xff,
+       0xd9,0x82,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd9,0x82,0xd9,0x8a,0x00,0x01,0xff,
+       0xd9,0x83,0xd8,0xa7,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x83,0xd8,
+       0xac,0x00,0x01,0xff,0xd9,0x83,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd9,0x83,0xd8,
+       0xae,0x00,0x01,0xff,0xd9,0x83,0xd9,0x84,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,
+       0x83,0xd9,0x85,0x00,0x01,0xff,0xd9,0x83,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd9,
+       0x83,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x84,0xd8,0xac,0x00,0xcf,0x86,0xe5,0x23,0x01,
+       0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x84,0xd8,0xad,
+       0x00,0x01,0xff,0xd9,0x84,0xd8,0xae,0x00,0x10,0x09,0x01,0xff,0xd9,0x84,0xd9,0x85,
+       0x00,0x01,0xff,0xd9,0x84,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x84,
+       0xd9,0x8a,0x00,0x01,0xff,0xd9,0x85,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd9,0x85,
+       0xd8,0xad,0x00,0x01,0xff,0xd9,0x85,0xd8,0xae,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd9,0x85,0xd9,0x85,0x00,0x01,0xff,0xd9,0x85,0xd9,0x89,0x00,0x10,0x09,
+       0x01,0xff,0xd9,0x85,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x86,0xd8,0xac,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd9,0x86,0xd8,0xad,0x00,0x01,0xff,0xd9,0x86,0xd8,0xae,0x00,
+       0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,0x85,0x00,0x01,0xff,0xd9,0x86,0xd9,0x89,0x00,
+       0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,0x8a,0x00,0x01,
+       0xff,0xd9,0x87,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd9,0x87,0xd9,0x85,0x00,0x01,
+       0xff,0xd9,0x87,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x87,0xd9,0x8a,
+       0x00,0x01,0xff,0xd9,0x8a,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd9,0x8a,0xd8,0xad,
+       0x00,0x01,0xff,0xd9,0x8a,0xd8,0xae,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd9,0x8a,0xd9,0x85,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,
+       0xd9,0x8a,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb0,0xd9,0xb0,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd8,0xb1,0xd9,0xb0,0x00,0x01,0xff,0xd9,0x89,0xd9,0xb0,0x00,0x10,0x0a,
+       0x01,0xff,0x20,0xd9,0x8c,0xd9,0x91,0x00,0x01,0xff,0x20,0xd9,0x8d,0xd9,0x91,0x00,
+       0xd4,0xa0,0xd3,0x54,0xd2,0x28,0xd1,0x14,0x10,0x0a,0x01,0xff,0x20,0xd9,0x8e,0xd9,
+       0x91,0x00,0x01,0xff,0x20,0xd9,0x8f,0xd9,0x91,0x00,0x10,0x0a,0x01,0xff,0x20,0xd9,
+       0x90,0xd9,0x91,0x00,0x01,0xff,0x20,0xd9,0x91,0xd9,0xb0,0x00,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xb1,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,
+       0xb2,0x00,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x85,0x00,0x01,0xff,0xd9,
+       0x8a,0xd9,0x94,0xd9,0x86,0x00,0xd2,0x28,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x8a,
+       0xd9,0x94,0xd9,0x89,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x8a,0x00,0x10,0x09,
+       0x01,0xff,0xd8,0xa8,0xd8,0xb1,0x00,0x01,0xff,0xd8,0xa8,0xd8,0xb2,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd8,0xa8,0xd9,0x85,0x00,0x01,0xff,0xd8,0xa8,0xd9,0x86,0x00,
+       0x10,0x09,0x01,0xff,0xd8,0xa8,0xd9,0x89,0x00,0x01,0xff,0xd8,0xa8,0xd9,0x8a,0x00,
+       0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd8,0xb1,0x00,0x01,
+       0xff,0xd8,0xaa,0xd8,0xb2,0x00,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd9,0x85,0x00,0x01,
+       0xff,0xd8,0xaa,0xd9,0x86,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd9,0x89,
+       0x00,0x01,0xff,0xd8,0xaa,0xd9,0x8a,0x00,0x10,0x09,0x01,0xff,0xd8,0xab,0xd8,0xb1,
+       0x00,0x01,0xff,0xd8,0xab,0xd8,0xb2,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd8,0xab,0xd9,0x85,0x00,0x01,0xff,0xd8,0xab,0xd9,0x86,0x00,0x10,0x09,0x01,0xff,
+       0xd8,0xab,0xd9,0x89,0x00,0x01,0xff,0xd8,0xab,0xd9,0x8a,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd9,0x81,0xd9,0x89,0x00,0x01,0xff,0xd9,0x81,0xd9,0x8a,0x00,0x10,0x09,
+       0x01,0xff,0xd9,0x82,0xd9,0x89,0x00,0x01,0xff,0xd9,0x82,0xd9,0x8a,0x00,0xe0,0x4e,
+       0x02,0xcf,0x86,0xe5,0x2b,0x01,0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd9,0x83,0xd8,0xa7,0x00,0x01,0xff,0xd9,0x83,0xd9,0x84,0x00,0x10,0x09,
+       0x01,0xff,0xd9,0x83,0xd9,0x85,0x00,0x01,0xff,0xd9,0x83,0xd9,0x89,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd9,0x83,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x84,0xd9,0x85,0x00,
+       0x10,0x09,0x01,0xff,0xd9,0x84,0xd9,0x89,0x00,0x01,0xff,0xd9,0x84,0xd9,0x8a,0x00,
+       0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x85,0xd8,0xa7,0x00,0x01,0xff,0xd9,
+       0x85,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd9,0x86,0xd8,0xb1,0x00,0x01,0xff,0xd9,
+       0x86,0xd8,0xb2,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,0x85,0x00,0x01,
+       0xff,0xd9,0x86,0xd9,0x86,0x00,0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,0x89,0x00,0x01,
+       0xff,0xd9,0x86,0xd9,0x8a,0x00,0xd3,0x4a,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd9,0x89,0xd9,0xb0,0x00,0x01,0xff,0xd9,0x8a,0xd8,0xb1,0x00,0x10,0x09,0x01,0xff,
+       0xd9,0x8a,0xd8,0xb2,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd9,0x8a,0xd9,0x86,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x89,0x00,0x10,0x09,
+       0x01,0xff,0xd9,0x8a,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xac,0x00,
+       0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xad,0x00,0x01,
+       0xff,0xd9,0x8a,0xd9,0x94,0xd8,0xae,0x00,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x94,
+       0xd9,0x85,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x87,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd8,0xa8,0xd8,0xac,0x00,0x01,0xff,0xd8,0xa8,0xd8,0xad,0x00,0x10,0x09,
+       0x01,0xff,0xd8,0xa8,0xd8,0xae,0x00,0x01,0xff,0xd8,0xa8,0xd9,0x85,0x00,0xd4,0x90,
+       0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xa8,0xd9,0x87,0x00,0x01,
+       0xff,0xd8,0xaa,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd8,0xad,0x00,0x01,
+       0xff,0xd8,0xaa,0xd8,0xae,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xaa,0xd9,0x85,
+       0x00,0x01,0xff,0xd8,0xaa,0xd9,0x87,0x00,0x10,0x09,0x01,0xff,0xd8,0xab,0xd9,0x85,
+       0x00,0x01,0xff,0xd8,0xac,0xd8,0xad,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd8,0xac,0xd9,0x85,0x00,0x01,0xff,0xd8,0xad,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,
+       0xd8,0xad,0xd9,0x85,0x00,0x01,0xff,0xd8,0xae,0xd8,0xac,0x00,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd8,0xae,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb3,0xd8,0xac,0x00,0x10,0x09,
+       0x01,0xff,0xd8,0xb3,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb3,0xd8,0xae,0x00,0xd3,0x48,
+       0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd9,0x85,0x00,0x01,0xff,0xd8,
+       0xb5,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd8,0xb5,0xd8,0xae,0x00,0x01,0xff,0xd8,
+       0xb5,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xac,0x00,0x01,
+       0xff,0xd8,0xb6,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xae,0x00,0x01,
+       0xff,0xd8,0xb6,0xd9,0x85,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb7,
+       0xd8,0xad,0x00,0x01,0xff,0xd8,0xb8,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd8,0xb9,
+       0xd8,0xac,0x00,0x01,0xff,0xd8,0xb9,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd8,0xba,0xd8,0xac,0x00,0x01,0xff,0xd8,0xba,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,
+       0xd9,0x81,0xd8,0xac,0x00,0x01,0xff,0xd9,0x81,0xd8,0xad,0x00,0xcf,0x86,0xe5,0x23,
+       0x01,0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x81,0xd8,
+       0xae,0x00,0x01,0xff,0xd9,0x81,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd9,0x82,0xd8,
+       0xad,0x00,0x01,0xff,0xd9,0x82,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,
+       0x83,0xd8,0xac,0x00,0x01,0xff,0xd9,0x83,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd9,
+       0x83,0xd8,0xae,0x00,0x01,0xff,0xd9,0x83,0xd9,0x84,0x00,0xd2,0x24,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xd9,0x83,0xd9,0x85,0x00,0x01,0xff,0xd9,0x84,0xd8,0xac,0x00,0x10,
+       0x09,0x01,0xff,0xd9,0x84,0xd8,0xad,0x00,0x01,0xff,0xd9,0x84,0xd8,0xae,0x00,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0xd9,0x84,0xd9,0x85,0x00,0x01,0xff,0xd9,0x84,0xd9,0x87,
+       0x00,0x10,0x09,0x01,0xff,0xd9,0x85,0xd8,0xac,0x00,0x01,0xff,0xd9,0x85,0xd8,0xad,
+       0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x85,0xd8,0xae,0x00,
+       0x01,0xff,0xd9,0x85,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd9,0x86,0xd8,0xac,0x00,
+       0x01,0xff,0xd9,0x86,0xd8,0xad,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x86,0xd8,
+       0xae,0x00,0x01,0xff,0xd9,0x86,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,
+       0x87,0x00,0x01,0xff,0xd9,0x87,0xd8,0xac,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd9,0x87,0xd9,0x85,0x00,0x01,0xff,0xd9,0x87,0xd9,0xb0,0x00,0x10,0x09,0x01,
+       0xff,0xd9,0x8a,0xd8,0xac,0x00,0x01,0xff,0xd9,0x8a,0xd8,0xad,0x00,0xd1,0x12,0x10,
+       0x09,0x01,0xff,0xd9,0x8a,0xd8,0xae,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x85,0x00,0x10,
+       0x09,0x01,0xff,0xd9,0x8a,0xd9,0x87,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0xd9,0x85,
+       0x00,0xd4,0x92,0xd3,0x4a,0xd2,0x26,0xd1,0x14,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd9,
+       0x94,0xd9,0x87,0x00,0x01,0xff,0xd8,0xa8,0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd8,
+       0xa8,0xd9,0x87,0x00,0x01,0xff,0xd8,0xaa,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,
+       0xff,0xd8,0xaa,0xd9,0x87,0x00,0x01,0xff,0xd8,0xab,0xd9,0x85,0x00,0x10,0x09,0x01,
+       0xff,0xd8,0xab,0xd9,0x87,0x00,0x01,0xff,0xd8,0xb3,0xd9,0x85,0x00,0xd2,0x24,0xd1,
+       0x12,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd9,0x87,0x00,0x01,0xff,0xd8,0xb4,0xd9,0x85,
+       0x00,0x10,0x09,0x01,0xff,0xd8,0xb4,0xd9,0x87,0x00,0x01,0xff,0xd9,0x83,0xd9,0x84,
+       0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x83,0xd9,0x85,0x00,0x01,0xff,0xd9,0x84,
+       0xd9,0x85,0x00,0x10,0x09,0x01,0xff,0xd9,0x86,0xd9,0x85,0x00,0x01,0xff,0xd9,0x86,
+       0xd9,0x87,0x00,0xd3,0x4e,0xd2,0x28,0xd1,0x12,0x10,0x09,0x01,0xff,0xd9,0x8a,0xd9,
+       0x85,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x87,0x00,0x10,0x0b,0x01,0xff,0xd9,0x80,0xd9,
+       0x8e,0xd9,0x91,0x00,0x01,0xff,0xd9,0x80,0xd9,0x8f,0xd9,0x91,0x00,0xd1,0x14,0x10,
+       0x0b,0x01,0xff,0xd9,0x80,0xd9,0x90,0xd9,0x91,0x00,0x01,0xff,0xd8,0xb7,0xd9,0x89,
+       0x00,0x10,0x09,0x01,0xff,0xd8,0xb7,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb9,0xd9,0x89,
+       0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb9,0xd9,0x8a,0x00,0x01,0xff,
+       0xd8,0xba,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xba,0xd9,0x8a,0x00,0x01,0xff,
+       0xd8,0xb3,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd9,0x8a,0x00,
+       0x01,0xff,0xd8,0xb4,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xb4,0xd9,0x8a,0x00,
+       0x01,0xff,0xd8,0xad,0xd9,0x89,0x00,0xe1,0xf7,0x03,0xe0,0x2d,0x02,0xcf,0x86,0xe5,
+       0x21,0x01,0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xad,
+       0xd9,0x8a,0x00,0x01,0xff,0xd8,0xac,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xac,
+       0xd9,0x8a,0x00,0x01,0xff,0xd8,0xae,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd8,0xae,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb5,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,
+       0xd8,0xb5,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb6,0xd9,0x89,0x00,0xd2,0x24,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd8,0xb6,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xac,0x00,
+       0x10,0x09,0x01,0xff,0xd8,0xb4,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xae,0x00,
+       0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb4,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb4,0xd8,
+       0xb1,0x00,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd8,0xb1,0x00,0x01,0xff,0xd8,0xb5,0xd8,
+       0xb1,0x00,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xb1,
+       0x00,0x01,0xff,0xd8,0xb7,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xb7,0xd9,0x8a,
+       0x00,0x01,0xff,0xd8,0xb9,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb9,
+       0xd9,0x8a,0x00,0x01,0xff,0xd8,0xba,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xba,
+       0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb3,0xd9,0x89,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd8,0xb3,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb4,0xd9,0x89,0x00,0x10,0x09,
+       0x01,0xff,0xd8,0xb4,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xad,0xd9,0x89,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd8,0xad,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xac,0xd9,0x89,0x00,
+       0x10,0x09,0x01,0xff,0xd8,0xac,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xae,0xd9,0x89,0x00,
+       0xd4,0x90,0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xae,0xd9,0x8a,
+       0x00,0x01,0xff,0xd8,0xb5,0xd9,0x89,0x00,0x10,0x09,0x01,0xff,0xd8,0xb5,0xd9,0x8a,
+       0x00,0x01,0xff,0xd8,0xb6,0xd9,0x89,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb6,
+       0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xac,0x00,0x10,0x09,0x01,0xff,0xd8,0xb4,
+       0xd8,0xad,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xae,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,
+       0x01,0xff,0xd8,0xb4,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xb1,0x00,0x10,0x09,
+       0x01,0xff,0xd8,0xb3,0xd8,0xb1,0x00,0x01,0xff,0xd8,0xb5,0xd8,0xb1,0x00,0xd1,0x12,
+       0x10,0x09,0x01,0xff,0xd8,0xb6,0xd8,0xb1,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xac,0x00,
+       0x10,0x09,0x01,0xff,0xd8,0xb4,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xae,0x00,
+       0xd3,0x48,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb4,0xd9,0x85,0x00,0x01,
+       0xff,0xd8,0xb3,0xd9,0x87,0x00,0x10,0x09,0x01,0xff,0xd8,0xb4,0xd9,0x87,0x00,0x01,
+       0xff,0xd8,0xb7,0xd9,0x85,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd8,0xac,
+       0x00,0x01,0xff,0xd8,0xb3,0xd8,0xad,0x00,0x10,0x09,0x01,0xff,0xd8,0xb3,0xd8,0xae,
+       0x00,0x01,0xff,0xd8,0xb4,0xd8,0xac,0x00,0xd2,0x24,0xd1,0x12,0x10,0x09,0x01,0xff,
+       0xd8,0xb4,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xae,0x00,0x10,0x09,0x01,0xff,
+       0xd8,0xb7,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb8,0xd9,0x85,0x00,0x11,0x09,0x01,0xff,
+       0xd8,0xa7,0xd9,0x8b,0x00,0x01,0x00,0xcf,0x86,0xd5,0xa9,0x54,0x04,0x00,0x00,0xd3,
+       0x58,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,0xaa,0xd8,0xac,0xd9,0x85,0x00,
+       0x01,0xff,0xd8,0xaa,0xd8,0xad,0xd8,0xac,0x00,0x10,0x0b,0x01,0xff,0xd8,0xaa,0xd8,
+       0xad,0xd8,0xac,0x00,0x01,0xff,0xd8,0xaa,0xd8,0xad,0xd9,0x85,0x00,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xd8,0xaa,0xd8,0xae,0xd9,0x85,0x00,0x01,0xff,0xd8,0xaa,0xd9,0x85,
+       0xd8,0xac,0x00,0x10,0x0b,0x01,0xff,0xd8,0xaa,0xd9,0x85,0xd8,0xad,0x00,0x01,0xff,
+       0xd8,0xaa,0xd9,0x85,0xd8,0xae,0x00,0xd2,0x21,0x51,0x0b,0x01,0xff,0xd8,0xac,0xd9,
+       0x85,0xd8,0xad,0x00,0x10,0x0b,0x01,0xff,0xd8,0xad,0xd9,0x85,0xd9,0x8a,0x00,0x01,
+       0xff,0xd8,0xad,0xd9,0x85,0xd9,0x89,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb3,
+       0xd8,0xad,0xd8,0xac,0x00,0x01,0xff,0xd8,0xb3,0xd8,0xac,0xd8,0xad,0x00,0x10,0x0b,
+       0x01,0xff,0xd8,0xb3,0xd8,0xac,0xd9,0x89,0x00,0x01,0xff,0xd8,0xb3,0xd9,0x85,0xd8,
+       0xad,0x00,0xd4,0x84,0xd3,0x42,0xd2,0x21,0x91,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb3,
+       0xd9,0x85,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb3,0xd9,0x85,0xd8,0xac,0x00,0x01,0xff,
+       0xd8,0xb3,0xd9,0x85,0xd9,0x85,0x00,0x51,0x0b,0x01,0xff,0xd8,0xb5,0xd8,0xad,0xd8,
+       0xad,0x00,0x10,0x0b,0x01,0xff,0xd8,0xb5,0xd9,0x85,0xd9,0x85,0x00,0x01,0xff,0xd8,
+       0xb4,0xd8,0xad,0xd9,0x85,0x00,0xd2,0x21,0x91,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb4,
+       0xd8,0xad,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb4,0xd8,0xac,0xd9,0x8a,0x00,0x01,0xff,
+       0xd8,0xb4,0xd9,0x85,0xd8,0xae,0x00,0x51,0x0b,0x01,0xff,0xd8,0xb4,0xd9,0x85,0xd9,
+       0x85,0x00,0x10,0x0b,0x01,0xff,0xd8,0xb6,0xd8,0xad,0xd9,0x89,0x00,0x01,0xff,0xd8,
+       0xb6,0xd8,0xae,0xd9,0x85,0x00,0xd3,0x4d,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,
+       0xd8,0xb6,0xd8,0xae,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb7,0xd9,0x85,0xd8,0xad,0x00,
+       0x10,0x0b,0x01,0xff,0xd8,0xb7,0xd9,0x85,0xd8,0xad,0x00,0x01,0xff,0xd8,0xb7,0xd9,
+       0x85,0xd9,0x85,0x00,0x91,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb7,0xd9,0x85,0xd9,0x8a,
+       0x00,0x01,0xff,0xd8,0xb9,0xd8,0xac,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb9,0xd9,0x85,
+       0xd9,0x85,0x00,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb9,0xd9,0x85,0xd9,
+       0x89,0x00,0x01,0xff,0xd8,0xba,0xd9,0x85,0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,0xd8,
+       0xba,0xd9,0x85,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xba,0xd9,0x85,0xd9,0x89,0x00,0x51,
+       0x0b,0x01,0xff,0xd9,0x81,0xd8,0xae,0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,0xd9,0x82,
+       0xd9,0x85,0xd8,0xad,0x00,0x01,0xff,0xd9,0x82,0xd9,0x85,0xd9,0x85,0x00,0xe0,0xa7,
+       0x02,0xcf,0x86,0xe5,0x44,0x01,0xd4,0xb0,0xd3,0x58,0xd2,0x2c,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xd9,0x84,0xd8,0xad,0xd9,0x85,0x00,0x01,0xff,0xd9,0x84,0xd8,0xad,0xd9,
+       0x8a,0x00,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd8,0xad,0xd9,0x89,0x00,0x01,0xff,0xd9,
+       0x84,0xd8,0xac,0xd8,0xac,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd8,0xac,
+       0xd8,0xac,0x00,0x01,0xff,0xd9,0x84,0xd8,0xae,0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,
+       0xd9,0x84,0xd8,0xae,0xd9,0x85,0x00,0x01,0xff,0xd9,0x84,0xd9,0x85,0xd8,0xad,0x00,
+       0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd9,0x85,0xd8,0xad,0x00,0x01,
+       0xff,0xd9,0x85,0xd8,0xad,0xd8,0xac,0x00,0x10,0x0b,0x01,0xff,0xd9,0x85,0xd8,0xad,
+       0xd9,0x85,0x00,0x01,0xff,0xd9,0x85,0xd8,0xad,0xd9,0x8a,0x00,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xd9,0x85,0xd8,0xac,0xd8,0xad,0x00,0x01,0xff,0xd9,0x85,0xd8,0xac,0xd9,
+       0x85,0x00,0x10,0x0b,0x01,0xff,0xd9,0x85,0xd8,0xae,0xd8,0xac,0x00,0x01,0xff,0xd9,
+       0x85,0xd8,0xae,0xd9,0x85,0x00,0xd3,0x46,0xd2,0x1a,0x51,0x04,0x00,0x00,0x10,0x0b,
+       0x01,0xff,0xd9,0x85,0xd8,0xac,0xd8,0xae,0x00,0x01,0xff,0xd9,0x87,0xd9,0x85,0xd8,
+       0xac,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x87,0xd9,0x85,0xd9,0x85,0x00,0x01,
+       0xff,0xd9,0x86,0xd8,0xad,0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,0xd9,0x86,0xd8,0xad,
+       0xd9,0x89,0x00,0x01,0xff,0xd9,0x86,0xd8,0xac,0xd9,0x85,0x00,0xd2,0x2c,0xd1,0x16,
+       0x10,0x0b,0x01,0xff,0xd9,0x86,0xd8,0xac,0xd9,0x85,0x00,0x01,0xff,0xd9,0x86,0xd8,
+       0xac,0xd9,0x89,0x00,0x10,0x0b,0x01,0xff,0xd9,0x86,0xd9,0x85,0xd9,0x8a,0x00,0x01,
+       0xff,0xd9,0x86,0xd9,0x85,0xd9,0x89,0x00,0x51,0x0b,0x01,0xff,0xd9,0x8a,0xd9,0x85,
+       0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,0xd8,0xa8,0xd8,0xae,0xd9,0x8a,0x00,0x01,0xff,
+       0xd8,0xaa,0xd8,0xac,0xd9,0x8a,0x00,0xd4,0xb0,0xd3,0x58,0xd2,0x2c,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xd8,0xaa,0xd8,0xac,0xd9,0x89,0x00,0x01,0xff,0xd8,0xaa,0xd8,0xae,
+       0xd9,0x8a,0x00,0x10,0x0b,0x01,0xff,0xd8,0xaa,0xd8,0xae,0xd9,0x89,0x00,0x01,0xff,
+       0xd8,0xaa,0xd9,0x85,0xd9,0x8a,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,0xaa,0xd9,
+       0x85,0xd9,0x89,0x00,0x01,0xff,0xd8,0xac,0xd9,0x85,0xd9,0x8a,0x00,0x10,0x0b,0x01,
+       0xff,0xd8,0xac,0xd8,0xad,0xd9,0x89,0x00,0x01,0xff,0xd8,0xac,0xd9,0x85,0xd9,0x89,
+       0x00,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,0xb3,0xd8,0xae,0xd9,0x89,0x00,
+       0x01,0xff,0xd8,0xb5,0xd8,0xad,0xd9,0x8a,0x00,0x10,0x0b,0x01,0xff,0xd8,0xb4,0xd8,
+       0xad,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xb6,0xd8,0xad,0xd9,0x8a,0x00,0xd1,0x16,0x10,
+       0x0b,0x01,0xff,0xd9,0x84,0xd8,0xac,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x84,0xd9,0x85,
+       0xd9,0x8a,0x00,0x10,0x0b,0x01,0xff,0xd9,0x8a,0xd8,0xad,0xd9,0x8a,0x00,0x01,0xff,
+       0xd9,0x8a,0xd8,0xac,0xd9,0x8a,0x00,0xd3,0x58,0xd2,0x2c,0xd1,0x16,0x10,0x0b,0x01,
+       0xff,0xd9,0x8a,0xd9,0x85,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x85,0xd9,0x85,0xd9,0x8a,
+       0x00,0x10,0x0b,0x01,0xff,0xd9,0x82,0xd9,0x85,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x86,
+       0xd8,0xad,0xd9,0x8a,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x82,0xd9,0x85,0xd8,
+       0xad,0x00,0x01,0xff,0xd9,0x84,0xd8,0xad,0xd9,0x85,0x00,0x10,0x0b,0x01,0xff,0xd8,
+       0xb9,0xd9,0x85,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x83,0xd9,0x85,0xd9,0x8a,0x00,0xd2,
+       0x2c,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd9,0x86,0xd8,0xac,0xd8,0xad,0x00,0x01,0xff,
+       0xd9,0x85,0xd8,0xae,0xd9,0x8a,0x00,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd8,0xac,0xd9,
+       0x85,0x00,0x01,0xff,0xd9,0x83,0xd9,0x85,0xd9,0x85,0x00,0xd1,0x16,0x10,0x0b,0x01,
+       0xff,0xd9,0x84,0xd8,0xac,0xd9,0x85,0x00,0x01,0xff,0xd9,0x86,0xd8,0xac,0xd8,0xad,
+       0x00,0x10,0x0b,0x01,0xff,0xd8,0xac,0xd8,0xad,0xd9,0x8a,0x00,0x01,0xff,0xd8,0xad,
+       0xd8,0xac,0xd9,0x8a,0x00,0xcf,0x86,0xd5,0x60,0x94,0x5c,0x93,0x58,0xd2,0x2c,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xd9,0x85,0xd8,0xac,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x81,
+       0xd9,0x85,0xd9,0x8a,0x00,0x10,0x0b,0x01,0xff,0xd8,0xa8,0xd8,0xad,0xd9,0x8a,0x00,
+       0x01,0xff,0xd9,0x83,0xd9,0x85,0xd9,0x85,0x00,0xd1,0x16,0x10,0x0b,0x01,0xff,0xd8,
+       0xb9,0xd8,0xac,0xd9,0x85,0x00,0x01,0xff,0xd8,0xb5,0xd9,0x85,0xd9,0x85,0x00,0x10,
+       0x0b,0x01,0xff,0xd8,0xb3,0xd8,0xae,0xd9,0x8a,0x00,0x01,0xff,0xd9,0x86,0xd8,0xac,
+       0xd9,0x8a,0x00,0x00,0x00,0x05,0x00,0x54,0x04,0x05,0x00,0xd3,0x64,0xd2,0x30,0xd1,
+       0x16,0x10,0x0b,0x01,0xff,0xd8,0xb5,0xd9,0x84,0xdb,0x92,0x00,0x01,0xff,0xd9,0x82,
+       0xd9,0x84,0xdb,0x92,0x00,0x10,0x0d,0x01,0xff,0xd8,0xa7,0xd9,0x84,0xd9,0x84,0xd9,
+       0x87,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x83,0xd8,0xa8,0xd8,0xb1,0x00,0xd1,0x1a,0x10,
+       0x0d,0x01,0xff,0xd9,0x85,0xd8,0xad,0xd9,0x85,0xd8,0xaf,0x00,0x01,0xff,0xd8,0xb5,
+       0xd9,0x84,0xd8,0xb9,0xd9,0x85,0x00,0x10,0x0d,0x01,0xff,0xd8,0xb1,0xd8,0xb3,0xd9,
+       0x88,0xd9,0x84,0x00,0x01,0xff,0xd8,0xb9,0xd9,0x84,0xd9,0x8a,0xd9,0x87,0x00,0xd2,
+       0x52,0xd1,0x18,0x10,0x0d,0x01,0xff,0xd9,0x88,0xd8,0xb3,0xd9,0x84,0xd9,0x85,0x00,
+       0x01,0xff,0xd8,0xb5,0xd9,0x84,0xd9,0x89,0x00,0x10,0x26,0x01,0xff,0xd8,0xb5,0xd9,
+       0x84,0xd9,0x89,0x20,0xd8,0xa7,0xd9,0x84,0xd9,0x84,0xd9,0x87,0x20,0xd8,0xb9,0xd9,
+       0x84,0xd9,0x8a,0xd9,0x87,0x20,0xd9,0x88,0xd8,0xb3,0xd9,0x84,0xd9,0x85,0x00,0x01,
+       0xff,0xd8,0xac,0xd9,0x84,0x20,0xd8,0xac,0xd9,0x84,0xd8,0xa7,0xd9,0x84,0xd9,0x87,
+       0x00,0x91,0x11,0x10,0x0d,0x06,0xff,0xd8,0xb1,0xdb,0x8c,0xd8,0xa7,0xd9,0x84,0x00,
+       0x07,0x00,0x00,0x00,0xe2,0x84,0x05,0xe1,0x75,0x02,0xd0,0xe4,0xcf,0x86,0xd5,0x53,
+       0x54,0x05,0x06,0xff,0x00,0xd3,0x36,0xd2,0x1c,0xd1,0x0e,0x10,0x06,0x08,0xff,0x2c,
+       0x00,0x08,0xff,0xe3,0x80,0x81,0x00,0x10,0x08,0x08,0xff,0xe3,0x80,0x82,0x00,0x08,
+       0xff,0x3a,0x00,0xd1,0x0c,0x10,0x06,0x08,0xff,0x3b,0x00,0x08,0xff,0x21,0x00,0x10,
+       0x06,0x08,0xff,0x3f,0x00,0x08,0xff,0xe3,0x80,0x96,0x00,0x92,0x14,0x91,0x10,0x10,
+       0x08,0x08,0xff,0xe3,0x80,0x97,0x00,0x08,0xff,0x2e,0x2e,0x2e,0x00,0x00,0x00,0x00,
+       0x00,0xd4,0x1c,0xd3,0x10,0x52,0x04,0x01,0xe6,0x51,0x04,0x0a,0xe6,0x10,0x04,0x0a,
+       0xe6,0x10,0xdc,0x52,0x04,0x10,0xdc,0x11,0x04,0x10,0xdc,0x11,0xe6,0xd3,0x35,0xd2,
+       0x1d,0xd1,0x0f,0x10,0x07,0x01,0xff,0x2e,0x2e,0x00,0x01,0xff,0xe2,0x80,0x94,0x00,
+       0x10,0x08,0x01,0xff,0xe2,0x80,0x93,0x00,0x01,0xff,0x5f,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x5f,0x00,0x01,0xff,0x28,0x00,0x10,0x06,0x01,0xff,0x29,0x00,0x01,0xff,
+       0x7b,0x00,0xd2,0x1e,0xd1,0x0e,0x10,0x06,0x01,0xff,0x7d,0x00,0x01,0xff,0xe3,0x80,
+       0x94,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,0x95,0x00,0x01,0xff,0xe3,0x80,0x90,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x80,0x91,0x00,0x01,0xff,0xe3,0x80,0x8a,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x80,0x8b,0x00,0x01,0xff,0xe3,0x80,0x88,0x00,0xcf,0x86,
+       0xd5,0xc6,0xd4,0x60,0xd3,0x36,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x80,
+       0x89,0x00,0x01,0xff,0xe3,0x80,0x8c,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,0x8d,0x00,
+       0x01,0xff,0xe3,0x80,0x8e,0x00,0xd1,0x0c,0x10,0x08,0x01,0xff,0xe3,0x80,0x8f,0x00,
+       0x06,0x00,0x10,0x04,0x06,0x00,0x07,0xff,0x5b,0x00,0xd2,0x16,0x91,0x0e,0x10,0x06,
+       0x07,0xff,0x5d,0x00,0x01,0xff,0x20,0xcc,0x85,0x00,0x01,0xff,0x20,0xcc,0x85,0x00,
+       0x91,0x0e,0x10,0x08,0x01,0xff,0x20,0xcc,0x85,0x00,0x01,0xff,0x5f,0x00,0x01,0xff,
+       0x5f,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0e,0x10,0x06,0x01,0xff,0x2c,0x00,0x01,0xff,
+       0xe3,0x80,0x81,0x00,0x10,0x06,0x01,0xff,0x2e,0x00,0x00,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x3b,0x00,0x01,0xff,0x3a,0x00,0x10,0x06,0x01,0xff,0x3f,0x00,0x01,0xff,
+       0x21,0x00,0xd2,0x1a,0xd1,0x0e,0x10,0x08,0x01,0xff,0xe2,0x80,0x94,0x00,0x01,0xff,
+       0x28,0x00,0x10,0x06,0x01,0xff,0x29,0x00,0x01,0xff,0x7b,0x00,0xd1,0x0e,0x10,0x06,
+       0x01,0xff,0x7d,0x00,0x01,0xff,0xe3,0x80,0x94,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,
+       0x95,0x00,0x01,0xff,0x23,0x00,0xd4,0x4a,0xd3,0x2e,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x26,0x00,0x01,0xff,0x2a,0x00,0x10,0x06,0x01,0xff,0x2b,0x00,0x01,0xff,
+       0x2d,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x3c,0x00,0x01,0xff,0x3e,0x00,0x10,0x06,
+       0x01,0xff,0x3d,0x00,0x00,0x00,0x92,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x5c,0x00,
+       0x01,0xff,0x24,0x00,0x10,0x06,0x01,0xff,0x25,0x00,0x01,0xff,0x40,0x00,0x00,0x00,
+       0xd3,0x3a,0xd2,0x1d,0xd1,0x11,0x10,0x08,0x01,0xff,0x20,0xd9,0x8b,0x00,0x01,0xff,
+       0xd9,0x80,0xd9,0x8b,0x00,0x10,0x08,0x01,0xff,0x20,0xd9,0x8c,0x00,0x06,0x00,0xd1,
+       0x0c,0x10,0x08,0x01,0xff,0x20,0xd9,0x8d,0x00,0x00,0x00,0x10,0x08,0x01,0xff,0x20,
+       0xd9,0x8e,0x00,0x01,0xff,0xd9,0x80,0xd9,0x8e,0x00,0xd2,0x22,0xd1,0x11,0x10,0x08,
+       0x01,0xff,0x20,0xd9,0x8f,0x00,0x01,0xff,0xd9,0x80,0xd9,0x8f,0x00,0x10,0x08,0x01,
+       0xff,0x20,0xd9,0x90,0x00,0x01,0xff,0xd9,0x80,0xd9,0x90,0x00,0xd1,0x11,0x10,0x08,
+       0x01,0xff,0x20,0xd9,0x91,0x00,0x01,0xff,0xd9,0x80,0xd9,0x91,0x00,0x10,0x08,0x01,
+       0xff,0x20,0xd9,0x92,0x00,0x01,0xff,0xd9,0x80,0xd9,0x92,0x00,0xe0,0x8c,0x01,0xcf,
+       0x86,0xd5,0xd3,0xd4,0x7f,0xd3,0x46,0xd2,0x22,0xd1,0x10,0x10,0x07,0x01,0xff,0xd8,
+       0xa1,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x93,0x00,0x10,0x09,0x01,0xff,0xd8,0xa7,0xd9,
+       0x93,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x94,0x00,0xd1,0x12,0x10,0x09,0x01,0xff,0xd8,
+       0xa7,0xd9,0x94,0x00,0x01,0xff,0xd9,0x88,0xd9,0x94,0x00,0x10,0x09,0x01,0xff,0xd9,
+       0x88,0xd9,0x94,0x00,0x01,0xff,0xd8,0xa7,0xd9,0x95,0x00,0xd2,0x1b,0x91,0x12,0x10,
+       0x09,0x01,0xff,0xd8,0xa7,0xd9,0x95,0x00,0x01,0xff,0xd9,0x8a,0xd9,0x94,0x00,0x01,
+       0xff,0xd9,0x8a,0xd9,0x94,0x00,0xd1,0x10,0x10,0x09,0x01,0xff,0xd9,0x8a,0xd9,0x94,
+       0x00,0x01,0xff,0xd8,0xa7,0x00,0x10,0x07,0x01,0xff,0xd8,0xa7,0x00,0x01,0xff,0xd8,
+       0xa8,0x00,0xd3,0x2a,0xd2,0x15,0x51,0x07,0x01,0xff,0xd8,0xa8,0x00,0x10,0x07,0x01,
+       0xff,0xd8,0xa8,0x00,0x01,0xff,0xd8,0xa9,0x00,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,
+       0xa9,0x00,0x01,0xff,0xd8,0xaa,0x00,0x01,0xff,0xd8,0xaa,0x00,0xd2,0x15,0x91,0x0e,
+       0x10,0x07,0x01,0xff,0xd8,0xaa,0x00,0x01,0xff,0xd8,0xab,0x00,0x01,0xff,0xd8,0xab,
+       0x00,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xab,0x00,0x01,0xff,0xd8,0xac,0x00,0x01,
+       0xff,0xd8,0xac,0x00,0xd4,0x62,0xd3,0x2a,0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,
+       0xd8,0xac,0x00,0x01,0xff,0xd8,0xad,0x00,0x01,0xff,0xd8,0xad,0x00,0x91,0x0e,0x10,
+       0x07,0x01,0xff,0xd8,0xad,0x00,0x01,0xff,0xd8,0xae,0x00,0x01,0xff,0xd8,0xae,0x00,
+       0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd8,0xae,0x00,0x01,0xff,0xd8,0xaf,0x00,
+       0x10,0x07,0x01,0xff,0xd8,0xaf,0x00,0x01,0xff,0xd8,0xb0,0x00,0xd1,0x0e,0x10,0x07,
+       0x01,0xff,0xd8,0xb0,0x00,0x01,0xff,0xd8,0xb1,0x00,0x10,0x07,0x01,0xff,0xd8,0xb1,
+       0x00,0x01,0xff,0xd8,0xb2,0x00,0xd3,0x2a,0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,
+       0xd8,0xb2,0x00,0x01,0xff,0xd8,0xb3,0x00,0x01,0xff,0xd8,0xb3,0x00,0x91,0x0e,0x10,
+       0x07,0x01,0xff,0xd8,0xb3,0x00,0x01,0xff,0xd8,0xb4,0x00,0x01,0xff,0xd8,0xb4,0x00,
+       0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xb4,0x00,0x01,0xff,0xd8,0xb5,0x00,
+       0x01,0xff,0xd8,0xb5,0x00,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xb5,0x00,0x01,0xff,
+       0xd8,0xb6,0x00,0x01,0xff,0xd8,0xb6,0x00,0xcf,0x86,0xd5,0xa8,0xd4,0x54,0xd3,0x2a,
+       0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xb6,0x00,0x01,0xff,0xd8,0xb7,0x00,
+       0x01,0xff,0xd8,0xb7,0x00,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xb7,0x00,0x01,0xff,
+       0xd8,0xb8,0x00,0x01,0xff,0xd8,0xb8,0x00,0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,
+       0xd8,0xb8,0x00,0x01,0xff,0xd8,0xb9,0x00,0x01,0xff,0xd8,0xb9,0x00,0x91,0x0e,0x10,
+       0x07,0x01,0xff,0xd8,0xb9,0x00,0x01,0xff,0xd8,0xba,0x00,0x01,0xff,0xd8,0xba,0x00,
+       0xd3,0x2a,0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,0xd8,0xba,0x00,0x01,0xff,0xd9,
+       0x81,0x00,0x01,0xff,0xd9,0x81,0x00,0x91,0x0e,0x10,0x07,0x01,0xff,0xd9,0x81,0x00,
+       0x01,0xff,0xd9,0x82,0x00,0x01,0xff,0xd9,0x82,0x00,0xd2,0x15,0x91,0x0e,0x10,0x07,
+       0x01,0xff,0xd9,0x82,0x00,0x01,0xff,0xd9,0x83,0x00,0x01,0xff,0xd9,0x83,0x00,0x91,
+       0x0e,0x10,0x07,0x01,0xff,0xd9,0x83,0x00,0x01,0xff,0xd9,0x84,0x00,0x01,0xff,0xd9,
+       0x84,0x00,0xd4,0x5b,0xd3,0x2a,0xd2,0x15,0x91,0x0e,0x10,0x07,0x01,0xff,0xd9,0x84,
+       0x00,0x01,0xff,0xd9,0x85,0x00,0x01,0xff,0xd9,0x85,0x00,0x91,0x0e,0x10,0x07,0x01,
+       0xff,0xd9,0x85,0x00,0x01,0xff,0xd9,0x86,0x00,0x01,0xff,0xd9,0x86,0x00,0xd2,0x15,
+       0x91,0x0e,0x10,0x07,0x01,0xff,0xd9,0x86,0x00,0x01,0xff,0xd9,0x87,0x00,0x01,0xff,
+       0xd9,0x87,0x00,0xd1,0x0e,0x10,0x07,0x01,0xff,0xd9,0x87,0x00,0x01,0xff,0xd9,0x88,
+       0x00,0x10,0x07,0x01,0xff,0xd9,0x88,0x00,0x01,0xff,0xd9,0x89,0x00,0xd3,0x3d,0xd2,
+       0x15,0x91,0x0e,0x10,0x07,0x01,0xff,0xd9,0x89,0x00,0x01,0xff,0xd9,0x8a,0x00,0x01,
+       0xff,0xd9,0x8a,0x00,0xd1,0x12,0x10,0x07,0x01,0xff,0xd9,0x8a,0x00,0x01,0xff,0xd9,
+       0x84,0xd8,0xa7,0xd9,0x93,0x00,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd8,0xa7,0xd9,0x93,
+       0x00,0x01,0xff,0xd9,0x84,0xd8,0xa7,0xd9,0x94,0x00,0xd2,0x2a,0xd1,0x16,0x10,0x0b,
+       0x01,0xff,0xd9,0x84,0xd8,0xa7,0xd9,0x94,0x00,0x01,0xff,0xd9,0x84,0xd8,0xa7,0xd9,
+       0x95,0x00,0x10,0x0b,0x01,0xff,0xd9,0x84,0xd8,0xa7,0xd9,0x95,0x00,0x01,0xff,0xd9,
+       0x84,0xd8,0xa7,0x00,0xd1,0x0d,0x10,0x09,0x01,0xff,0xd9,0x84,0xd8,0xa7,0x00,0x00,
+       0x00,0x10,0x04,0x00,0x00,0x01,0xff,0x00,0xe1,0x46,0x03,0xe0,0x81,0x01,0xcf,0x86,
+       0xd5,0xbe,0xd4,0x5e,0xd3,0x2e,0xd2,0x16,0xd1,0x0a,0x10,0x04,0x00,0x00,0x01,0xff,
+       0x21,0x00,0x10,0x06,0x01,0xff,0x22,0x00,0x01,0xff,0x23,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x24,0x00,0x01,0xff,0x25,0x00,0x10,0x06,0x01,0xff,0x26,0x00,0x01,0xff,
+       0x27,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x28,0x00,0x01,0xff,0x29,0x00,
+       0x10,0x06,0x01,0xff,0x2a,0x00,0x01,0xff,0x2b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x2c,0x00,0x01,0xff,0x2d,0x00,0x10,0x06,0x01,0xff,0x2e,0x00,0x01,0xff,0x2f,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x30,0x00,0x01,0xff,0x31,0x00,
+       0x10,0x06,0x01,0xff,0x32,0x00,0x01,0xff,0x33,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x34,0x00,0x01,0xff,0x35,0x00,0x10,0x06,0x01,0xff,0x36,0x00,0x01,0xff,0x37,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x38,0x00,0x01,0xff,0x39,0x00,0x10,0x06,
+       0x01,0xff,0x3a,0x00,0x01,0xff,0x3b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x3c,0x00,
+       0x01,0xff,0x3d,0x00,0x10,0x06,0x01,0xff,0x3e,0x00,0x01,0xff,0x3f,0x00,0xd4,0x60,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x40,0x00,0x01,0xff,0x41,0x00,
+       0x10,0x06,0x01,0xff,0x42,0x00,0x01,0xff,0x43,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x44,0x00,0x01,0xff,0x45,0x00,0x10,0x06,0x01,0xff,0x46,0x00,0x01,0xff,0x47,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x48,0x00,0x01,0xff,0x49,0x00,0x10,0x06,
+       0x01,0xff,0x4a,0x00,0x01,0xff,0x4b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x4c,0x00,
+       0x01,0xff,0x4d,0x00,0x10,0x06,0x01,0xff,0x4e,0x00,0x01,0xff,0x4f,0x00,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x50,0x00,0x01,0xff,0x51,0x00,0x10,0x06,
+       0x01,0xff,0x52,0x00,0x01,0xff,0x53,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x54,0x00,
+       0x01,0xff,0x55,0x00,0x10,0x06,0x01,0xff,0x56,0x00,0x01,0xff,0x57,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x01,0xff,0x58,0x00,0x01,0xff,0x59,0x00,0x10,0x06,0x01,0xff,
+       0x5a,0x00,0x01,0xff,0x5b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x5c,0x00,0x01,0xff,
+       0x5d,0x00,0x10,0x06,0x01,0xff,0x5e,0x00,0x01,0xff,0x5f,0x00,0xcf,0x86,0xd5,0xc2,
+       0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x60,0x00,0x01,0xff,
+       0x61,0x00,0x10,0x06,0x01,0xff,0x62,0x00,0x01,0xff,0x63,0x00,0xd1,0x0c,0x10,0x06,
+       0x01,0xff,0x64,0x00,0x01,0xff,0x65,0x00,0x10,0x06,0x01,0xff,0x66,0x00,0x01,0xff,
+       0x67,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x68,0x00,0x01,0xff,0x69,0x00,
+       0x10,0x06,0x01,0xff,0x6a,0x00,0x01,0xff,0x6b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x6c,0x00,0x01,0xff,0x6d,0x00,0x10,0x06,0x01,0xff,0x6e,0x00,0x01,0xff,0x6f,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x70,0x00,0x01,0xff,0x71,0x00,
+       0x10,0x06,0x01,0xff,0x72,0x00,0x01,0xff,0x73,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,
+       0x74,0x00,0x01,0xff,0x75,0x00,0x10,0x06,0x01,0xff,0x76,0x00,0x01,0xff,0x77,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x01,0xff,0x78,0x00,0x01,0xff,0x79,0x00,0x10,0x06,
+       0x01,0xff,0x7a,0x00,0x01,0xff,0x7b,0x00,0xd1,0x0c,0x10,0x06,0x01,0xff,0x7c,0x00,
+       0x01,0xff,0x7d,0x00,0x10,0x06,0x01,0xff,0x7e,0x00,0x06,0xff,0xe2,0xa6,0x85,0x00,
+       0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x06,0xff,0xe2,0xa6,0x86,0x00,
+       0x01,0xff,0xe3,0x80,0x82,0x00,0x10,0x08,0x01,0xff,0xe3,0x80,0x8c,0x00,0x01,0xff,
+       0xe3,0x80,0x8d,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x80,0x81,0x00,0x01,0xff,
+       0xe3,0x83,0xbb,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0xb2,0x00,0x01,0xff,0xe3,0x82,
+       0xa1,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xa3,0x00,0x01,0xff,
+       0xe3,0x82,0xa5,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xa7,0x00,0x01,0xff,0xe3,0x82,
+       0xa9,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xa3,0x00,0x01,0xff,0xe3,0x83,
+       0xa5,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0xa7,0x00,0x01,0xff,0xe3,0x83,0x83,0x00,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xbc,0x00,0x01,0xff,
+       0xe3,0x82,0xa2,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xa4,0x00,0x01,0xff,0xe3,0x82,
+       0xa6,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xa8,0x00,0x01,0xff,0xe3,0x82,
+       0xaa,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xab,0x00,0x01,0xff,0xe3,0x82,0xad,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xaf,0x00,0x01,0xff,0xe3,0x82,
+       0xb1,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0xb3,0x00,0x01,0xff,0xe3,0x82,0xb5,0x00,
+       0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x82,0xb7,0x00,0x01,0xff,0xe3,0x82,0xb9,0x00,
+       0x10,0x08,0x01,0xff,0xe3,0x82,0xbb,0x00,0x01,0xff,0xe3,0x82,0xbd,0x00,0xe0,0xfd,
+       0x01,0xcf,0x86,0xe5,0x01,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x01,0xff,0xe3,0x82,0xbf,0x00,0x01,0xff,0xe3,0x83,0x81,0x00,0x10,0x08,0x01,0xff,
+       0xe3,0x83,0x84,0x00,0x01,0xff,0xe3,0x83,0x86,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe3,0x83,0x88,0x00,0x01,0xff,0xe3,0x83,0x8a,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0x8b,0x00,0x01,0xff,0xe3,0x83,0x8c,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe3,0x83,0x8d,0x00,0x01,0xff,0xe3,0x83,0x8e,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0x8f,0x00,0x01,0xff,0xe3,0x83,0x92,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0x95,0x00,0x01,0xff,0xe3,0x83,0x98,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0x9b,0x00,
+       0x01,0xff,0xe3,0x83,0x9e,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,
+       0xe3,0x83,0x9f,0x00,0x01,0xff,0xe3,0x83,0xa0,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0xa1,0x00,0x01,0xff,0xe3,0x83,0xa2,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0xa4,0x00,0x01,0xff,0xe3,0x83,0xa6,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0xa8,0x00,
+       0x01,0xff,0xe3,0x83,0xa9,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,
+       0xaa,0x00,0x01,0xff,0xe3,0x83,0xab,0x00,0x10,0x08,0x01,0xff,0xe3,0x83,0xac,0x00,
+       0x01,0xff,0xe3,0x83,0xad,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe3,0x83,0xaf,0x00,
+       0x01,0xff,0xe3,0x83,0xb3,0x00,0x10,0x08,0x01,0xff,0xe3,0x82,0x99,0x00,0x01,0xff,
+       0xe3,0x82,0x9a,0x00,0xd4,0x7d,0xd3,0x3d,0xd2,0x1d,0xd1,0x0d,0x10,0x05,0x01,0xff,
+       0x00,0x01,0xff,0xe1,0x84,0x80,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x81,0x00,0x01,
+       0xff,0xe1,0x86,0xaa,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x82,0x00,0x01,
+       0xff,0xe1,0x86,0xac,0x00,0x10,0x08,0x01,0xff,0xe1,0x86,0xad,0x00,0x01,0xff,0xe1,
+       0x84,0x83,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x84,0x00,0x01,
+       0xff,0xe1,0x84,0x85,0x00,0x10,0x08,0x01,0xff,0xe1,0x86,0xb0,0x00,0x01,0xff,0xe1,
+       0x86,0xb1,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x86,0xb2,0x00,0x01,0xff,0xe1,
+       0x86,0xb3,0x00,0x10,0x08,0x01,0xff,0xe1,0x86,0xb4,0x00,0x01,0xff,0xe1,0x86,0xb5,
+       0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x9a,0x00,0x01,
+       0xff,0xe1,0x84,0x86,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x87,0x00,0x01,0xff,0xe1,
+       0x84,0x88,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0xa1,0x00,0x01,0xff,0xe1,
+       0x84,0x89,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x8a,0x00,0x01,0xff,0xe1,0x84,0x8b,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x8c,0x00,0x01,0xff,0xe1,
+       0x84,0x8d,0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x8e,0x00,0x01,0xff,0xe1,0x84,0x8f,
+       0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x84,0x90,0x00,0x01,0xff,0xe1,0x84,0x91,
+       0x00,0x10,0x08,0x01,0xff,0xe1,0x84,0x92,0x00,0x00,0x00,0xcf,0x86,0xd5,0xc0,0xd4,
+       0x68,0xd3,0x34,0xd2,0x14,0x51,0x04,0x00,0x00,0x10,0x08,0x01,0xff,0xe1,0x85,0xa1,
+       0x00,0x01,0xff,0xe1,0x85,0xa2,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,0x85,0xa3,
+       0x00,0x01,0xff,0xe1,0x85,0xa4,0x00,0x10,0x08,0x01,0xff,0xe1,0x85,0xa5,0x00,0x01,
+       0xff,0xe1,0x85,0xa6,0x00,0xd2,0x14,0x51,0x04,0x00,0x00,0x10,0x08,0x01,0xff,0xe1,
+       0x85,0xa7,0x00,0x01,0xff,0xe1,0x85,0xa8,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe1,
+       0x85,0xa9,0x00,0x01,0xff,0xe1,0x85,0xaa,0x00,0x10,0x08,0x01,0xff,0xe1,0x85,0xab,
+       0x00,0x01,0xff,0xe1,0x85,0xac,0x00,0xd3,0x34,0xd2,0x14,0x51,0x04,0x00,0x00,0x10,
+       0x08,0x01,0xff,0xe1,0x85,0xad,0x00,0x01,0xff,0xe1,0x85,0xae,0x00,0xd1,0x10,0x10,
+       0x08,0x01,0xff,0xe1,0x85,0xaf,0x00,0x01,0xff,0xe1,0x85,0xb0,0x00,0x10,0x08,0x01,
+       0xff,0xe1,0x85,0xb1,0x00,0x01,0xff,0xe1,0x85,0xb2,0x00,0xd2,0x14,0x51,0x04,0x00,
+       0x00,0x10,0x08,0x01,0xff,0xe1,0x85,0xb3,0x00,0x01,0xff,0xe1,0x85,0xb4,0x00,0x91,
+       0x0c,0x10,0x08,0x01,0xff,0xe1,0x85,0xb5,0x00,0x00,0x00,0x00,0x00,0xd4,0x73,0xd3,
+       0x37,0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x01,0xff,0xc2,0xa2,0x00,0x01,0xff,0xc2,0xa3,
+       0x00,0x10,0x07,0x01,0xff,0xc2,0xac,0x00,0x01,0xff,0x20,0xcc,0x84,0x00,0xd1,0x0e,
+       0x10,0x07,0x01,0xff,0xc2,0xa6,0x00,0x01,0xff,0xc2,0xa5,0x00,0x10,0x08,0x01,0xff,
+       0xe2,0x82,0xa9,0x00,0x00,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x01,0xff,0xe2,0x94,
+       0x82,0x00,0x01,0xff,0xe2,0x86,0x90,0x00,0x10,0x08,0x01,0xff,0xe2,0x86,0x91,0x00,
+       0x01,0xff,0xe2,0x86,0x92,0x00,0xd1,0x10,0x10,0x08,0x01,0xff,0xe2,0x86,0x93,0x00,
+       0x01,0xff,0xe2,0x96,0xa0,0x00,0x10,0x08,0x01,0xff,0xe2,0x97,0x8b,0x00,0x00,0x00,
+       0x53,0x05,0x00,0xff,0x00,0xd2,0x0d,0x91,0x09,0x10,0x05,0x00,0xff,0x00,0x04,0x00,
+       0x04,0x00,0x91,0x08,0x10,0x04,0x03,0x00,0x01,0x00,0x01,0x00,0x83,0xe2,0xe3,0x59,
+       0xe1,0xbc,0x56,0xe0,0x39,0x55,0xcf,0x86,0xe5,0xdd,0x41,0xc4,0xe3,0x4c,0x13,0xe2,
+       0x39,0x11,0xe1,0x2a,0x10,0xe0,0x42,0x07,0xcf,0x86,0xe5,0x53,0x03,0xe4,0x4c,0x02,
+       0xe3,0x3d,0x01,0xd2,0x94,0xd1,0x70,0xd0,0x4a,0xcf,0x86,0xd5,0x18,0x94,0x14,0x53,
+       0x04,0x07,0x00,0x52,0x04,0x07,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x07,0x00,0x07,
+       0x00,0x07,0x00,0xd4,0x14,0x93,0x10,0x52,0x04,0x07,0x00,0x51,0x04,0x07,0x00,0x10,
+       0x04,0x07,0x00,0x00,0x00,0x07,0x00,0x53,0x04,0x07,0x00,0xd2,0x0c,0x51,0x04,0x07,
+       0x00,0x10,0x04,0x07,0x00,0x00,0x00,0x51,0x04,0x07,0x00,0x10,0x04,0x00,0x00,0x07,
+       0x00,0xcf,0x86,0x95,0x20,0xd4,0x10,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0x11,
+       0x04,0x07,0x00,0x00,0x00,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0x11,0x04,0x07,
+       0x00,0x00,0x00,0x00,0x00,0xd0,0x06,0xcf,0x06,0x07,0x00,0xcf,0x86,0x55,0x04,0x07,
+       0x00,0x54,0x04,0x07,0x00,0x53,0x04,0x07,0x00,0x92,0x0c,0x51,0x04,0x07,0x00,0x10,
+       0x04,0x07,0x00,0x00,0x00,0x00,0x00,0xd1,0x40,0xd0,0x3a,0xcf,0x86,0xd5,0x20,0x94,
+       0x1c,0x93,0x18,0xd2,0x0c,0x51,0x04,0x07,0x00,0x10,0x04,0x07,0x00,0x00,0x00,0x51,
+       0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x54,0x04,0x07,
+       0x00,0x93,0x10,0x52,0x04,0x07,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x07,
+       0x00,0x07,0x00,0xcf,0x06,0x08,0x00,0xd0,0x46,0xcf,0x86,0xd5,0x2c,0xd4,0x20,0x53,
+       0x04,0x08,0x00,0xd2,0x0c,0x51,0x04,0x08,0x00,0x10,0x04,0x08,0x00,0x10,0x00,0xd1,
+       0x08,0x10,0x04,0x10,0x00,0x12,0x00,0x10,0x04,0x12,0x00,0x00,0x00,0x53,0x04,0x0a,
+       0x00,0x12,0x04,0x0a,0x00,0x00,0x00,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xd5,
+       0x08,0x14,0x04,0x00,0x00,0x0a,0x00,0x54,0x04,0x0a,0x00,0x53,0x04,0x0a,0x00,0x52,
+       0x04,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x0a,0xdc,0x00,0x00,0xd2,0x5e,0xd1,
+       0x06,0xcf,0x06,0x00,0x00,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x54,0x04,0x0a,0x00,0x53,
+       0x04,0x0a,0x00,0x52,0x04,0x0a,0x00,0x91,0x08,0x10,0x04,0x0a,0x00,0x00,0x00,0x00,
+       0x00,0x0a,0x00,0xcf,0x86,0xd5,0x18,0x54,0x04,0x0a,0x00,0x93,0x10,0x92,0x0c,0x91,
+       0x08,0x10,0x04,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x14,0x93,
+       0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x10,0xdc,0x10,0x00,0x10,0x00,0x10,0x00,0x10,
+       0x00,0x53,0x04,0x10,0x00,0x12,0x04,0x10,0x00,0x00,0x00,0xd1,0x70,0xd0,0x36,0xcf,
+       0x86,0xd5,0x18,0x54,0x04,0x05,0x00,0x53,0x04,0x05,0x00,0x52,0x04,0x05,0x00,0x51,
+       0x04,0x05,0x00,0x10,0x04,0x05,0x00,0x10,0x00,0x94,0x18,0xd3,0x08,0x12,0x04,0x05,
+       0x00,0x00,0x00,0x52,0x04,0x00,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x13,0x00,0x13,
+       0x00,0x05,0x00,0xcf,0x86,0xd5,0x18,0x94,0x14,0x53,0x04,0x05,0x00,0x92,0x0c,0x51,
+       0x04,0x05,0x00,0x10,0x04,0x05,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x54,0x04,0x10,
+       0x00,0xd3,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x10,0xe6,0x92,0x0c,0x51,
+       0x04,0x10,0xe6,0x10,0x04,0x10,0xe6,0x00,0x00,0x00,0x00,0xd0,0x1e,0xcf,0x86,0x95,
+       0x18,0x54,0x04,0x07,0x00,0x53,0x04,0x07,0x00,0x52,0x04,0x07,0x00,0x51,0x04,0x07,
+       0x00,0x10,0x04,0x00,0x00,0x07,0x00,0x08,0x00,0xcf,0x86,0x95,0x1c,0xd4,0x0c,0x93,
+       0x08,0x12,0x04,0x08,0x00,0x00,0x00,0x08,0x00,0x93,0x0c,0x52,0x04,0x08,0x00,0x11,
+       0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd3,0xba,0xd2,0x80,0xd1,0x34,0xd0,
+       0x1a,0xcf,0x86,0x55,0x04,0x05,0x00,0x94,0x10,0x93,0x0c,0x52,0x04,0x05,0x00,0x11,
+       0x04,0x05,0x00,0x07,0x00,0x05,0x00,0x05,0x00,0xcf,0x86,0x95,0x14,0x94,0x10,0x53,
+       0x04,0x05,0x00,0x52,0x04,0x05,0x00,0x11,0x04,0x05,0x00,0x07,0x00,0x07,0x00,0x07,
+       0x00,0xd0,0x2a,0xcf,0x86,0xd5,0x14,0x54,0x04,0x07,0x00,0x53,0x04,0x07,0x00,0x52,
+       0x04,0x07,0x00,0x11,0x04,0x07,0x00,0x00,0x00,0x94,0x10,0x53,0x04,0x07,0x00,0x92,
+       0x08,0x11,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0xcf,0x86,0xd5,0x10,0x54,
+       0x04,0x12,0x00,0x93,0x08,0x12,0x04,0x12,0x00,0x00,0x00,0x12,0x00,0x54,0x04,0x12,
+       0x00,0x53,0x04,0x12,0x00,0x12,0x04,0x12,0x00,0x00,0x00,0xd1,0x34,0xd0,0x12,0xcf,
+       0x86,0x55,0x04,0x10,0x00,0x94,0x08,0x13,0x04,0x10,0x00,0x00,0x00,0x10,0x00,0xcf,
+       0x86,0x55,0x04,0x10,0x00,0x94,0x18,0xd3,0x08,0x12,0x04,0x10,0x00,0x00,0x00,0x52,
+       0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0xcf,
+       0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x10,0x00,0xd1,0x40,0xd0,0x1e,0xcf,0x86,0x55,
+       0x04,0x10,0x00,0x54,0x04,0x10,0x00,0x93,0x10,0x52,0x04,0x10,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xd5,0x14,0x54,0x04,0x10,
+       0x00,0x93,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x94,
+       0x08,0x13,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xe4,0xce,0x02,
+       0xe3,0x45,0x01,0xd2,0xd0,0xd1,0x70,0xd0,0x52,0xcf,0x86,0xd5,0x20,0x94,0x1c,0xd3,
+       0x0c,0x52,0x04,0x07,0x00,0x11,0x04,0x07,0x00,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x07,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x54,0x04,0x07,0x00,0xd3,
+       0x10,0x52,0x04,0x07,0x00,0x51,0x04,0x07,0x00,0x10,0x04,0x00,0x00,0x07,0x00,0xd2,
+       0x0c,0x91,0x08,0x10,0x04,0x07,0x00,0x00,0x00,0x00,0x00,0xd1,0x08,0x10,0x04,0x07,
+       0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x07,0x00,0xcf,0x86,0x95,0x18,0x54,0x04,0x0b,
+       0x00,0x93,0x10,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x00,0x00,0x0b,
+       0x00,0x0b,0x00,0x10,0x00,0xd0,0x32,0xcf,0x86,0xd5,0x18,0x54,0x04,0x10,0x00,0x53,
+       0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x00,
+       0x00,0x94,0x14,0x93,0x10,0x52,0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,
+       0x00,0x10,0x00,0x10,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x11,
+       0x00,0xd3,0x14,0xd2,0x0c,0x51,0x04,0x11,0x00,0x10,0x04,0x11,0x00,0x00,0x00,0x11,
+       0x04,0x11,0x00,0x00,0x00,0x92,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x11,
+       0x00,0x11,0x00,0xd1,0x40,0xd0,0x3a,0xcf,0x86,0xd5,0x1c,0x54,0x04,0x09,0x00,0x53,
+       0x04,0x09,0x00,0xd2,0x08,0x11,0x04,0x09,0x00,0x0b,0x00,0x51,0x04,0x00,0x00,0x10,
+       0x04,0x00,0x00,0x09,0x00,0x54,0x04,0x0a,0x00,0x53,0x04,0x0a,0x00,0xd2,0x08,0x11,
+       0x04,0x0a,0x00,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x0a,0x00,0xcf,
+       0x06,0x00,0x00,0xd0,0x1a,0xcf,0x86,0x55,0x04,0x0d,0x00,0x54,0x04,0x0d,0x00,0x53,
+       0x04,0x0d,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x11,0x00,0x0d,0x00,0xcf,0x86,0x95,
+       0x14,0x54,0x04,0x11,0x00,0x93,0x0c,0x92,0x08,0x11,0x04,0x00,0x00,0x11,0x00,0x11,
+       0x00,0x11,0x00,0x11,0x00,0xd2,0xec,0xd1,0xa4,0xd0,0x76,0xcf,0x86,0xd5,0x48,0xd4,
+       0x28,0xd3,0x14,0x52,0x04,0x08,0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x08,0x00,0x10,
+       0x04,0x08,0x00,0x00,0x00,0x52,0x04,0x00,0x00,0xd1,0x08,0x10,0x04,0x08,0x00,0x08,
+       0xdc,0x10,0x04,0x08,0x00,0x08,0xe6,0xd3,0x10,0x52,0x04,0x08,0x00,0x91,0x08,0x10,
+       0x04,0x00,0x00,0x08,0x00,0x08,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x08,
+       0x00,0x08,0x00,0x08,0x00,0x54,0x04,0x08,0x00,0xd3,0x0c,0x52,0x04,0x08,0x00,0x11,
+       0x04,0x14,0x00,0x00,0x00,0xd2,0x10,0xd1,0x08,0x10,0x04,0x08,0xe6,0x08,0x01,0x10,
+       0x04,0x08,0xdc,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x08,0x09,0xcf,
+       0x86,0x95,0x28,0xd4,0x14,0x53,0x04,0x08,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x08,0x00,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0xd0,0x0a,0xcf,0x86,0x15,
+       0x04,0x10,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x10,0x00,0xd4,0x24,0xd3,0x14,0x52,
+       0x04,0x10,0x00,0xd1,0x08,0x10,0x04,0x10,0x00,0x10,0xe6,0x10,0x04,0x10,0xdc,0x00,
+       0x00,0x92,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x93,
+       0x10,0x52,0x04,0x10,0x00,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x00,0x00,0x00,
+       0x00,0xd1,0x54,0xd0,0x26,0xcf,0x86,0x55,0x04,0x0b,0x00,0x54,0x04,0x0b,0x00,0xd3,
+       0x0c,0x52,0x04,0x0b,0x00,0x11,0x04,0x0b,0x00,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x00,0x00,0x0b,0x00,0x0b,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x14,0x54,0x04,0x0b,
+       0x00,0x93,0x0c,0x52,0x04,0x0b,0x00,0x11,0x04,0x0b,0x00,0x00,0x00,0x0b,0x00,0x54,
+       0x04,0x0b,0x00,0x93,0x10,0x92,0x0c,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,0x00,
+       0x00,0x00,0x00,0x0b,0x00,0xd0,0x42,0xcf,0x86,0xd5,0x28,0x54,0x04,0x10,0x00,0xd3,
+       0x0c,0x92,0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xd2,0x0c,0x91,0x08,0x10,
+       0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,
+       0x00,0x94,0x14,0x53,0x04,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x10,
+       0x00,0x10,0x00,0x10,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd3,0x96,0xd2,0x68,0xd1,
+       0x24,0xd0,0x06,0xcf,0x06,0x0b,0x00,0xcf,0x86,0x95,0x18,0x94,0x14,0x53,0x04,0x0b,
+       0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x11,0x00,0x54,0x04,0x11,0x00,0x93,
+       0x10,0x92,0x0c,0x51,0x04,0x11,0x00,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0xcf,0x86,0x55,0x04,0x11,0x00,0x54,0x04,0x11,0x00,0xd3,0x10,0x92,0x0c,0x51,
+       0x04,0x11,0x00,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x92,0x08,0x11,0x04,0x00,
+       0x00,0x11,0x00,0x11,0x00,0xd1,0x28,0xd0,0x22,0xcf,0x86,0x55,0x04,0x14,0x00,0xd4,
+       0x0c,0x93,0x08,0x12,0x04,0x14,0x00,0x14,0xe6,0x00,0x00,0x53,0x04,0x14,0x00,0x92,
+       0x08,0x11,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,
+       0x00,0xd2,0x2a,0xd1,0x24,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,
+       0x00,0x54,0x04,0x0b,0x00,0x53,0x04,0x0b,0x00,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,
+       0x00,0x10,0x04,0x0b,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd1,0x58,0xd0,0x12,0xcf,
+       0x86,0x55,0x04,0x14,0x00,0x94,0x08,0x13,0x04,0x14,0x00,0x00,0x00,0x14,0x00,0xcf,
+       0x86,0x95,0x40,0xd4,0x24,0xd3,0x0c,0x52,0x04,0x14,0x00,0x11,0x04,0x14,0x00,0x14,
+       0xdc,0xd2,0x0c,0x51,0x04,0x14,0xe6,0x10,0x04,0x14,0xe6,0x14,0xdc,0x91,0x08,0x10,
+       0x04,0x14,0xe6,0x14,0xdc,0x14,0xdc,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,
+       0xdc,0x14,0x00,0x14,0x00,0x14,0x00,0x92,0x08,0x11,0x04,0x14,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x86,0xe5,0x03,0x06,0xe4,0xf8,0x03,0xe3,
+       0x02,0x02,0xd2,0xfb,0xd1,0x4c,0xd0,0x06,0xcf,0x06,0x0c,0x00,0xcf,0x86,0xd5,0x2c,
+       0xd4,0x1c,0xd3,0x10,0x52,0x04,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x09,
+       0x0c,0x00,0x52,0x04,0x0c,0x00,0x11,0x04,0x0c,0x00,0x00,0x00,0x93,0x0c,0x92,0x08,
+       0x11,0x04,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x54,0x04,0x0c,0x00,0x53,0x04,
+       0x00,0x00,0x52,0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x09,
+       0xd0,0x69,0xcf,0x86,0xd5,0x32,0x54,0x04,0x0b,0x00,0x53,0x04,0x0b,0x00,0xd2,0x15,
+       0x51,0x04,0x0b,0x00,0x10,0x0d,0x0b,0xff,0xf0,0x91,0x82,0x99,0xf0,0x91,0x82,0xba,
+       0x00,0x0b,0x00,0x91,0x11,0x10,0x0d,0x0b,0xff,0xf0,0x91,0x82,0x9b,0xf0,0x91,0x82,
+       0xba,0x00,0x0b,0x00,0x0b,0x00,0xd4,0x1d,0x53,0x04,0x0b,0x00,0x92,0x15,0x51,0x04,
+       0x0b,0x00,0x10,0x04,0x0b,0x00,0x0b,0xff,0xf0,0x91,0x82,0xa5,0xf0,0x91,0x82,0xba,
+       0x00,0x0b,0x00,0x53,0x04,0x0b,0x00,0x92,0x10,0xd1,0x08,0x10,0x04,0x0b,0x00,0x0b,
+       0x09,0x10,0x04,0x0b,0x07,0x0b,0x00,0x0b,0x00,0xcf,0x86,0xd5,0x20,0x94,0x1c,0xd3,
+       0x0c,0x92,0x08,0x11,0x04,0x0b,0x00,0x00,0x00,0x00,0x00,0x52,0x04,0x00,0x00,0x91,
+       0x08,0x10,0x04,0x00,0x00,0x14,0x00,0x00,0x00,0x0d,0x00,0xd4,0x14,0x53,0x04,0x0d,
+       0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,
+       0x04,0x0d,0x00,0x92,0x08,0x11,0x04,0x0d,0x00,0x00,0x00,0x00,0x00,0xd1,0x96,0xd0,
+       0x5c,0xcf,0x86,0xd5,0x18,0x94,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x0d,0xe6,0x10,
+       0x04,0x0d,0xe6,0x0d,0x00,0x0d,0x00,0x0d,0x00,0x0d,0x00,0xd4,0x26,0x53,0x04,0x0d,
+       0x00,0x52,0x04,0x0d,0x00,0x51,0x04,0x0d,0x00,0x10,0x0d,0x0d,0xff,0xf0,0x91,0x84,
+       0xb1,0xf0,0x91,0x84,0xa7,0x00,0x0d,0xff,0xf0,0x91,0x84,0xb2,0xf0,0x91,0x84,0xa7,
+       0x00,0x93,0x18,0xd2,0x0c,0x51,0x04,0x0d,0x00,0x10,0x04,0x0d,0x00,0x0d,0x09,0x91,
+       0x08,0x10,0x04,0x0d,0x09,0x00,0x00,0x0d,0x00,0x0d,0x00,0xcf,0x86,0xd5,0x18,0x94,
+       0x14,0x93,0x10,0x52,0x04,0x0d,0x00,0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,0x00,
+       0x00,0x00,0x00,0x10,0x00,0x54,0x04,0x10,0x00,0x93,0x18,0xd2,0x0c,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x10,0x00,0x10,0x07,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x00,
+       0x00,0x00,0x00,0xd0,0x06,0xcf,0x06,0x0d,0x00,0xcf,0x86,0xd5,0x40,0xd4,0x2c,0xd3,
+       0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0d,0x09,0x0d,0x00,0x0d,0x00,0x0d,0x00,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x0d,0x00,0x11,0x00,0x10,0x04,0x11,0x07,0x11,0x00,0x91,
+       0x08,0x10,0x04,0x11,0x00,0x10,0x00,0x00,0x00,0x53,0x04,0x0d,0x00,0x92,0x0c,0x51,
+       0x04,0x0d,0x00,0x10,0x04,0x10,0x00,0x11,0x00,0x11,0x00,0xd4,0x14,0x93,0x10,0x92,
+       0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x93,
+       0x10,0x52,0x04,0x10,0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0xd2,0xc8,0xd1,0x48,0xd0,0x42,0xcf,0x86,0xd5,0x18,0x54,0x04,0x10,0x00,0x93,
+       0x10,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x10,
+       0x00,0x54,0x04,0x10,0x00,0xd3,0x14,0x52,0x04,0x10,0x00,0xd1,0x08,0x10,0x04,0x10,
+       0x00,0x10,0x09,0x10,0x04,0x10,0x07,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x12,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd0,0x52,0xcf,0x86,0xd5,
+       0x3c,0xd4,0x28,0xd3,0x10,0x52,0x04,0x11,0x00,0x51,0x04,0x11,0x00,0x10,0x04,0x11,
+       0x00,0x00,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x11,0x00,0x00,0x00,0x11,0x00,0x51,
+       0x04,0x11,0x00,0x10,0x04,0x00,0x00,0x11,0x00,0x53,0x04,0x11,0x00,0x52,0x04,0x11,
+       0x00,0x51,0x04,0x11,0x00,0x10,0x04,0x00,0x00,0x11,0x00,0x94,0x10,0x53,0x04,0x11,
+       0x00,0x92,0x08,0x11,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xcf,0x86,0x55,
+       0x04,0x10,0x00,0xd4,0x18,0x53,0x04,0x10,0x00,0x92,0x10,0xd1,0x08,0x10,0x04,0x10,
+       0x00,0x10,0x07,0x10,0x04,0x10,0x09,0x00,0x00,0x00,0x00,0x53,0x04,0x10,0x00,0x92,
+       0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xe1,0x27,0x01,0xd0,0x8a,0xcf,0x86,
+       0xd5,0x44,0xd4,0x2c,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,0x11,0x00,0x10,0x00,
+       0x10,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x52,0x04,0x10,0x00,
+       0xd1,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x93,0x14,
+       0x92,0x10,0xd1,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,
+       0x10,0x00,0x10,0x00,0xd4,0x14,0x53,0x04,0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x10,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0xd3,0x18,0xd2,0x0c,0x91,0x08,0x10,0x04,
+       0x10,0x00,0x00,0x00,0x10,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,
+       0xd2,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x00,0x00,0x14,0x07,0x91,0x08,0x10,0x04,
+       0x10,0x07,0x10,0x00,0x10,0x00,0xcf,0x86,0xd5,0x6a,0xd4,0x42,0xd3,0x14,0x52,0x04,
+       0x10,0x00,0xd1,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,
+       0xd2,0x19,0xd1,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0xff,
+       0xf0,0x91,0x8d,0x87,0xf0,0x91,0x8c,0xbe,0x00,0x91,0x11,0x10,0x0d,0x10,0xff,0xf0,
+       0x91,0x8d,0x87,0xf0,0x91,0x8d,0x97,0x00,0x10,0x09,0x00,0x00,0xd3,0x18,0xd2,0x0c,
+       0x91,0x08,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,
+       0x00,0x00,0x10,0x00,0x52,0x04,0x00,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x10,0x00,
+       0x10,0x00,0xd4,0x1c,0xd3,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x00,0x00,0x10,0xe6,
+       0x52,0x04,0x10,0xe6,0x91,0x08,0x10,0x04,0x10,0xe6,0x00,0x00,0x00,0x00,0x93,0x10,
+       0x52,0x04,0x10,0xe6,0x91,0x08,0x10,0x04,0x10,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,
+       0xcf,0x06,0x00,0x00,0xe3,0x30,0x01,0xd2,0xb7,0xd1,0x48,0xd0,0x06,0xcf,0x06,0x12,
+       0x00,0xcf,0x86,0x95,0x3c,0xd4,0x1c,0x93,0x18,0xd2,0x0c,0x51,0x04,0x12,0x00,0x10,
+       0x04,0x12,0x09,0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x07,0x12,0x00,0x12,
+       0x00,0x53,0x04,0x12,0x00,0xd2,0x0c,0x51,0x04,0x12,0x00,0x10,0x04,0x00,0x00,0x12,
+       0x00,0xd1,0x08,0x10,0x04,0x00,0x00,0x12,0x00,0x10,0x04,0x14,0xe6,0x00,0x00,0x00,
+       0x00,0xd0,0x45,0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,0x10,0x00,0x53,0x04,0x10,
+       0x00,0xd2,0x15,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x10,0xff,0xf0,0x91,0x92,
+       0xb9,0xf0,0x91,0x92,0xba,0x00,0xd1,0x11,0x10,0x0d,0x10,0xff,0xf0,0x91,0x92,0xb9,
+       0xf0,0x91,0x92,0xb0,0x00,0x10,0x00,0x10,0x0d,0x10,0xff,0xf0,0x91,0x92,0xb9,0xf0,
+       0x91,0x92,0xbd,0x00,0x10,0x00,0xcf,0x86,0x95,0x24,0xd4,0x14,0x93,0x10,0x92,0x0c,
+       0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x09,0x10,0x07,0x10,0x00,0x00,0x00,0x53,0x04,
+       0x10,0x00,0x92,0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x06,
+       0xcf,0x06,0x00,0x00,0xd0,0x40,0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,0x10,0x00,
+       0xd3,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0xd2,0x1e,0x51,0x04,
+       0x10,0x00,0x10,0x0d,0x10,0xff,0xf0,0x91,0x96,0xb8,0xf0,0x91,0x96,0xaf,0x00,0x10,
+       0xff,0xf0,0x91,0x96,0xb9,0xf0,0x91,0x96,0xaf,0x00,0x51,0x04,0x10,0x00,0x10,0x04,
+       0x10,0x00,0x10,0x09,0xcf,0x86,0x95,0x2c,0xd4,0x1c,0xd3,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x10,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0x92,0x08,0x11,0x04,0x10,0x00,
+       0x11,0x00,0x11,0x00,0x53,0x04,0x11,0x00,0x52,0x04,0x11,0x00,0x11,0x04,0x11,0x00,
+       0x00,0x00,0x00,0x00,0xd2,0x94,0xd1,0x5c,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x10,0x00,
+       0x54,0x04,0x10,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,0x10,0x00,
+       0x10,0x04,0x10,0x00,0x10,0x09,0xcf,0x86,0xd5,0x24,0xd4,0x14,0x93,0x10,0x52,0x04,
+       0x10,0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x04,
+       0x10,0x00,0x92,0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x94,0x14,0x53,0x04,
+       0x12,0x00,0x52,0x04,0x12,0x00,0x91,0x08,0x10,0x04,0x12,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x0d,0x00,0x54,0x04,0x0d,0x00,0x93,0x10,
+       0x52,0x04,0x0d,0x00,0x51,0x04,0x0d,0x00,0x10,0x04,0x0d,0x09,0x0d,0x07,0x00,0x00,
+       0xcf,0x86,0x95,0x14,0x94,0x10,0x53,0x04,0x0d,0x00,0x92,0x08,0x11,0x04,0x0d,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,0x40,0xd0,0x3a,0xcf,0x86,0xd5,0x20,
+       0x54,0x04,0x11,0x00,0x53,0x04,0x11,0x00,0xd2,0x0c,0x51,0x04,0x11,0x00,0x10,0x04,
+       0x14,0x00,0x00,0x00,0x91,0x08,0x10,0x04,0x00,0x00,0x11,0x00,0x11,0x00,0x94,0x14,
+       0x53,0x04,0x11,0x00,0x92,0x0c,0x51,0x04,0x11,0x00,0x10,0x04,0x11,0x00,0x11,0x09,
+       0x00,0x00,0x11,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xe4,0x09,0x01,0xd3,
+       0x62,0xd2,0x5c,0xd1,0x28,0xd0,0x22,0xcf,0x86,0x55,0x04,0x14,0x00,0x54,0x04,0x14,
+       0x00,0x53,0x04,0x14,0x00,0x92,0x10,0xd1,0x08,0x10,0x04,0x14,0x00,0x14,0x09,0x10,
+       0x04,0x14,0x07,0x14,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd0,0x0a,0xcf,0x86,0x15,
+       0x04,0x00,0x00,0x10,0x00,0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,0x10,0x00,0xd3,
+       0x10,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x52,
+       0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0xcf,0x06,0x00,
+       0x00,0xd2,0xa0,0xd1,0x3c,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x13,0x00,0x54,0x04,0x13,
+       0x00,0x93,0x10,0x52,0x04,0x13,0x00,0x91,0x08,0x10,0x04,0x13,0x09,0x13,0x00,0x13,
+       0x00,0x13,0x00,0xcf,0x86,0x95,0x18,0x94,0x14,0x93,0x10,0x52,0x04,0x13,0x00,0x51,
+       0x04,0x13,0x00,0x10,0x04,0x13,0x00,0x13,0x09,0x00,0x00,0x13,0x00,0x13,0x00,0xd0,
+       0x46,0xcf,0x86,0xd5,0x2c,0xd4,0x10,0x93,0x0c,0x52,0x04,0x13,0x00,0x11,0x04,0x00,
+       0x00,0x13,0x00,0x13,0x00,0x53,0x04,0x13,0x00,0xd2,0x0c,0x91,0x08,0x10,0x04,0x13,
+       0x00,0x13,0x09,0x13,0x00,0x91,0x08,0x10,0x04,0x13,0x00,0x14,0x00,0x13,0x00,0x94,
+       0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x13,0x00,0x10,0x04,0x13,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,0x10,0x00,0x53,
+       0x04,0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xe3,0xa9,0x01,0xd2,0xb0,0xd1,0x6c,0xd0,0x3e,0xcf,0x86,
+       0xd5,0x18,0x94,0x14,0x53,0x04,0x12,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x12,0x00,
+       0x00,0x00,0x12,0x00,0x12,0x00,0x12,0x00,0x54,0x04,0x12,0x00,0xd3,0x10,0x52,0x04,
+       0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x00,0x00,0x00,0x52,0x04,0x12,0x00,
+       0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x00,0x12,0x09,0xcf,0x86,0xd5,0x14,0x94,0x10,
+       0x93,0x0c,0x52,0x04,0x12,0x00,0x11,0x04,0x12,0x00,0x00,0x00,0x00,0x00,0x12,0x00,
+       0x94,0x14,0x53,0x04,0x12,0x00,0x52,0x04,0x12,0x00,0x91,0x08,0x10,0x04,0x12,0x00,
+       0x00,0x00,0x00,0x00,0x12,0x00,0xd0,0x3e,0xcf,0x86,0xd5,0x14,0x54,0x04,0x12,0x00,
+       0x93,0x0c,0x92,0x08,0x11,0x04,0x00,0x00,0x12,0x00,0x12,0x00,0x12,0x00,0xd4,0x14,
+       0x53,0x04,0x12,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x12,0x00,0x12,0x00,
+       0x12,0x00,0x93,0x10,0x52,0x04,0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x00,
+       0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd1,0xa0,0xd0,0x52,0xcf,0x86,0xd5,0x24,
+       0x94,0x20,0xd3,0x10,0x52,0x04,0x13,0x00,0x51,0x04,0x13,0x00,0x10,0x04,0x13,0x00,
+       0x00,0x00,0x92,0x0c,0x51,0x04,0x13,0x00,0x10,0x04,0x00,0x00,0x13,0x00,0x13,0x00,
+       0x13,0x00,0x54,0x04,0x13,0x00,0xd3,0x10,0x52,0x04,0x13,0x00,0x51,0x04,0x13,0x00,
+       0x10,0x04,0x13,0x00,0x00,0x00,0xd2,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x13,0x00,
+       0x00,0x00,0x51,0x04,0x13,0x00,0x10,0x04,0x00,0x00,0x13,0x00,0xcf,0x86,0xd5,0x28,
+       0xd4,0x18,0x93,0x14,0xd2,0x0c,0x51,0x04,0x13,0x00,0x10,0x04,0x13,0x07,0x13,0x00,
+       0x11,0x04,0x13,0x09,0x13,0x00,0x00,0x00,0x53,0x04,0x13,0x00,0x92,0x08,0x11,0x04,
+       0x13,0x00,0x00,0x00,0x00,0x00,0x94,0x20,0xd3,0x10,0x52,0x04,0x14,0x00,0x51,0x04,
+       0x14,0x00,0x10,0x04,0x00,0x00,0x14,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,0x00,
+       0x00,0x00,0x14,0x00,0x14,0x00,0x14,0x00,0xd0,0x52,0xcf,0x86,0xd5,0x3c,0xd4,0x14,
+       0x53,0x04,0x14,0x00,0x52,0x04,0x14,0x00,0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,
+       0x00,0x00,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x14,0x00,0x10,0x04,0x00,0x00,0x14,0x00,
+       0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,0x14,0x09,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x10,0x53,0x04,0x14,0x00,0x92,0x08,
+       0x11,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd2,0x2a,
+       0xd1,0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,
+       0x00,0x00,0x54,0x04,0x14,0x00,0x53,0x04,0x14,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd0,0xca,0xcf,0x86,
+       0xd5,0xc2,0xd4,0x54,0xd3,0x06,0xcf,0x06,0x09,0x00,0xd2,0x06,0xcf,0x06,0x09,0x00,
+       0xd1,0x24,0xd0,0x06,0xcf,0x06,0x09,0x00,0xcf,0x86,0x55,0x04,0x09,0x00,0x94,0x14,
+       0x53,0x04,0x09,0x00,0x52,0x04,0x09,0x00,0x51,0x04,0x09,0x00,0x10,0x04,0x09,0x00,
+       0x10,0x00,0x10,0x00,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x54,0x04,0x10,0x00,0x53,0x04,
+       0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x10,0x00,0x11,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0xcf,0x06,0x00,0x00,0xd3,0x68,0xd2,0x46,0xd1,0x40,0xd0,0x06,0xcf,0x06,
+       0x09,0x00,0xcf,0x86,0x55,0x04,0x09,0x00,0xd4,0x20,0xd3,0x10,0x92,0x0c,0x51,0x04,
+       0x09,0x00,0x10,0x04,0x09,0x00,0x10,0x00,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,
+       0x10,0x00,0x10,0x04,0x10,0x00,0x00,0x00,0x93,0x10,0x52,0x04,0x09,0x00,0x91,0x08,
+       0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x11,0x00,0xd1,0x1c,
+       0xd0,0x06,0xcf,0x06,0x11,0x00,0xcf,0x86,0x95,0x10,0x94,0x0c,0x93,0x08,0x12,0x04,
+       0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,
+       0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x86,0xd5,0x3c,0xd4,0x06,0xcf,0x06,0x0b,0x00,
+       0xd3,0x30,0xd2,0x2a,0xd1,0x24,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x0b,0x00,0x94,0x14,
+       0x53,0x04,0x0b,0x00,0x52,0x04,0x0b,0x00,0x51,0x04,0x0b,0x00,0x10,0x04,0x0b,0x00,
+       0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,
+       0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xd1,0x4c,0xd0,0x44,0xcf,0x86,0xd5,0x3c,
+       0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x11,0x00,0xd2,0x2a,0xd1,0x24,
+       0xd0,0x06,0xcf,0x06,0x11,0x00,0xcf,0x86,0x95,0x18,0x94,0x14,0x93,0x10,0x52,0x04,
+       0x11,0x00,0x51,0x04,0x11,0x00,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xcf,0x06,0x00,0x00,0xe0,0xbe,0x01,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xe4,
+       0x0b,0x01,0xd3,0x06,0xcf,0x06,0x0c,0x00,0xd2,0x84,0xd1,0x50,0xd0,0x1e,0xcf,0x86,
+       0x55,0x04,0x0c,0x00,0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xd5,0x18,0x54,0x04,
+       0x10,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x51,0x04,0x10,0x00,0x10,0x04,
+       0x10,0x00,0x00,0x00,0x94,0x14,0x53,0x04,0x10,0x00,0xd2,0x08,0x11,0x04,0x10,0x00,
+       0x00,0x00,0x11,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,
+       0xcf,0x86,0xd5,0x08,0x14,0x04,0x00,0x00,0x10,0x00,0xd4,0x10,0x53,0x04,0x10,0x00,
+       0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0x93,0x10,0x52,0x04,0x10,0x01,
+       0x91,0x08,0x10,0x04,0x10,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0xd1,0x6c,0xd0,0x1e,
+       0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,0x10,0x00,0x93,0x10,0x52,0x04,0x10,0xe6,
+       0x51,0x04,0x10,0xe6,0x10,0x04,0x10,0xe6,0x10,0x00,0x10,0x00,0xcf,0x86,0xd5,0x24,
+       0xd4,0x10,0x93,0x0c,0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,
+       0x53,0x04,0x10,0x00,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x00,0x00,0x10,0x00,
+       0x10,0x00,0xd4,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x00,0x00,
+       0x10,0x00,0x10,0x00,0x10,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x00,0x00,0x91,0x08,
+       0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0xd0,0x0e,0xcf,0x86,0x95,0x08,0x14,0x04,
+       0x10,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,
+       0xd2,0x30,0xd1,0x0c,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x06,0x14,0x00,0xd0,0x1e,
+       0xcf,0x86,0x95,0x18,0x54,0x04,0x14,0x00,0x53,0x04,0x14,0x00,0x92,0x0c,0x51,0x04,
+       0x14,0x00,0x10,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,
+       0xd1,0x38,0xd0,0x06,0xcf,0x06,0x0d,0x00,0xcf,0x86,0xd5,0x18,0x94,0x14,0x93,0x10,
+       0x52,0x04,0x0d,0x00,0x91,0x08,0x10,0x04,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x0d,0x00,0x54,0x04,0x0d,0x00,0x53,0x04,0x0d,0x00,0x52,0x04,0x0d,0x00,0x51,0x04,
+       0x0d,0x00,0x10,0x04,0x0d,0x00,0x00,0x00,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x94,0x14,
+       0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,
+       0x0d,0x00,0x0d,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x94,0x14,0x93,0x10,
+       0x92,0x0c,0x91,0x08,0x10,0x04,0x12,0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0xcf,0x86,0xcf,0x06,0x12,0x00,0xe2,0xaa,0x01,0xd1,0x8e,0xd0,0x86,0xcf,
+       0x86,0xd5,0x48,0xd4,0x06,0xcf,0x06,0x12,0x00,0xd3,0x06,0xcf,0x06,0x12,0x00,0xd2,
+       0x06,0xcf,0x06,0x12,0x00,0xd1,0x06,0xcf,0x06,0x12,0x00,0xd0,0x06,0xcf,0x06,0x12,
+       0x00,0xcf,0x86,0x55,0x04,0x12,0x00,0xd4,0x14,0x53,0x04,0x12,0x00,0x52,0x04,0x12,
+       0x00,0x91,0x08,0x10,0x04,0x12,0x00,0x14,0x00,0x14,0x00,0x93,0x0c,0x92,0x08,0x11,
+       0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x36,0xd3,0x06,0xcf,0x06,0x12,
+       0x00,0xd2,0x2a,0xd1,0x06,0xcf,0x06,0x12,0x00,0xd0,0x06,0xcf,0x06,0x12,0x00,0xcf,
+       0x86,0x55,0x04,0x12,0x00,0x54,0x04,0x12,0x00,0x93,0x10,0x92,0x0c,0x51,0x04,0x12,
+       0x00,0x10,0x04,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,
+       0x06,0x00,0x00,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,
+       0x00,0xcf,0x86,0xd5,0x86,0xd4,0x80,0xd3,0x58,0xd2,0x26,0xd1,0x20,0xd0,0x1a,0xcf,
+       0x86,0x95,0x14,0x94,0x10,0x93,0x0c,0x92,0x08,0x11,0x04,0x0c,0x00,0x13,0x00,0x13,
+       0x00,0x13,0x00,0x13,0x00,0x13,0x00,0xcf,0x06,0x13,0x00,0xcf,0x06,0x13,0x00,0xd1,
+       0x2c,0xd0,0x1e,0xcf,0x86,0x95,0x18,0x54,0x04,0x13,0x00,0x53,0x04,0x13,0x00,0x52,
+       0x04,0x13,0x00,0x51,0x04,0x13,0x00,0x10,0x04,0x13,0x00,0x00,0x00,0x00,0x00,0xcf,
+       0x86,0x55,0x04,0x00,0x00,0x14,0x04,0x00,0x00,0x13,0x00,0xcf,0x06,0x13,0x00,0xd2,
+       0x22,0xd1,0x06,0xcf,0x06,0x13,0x00,0xd0,0x06,0xcf,0x06,0x13,0x00,0xcf,0x86,0x55,
+       0x04,0x13,0x00,0x54,0x04,0x13,0x00,0x53,0x04,0x13,0x00,0x12,0x04,0x13,0x00,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,
+       0x7f,0xd2,0x79,0xd1,0x34,0xd0,0x06,0xcf,0x06,0x10,0x00,0xcf,0x86,0x55,0x04,0x10,
+       0x00,0xd4,0x14,0x53,0x04,0x10,0x00,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,
+       0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x91,0x08,0x10,
+       0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f,0xcf,0x86,0xd5,0x2c,0xd4,0x14,0x53,
+       0x04,0x10,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x53,0x04,0x10,0x00,0xd2,0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x51,0x04,0x10,
+       0x00,0x10,0x04,0x10,0x01,0x10,0x00,0x94,0x0d,0x93,0x09,0x12,0x05,0x10,0xff,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,
+       0x00,0x00,0xe1,0xfe,0x1b,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,0xe5,
+       0x9b,0x1b,0xe4,0x83,0x02,0xe3,0xf8,0x01,0xd2,0x26,0xd1,0x06,0xcf,0x06,0x05,0x00,
+       0xd0,0x06,0xcf,0x06,0x05,0x00,0xcf,0x86,0x55,0x04,0x05,0x00,0x54,0x04,0x05,0x00,
+       0x93,0x0c,0x52,0x04,0x05,0x00,0x11,0x04,0x05,0x00,0x00,0x00,0x00,0x00,0xd1,0xef,
+       0xd0,0x2a,0xcf,0x86,0x55,0x04,0x05,0x00,0x94,0x20,0xd3,0x10,0x52,0x04,0x05,0x00,
+       0x51,0x04,0x05,0x00,0x10,0x04,0x05,0x00,0x00,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,
+       0x00,0x00,0x0a,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0xcf,0x86,0xd5,0x2a,0x54,0x04,
+       0x05,0x00,0x53,0x04,0x05,0x00,0x52,0x04,0x05,0x00,0x51,0x04,0x05,0x00,0x10,0x0d,
+       0x05,0xff,0xf0,0x9d,0x85,0x97,0xf0,0x9d,0x85,0xa5,0x00,0x05,0xff,0xf0,0x9d,0x85,
+       0x98,0xf0,0x9d,0x85,0xa5,0x00,0xd4,0x75,0xd3,0x61,0xd2,0x44,0xd1,0x22,0x10,0x11,
+       0x05,0xff,0xf0,0x9d,0x85,0x98,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xae,0x00,0x05,
+       0xff,0xf0,0x9d,0x85,0x98,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xaf,0x00,0x10,0x11,
+       0x05,0xff,0xf0,0x9d,0x85,0x98,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xb0,0x00,0x05,
+       0xff,0xf0,0x9d,0x85,0x98,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xb1,0x00,0xd1,0x15,
+       0x10,0x11,0x05,0xff,0xf0,0x9d,0x85,0x98,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xb2,
+       0x00,0x05,0xd8,0x10,0x04,0x05,0xd8,0x05,0x01,0xd2,0x08,0x11,0x04,0x05,0x01,0x05,
+       0x00,0x91,0x08,0x10,0x04,0x05,0x00,0x05,0xe2,0x05,0xd8,0xd3,0x12,0x92,0x0d,0x51,
+       0x04,0x05,0xd8,0x10,0x04,0x05,0xd8,0x05,0xff,0x00,0x05,0xff,0x00,0x92,0x0e,0x51,
+       0x05,0x05,0xff,0x00,0x10,0x05,0x05,0xff,0x00,0x05,0xdc,0x05,0xdc,0xd0,0x97,0xcf,
+       0x86,0xd5,0x28,0x94,0x24,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x05,0xdc,0x10,0x04,0x05,
+       0xdc,0x05,0x00,0x91,0x08,0x10,0x04,0x05,0x00,0x05,0xe6,0x05,0xe6,0x92,0x08,0x11,
+       0x04,0x05,0xe6,0x05,0xdc,0x05,0x00,0x05,0x00,0xd4,0x14,0x53,0x04,0x05,0x00,0xd2,
+       0x08,0x11,0x04,0x05,0x00,0x05,0xe6,0x11,0x04,0x05,0xe6,0x05,0x00,0x53,0x04,0x05,
+       0x00,0xd2,0x15,0x51,0x04,0x05,0x00,0x10,0x04,0x05,0x00,0x05,0xff,0xf0,0x9d,0x86,
+       0xb9,0xf0,0x9d,0x85,0xa5,0x00,0xd1,0x1e,0x10,0x0d,0x05,0xff,0xf0,0x9d,0x86,0xba,
+       0xf0,0x9d,0x85,0xa5,0x00,0x05,0xff,0xf0,0x9d,0x86,0xb9,0xf0,0x9d,0x85,0xa5,0xf0,
+       0x9d,0x85,0xae,0x00,0x10,0x11,0x05,0xff,0xf0,0x9d,0x86,0xba,0xf0,0x9d,0x85,0xa5,
+       0xf0,0x9d,0x85,0xae,0x00,0x05,0xff,0xf0,0x9d,0x86,0xb9,0xf0,0x9d,0x85,0xa5,0xf0,
+       0x9d,0x85,0xaf,0x00,0xcf,0x86,0xd5,0x31,0xd4,0x21,0x93,0x1d,0x92,0x19,0x91,0x15,
+       0x10,0x11,0x05,0xff,0xf0,0x9d,0x86,0xba,0xf0,0x9d,0x85,0xa5,0xf0,0x9d,0x85,0xaf,
+       0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x05,0x00,0x53,0x04,0x05,0x00,0x52,0x04,0x05,
+       0x00,0x11,0x04,0x05,0x00,0x11,0x00,0x94,0x14,0x53,0x04,0x11,0x00,0x92,0x0c,0x91,
+       0x08,0x10,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd2,0x44,0xd1,
+       0x28,0xd0,0x06,0xcf,0x06,0x08,0x00,0xcf,0x86,0x95,0x1c,0x94,0x18,0x93,0x14,0xd2,
+       0x08,0x11,0x04,0x08,0x00,0x08,0xe6,0x91,0x08,0x10,0x04,0x08,0xe6,0x08,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,
+       0x04,0x00,0x00,0x54,0x04,0x14,0x00,0x93,0x08,0x12,0x04,0x14,0x00,0x00,0x00,0x00,
+       0x00,0xd1,0x40,0xd0,0x06,0xcf,0x06,0x07,0x00,0xcf,0x86,0xd5,0x18,0x54,0x04,0x07,
+       0x00,0x93,0x10,0x52,0x04,0x07,0x00,0x51,0x04,0x07,0x00,0x10,0x04,0x07,0x00,0x00,
+       0x00,0x00,0x00,0x54,0x04,0x09,0x00,0xd3,0x0c,0x92,0x08,0x11,0x04,0x09,0x00,0x14,
+       0x00,0x14,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xe3,0xe0,0x0b,0xe2,0xf0,0x05,0xe1,0x04,0x03,0xe0,0x83,
+       0x01,0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,
+       0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x49,
+       0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,
+       0x00,0x05,0xff,0x50,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,
+       0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,
+       0x00,0x05,0xff,0x58,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,0x00,0x05,
+       0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,
+       0xff,0x66,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,
+       0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,
+       0x00,0x05,0xff,0x6e,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,
+       0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,
+       0xff,0x76,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,0x05,
+       0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,
+       0xff,0x44,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,0x05,0xff,0x46,
+       0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,
+       0x00,0xcf,0x86,0xd5,0xbe,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,
+       0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,
+       0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,
+       0x00,0x05,0xff,0x62,0x00,0xd3,0x2e,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,
+       0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0xd1,
+       0x0a,0x10,0x06,0x05,0xff,0x67,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,
+       0xff,0x6a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,
+       0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,
+       0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,
+       0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,
+       0xff,0x7a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,
+       0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,
+       0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,
+       0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,
+       0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,
+       0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,
+       0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xe0,
+       0x6b,0x01,0xcf,0x86,0xd5,0xbe,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,
+       0x62,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,
+       0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,
+       0x6d,0x00,0x05,0xff,0x6e,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,
+       0x75,0x00,0x05,0xff,0x76,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,
+       0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd1,0x0a,
+       0x10,0x06,0x05,0xff,0x41,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,
+       0x44,0x00,0xd4,0x4e,0xd3,0x22,0xd2,0x0e,0x51,0x04,0x00,0x00,0x10,0x06,0x05,0xff,
+       0x47,0x00,0x00,0x00,0xd1,0x0a,0x10,0x04,0x00,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,
+       0x05,0xff,0x4b,0x00,0x00,0x00,0xd2,0x16,0xd1,0x0a,0x10,0x04,0x00,0x00,0x05,0xff,
+       0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xd1,0x0a,0x10,0x06,
+       0x05,0xff,0x51,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,
+       0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,
+       0xd2,0x16,0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x04,
+       0x00,0x00,0x05,0xff,0x66,0x00,0xd1,0x0a,0x10,0x04,0x00,0x00,0x05,0xff,0x68,0x00,
+       0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xcf,0x86,0xd5,0xbe,0xd4,0x5e,
+       0xd3,0x2e,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x07,0xff,0x6c,0x00,
+       0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd1,0x0a,0x10,0x04,0x00,0x00,
+       0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,
+       0x75,0x00,0x05,0xff,0x76,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,
+       0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd3,0x30,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,
+       0x43,0x00,0x05,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,0x05,0xff,
+       0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,
+       0x05,0xff,0x4c,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,
+       0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,
+       0x53,0x00,0x05,0xff,0x54,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,
+       0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,
+       0x05,0xff,0x62,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,
+       0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,
+       0x05,0xff,0x6a,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,
+       0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,
+       0x72,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,
+       0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0xe1,0xea,0x02,0xe0,0x75,0x01,0xcf,0x86,
+       0xd5,0xb6,0xd4,0x5a,0xd3,0x2e,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,
+       0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x04,0x00,0x00,0x05,0xff,
+       0x44,0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,0x05,0xff,0x46,0x00,
+       0x10,0x06,0x05,0xff,0x47,0x00,0x00,0x00,0xd1,0x0a,0x10,0x04,0x00,0x00,0x05,0xff,
+       0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd3,0x2e,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,
+       0x4f,0x00,0x05,0xff,0x50,0x00,0xd1,0x0a,0x10,0x06,0x05,0xff,0x51,0x00,0x00,0x00,
+       0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,
+       0x58,0x00,0xd1,0x0a,0x10,0x06,0x05,0xff,0x59,0x00,0x00,0x00,0x10,0x06,0x05,0xff,
+       0x61,0x00,0x05,0xff,0x62,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,
+       0x66,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,
+       0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,
+       0x71,0x00,0x05,0xff,0x72,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,
+       0x79,0x00,0x05,0xff,0x7a,0x00,0xd2,0x16,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,
+       0x05,0xff,0x42,0x00,0x10,0x04,0x00,0x00,0x05,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0xb2,0xd4,0x54,0xd3,0x2c,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,
+       0xd1,0x0a,0x10,0x06,0x05,0xff,0x4d,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,
+       0x00,0x00,0xd2,0x10,0x51,0x04,0x00,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,
+       0x54,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,
+       0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd3,0x2e,0xd2,0x16,0xd1,0x0a,0x10,0x06,
+       0x05,0xff,0x59,0x00,0x00,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,
+       0x65,0x00,0x05,0xff,0x66,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,0x00,
+       0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,
+       0x05,0xff,0x6e,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,
+       0x75,0x00,0x05,0xff,0x76,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,
+       0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,
+       0x05,0xff,0x44,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,
+       0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,
+       0x05,0xff,0x4c,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,
+       0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,
+       0x54,0x00,0xe0,0x83,0x01,0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,
+       0x00,0x05,0xff,0x58,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,0x00,0x05,0xff,0x5a,
+       0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,
+       0xff,0x66,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0x10,
+       0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,
+       0xff,0x6e,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,
+       0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,
+       0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,
+       0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,
+       0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,
+       0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,
+       0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,
+       0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,
+       0x00,0x05,0xff,0x66,0x00,0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,
+       0x00,0x05,0xff,0x6a,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,
+       0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,
+       0xff,0x72,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,
+       0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,
+       0xff,0x7a,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,0x10,
+       0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,
+       0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,
+       0xff,0x50,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,
+       0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,
+       0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,
+       0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,
+       0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,
+       0x00,0x05,0xff,0x72,0x00,0xe2,0x61,0x06,0xe1,0x06,0x03,0xe0,0x83,0x01,0xcf,0x86,
+       0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,
+       0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,
+       0x05,0xff,0x7a,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,
+       0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,
+       0x48,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,
+       0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x4d,0x00,0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,
+       0x50,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,
+       0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,
+       0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,0x00,0x05,0xff,
+       0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,
+       0x66,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,0x00,0x05,0xff,0x68,0x00,
+       0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,
+       0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,
+       0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,
+       0x05,0xff,0x42,0x00,0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,0x00,0xcf,0x86,
+       0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x45,0x00,
+       0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,0x05,0xff,0x4b,0x00,
+       0x05,0xff,0x4c,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,0x05,0xff,
+       0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,
+       0x54,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,
+       0x56,0x00,0x10,0x06,0x05,0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x59,0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,
+       0x62,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,
+       0x10,0x06,0x05,0xff,0x65,0x00,0x05,0xff,0x66,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x67,0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,
+       0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,
+       0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,0x00,0x05,0xff,0x6e,0x00,0xd1,0x0c,0x10,0x06,
+       0x05,0xff,0x6f,0x00,0x05,0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,
+       0x72,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,
+       0x10,0x06,0x05,0xff,0x75,0x00,0x05,0xff,0x76,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x77,0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,
+       0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x41,0x00,0x05,0xff,0x42,0x00,
+       0x10,0x06,0x05,0xff,0x43,0x00,0x05,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,
+       0x45,0x00,0x05,0xff,0x46,0x00,0x10,0x06,0x05,0xff,0x47,0x00,0x05,0xff,0x48,0x00,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x49,0x00,0x05,0xff,0x4a,0x00,0x10,0x06,
+       0x05,0xff,0x4b,0x00,0x05,0xff,0x4c,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x4d,0x00,
+       0x05,0xff,0x4e,0x00,0x10,0x06,0x05,0xff,0x4f,0x00,0x05,0xff,0x50,0x00,0xe0,0x95,
+       0x01,0xcf,0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,
+       0xff,0x51,0x00,0x05,0xff,0x52,0x00,0x10,0x06,0x05,0xff,0x53,0x00,0x05,0xff,0x54,
+       0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x55,0x00,0x05,0xff,0x56,0x00,0x10,0x06,0x05,
+       0xff,0x57,0x00,0x05,0xff,0x58,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x59,
+       0x00,0x05,0xff,0x5a,0x00,0x10,0x06,0x05,0xff,0x61,0x00,0x05,0xff,0x62,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x63,0x00,0x05,0xff,0x64,0x00,0x10,0x06,0x05,0xff,0x65,
+       0x00,0x05,0xff,0x66,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x67,
+       0x00,0x05,0xff,0x68,0x00,0x10,0x06,0x05,0xff,0x69,0x00,0x05,0xff,0x6a,0x00,0xd1,
+       0x0c,0x10,0x06,0x05,0xff,0x6b,0x00,0x05,0xff,0x6c,0x00,0x10,0x06,0x05,0xff,0x6d,
+       0x00,0x05,0xff,0x6e,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x6f,0x00,0x05,
+       0xff,0x70,0x00,0x10,0x06,0x05,0xff,0x71,0x00,0x05,0xff,0x72,0x00,0xd1,0x0c,0x10,
+       0x06,0x05,0xff,0x73,0x00,0x05,0xff,0x74,0x00,0x10,0x06,0x05,0xff,0x75,0x00,0x05,
+       0xff,0x76,0x00,0xd4,0x62,0xd3,0x2a,0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x77,
+       0x00,0x05,0xff,0x78,0x00,0x10,0x06,0x05,0xff,0x79,0x00,0x05,0xff,0x7a,0x00,0x91,
+       0x0e,0x10,0x07,0x08,0xff,0xc4,0xb1,0x00,0x08,0xff,0xc8,0xb7,0x00,0x00,0x00,0xd2,
+       0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x91,0x00,0x05,0xff,0xce,0x92,0x00,0x10,
+       0x07,0x05,0xff,0xce,0x93,0x00,0x05,0xff,0xce,0x94,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0x95,0x00,0x05,0xff,0xce,0x96,0x00,0x10,0x07,0x05,0xff,0xce,0x97,0x00,
+       0x05,0xff,0xce,0x98,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,
+       0x99,0x00,0x05,0xff,0xce,0x9a,0x00,0x10,0x07,0x05,0xff,0xce,0x9b,0x00,0x05,0xff,
+       0xce,0x9c,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x9d,0x00,0x05,0xff,0xce,0x9e,
+       0x00,0x10,0x07,0x05,0xff,0xce,0x9f,0x00,0x05,0xff,0xce,0xa0,0x00,0xd2,0x1c,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xce,0xa1,0x00,0x05,0xff,0xce,0x98,0x00,0x10,0x07,0x05,
+       0xff,0xce,0xa3,0x00,0x05,0xff,0xce,0xa4,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,
+       0xa5,0x00,0x05,0xff,0xce,0xa6,0x00,0x10,0x07,0x05,0xff,0xce,0xa7,0x00,0x05,0xff,
+       0xce,0xa8,0x00,0xcf,0x86,0xd5,0xe2,0xd4,0x71,0xd3,0x39,0xd2,0x1d,0xd1,0x0f,0x10,
+       0x07,0x05,0xff,0xce,0xa9,0x00,0x05,0xff,0xe2,0x88,0x87,0x00,0x10,0x07,0x05,0xff,
+       0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb3,
+       0x00,0x05,0xff,0xce,0xb4,0x00,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,
+       0xb6,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,
+       0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0xd1,0x0e,
+       0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,0x10,0x07,0x05,0xff,
+       0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xcf,0x81,
+       0x00,0x05,0xff,0xcf,0x82,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x83,0x00,0x05,
+       0xff,0xcf,0x84,0x00,0x10,0x07,0x05,0xff,0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,
+       0xd2,0x1d,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,0x00,
+       0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,0x82,0x00,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xce,
+       0xba,0x00,0x05,0xff,0xcf,0x86,0x00,0xd4,0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,0x07,0x05,0xff,0xce,
+       0x91,0x00,0x05,0xff,0xce,0x92,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x93,0x00,
+       0x05,0xff,0xce,0x94,0x00,0x10,0x07,0x05,0xff,0xce,0x95,0x00,0x05,0xff,0xce,0x96,
+       0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x97,0x00,0x05,0xff,0xce,0x98,
+       0x00,0x10,0x07,0x05,0xff,0xce,0x99,0x00,0x05,0xff,0xce,0x9a,0x00,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0x9b,0x00,0x05,0xff,0xce,0x9c,0x00,0x10,0x07,0x05,0xff,0xce,
+       0x9d,0x00,0x05,0xff,0xce,0x9e,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0x9f,0x00,0x05,0xff,0xce,0xa0,0x00,0x10,0x07,0x05,0xff,0xce,0xa1,0x00,
+       0x05,0xff,0xce,0x98,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa3,0x00,0x05,0xff,
+       0xce,0xa4,0x00,0x10,0x07,0x05,0xff,0xce,0xa5,0x00,0x05,0xff,0xce,0xa6,0x00,0xd2,
+       0x1d,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa7,0x00,0x05,0xff,0xce,0xa8,0x00,0x10,
+       0x07,0x05,0xff,0xce,0xa9,0x00,0x05,0xff,0xe2,0x88,0x87,0x00,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0x10,0x07,0x05,0xff,0xce,0xb3,
+       0x00,0x05,0xff,0xce,0xb4,0x00,0xe1,0x8a,0x03,0xe0,0xc5,0x01,0xcf,0x86,0xd5,0xe1,
+       0xd4,0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,
+       0xff,0xce,0xb6,0x00,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,
+       0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0x10,0x07,
+       0x05,0xff,0xce,0xbb,0x00,0x05,0xff,0xce,0xbc,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0x10,0x07,0x05,0xff,0xce,0xbf,
+       0x00,0x05,0xff,0xcf,0x80,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,
+       0xff,0xcf,0x82,0x00,0x10,0x07,0x05,0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,
+       0xd3,0x39,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x85,0x00,0x05,0xff,0xcf,
+       0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,0x00,0xd1,0x0f,
+       0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,0x82,0x00,0x10,0x07,0x05,
+       0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb8,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0xba,0x00,0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,
+       0x05,0xff,0xcf,0x80,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x91,0x00,0x05,0xff,
+       0xce,0x92,0x00,0x10,0x07,0x05,0xff,0xce,0x93,0x00,0x05,0xff,0xce,0x94,0x00,0xd4,
+       0x70,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x95,0x00,0x05,0xff,
+       0xce,0x96,0x00,0x10,0x07,0x05,0xff,0xce,0x97,0x00,0x05,0xff,0xce,0x98,0x00,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xce,0x99,0x00,0x05,0xff,0xce,0x9a,0x00,0x10,0x07,0x05,
+       0xff,0xce,0x9b,0x00,0x05,0xff,0xce,0x9c,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0x9d,0x00,0x05,0xff,0xce,0x9e,0x00,0x10,0x07,0x05,0xff,0xce,0x9f,0x00,
+       0x05,0xff,0xce,0xa0,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa1,0x00,0x05,0xff,
+       0xce,0x98,0x00,0x10,0x07,0x05,0xff,0xce,0xa3,0x00,0x05,0xff,0xce,0xa4,0x00,0xd3,
+       0x39,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa5,0x00,0x05,0xff,0xce,0xa6,
+       0x00,0x10,0x07,0x05,0xff,0xce,0xa7,0x00,0x05,0xff,0xce,0xa8,0x00,0xd1,0x0f,0x10,
+       0x07,0x05,0xff,0xce,0xa9,0x00,0x05,0xff,0xe2,0x88,0x87,0x00,0x10,0x07,0x05,0xff,
+       0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,
+       0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,
+       0xff,0xce,0xb6,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,
+       0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0xcf,0x86,
+       0xd5,0xe1,0xd4,0x71,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbb,
+       0x00,0x05,0xff,0xce,0xbc,0x00,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,
+       0xbe,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,
+       0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x82,0x00,0xd2,0x1c,0xd1,0x0e,
+       0x10,0x07,0x05,0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0x10,0x07,0x05,0xff,
+       0xcf,0x85,0x00,0x05,0xff,0xcf,0x86,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x87,
+       0x00,0x05,0xff,0xcf,0x88,0x00,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,
+       0x88,0x82,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,
+       0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xba,0x00,0x05,0xff,0xcf,0x86,
+       0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,
+       0x07,0x05,0xff,0xce,0x91,0x00,0x05,0xff,0xce,0x92,0x00,0xd2,0x1c,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0x93,0x00,0x05,0xff,0xce,0x94,0x00,0x10,0x07,0x05,0xff,0xce,
+       0x95,0x00,0x05,0xff,0xce,0x96,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x97,0x00,
+       0x05,0xff,0xce,0x98,0x00,0x10,0x07,0x05,0xff,0xce,0x99,0x00,0x05,0xff,0xce,0x9a,
+       0x00,0xd4,0x71,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x9b,0x00,
+       0x05,0xff,0xce,0x9c,0x00,0x10,0x07,0x05,0xff,0xce,0x9d,0x00,0x05,0xff,0xce,0x9e,
+       0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x9f,0x00,0x05,0xff,0xce,0xa0,0x00,0x10,
+       0x07,0x05,0xff,0xce,0xa1,0x00,0x05,0xff,0xce,0x98,0x00,0xd2,0x1c,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0xa3,0x00,0x05,0xff,0xce,0xa4,0x00,0x10,0x07,0x05,0xff,0xce,
+       0xa5,0x00,0x05,0xff,0xce,0xa6,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa7,0x00,
+       0x05,0xff,0xce,0xa8,0x00,0x10,0x07,0x05,0xff,0xce,0xa9,0x00,0x05,0xff,0xe2,0x88,
+       0x87,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,0x05,
+       0xff,0xce,0xb2,0x00,0x10,0x07,0x05,0xff,0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,
+       0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0x10,0x07,
+       0x05,0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xb9,0x00,0x05,0xff,0xce,0xba,0x00,0x10,0x07,0x05,0xff,0xce,0xbb,
+       0x00,0x05,0xff,0xce,0xbc,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,
+       0xff,0xce,0xbe,0x00,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,
+       0xe0,0xc5,0x01,0xcf,0x86,0xd5,0xe1,0xd4,0x71,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x82,0x00,0x10,0x07,0x05,0xff,0xcf,
+       0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x85,0x00,
+       0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,
+       0x00,0xd2,0x1d,0xd1,0x0f,0x10,0x07,0x05,0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,
+       0x82,0x00,0x10,0x07,0x05,0xff,0xce,0xb5,0x00,0x05,0xff,0xce,0xb8,0x00,0xd1,0x0e,
+       0x10,0x07,0x05,0xff,0xce,0xba,0x00,0x05,0xff,0xcf,0x86,0x00,0x10,0x07,0x05,0xff,
+       0xcf,0x81,0x00,0x05,0xff,0xcf,0x80,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0x91,0x00,0x05,0xff,0xce,0x92,0x00,0x10,0x07,0x05,0xff,0xce,0x93,
+       0x00,0x05,0xff,0xce,0x94,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x95,0x00,0x05,
+       0xff,0xce,0x96,0x00,0x10,0x07,0x05,0xff,0xce,0x97,0x00,0x05,0xff,0xce,0x98,0x00,
+       0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0x99,0x00,0x05,0xff,0xce,0x9a,0x00,
+       0x10,0x07,0x05,0xff,0xce,0x9b,0x00,0x05,0xff,0xce,0x9c,0x00,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0x9d,0x00,0x05,0xff,0xce,0x9e,0x00,0x10,0x07,0x05,0xff,0xce,0x9f,
+       0x00,0x05,0xff,0xce,0xa0,0x00,0xd4,0x71,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,
+       0x05,0xff,0xce,0xa1,0x00,0x05,0xff,0xce,0x98,0x00,0x10,0x07,0x05,0xff,0xce,0xa3,
+       0x00,0x05,0xff,0xce,0xa4,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xa5,0x00,0x05,
+       0xff,0xce,0xa6,0x00,0x10,0x07,0x05,0xff,0xce,0xa7,0x00,0x05,0xff,0xce,0xa8,0x00,
+       0xd2,0x1d,0xd1,0x0f,0x10,0x07,0x05,0xff,0xce,0xa9,0x00,0x05,0xff,0xe2,0x88,0x87,
+       0x00,0x10,0x07,0x05,0xff,0xce,0xb1,0x00,0x05,0xff,0xce,0xb2,0x00,0xd1,0x0e,0x10,
+       0x07,0x05,0xff,0xce,0xb3,0x00,0x05,0xff,0xce,0xb4,0x00,0x10,0x07,0x05,0xff,0xce,
+       0xb5,0x00,0x05,0xff,0xce,0xb6,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xce,0xb7,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xb9,0x00,
+       0x05,0xff,0xce,0xba,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbb,0x00,0x05,0xff,
+       0xce,0xbc,0x00,0x10,0x07,0x05,0xff,0xce,0xbd,0x00,0x05,0xff,0xce,0xbe,0x00,0xd2,
+       0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xce,0xbf,0x00,0x05,0xff,0xcf,0x80,0x00,0x10,
+       0x07,0x05,0xff,0xcf,0x81,0x00,0x05,0xff,0xcf,0x82,0x00,0xd1,0x0e,0x10,0x07,0x05,
+       0xff,0xcf,0x83,0x00,0x05,0xff,0xcf,0x84,0x00,0x10,0x07,0x05,0xff,0xcf,0x85,0x00,
+       0x05,0xff,0xcf,0x86,0x00,0xcf,0x86,0xd5,0xc5,0xd4,0x65,0xd3,0x39,0xd2,0x1d,0xd1,
+       0x0e,0x10,0x07,0x05,0xff,0xcf,0x87,0x00,0x05,0xff,0xcf,0x88,0x00,0x10,0x07,0x05,
+       0xff,0xcf,0x89,0x00,0x05,0xff,0xe2,0x88,0x82,0x00,0xd1,0x0e,0x10,0x07,0x05,0xff,
+       0xce,0xb5,0x00,0x05,0xff,0xce,0xb8,0x00,0x10,0x07,0x05,0xff,0xce,0xba,0x00,0x05,
+       0xff,0xcf,0x86,0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x05,0xff,0xcf,0x81,0x00,0x05,
+       0xff,0xcf,0x80,0x00,0x10,0x07,0x09,0xff,0xcf,0x9c,0x00,0x09,0xff,0xcf,0x9d,0x00,
+       0x51,0x04,0x00,0x00,0x10,0x06,0x05,0xff,0x30,0x00,0x05,0xff,0x31,0x00,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x32,0x00,0x05,0xff,0x33,0x00,0x10,0x06,
+       0x05,0xff,0x34,0x00,0x05,0xff,0x35,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x36,0x00,
+       0x05,0xff,0x37,0x00,0x10,0x06,0x05,0xff,0x38,0x00,0x05,0xff,0x39,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x30,0x00,0x05,0xff,0x31,0x00,0x10,0x06,0x05,0xff,
+       0x32,0x00,0x05,0xff,0x33,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x34,0x00,0x05,0xff,
+       0x35,0x00,0x10,0x06,0x05,0xff,0x36,0x00,0x05,0xff,0x37,0x00,0xd4,0x60,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x05,0xff,0x38,0x00,0x05,0xff,0x39,0x00,0x10,0x06,
+       0x05,0xff,0x30,0x00,0x05,0xff,0x31,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x32,0x00,
+       0x05,0xff,0x33,0x00,0x10,0x06,0x05,0xff,0x34,0x00,0x05,0xff,0x35,0x00,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x36,0x00,0x05,0xff,0x37,0x00,0x10,0x06,0x05,0xff,
+       0x38,0x00,0x05,0xff,0x39,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x30,0x00,0x05,0xff,
+       0x31,0x00,0x10,0x06,0x05,0xff,0x32,0x00,0x05,0xff,0x33,0x00,0xd3,0x30,0xd2,0x18,
+       0xd1,0x0c,0x10,0x06,0x05,0xff,0x34,0x00,0x05,0xff,0x35,0x00,0x10,0x06,0x05,0xff,
+       0x36,0x00,0x05,0xff,0x37,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x38,0x00,0x05,0xff,
+       0x39,0x00,0x10,0x06,0x05,0xff,0x30,0x00,0x05,0xff,0x31,0x00,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x05,0xff,0x32,0x00,0x05,0xff,0x33,0x00,0x10,0x06,0x05,0xff,0x34,0x00,
+       0x05,0xff,0x35,0x00,0xd1,0x0c,0x10,0x06,0x05,0xff,0x36,0x00,0x05,0xff,0x37,0x00,
+       0x10,0x06,0x05,0xff,0x38,0x00,0x05,0xff,0x39,0x00,0xd4,0x52,0xd3,0x06,0xcf,0x06,
+       0x11,0x00,0xd2,0x46,0xd1,0x06,0xcf,0x06,0x11,0x00,0xd0,0x3a,0xcf,0x86,0xd5,0x20,
+       0xd4,0x0c,0x53,0x04,0x11,0x00,0x12,0x04,0x11,0x00,0x00,0x00,0x53,0x04,0x00,0x00,
+       0x92,0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x00,0x00,0x11,0x00,0x11,0x00,0x94,0x14,
+       0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x11,0x00,0x11,0x00,0x11,0x00,
+       0x11,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,
+       0xe0,0xf0,0x05,0xcf,0x86,0xd5,0x78,0xd4,0x72,0xd3,0x6c,0xd2,0x66,0xd1,0x60,0xd0,
+       0x5a,0xcf,0x86,0xd5,0x2c,0xd4,0x14,0x93,0x10,0x52,0x04,0x12,0xe6,0x51,0x04,0x12,
+       0xe6,0x10,0x04,0x12,0xe6,0x00,0x00,0x12,0xe6,0x53,0x04,0x12,0xe6,0x92,0x10,0xd1,
+       0x08,0x10,0x04,0x12,0xe6,0x00,0x00,0x10,0x04,0x00,0x00,0x12,0xe6,0x12,0xe6,0x94,
+       0x28,0xd3,0x18,0xd2,0x0c,0x51,0x04,0x12,0xe6,0x10,0x04,0x00,0x00,0x12,0xe6,0x91,
+       0x08,0x10,0x04,0x12,0xe6,0x00,0x00,0x12,0xe6,0x92,0x0c,0x51,0x04,0x12,0xe6,0x10,
+       0x04,0x12,0xe6,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xd4,0x82,0xd3,
+       0x7c,0xd2,0x3e,0xd1,0x06,0xcf,0x06,0x10,0x00,0xd0,0x06,0xcf,0x06,0x10,0x00,0xcf,
+       0x86,0x95,0x2c,0xd4,0x18,0x93,0x14,0x52,0x04,0x10,0x00,0xd1,0x08,0x10,0x04,0x10,
+       0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x00,0x10,0x00,0x93,0x10,0x52,0x04,0x10,
+       0xdc,0x51,0x04,0x10,0xdc,0x10,0x04,0x10,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,0xd1,
+       0x38,0xd0,0x06,0xcf,0x06,0x12,0x00,0xcf,0x86,0x95,0x2c,0xd4,0x18,0xd3,0x08,0x12,
+       0x04,0x12,0x00,0x12,0xe6,0x92,0x0c,0x51,0x04,0x12,0xe6,0x10,0x04,0x12,0x07,0x00,
+       0x00,0x00,0x00,0x53,0x04,0x12,0x00,0xd2,0x08,0x11,0x04,0x12,0x00,0x00,0x00,0x11,
+       0x04,0x00,0x00,0x12,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xd3,
+       0x4e,0xd2,0x48,0xd1,0x24,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,
+       0x00,0x54,0x04,0x00,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x14,
+       0x00,0x14,0x00,0x14,0x00,0x14,0x00,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x14,0x00,0x54,
+       0x04,0x14,0x00,0x93,0x10,0x52,0x04,0x14,0x00,0x91,0x08,0x10,0x04,0x14,0x00,0x00,
+       0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xe2,0x9f,0x04,
+       0xe1,0xfd,0x02,0xe0,0x90,0x01,0xcf,0x86,0xd5,0xdd,0xd4,0x6d,0xd3,0x35,0xd2,0x1c,
+       0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xa7,0x00,0x0d,0xff,0xd8,0xa8,0x00,0x10,0x07,
+       0x0d,0xff,0xd8,0xac,0x00,0x0d,0xff,0xd8,0xaf,0x00,0xd1,0x0b,0x10,0x04,0x00,0x00,
+       0x0d,0xff,0xd9,0x88,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb2,0x00,0x0d,0xff,0xd8,0xad,
+       0x00,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb7,0x00,0x0d,0xff,0xd9,0x8a,
+       0x00,0x10,0x07,0x0d,0xff,0xd9,0x83,0x00,0x0d,0xff,0xd9,0x84,0x00,0xd1,0x0e,0x10,
+       0x07,0x0d,0xff,0xd9,0x85,0x00,0x0d,0xff,0xd9,0x86,0x00,0x10,0x07,0x0d,0xff,0xd8,
+       0xb3,0x00,0x0d,0xff,0xd8,0xb9,0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0d,
+       0xff,0xd9,0x81,0x00,0x0d,0xff,0xd8,0xb5,0x00,0x10,0x07,0x0d,0xff,0xd9,0x82,0x00,
+       0x0d,0xff,0xd8,0xb1,0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb4,0x00,0x0d,0xff,
+       0xd8,0xaa,0x00,0x10,0x07,0x0d,0xff,0xd8,0xab,0x00,0x0d,0xff,0xd8,0xae,0x00,0xd2,
+       0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb0,0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,
+       0x07,0x0d,0xff,0xd8,0xb8,0x00,0x0d,0xff,0xd8,0xba,0x00,0xd1,0x0e,0x10,0x07,0x0d,
+       0xff,0xd9,0xae,0x00,0x0d,0xff,0xda,0xba,0x00,0x10,0x07,0x0d,0xff,0xda,0xa1,0x00,
+       0x0d,0xff,0xd9,0xaf,0x00,0xd4,0x61,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x00,
+       0x00,0x0d,0xff,0xd8,0xa8,0x00,0x10,0x07,0x0d,0xff,0xd8,0xac,0x00,0x00,0x00,0xd1,
+       0x0b,0x10,0x07,0x0d,0xff,0xd9,0x87,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x0d,0xff,
+       0xd8,0xad,0x00,0xd2,0x19,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xd9,0x8a,0x00,
+       0x10,0x07,0x0d,0xff,0xd9,0x83,0x00,0x0d,0xff,0xd9,0x84,0x00,0xd1,0x0e,0x10,0x07,
+       0x0d,0xff,0xd9,0x85,0x00,0x0d,0xff,0xd9,0x86,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb3,
+       0x00,0x0d,0xff,0xd8,0xb9,0x00,0xd3,0x35,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x0d,0xff,
+       0xd9,0x81,0x00,0x0d,0xff,0xd8,0xb5,0x00,0x10,0x07,0x0d,0xff,0xd9,0x82,0x00,0x00,
+       0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb4,0x00,0x0d,0xff,0xd8,0xaa,0x00,0x10,
+       0x07,0x0d,0xff,0xd8,0xab,0x00,0x0d,0xff,0xd8,0xae,0x00,0x92,0x16,0xd1,0x0b,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,0x04,0x00,0x00,0x0d,0xff,0xd8,0xba,
+       0x00,0x00,0x00,0xcf,0x86,0xd5,0xa5,0xd4,0x4d,0xd3,0x1e,0xd2,0x0f,0x51,0x04,0x00,
+       0x00,0x10,0x07,0x0d,0xff,0xd8,0xac,0x00,0x00,0x00,0x51,0x04,0x00,0x00,0x10,0x04,
+       0x00,0x00,0x0d,0xff,0xd8,0xad,0x00,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,
+       0xff,0xd9,0x8a,0x00,0x10,0x04,0x00,0x00,0x0d,0xff,0xd9,0x84,0x00,0xd1,0x0b,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xd9,0x86,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb3,0x00,0x0d,
+       0xff,0xd8,0xb9,0x00,0xd3,0x2c,0xd2,0x16,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,
+       0xd8,0xb5,0x00,0x10,0x07,0x0d,0xff,0xd9,0x82,0x00,0x00,0x00,0xd1,0x0b,0x10,0x07,
+       0x0d,0xff,0xd8,0xb4,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x0d,0xff,0xd8,0xae,0x00,
+       0xd2,0x16,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,0x04,0x00,
+       0x00,0x0d,0xff,0xd8,0xba,0x00,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xda,0xba,
+       0x00,0x10,0x04,0x00,0x00,0x0d,0xff,0xd9,0xaf,0x00,0xd4,0x61,0xd3,0x2c,0xd2,0x16,
+       0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xd8,0xa8,0x00,0x10,0x07,0x0d,0xff,0xd8,
+       0xac,0x00,0x00,0x00,0xd1,0x0b,0x10,0x07,0x0d,0xff,0xd9,0x87,0x00,0x00,0x00,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xd8,0xad,0x00,0xd2,0x19,0xd1,0x0e,0x10,0x07,0x0d,0xff,
+       0xd8,0xb7,0x00,0x0d,0xff,0xd9,0x8a,0x00,0x10,0x07,0x0d,0xff,0xd9,0x83,0x00,0x00,
+       0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x85,0x00,0x0d,0xff,0xd9,0x86,0x00,0x10,
+       0x07,0x0d,0xff,0xd8,0xb3,0x00,0x0d,0xff,0xd8,0xb9,0x00,0xd3,0x35,0xd2,0x19,0xd1,
+       0x0e,0x10,0x07,0x0d,0xff,0xd9,0x81,0x00,0x0d,0xff,0xd8,0xb5,0x00,0x10,0x07,0x0d,
+       0xff,0xd9,0x82,0x00,0x00,0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb4,0x00,0x0d,
+       0xff,0xd8,0xaa,0x00,0x10,0x07,0x0d,0xff,0xd8,0xab,0x00,0x0d,0xff,0xd8,0xae,0x00,
+       0xd2,0x19,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,0x07,0x0d,
+       0xff,0xd8,0xb8,0x00,0x0d,0xff,0xd8,0xba,0x00,0xd1,0x0b,0x10,0x07,0x0d,0xff,0xd9,
+       0xae,0x00,0x00,0x00,0x10,0x07,0x0d,0xff,0xda,0xa1,0x00,0x00,0x00,0xe0,0x87,0x01,
+       0xcf,0x86,0xd5,0xc5,0xd4,0x6d,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,
+       0xd8,0xa7,0x00,0x0d,0xff,0xd8,0xa8,0x00,0x10,0x07,0x0d,0xff,0xd8,0xac,0x00,0x0d,
+       0xff,0xd8,0xaf,0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x87,0x00,0x0d,0xff,0xd9,
+       0x88,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb2,0x00,0x0d,0xff,0xd8,0xad,0x00,0xd2,0x19,
+       0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb7,0x00,0x0d,0xff,0xd9,0x8a,0x00,0x10,0x04,
+       0x00,0x00,0x0d,0xff,0xd9,0x84,0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x85,0x00,
+       0x0d,0xff,0xd9,0x86,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb3,0x00,0x0d,0xff,0xd8,0xb9,
+       0x00,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x81,0x00,0x0d,0xff,
+       0xd8,0xb5,0x00,0x10,0x07,0x0d,0xff,0xd9,0x82,0x00,0x0d,0xff,0xd8,0xb1,0x00,0xd1,
+       0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb4,0x00,0x0d,0xff,0xd8,0xaa,0x00,0x10,0x07,0x0d,
+       0xff,0xd8,0xab,0x00,0x0d,0xff,0xd8,0xae,0x00,0x92,0x1c,0xd1,0x0e,0x10,0x07,0x0d,
+       0xff,0xd8,0xb0,0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb8,0x00,
+       0x0d,0xff,0xd8,0xba,0x00,0x00,0x00,0xd4,0x67,0xd3,0x32,0xd2,0x19,0xd1,0x0b,0x10,
+       0x04,0x00,0x00,0x0d,0xff,0xd8,0xa8,0x00,0x10,0x07,0x0d,0xff,0xd8,0xac,0x00,0x0d,
+       0xff,0xd8,0xaf,0x00,0xd1,0x0b,0x10,0x04,0x00,0x00,0x0d,0xff,0xd9,0x88,0x00,0x10,
+       0x07,0x0d,0xff,0xd8,0xb2,0x00,0x0d,0xff,0xd8,0xad,0x00,0xd2,0x19,0xd1,0x0e,0x10,
+       0x07,0x0d,0xff,0xd8,0xb7,0x00,0x0d,0xff,0xd9,0x8a,0x00,0x10,0x04,0x00,0x00,0x0d,
+       0xff,0xd9,0x84,0x00,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x85,0x00,0x0d,0xff,0xd9,
+       0x86,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb3,0x00,0x0d,0xff,0xd8,0xb9,0x00,0xd3,0x38,
+       0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd9,0x81,0x00,0x0d,0xff,0xd8,0xb5,0x00,
+       0x10,0x07,0x0d,0xff,0xd9,0x82,0x00,0x0d,0xff,0xd8,0xb1,0x00,0xd1,0x0e,0x10,0x07,
+       0x0d,0xff,0xd8,0xb4,0x00,0x0d,0xff,0xd8,0xaa,0x00,0x10,0x07,0x0d,0xff,0xd8,0xab,
+       0x00,0x0d,0xff,0xd8,0xae,0x00,0x92,0x1c,0xd1,0x0e,0x10,0x07,0x0d,0xff,0xd8,0xb0,
+       0x00,0x0d,0xff,0xd8,0xb6,0x00,0x10,0x07,0x0d,0xff,0xd8,0xb8,0x00,0x0d,0xff,0xd8,
+       0xba,0x00,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,0x93,0x0c,
+       0x92,0x08,0x11,0x04,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,
+       0xcf,0x86,0xe5,0x01,0x09,0xe4,0xa3,0x06,0xe3,0x8e,0x03,0xd2,0xa0,0xd1,0x1c,0xd0,
+       0x16,0xcf,0x86,0x55,0x04,0x0a,0x00,0x94,0x0c,0x53,0x04,0x0a,0x00,0x12,0x04,0x0a,
+       0x00,0x00,0x00,0x0a,0x00,0xcf,0x06,0x0a,0x00,0xd0,0x46,0xcf,0x86,0xd5,0x10,0x54,
+       0x04,0x0a,0x00,0x93,0x08,0x12,0x04,0x0a,0x00,0x00,0x00,0x00,0x00,0xd4,0x14,0x53,
+       0x04,0x0c,0x00,0x52,0x04,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x00,
+       0x00,0xd3,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x0c,0x00,0x0c,0x00,0x0c,
+       0x00,0x52,0x04,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x10,0x00,0xcf,
+       0x86,0xd5,0x28,0xd4,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,0x00,0x0c,
+       0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x00,
+       0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x54,0x04,0x10,0x00,0x93,0x0c,0x52,
+       0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xe1,0x82,0x02,0xe0,0xba,
+       0x01,0xcf,0x86,0xd5,0xdd,0xd4,0x5d,0xd3,0x38,0xd2,0x1c,0xd1,0x0e,0x10,0x07,0x0b,
+       0xff,0x30,0x2e,0x00,0x0b,0xff,0x30,0x2c,0x00,0x10,0x07,0x0b,0xff,0x31,0x2c,0x00,
+       0x0b,0xff,0x32,0x2c,0x00,0xd1,0x0e,0x10,0x07,0x0b,0xff,0x33,0x2c,0x00,0x0b,0xff,
+       0x34,0x2c,0x00,0x10,0x07,0x0b,0xff,0x35,0x2c,0x00,0x0b,0xff,0x36,0x2c,0x00,0xd2,
+       0x19,0xd1,0x0e,0x10,0x07,0x0b,0xff,0x37,0x2c,0x00,0x0b,0xff,0x38,0x2c,0x00,0x10,
+       0x07,0x0b,0xff,0x39,0x2c,0x00,0x10,0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,
+       0x00,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x41,0x29,0x00,
+       0x0b,0xff,0x28,0x42,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x43,0x29,0x00,0x0b,0xff,
+       0x28,0x44,0x29,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x45,0x29,0x00,0x0b,0xff,
+       0x28,0x46,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x47,0x29,0x00,0x0b,0xff,0x28,0x48,
+       0x29,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x49,0x29,0x00,0x0b,0xff,
+       0x28,0x4a,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x4b,0x29,0x00,0x0b,0xff,0x28,0x4c,
+       0x29,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x4d,0x29,0x00,0x0b,0xff,0x28,0x4e,
+       0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x4f,0x29,0x00,0x0b,0xff,0x28,0x50,0x29,0x00,
+       0xd4,0x7a,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x51,0x29,0x00,
+       0x0b,0xff,0x28,0x52,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x53,0x29,0x00,0x0b,0xff,
+       0x28,0x54,0x29,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x55,0x29,0x00,0x0b,0xff,
+       0x28,0x56,0x29,0x00,0x10,0x08,0x0b,0xff,0x28,0x57,0x29,0x00,0x0b,0xff,0x28,0x58,
+       0x29,0x00,0xd2,0x22,0xd1,0x10,0x10,0x08,0x0b,0xff,0x28,0x59,0x29,0x00,0x0b,0xff,
+       0x28,0x5a,0x29,0x00,0x10,0x0c,0x0b,0xff,0xe3,0x80,0x94,0x53,0xe3,0x80,0x95,0x00,
+       0x0b,0xff,0x43,0x00,0xd1,0x0d,0x10,0x06,0x0b,0xff,0x52,0x00,0x0b,0xff,0x43,0x44,
+       0x00,0x10,0x07,0x0b,0xff,0x57,0x5a,0x00,0x14,0x00,0xd3,0x30,0xd2,0x18,0xd1,0x0c,
+       0x10,0x06,0x0c,0xff,0x41,0x00,0x0b,0xff,0x42,0x00,0x10,0x06,0x0c,0xff,0x43,0x00,
+       0x0c,0xff,0x44,0x00,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x45,0x00,0x0c,0xff,0x46,0x00,
+       0x10,0x06,0x0c,0xff,0x47,0x00,0x0c,0xff,0x48,0x00,0xd2,0x18,0xd1,0x0c,0x10,0x06,
+       0x0c,0xff,0x49,0x00,0x0c,0xff,0x4a,0x00,0x10,0x06,0x0c,0xff,0x4b,0x00,0x0c,0xff,
+       0x4c,0x00,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x4d,0x00,0x0b,0xff,0x4e,0x00,0x10,0x06,
+       0x0c,0xff,0x4f,0x00,0x0b,0xff,0x50,0x00,0xcf,0x86,0xd5,0x87,0xd4,0x67,0xd3,0x30,
+       0xd2,0x18,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x51,0x00,0x0c,0xff,0x52,0x00,0x10,0x06,
+       0x0b,0xff,0x53,0x00,0x0c,0xff,0x54,0x00,0xd1,0x0c,0x10,0x06,0x0c,0xff,0x55,0x00,
+       0x0c,0xff,0x56,0x00,0x10,0x06,0x0b,0xff,0x57,0x00,0x0c,0xff,0x58,0x00,0xd2,0x1a,
+       0xd1,0x0c,0x10,0x06,0x0c,0xff,0x59,0x00,0x0c,0xff,0x5a,0x00,0x10,0x07,0x0b,0xff,
+       0x48,0x56,0x00,0x0b,0xff,0x4d,0x56,0x00,0xd1,0x0e,0x10,0x07,0x0b,0xff,0x53,0x44,
+       0x00,0x0b,0xff,0x53,0x53,0x00,0x10,0x08,0x0b,0xff,0x50,0x50,0x56,0x00,0x0c,0xff,
+       0x57,0x43,0x00,0xd3,0x10,0x52,0x04,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,
+       0x00,0x0b,0x00,0x52,0x04,0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x0b,
+       0x00,0xd4,0x1a,0x53,0x04,0x0c,0x00,0x92,0x12,0x51,0x04,0x0c,0x00,0x10,0x07,0x0d,
+       0xff,0x4d,0x43,0x00,0x0d,0xff,0x4d,0x44,0x00,0x00,0x00,0x53,0x04,0x0c,0x00,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x0c,0x00,0x0b,0x00,0x10,0x04,0x0c,0x00,0x0b,0x00,0xd1,
+       0x08,0x10,0x04,0x0b,0x00,0x0c,0x00,0x10,0x04,0x0c,0x00,0x0b,0x00,0xd0,0x51,0xcf,
+       0x86,0xd5,0x37,0xd4,0x14,0x53,0x04,0x0c,0x00,0xd2,0x08,0x11,0x04,0x0c,0x00,0x0b,
+       0x00,0x11,0x04,0x0b,0x00,0x0c,0x00,0xd3,0x13,0x92,0x0f,0x91,0x0b,0x10,0x07,0x0b,
+       0xff,0x44,0x4a,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x92,0x0c,0x51,0x04,0x0c,0x00,
+       0x10,0x04,0x0c,0x00,0x12,0x00,0x12,0x00,0x94,0x14,0x53,0x04,0x12,0x00,0x52,0x04,
+       0x12,0x00,0x91,0x08,0x10,0x04,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,
+       0x55,0x04,0x00,0x00,0x94,0x10,0x93,0x0c,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,
+       0x0c,0x00,0x0c,0x00,0x0c,0x00,0xe2,0x58,0x02,0xe1,0x51,0x02,0xe0,0x94,0x01,0xcf,
+       0x86,0xd5,0xad,0xd4,0x2a,0x93,0x26,0x92,0x22,0xd1,0x16,0x10,0x0b,0x0b,0xff,0xe3,
+       0x81,0xbb,0xe3,0x81,0x8b,0x00,0x0c,0xff,0xe3,0x82,0xb3,0xe3,0x82,0xb3,0x00,0x10,
+       0x08,0x0c,0xff,0xe3,0x82,0xb5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd3,0x43,0xd2,
+       0x23,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe6,0x89,0x8b,0x00,0x0b,0xff,0xe5,0xad,0x97,
+       0x00,0x10,0x08,0x0b,0xff,0xe5,0x8f,0x8c,0x00,0x0b,0xff,0xe3,0x83,0x86,0xe3,0x82,
+       0x99,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe4,0xba,0x8c,0x00,0x0b,0xff,0xe5,0xa4,
+       0x9a,0x00,0x10,0x08,0x0b,0xff,0xe8,0xa7,0xa3,0x00,0x0b,0xff,0xe5,0xa4,0xa9,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe4,0xba,0xa4,0x00,0x0b,0xff,0xe6,0x98,
+       0xa0,0x00,0x10,0x08,0x0b,0xff,0xe7,0x84,0xa1,0x00,0x0b,0xff,0xe6,0x96,0x99,0x00,
+       0xd1,0x10,0x10,0x08,0x0b,0xff,0xe5,0x89,0x8d,0x00,0x0b,0xff,0xe5,0xbe,0x8c,0x00,
+       0x10,0x08,0x0b,0xff,0xe5,0x86,0x8d,0x00,0x0b,0xff,0xe6,0x96,0xb0,0x00,0xd4,0x80,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe5,0x88,0x9d,0x00,0x0b,0xff,
+       0xe7,0xb5,0x82,0x00,0x10,0x08,0x0b,0xff,0xe7,0x94,0x9f,0x00,0x0b,0xff,0xe8,0xb2,
+       0xa9,0x00,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe5,0xa3,0xb0,0x00,0x0b,0xff,0xe5,0x90,
+       0xb9,0x00,0x10,0x08,0x0b,0xff,0xe6,0xbc,0x94,0x00,0x0b,0xff,0xe6,0x8a,0x95,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe6,0x8d,0x95,0x00,0x0b,0xff,0xe4,0xb8,
+       0x80,0x00,0x10,0x08,0x0b,0xff,0xe4,0xb8,0x89,0x00,0x0b,0xff,0xe9,0x81,0x8a,0x00,
+       0xd1,0x10,0x10,0x08,0x0b,0xff,0xe5,0xb7,0xa6,0x00,0x0b,0xff,0xe4,0xb8,0xad,0x00,
+       0x10,0x08,0x0b,0xff,0xe5,0x8f,0xb3,0x00,0x0b,0xff,0xe6,0x8c,0x87,0x00,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x0b,0xff,0xe8,0xb5,0xb0,0x00,0x0b,0xff,0xe6,0x89,
+       0x93,0x00,0x10,0x08,0x0c,0xff,0xe7,0xa6,0x81,0x00,0x0c,0xff,0xe7,0xa9,0xba,0x00,
+       0xd1,0x10,0x10,0x08,0x0c,0xff,0xe5,0x90,0x88,0x00,0x0c,0xff,0xe6,0xba,0x80,0x00,
+       0x10,0x08,0x0c,0xff,0xe6,0x9c,0x89,0x00,0x0c,0xff,0xe6,0x9c,0x88,0x00,0x92,0x20,
+       0xd1,0x10,0x10,0x08,0x0c,0xff,0xe7,0x94,0xb3,0x00,0x0c,0xff,0xe5,0x89,0xb2,0x00,
+       0x10,0x08,0x0c,0xff,0xe5,0x96,0xb6,0x00,0x12,0xff,0xe9,0x85,0x8d,0x00,0x00,0x00,
+       0xcf,0x86,0xd5,0xa6,0xd4,0x8a,0xd3,0x70,0xd2,0x38,0xd1,0x1c,0x10,0x0e,0x0b,0xff,
+       0xe3,0x80,0x94,0xe6,0x9c,0xac,0xe3,0x80,0x95,0x00,0x0b,0xff,0xe3,0x80,0x94,0xe4,
+       0xb8,0x89,0xe3,0x80,0x95,0x00,0x10,0x0e,0x0b,0xff,0xe3,0x80,0x94,0xe4,0xba,0x8c,
+       0xe3,0x80,0x95,0x00,0x0b,0xff,0xe3,0x80,0x94,0xe5,0xae,0x89,0xe3,0x80,0x95,0x00,
+       0xd1,0x1c,0x10,0x0e,0x0b,0xff,0xe3,0x80,0x94,0xe7,0x82,0xb9,0xe3,0x80,0x95,0x00,
+       0x0b,0xff,0xe3,0x80,0x94,0xe6,0x89,0x93,0xe3,0x80,0x95,0x00,0x10,0x0e,0x0b,0xff,
+       0xe3,0x80,0x94,0xe7,0x9b,0x97,0xe3,0x80,0x95,0x00,0x0b,0xff,0xe3,0x80,0x94,0xe5,
+       0x8b,0x9d,0xe3,0x80,0x95,0x00,0x92,0x16,0x91,0x12,0x10,0x0e,0x0b,0xff,0xe3,0x80,
+       0x94,0xe6,0x95,0x97,0xe3,0x80,0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x93,0x18,
+       0x92,0x14,0x91,0x10,0x10,0x08,0x0c,0xff,0xe5,0xbe,0x97,0x00,0x0c,0xff,0xe5,0x8f,
+       0xaf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x10,0x93,0x0c,0x52,0x04,0x13,0x00,
+       0x11,0x04,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xd1,0x58,
+       0xd0,0x3a,0xcf,0x86,0x55,0x04,0x0c,0x00,0xd4,0x20,0xd3,0x10,0x92,0x0c,0x91,0x08,
+       0x10,0x04,0x0c,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x52,0x04,0x10,0x00,0x91,0x08,
+       0x10,0x04,0x10,0x00,0x11,0x00,0x11,0x00,0x93,0x10,0x52,0x04,0x0c,0x00,0x51,0x04,
+       0x0c,0x00,0x10,0x04,0x10,0x00,0x0c,0x00,0x0c,0x00,0xcf,0x86,0x55,0x04,0x0c,0x00,
+       0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0x52,0x04,0x0c,0x00,0x91,0x08,0x10,0x04,
+       0x0c,0x00,0x10,0x00,0x11,0x00,0xd0,0x16,0xcf,0x86,0x95,0x10,0x54,0x04,0x0c,0x00,
+       0x93,0x08,0x12,0x04,0x0c,0x00,0x10,0x00,0x10,0x00,0x0c,0x00,0xcf,0x86,0xd5,0x34,
+       0xd4,0x28,0xd3,0x10,0x52,0x04,0x0c,0x00,0x91,0x08,0x10,0x04,0x0c,0x00,0x10,0x00,
+       0x0c,0x00,0xd2,0x0c,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x10,0x00,0x51,0x04,
+       0x10,0x00,0x10,0x04,0x10,0x00,0x11,0x00,0x93,0x08,0x12,0x04,0x11,0x00,0x10,0x00,
+       0x10,0x00,0x54,0x04,0x0c,0x00,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,
+       0x10,0x00,0x10,0x00,0x10,0x00,0x11,0x00,0xd3,0xfc,0xd2,0x6c,0xd1,0x3c,0xd0,0x1e,
+       0xcf,0x86,0x55,0x04,0x0c,0x00,0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0x52,0x04,
+       0x0c,0x00,0x51,0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x10,0x00,0xcf,0x86,0x95,0x18,
+       0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,0x10,0x00,0x0c,0x00,
+       0x0c,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0xd0,0x06,0xcf,0x06,0x0c,0x00,0xcf,0x86,
+       0x55,0x04,0x0c,0x00,0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0xd2,0x0c,0x91,0x08,
+       0x10,0x04,0x10,0x00,0x0c,0x00,0x0c,0x00,0xd1,0x08,0x10,0x04,0x0c,0x00,0x10,0x00,
+       0x10,0x04,0x10,0x00,0x11,0x00,0xd1,0x54,0xd0,0x1a,0xcf,0x86,0x55,0x04,0x0c,0x00,
+       0x54,0x04,0x0c,0x00,0x53,0x04,0x0c,0x00,0x52,0x04,0x0c,0x00,0x11,0x04,0x0c,0x00,
+       0x10,0x00,0xcf,0x86,0xd5,0x1c,0x94,0x18,0xd3,0x08,0x12,0x04,0x0d,0x00,0x10,0x00,
+       0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,0x11,0x00,0x11,0x00,0x0c,0x00,
+       0xd4,0x08,0x13,0x04,0x0c,0x00,0x10,0x00,0x53,0x04,0x10,0x00,0x92,0x0c,0x51,0x04,
+       0x10,0x00,0x10,0x04,0x12,0x00,0x10,0x00,0x10,0x00,0xd0,0x1e,0xcf,0x86,0x55,0x04,
+       0x10,0x00,0x94,0x14,0x93,0x10,0x52,0x04,0x10,0x00,0x91,0x08,0x10,0x04,0x12,0x00,
+       0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xcf,0x86,0x55,0x04,0x10,0x00,0x54,0x04,
+       0x10,0x00,0x53,0x04,0x10,0x00,0x92,0x0c,0x51,0x04,0x10,0x00,0x10,0x04,0x10,0x00,
+       0x0c,0x00,0x0c,0x00,0xe2,0x15,0x01,0xd1,0xa8,0xd0,0x7e,0xcf,0x86,0xd5,0x4c,0xd4,
+       0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x0d,0x00,0x0c,0x00,0x0c,0x00,0x0c,
+       0x00,0x0c,0x00,0xd3,0x1c,0xd2,0x0c,0x91,0x08,0x10,0x04,0x0c,0x00,0x0d,0x00,0x0c,
+       0x00,0xd1,0x08,0x10,0x04,0x0c,0x00,0x0d,0x00,0x10,0x04,0x0c,0x00,0x0d,0x00,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x0c,0x00,0x0d,0x00,0x10,0x04,0x0c,0x00,0x0d,0x00,0x51,
+       0x04,0x0c,0x00,0x10,0x04,0x0c,0x00,0x0d,0x00,0xd4,0x1c,0xd3,0x0c,0x52,0x04,0x0c,
+       0x00,0x11,0x04,0x0c,0x00,0x0d,0x00,0x52,0x04,0x0c,0x00,0x91,0x08,0x10,0x04,0x0d,
+       0x00,0x0c,0x00,0x0d,0x00,0x93,0x10,0x52,0x04,0x0c,0x00,0x91,0x08,0x10,0x04,0x0d,
+       0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0xcf,0x86,0x95,0x24,0x94,0x20,0x93,0x1c,0xd2,
+       0x10,0xd1,0x08,0x10,0x04,0x0c,0x00,0x10,0x00,0x10,0x04,0x10,0x00,0x11,0x00,0x91,
+       0x08,0x10,0x04,0x11,0x00,0x0c,0x00,0x0c,0x00,0x0c,0x00,0x10,0x00,0x10,0x00,0xd0,
+       0x06,0xcf,0x06,0x0c,0x00,0xcf,0x86,0xd5,0x30,0xd4,0x10,0x93,0x0c,0x52,0x04,0x0c,
+       0x00,0x11,0x04,0x0c,0x00,0x10,0x00,0x10,0x00,0x93,0x1c,0xd2,0x10,0xd1,0x08,0x10,
+       0x04,0x11,0x00,0x12,0x00,0x10,0x04,0x12,0x00,0x13,0x00,0x91,0x08,0x10,0x04,0x13,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd4,0x14,0x53,0x04,0x10,0x00,0x52,0x04,0x10,
+       0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0xd3,0x10,0x52,0x04,0x10,
+       0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x00,0x13,0x00,0x92,0x0c,0x91,0x08,0x10,
+       0x04,0x13,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0xd1,0x1c,0xd0,0x06,0xcf,0x06,0x0c,
+       0x00,0xcf,0x86,0x55,0x04,0x0c,0x00,0x54,0x04,0x0c,0x00,0x93,0x08,0x12,0x04,0x0c,
+       0x00,0x00,0x00,0x00,0x00,0xd0,0x06,0xcf,0x06,0x10,0x00,0xcf,0x86,0x95,0x24,0x54,
+       0x04,0x10,0x00,0xd3,0x10,0x52,0x04,0x10,0x00,0x91,0x08,0x10,0x04,0x10,0x00,0x14,
+       0x00,0x14,0x00,0x92,0x0c,0x91,0x08,0x10,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0xe4,0xc2,0x01,0xe3,0x95,0x01,0xd2,0x5c,0xd1,0x34,0xd0,0x16,0xcf,
+       0x86,0x95,0x10,0x94,0x0c,0x53,0x04,0x10,0x00,0x12,0x04,0x10,0x00,0x00,0x00,0x10,
+       0x00,0x10,0x00,0xcf,0x86,0x95,0x18,0xd4,0x08,0x13,0x04,0x10,0x00,0x00,0x00,0x53,
+       0x04,0x10,0x00,0x92,0x08,0x11,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xd0,
+       0x22,0xcf,0x86,0xd5,0x0c,0x94,0x08,0x13,0x04,0x10,0x00,0x00,0x00,0x10,0x00,0x94,
+       0x10,0x53,0x04,0x10,0x00,0x52,0x04,0x10,0x00,0x11,0x04,0x10,0x00,0x00,0x00,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xd1,0xb8,0xd0,0x56,0xcf,0x86,0xd5,0x28,0xd4,0x0c,0x53,
+       0x04,0x13,0x00,0x12,0x04,0x13,0x00,0x00,0x00,0x53,0x04,0x11,0x00,0xd2,0x0c,0x91,
+       0x08,0x10,0x04,0x11,0x00,0x12,0x00,0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,
+       0x00,0x13,0x00,0xd4,0x08,0x13,0x04,0x12,0x00,0x13,0x00,0xd3,0x14,0x92,0x10,0xd1,
+       0x08,0x10,0x04,0x12,0x00,0x13,0x00,0x10,0x04,0x13,0x00,0x12,0x00,0x12,0x00,0x52,
+       0x04,0x12,0x00,0x51,0x04,0x12,0x00,0x10,0x04,0x12,0x00,0x00,0x00,0xcf,0x86,0xd5,
+       0x28,0xd4,0x14,0x53,0x04,0x12,0x00,0x52,0x04,0x12,0x00,0x91,0x08,0x10,0x04,0x13,
+       0x00,0x14,0x00,0x14,0x00,0x53,0x04,0x12,0x00,0x52,0x04,0x12,0x00,0x51,0x04,0x12,
+       0x00,0x10,0x04,0x12,0x00,0x13,0x00,0xd4,0x0c,0x53,0x04,0x13,0x00,0x12,0x04,0x13,
+       0x00,0x14,0x00,0xd3,0x1c,0xd2,0x10,0xd1,0x08,0x10,0x04,0x14,0x00,0x00,0x00,0x10,
+       0x04,0x00,0x00,0x14,0x00,0x51,0x04,0x14,0x00,0x10,0x04,0x14,0x00,0x00,0x00,0x92,
+       0x0c,0x51,0x04,0x00,0x00,0x10,0x04,0x14,0x00,0x00,0x00,0x14,0x00,0xd0,0x4a,0xcf,
+       0x86,0xd5,0x24,0xd4,0x14,0x93,0x10,0x52,0x04,0x11,0x00,0x91,0x08,0x10,0x04,0x11,
+       0x00,0x12,0x00,0x12,0x00,0x12,0x00,0x93,0x0c,0x92,0x08,0x11,0x04,0x12,0x00,0x13,
+       0x00,0x13,0x00,0x14,0x00,0xd4,0x14,0x93,0x10,0x92,0x0c,0x51,0x04,0x14,0x00,0x10,
+       0x04,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x04,0x14,0x00,0x92,0x08,0x11,
+       0x04,0x14,0x00,0x00,0x00,0x00,0x00,0xcf,0x86,0xd5,0x1c,0x94,0x18,0x93,0x14,0x92,
+       0x10,0xd1,0x08,0x10,0x04,0x11,0x00,0x14,0x00,0x10,0x04,0x14,0x00,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x13,0x00,0x94,0x14,0x93,0x10,0x52,0x04,0x13,0x00,0x51,0x04,0x13,
+       0x00,0x10,0x04,0x13,0x00,0x14,0x00,0x14,0x00,0x14,0x00,0xd2,0x26,0xd1,0x20,0xd0,
+       0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x94,0x10,0x53,0x04,0x14,
+       0x00,0x52,0x04,0x14,0x00,0x11,0x04,0x14,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,
+       0x00,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,
+       0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,
+       0x04,0x00,0x00,0x54,0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,
+       0x04,0x00,0x00,0x02,0x00,0xe4,0xf9,0x12,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,
+       0xd2,0xc2,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x05,0x00,0xd0,0x44,0xcf,0x86,0xd5,0x3c,
+       0xd4,0x06,0xcf,0x06,0x05,0x00,0xd3,0x06,0xcf,0x06,0x05,0x00,0xd2,0x2a,0xd1,0x06,
+       0xcf,0x06,0x05,0x00,0xd0,0x06,0xcf,0x06,0x05,0x00,0xcf,0x86,0x95,0x18,0x54,0x04,
+       0x05,0x00,0x93,0x10,0x52,0x04,0x05,0x00,0x51,0x04,0x05,0x00,0x10,0x04,0x05,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x0b,0x00,0xcf,0x06,0x0b,0x00,0xcf,0x86,
+       0xd5,0x3c,0xd4,0x06,0xcf,0x06,0x0b,0x00,0xd3,0x06,0xcf,0x06,0x0b,0x00,0xd2,0x06,
+       0xcf,0x06,0x0b,0x00,0xd1,0x24,0xd0,0x1e,0xcf,0x86,0x55,0x04,0x0b,0x00,0x54,0x04,
+       0x0b,0x00,0x93,0x10,0x52,0x04,0x0b,0x00,0x91,0x08,0x10,0x04,0x0b,0x00,0x00,0x00,
+       0x00,0x00,0x00,0x00,0xcf,0x06,0x0c,0x00,0xcf,0x06,0x0c,0x00,0xd4,0x32,0xd3,0x2c,
+       0xd2,0x26,0xd1,0x20,0xd0,0x1a,0xcf,0x86,0x95,0x14,0x54,0x04,0x0c,0x00,0x53,0x04,
+       0x0c,0x00,0x52,0x04,0x0c,0x00,0x11,0x04,0x0c,0x00,0x00,0x00,0x11,0x00,0xcf,0x06,
+       0x11,0x00,0xcf,0x06,0x11,0x00,0xcf,0x06,0x11,0x00,0xcf,0x06,0x11,0x00,0xcf,0x06,
+       0x11,0x00,0xd1,0x48,0xd0,0x40,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x11,0x00,0xd4,0x06,
+       0xcf,0x06,0x11,0x00,0xd3,0x06,0xcf,0x06,0x11,0x00,0xd2,0x26,0xd1,0x06,0xcf,0x06,
+       0x11,0x00,0xd0,0x1a,0xcf,0x86,0x55,0x04,0x11,0x00,0x94,0x10,0x93,0x0c,0x92,0x08,
+       0x11,0x04,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0xcf,0x06,0x13,0x00,
+       0xcf,0x06,0x13,0x00,0xcf,0x86,0xcf,0x06,0x13,0x00,0xd0,0x44,0xcf,0x86,0xd5,0x06,
+       0xcf,0x06,0x13,0x00,0xd4,0x36,0xd3,0x06,0xcf,0x06,0x13,0x00,0xd2,0x06,0xcf,0x06,
+       0x13,0x00,0xd1,0x06,0xcf,0x06,0x13,0x00,0xd0,0x06,0xcf,0x06,0x13,0x00,0xcf,0x86,
+       0x55,0x04,0x13,0x00,0x94,0x14,0x93,0x10,0x92,0x0c,0x91,0x08,0x10,0x04,0x13,0x00,
+       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xd5,0x06,0xcf,0x06,0x00,0x00,0xe4,0x68,0x11,0xe3,0x51,0x10,0xe2,0x17,0x08,0xe1,
+       0x06,0x04,0xe0,0x03,0x02,0xcf,0x86,0xe5,0x06,0x01,0xd4,0x82,0xd3,0x41,0xd2,0x21,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe4,0xb8,0xbd,0x00,0x05,0xff,0xe4,0xb8,0xb8,0x00,
+       0x10,0x08,0x05,0xff,0xe4,0xb9,0x81,0x00,0x05,0xff,0xf0,0xa0,0x84,0xa2,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe4,0xbd,0xa0,0x00,0x05,0xff,0xe4,0xbe,0xae,0x00,0x10,
+       0x08,0x05,0xff,0xe4,0xbe,0xbb,0x00,0x05,0xff,0xe5,0x80,0x82,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe5,0x81,0xba,0x00,0x05,0xff,0xe5,0x82,0x99,0x00,0x10,
+       0x08,0x05,0xff,0xe5,0x83,0xa7,0x00,0x05,0xff,0xe5,0x83,0x8f,0x00,0xd1,0x11,0x10,
+       0x08,0x05,0xff,0xe3,0x92,0x9e,0x00,0x05,0xff,0xf0,0xa0,0x98,0xba,0x00,0x10,0x08,
+       0x05,0xff,0xe5,0x85,0x8d,0x00,0x05,0xff,0xe5,0x85,0x94,0x00,0xd3,0x42,0xd2,0x21,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x85,0xa4,0x00,0x05,0xff,0xe5,0x85,0xb7,0x00,
+       0x10,0x09,0x05,0xff,0xf0,0xa0,0x94,0x9c,0x00,0x05,0xff,0xe3,0x92,0xb9,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe5,0x85,0xa7,0x00,0x05,0xff,0xe5,0x86,0x8d,0x00,0x10,
+       0x09,0x05,0xff,0xf0,0xa0,0x95,0x8b,0x00,0x05,0xff,0xe5,0x86,0x97,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x86,0xa4,0x00,0x05,0xff,0xe4,0xbb,0x8c,0x00,
+       0x10,0x08,0x05,0xff,0xe5,0x86,0xac,0x00,0x05,0xff,0xe5,0x86,0xb5,0x00,0xd1,0x11,
+       0x10,0x09,0x05,0xff,0xf0,0xa9,0x87,0x9f,0x00,0x05,0xff,0xe5,0x87,0xb5,0x00,0x10,
+       0x08,0x05,0xff,0xe5,0x88,0x83,0x00,0x05,0xff,0xe3,0x93,0x9f,0x00,0xd4,0x80,0xd3,
+       0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x88,0xbb,0x00,0x05,0xff,0xe5,
+       0x89,0x86,0x00,0x10,0x08,0x05,0xff,0xe5,0x89,0xb2,0x00,0x05,0xff,0xe5,0x89,0xb7,
+       0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe3,0x94,0x95,0x00,0x05,0xff,0xe5,0x8b,0x87,
+       0x00,0x10,0x08,0x05,0xff,0xe5,0x8b,0x89,0x00,0x05,0xff,0xe5,0x8b,0xa4,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x8b,0xba,0x00,0x05,0xff,0xe5,0x8c,0x85,
+       0x00,0x10,0x08,0x05,0xff,0xe5,0x8c,0x86,0x00,0x05,0xff,0xe5,0x8c,0x97,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe5,0x8d,0x89,0x00,0x05,0xff,0xe5,0x8d,0x91,0x00,0x10,
+       0x08,0x05,0xff,0xe5,0x8d,0x9a,0x00,0x05,0xff,0xe5,0x8d,0xb3,0x00,0xd3,0x39,0xd2,
+       0x18,0x91,0x10,0x10,0x08,0x05,0xff,0xe5,0x8d,0xbd,0x00,0x05,0xff,0xe5,0x8d,0xbf,
+       0x00,0x05,0xff,0xe5,0x8d,0xbf,0x00,0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa0,0xa8,
+       0xac,0x00,0x05,0xff,0xe7,0x81,0xb0,0x00,0x10,0x08,0x05,0xff,0xe5,0x8f,0x8a,0x00,
+       0x05,0xff,0xe5,0x8f,0x9f,0x00,0xd2,0x21,0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa0,
+       0xad,0xa3,0x00,0x05,0xff,0xe5,0x8f,0xab,0x00,0x10,0x08,0x05,0xff,0xe5,0x8f,0xb1,
+       0x00,0x05,0xff,0xe5,0x90,0x86,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x92,0x9e,
+       0x00,0x05,0xff,0xe5,0x90,0xb8,0x00,0x10,0x08,0x05,0xff,0xe5,0x91,0x88,0x00,0x05,
+       0xff,0xe5,0x91,0xa8,0x00,0xcf,0x86,0xe5,0x02,0x01,0xd4,0x80,0xd3,0x40,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0x92,0xa2,0x00,0x05,0xff,0xe5,0x93,0xb6,0x00,
+       0x10,0x08,0x05,0xff,0xe5,0x94,0x90,0x00,0x05,0xff,0xe5,0x95,0x93,0x00,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe5,0x95,0xa3,0x00,0x05,0xff,0xe5,0x96,0x84,0x00,0x10,0x08,
+       0x05,0xff,0xe5,0x96,0x84,0x00,0x05,0xff,0xe5,0x96,0x99,0x00,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe5,0x96,0xab,0x00,0x05,0xff,0xe5,0x96,0xb3,0x00,0x10,0x08,
+       0x05,0xff,0xe5,0x97,0x82,0x00,0x05,0xff,0xe5,0x9c,0x96,0x00,0xd1,0x10,0x10,0x08,
+       0x05,0xff,0xe5,0x98,0x86,0x00,0x05,0xff,0xe5,0x9c,0x97,0x00,0x10,0x08,0x05,0xff,
+       0xe5,0x99,0x91,0x00,0x05,0xff,0xe5,0x99,0xb4,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe5,0x88,0x87,0x00,0x05,0xff,0xe5,0xa3,0xae,0x00,0x10,0x08,
+       0x05,0xff,0xe5,0x9f,0x8e,0x00,0x05,0xff,0xe5,0x9f,0xb4,0x00,0xd1,0x10,0x10,0x08,
+       0x05,0xff,0xe5,0xa0,0x8d,0x00,0x05,0xff,0xe5,0x9e,0x8b,0x00,0x10,0x08,0x05,0xff,
+       0xe5,0xa0,0xb2,0x00,0x05,0xff,0xe5,0xa0,0xb1,0x00,0xd2,0x21,0xd1,0x11,0x10,0x08,
+       0x05,0xff,0xe5,0xa2,0xac,0x00,0x05,0xff,0xf0,0xa1,0x93,0xa4,0x00,0x10,0x08,0x05,
+       0xff,0xe5,0xa3,0xb2,0x00,0x05,0xff,0xe5,0xa3,0xb7,0x00,0xd1,0x10,0x10,0x08,0x05,
+       0xff,0xe5,0xa4,0x86,0x00,0x05,0xff,0xe5,0xa4,0x9a,0x00,0x10,0x08,0x05,0xff,0xe5,
+       0xa4,0xa2,0x00,0x05,0xff,0xe5,0xa5,0xa2,0x00,0xd4,0x7b,0xd3,0x42,0xd2,0x22,0xd1,
+       0x12,0x10,0x09,0x05,0xff,0xf0,0xa1,0x9a,0xa8,0x00,0x05,0xff,0xf0,0xa1,0x9b,0xaa,
+       0x00,0x10,0x08,0x05,0xff,0xe5,0xa7,0xac,0x00,0x05,0xff,0xe5,0xa8,0x9b,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe5,0xa8,0xa7,0x00,0x05,0xff,0xe5,0xa7,0x98,0x00,0x10,
+       0x08,0x05,0xff,0xe5,0xa9,0xa6,0x00,0x05,0xff,0xe3,0x9b,0xae,0x00,0xd2,0x18,0x91,
+       0x10,0x10,0x08,0x05,0xff,0xe3,0x9b,0xbc,0x00,0x05,0xff,0xe5,0xac,0x88,0x00,0x05,
+       0xff,0xe5,0xac,0xbe,0x00,0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa1,0xa7,0x88,0x00,
+       0x05,0xff,0xe5,0xaf,0x83,0x00,0x10,0x08,0x05,0xff,0xe5,0xaf,0x98,0x00,0x05,0xff,
+       0xe5,0xaf,0xa7,0x00,0xd3,0x41,0xd2,0x21,0xd1,0x11,0x10,0x08,0x05,0xff,0xe5,0xaf,
+       0xb3,0x00,0x05,0xff,0xf0,0xa1,0xac,0x98,0x00,0x10,0x08,0x05,0xff,0xe5,0xaf,0xbf,
+       0x00,0x05,0xff,0xe5,0xb0,0x86,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0xbd,0x93,
+       0x00,0x05,0xff,0xe5,0xb0,0xa2,0x00,0x10,0x08,0x05,0xff,0xe3,0x9e,0x81,0x00,0x05,
+       0xff,0xe5,0xb1,0xa0,0x00,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0xb1,0xae,
+       0x00,0x05,0xff,0xe5,0xb3,0x80,0x00,0x10,0x08,0x05,0xff,0xe5,0xb2,0x8d,0x00,0x05,
+       0xff,0xf0,0xa1,0xb7,0xa4,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe5,0xb5,0x83,0x00,
+       0x05,0xff,0xf0,0xa1,0xb7,0xa6,0x00,0x10,0x08,0x05,0xff,0xe5,0xb5,0xae,0x00,0x05,
+       0xff,0xe5,0xb5,0xab,0x00,0xe0,0x04,0x02,0xcf,0x86,0xd5,0xfe,0xd4,0x82,0xd3,0x40,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0xb5,0xbc,0x00,0x05,0xff,0xe5,0xb7,
+       0xa1,0x00,0x10,0x08,0x05,0xff,0xe5,0xb7,0xa2,0x00,0x05,0xff,0xe3,0xa0,0xaf,0x00,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0xb7,0xbd,0x00,0x05,0xff,0xe5,0xb8,0xa8,0x00,
+       0x10,0x08,0x05,0xff,0xe5,0xb8,0xbd,0x00,0x05,0xff,0xe5,0xb9,0xa9,0x00,0xd2,0x21,
+       0xd1,0x11,0x10,0x08,0x05,0xff,0xe3,0xa1,0xa2,0x00,0x05,0xff,0xf0,0xa2,0x86,0x83,
+       0x00,0x10,0x08,0x05,0xff,0xe3,0xa1,0xbc,0x00,0x05,0xff,0xe5,0xba,0xb0,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe5,0xba,0xb3,0x00,0x05,0xff,0xe5,0xba,0xb6,0x00,0x10,
+       0x08,0x05,0xff,0xe5,0xbb,0x8a,0x00,0x05,0xff,0xf0,0xaa,0x8e,0x92,0x00,0xd3,0x3b,
+       0xd2,0x22,0xd1,0x11,0x10,0x08,0x05,0xff,0xe5,0xbb,0xbe,0x00,0x05,0xff,0xf0,0xa2,
+       0x8c,0xb1,0x00,0x10,0x09,0x05,0xff,0xf0,0xa2,0x8c,0xb1,0x00,0x05,0xff,0xe8,0x88,
+       0x81,0x00,0x51,0x08,0x05,0xff,0xe5,0xbc,0xa2,0x00,0x10,0x08,0x05,0xff,0xe3,0xa3,
+       0x87,0x00,0x05,0xff,0xf0,0xa3,0x8a,0xb8,0x00,0xd2,0x21,0xd1,0x11,0x10,0x09,0x05,
+       0xff,0xf0,0xa6,0x87,0x9a,0x00,0x05,0xff,0xe5,0xbd,0xa2,0x00,0x10,0x08,0x05,0xff,
+       0xe5,0xbd,0xab,0x00,0x05,0xff,0xe3,0xa3,0xa3,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,
+       0xe5,0xbe,0x9a,0x00,0x05,0xff,0xe5,0xbf,0x8d,0x00,0x10,0x08,0x05,0xff,0xe5,0xbf,
+       0x97,0x00,0x05,0xff,0xe5,0xbf,0xb9,0x00,0xd4,0x81,0xd3,0x41,0xd2,0x20,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe6,0x82,0x81,0x00,0x05,0xff,0xe3,0xa4,0xba,0x00,0x10,0x08,
+       0x05,0xff,0xe3,0xa4,0x9c,0x00,0x05,0xff,0xe6,0x82,0x94,0x00,0xd1,0x11,0x10,0x09,
+       0x05,0xff,0xf0,0xa2,0x9b,0x94,0x00,0x05,0xff,0xe6,0x83,0x87,0x00,0x10,0x08,0x05,
+       0xff,0xe6,0x85,0x88,0x00,0x05,0xff,0xe6,0x85,0x8c,0x00,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x05,0xff,0xe6,0x85,0x8e,0x00,0x05,0xff,0xe6,0x85,0x8c,0x00,0x10,0x08,0x05,
+       0xff,0xe6,0x85,0xba,0x00,0x05,0xff,0xe6,0x86,0x8e,0x00,0xd1,0x10,0x10,0x08,0x05,
+       0xff,0xe6,0x86,0xb2,0x00,0x05,0xff,0xe6,0x86,0xa4,0x00,0x10,0x08,0x05,0xff,0xe6,
+       0x86,0xaf,0x00,0x05,0xff,0xe6,0x87,0x9e,0x00,0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,
+       0x08,0x05,0xff,0xe6,0x87,0xb2,0x00,0x05,0xff,0xe6,0x87,0xb6,0x00,0x10,0x08,0x05,
+       0xff,0xe6,0x88,0x90,0x00,0x05,0xff,0xe6,0x88,0x9b,0x00,0xd1,0x10,0x10,0x08,0x05,
+       0xff,0xe6,0x89,0x9d,0x00,0x05,0xff,0xe6,0x8a,0xb1,0x00,0x10,0x08,0x05,0xff,0xe6,
+       0x8b,0x94,0x00,0x05,0xff,0xe6,0x8d,0x90,0x00,0xd2,0x21,0xd1,0x11,0x10,0x09,0x05,
+       0xff,0xf0,0xa2,0xac,0x8c,0x00,0x05,0xff,0xe6,0x8c,0xbd,0x00,0x10,0x08,0x05,0xff,
+       0xe6,0x8b,0xbc,0x00,0x05,0xff,0xe6,0x8d,0xa8,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,
+       0xe6,0x8e,0x83,0x00,0x05,0xff,0xe6,0x8f,0xa4,0x00,0x10,0x09,0x05,0xff,0xf0,0xa2,
+       0xaf,0xb1,0x00,0x05,0xff,0xe6,0x90,0xa2,0x00,0xcf,0x86,0xe5,0x03,0x01,0xd4,0x81,
+       0xd3,0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x8f,0x85,0x00,0x05,0xff,
+       0xe6,0x8e,0xa9,0x00,0x10,0x08,0x05,0xff,0xe3,0xa8,0xae,0x00,0x05,0xff,0xe6,0x91,
+       0xa9,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x91,0xbe,0x00,0x05,0xff,0xe6,0x92,
+       0x9d,0x00,0x10,0x08,0x05,0xff,0xe6,0x91,0xb7,0x00,0x05,0xff,0xe3,0xa9,0xac,0x00,
+       0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x95,0x8f,0x00,0x05,0xff,0xe6,0x95,
+       0xac,0x00,0x10,0x09,0x05,0xff,0xf0,0xa3,0x80,0x8a,0x00,0x05,0xff,0xe6,0x97,0xa3,
+       0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x9b,0xb8,0x00,0x05,0xff,0xe6,0x99,0x89,
+       0x00,0x10,0x08,0x05,0xff,0xe3,0xac,0x99,0x00,0x05,0xff,0xe6,0x9a,0x91,0x00,0xd3,
+       0x40,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe3,0xac,0x88,0x00,0x05,0xff,0xe3,
+       0xab,0xa4,0x00,0x10,0x08,0x05,0xff,0xe5,0x86,0x92,0x00,0x05,0xff,0xe5,0x86,0x95,
+       0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x9c,0x80,0x00,0x05,0xff,0xe6,0x9a,0x9c,
+       0x00,0x10,0x08,0x05,0xff,0xe8,0x82,0xad,0x00,0x05,0xff,0xe4,0x8f,0x99,0x00,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x9c,0x97,0x00,0x05,0xff,0xe6,0x9c,0x9b,
+       0x00,0x10,0x08,0x05,0xff,0xe6,0x9c,0xa1,0x00,0x05,0xff,0xe6,0x9d,0x9e,0x00,0xd1,
+       0x11,0x10,0x08,0x05,0xff,0xe6,0x9d,0x93,0x00,0x05,0xff,0xf0,0xa3,0x8f,0x83,0x00,
+       0x10,0x08,0x05,0xff,0xe3,0xad,0x89,0x00,0x05,0xff,0xe6,0x9f,0xba,0x00,0xd4,0x82,
+       0xd3,0x41,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0x9e,0x85,0x00,0x05,0xff,
+       0xe6,0xa1,0x92,0x00,0x10,0x08,0x05,0xff,0xe6,0xa2,0x85,0x00,0x05,0xff,0xf0,0xa3,
+       0x91,0xad,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xa2,0x8e,0x00,0x05,0xff,0xe6,
+       0xa0,0x9f,0x00,0x10,0x08,0x05,0xff,0xe6,0xa4,0x94,0x00,0x05,0xff,0xe3,0xae,0x9d,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xa5,0x82,0x00,0x05,0xff,0xe6,
+       0xa6,0xa3,0x00,0x10,0x08,0x05,0xff,0xe6,0xa7,0xaa,0x00,0x05,0xff,0xe6,0xaa,0xa8,
+       0x00,0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa3,0x9a,0xa3,0x00,0x05,0xff,0xe6,0xab,
+       0x9b,0x00,0x10,0x08,0x05,0xff,0xe3,0xb0,0x98,0x00,0x05,0xff,0xe6,0xac,0xa1,0x00,
+       0xd3,0x42,0xd2,0x21,0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa3,0xa2,0xa7,0x00,0x05,
+       0xff,0xe6,0xad,0x94,0x00,0x10,0x08,0x05,0xff,0xe3,0xb1,0x8e,0x00,0x05,0xff,0xe6,
+       0xad,0xb2,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xae,0x9f,0x00,0x05,0xff,0xe6,
+       0xae,0xba,0x00,0x10,0x08,0x05,0xff,0xe6,0xae,0xbb,0x00,0x05,0xff,0xf0,0xa3,0xaa,
+       0x8d,0x00,0xd2,0x23,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa1,0xb4,0x8b,0x00,0x05,
+       0xff,0xf0,0xa3,0xab,0xba,0x00,0x10,0x08,0x05,0xff,0xe6,0xb1,0x8e,0x00,0x05,0xff,
+       0xf0,0xa3,0xb2,0xbc,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xb2,0xbf,0x00,0x05,
+       0xff,0xe6,0xb3,0x8d,0x00,0x10,0x08,0x05,0xff,0xe6,0xb1,0xa7,0x00,0x05,0xff,0xe6,
+       0xb4,0x96,0x00,0xe1,0x1d,0x04,0xe0,0x0c,0x02,0xcf,0x86,0xe5,0x08,0x01,0xd4,0x82,
+       0xd3,0x41,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xb4,0xbe,0x00,0x05,0xff,
+       0xe6,0xb5,0xb7,0x00,0x10,0x08,0x05,0xff,0xe6,0xb5,0x81,0x00,0x05,0xff,0xe6,0xb5,
+       0xa9,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xb5,0xb8,0x00,0x05,0xff,0xe6,0xb6,
+       0x85,0x00,0x10,0x09,0x05,0xff,0xf0,0xa3,0xb4,0x9e,0x00,0x05,0xff,0xe6,0xb4,0xb4,
+       0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe6,0xb8,0xaf,0x00,0x05,0xff,0xe6,
+       0xb9,0xae,0x00,0x10,0x08,0x05,0xff,0xe3,0xb4,0xb3,0x00,0x05,0xff,0xe6,0xbb,0x8b,
+       0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe6,0xbb,0x87,0x00,0x05,0xff,0xf0,0xa3,0xbb,
+       0x91,0x00,0x10,0x08,0x05,0xff,0xe6,0xb7,0xb9,0x00,0x05,0xff,0xe6,0xbd,0xae,0x00,
+       0xd3,0x42,0xd2,0x22,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa3,0xbd,0x9e,0x00,0x05,
+       0xff,0xf0,0xa3,0xbe,0x8e,0x00,0x10,0x08,0x05,0xff,0xe6,0xbf,0x86,0x00,0x05,0xff,
+       0xe7,0x80,0xb9,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0x80,0x9e,0x00,0x05,0xff,
+       0xe7,0x80,0x9b,0x00,0x10,0x08,0x05,0xff,0xe3,0xb6,0x96,0x00,0x05,0xff,0xe7,0x81,
+       0x8a,0x00,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0x81,0xbd,0x00,0x05,0xff,
+       0xe7,0x81,0xb7,0x00,0x10,0x08,0x05,0xff,0xe7,0x82,0xad,0x00,0x05,0xff,0xf0,0xa0,
+       0x94,0xa5,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x85,0x85,0x00,0x05,0xff,0xf0,
+       0xa4,0x89,0xa3,0x00,0x10,0x08,0x05,0xff,0xe7,0x86,0x9c,0x00,0x05,0xff,0xf0,0xa4,
+       0x8e,0xab,0x00,0xd4,0x7b,0xd3,0x43,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,
+       0x88,0xa8,0x00,0x05,0xff,0xe7,0x88,0xb5,0x00,0x10,0x08,0x05,0xff,0xe7,0x89,0x90,
+       0x00,0x05,0xff,0xf0,0xa4,0x98,0x88,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0x8a,
+       0x80,0x00,0x05,0xff,0xe7,0x8a,0x95,0x00,0x10,0x09,0x05,0xff,0xf0,0xa4,0x9c,0xb5,
+       0x00,0x05,0xff,0xf0,0xa4,0xa0,0x94,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,
+       0xe7,0x8d,0xba,0x00,0x05,0xff,0xe7,0x8e,0x8b,0x00,0x10,0x08,0x05,0xff,0xe3,0xba,
+       0xac,0x00,0x05,0xff,0xe7,0x8e,0xa5,0x00,0x51,0x08,0x05,0xff,0xe3,0xba,0xb8,0x00,
+       0x10,0x08,0x05,0xff,0xe7,0x91,0x87,0x00,0x05,0xff,0xe7,0x91,0x9c,0x00,0xd3,0x42,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0x91,0xb1,0x00,0x05,0xff,0xe7,0x92,
+       0x85,0x00,0x10,0x08,0x05,0xff,0xe7,0x93,0x8a,0x00,0x05,0xff,0xe3,0xbc,0x9b,0x00,
+       0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x94,0xa4,0x00,0x05,0xff,0xf0,0xa4,0xb0,0xb6,
+       0x00,0x10,0x08,0x05,0xff,0xe7,0x94,0xbe,0x00,0x05,0xff,0xf0,0xa4,0xb2,0x92,0x00,
+       0xd2,0x22,0xd1,0x11,0x10,0x08,0x05,0xff,0xe7,0x95,0xb0,0x00,0x05,0xff,0xf0,0xa2,
+       0x86,0x9f,0x00,0x10,0x08,0x05,0xff,0xe7,0x98,0x90,0x00,0x05,0xff,0xf0,0xa4,0xbe,
+       0xa1,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa4,0xbe,0xb8,0x00,0x05,0xff,0xf0,
+       0xa5,0x81,0x84,0x00,0x10,0x08,0x05,0xff,0xe3,0xbf,0xbc,0x00,0x05,0xff,0xe4,0x80,
+       0x88,0x00,0xcf,0x86,0xe5,0x04,0x01,0xd4,0x7d,0xd3,0x3c,0xd2,0x23,0xd1,0x11,0x10,
+       0x08,0x05,0xff,0xe7,0x9b,0xb4,0x00,0x05,0xff,0xf0,0xa5,0x83,0xb3,0x00,0x10,0x09,
+       0x05,0xff,0xf0,0xa5,0x83,0xb2,0x00,0x05,0xff,0xf0,0xa5,0x84,0x99,0x00,0x91,0x11,
+       0x10,0x09,0x05,0xff,0xf0,0xa5,0x84,0xb3,0x00,0x05,0xff,0xe7,0x9c,0x9e,0x00,0x05,
+       0xff,0xe7,0x9c,0x9f,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0x9d,0x8a,
+       0x00,0x05,0xff,0xe4,0x80,0xb9,0x00,0x10,0x08,0x05,0xff,0xe7,0x9e,0x8b,0x00,0x05,
+       0xff,0xe4,0x81,0x86,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe4,0x82,0x96,0x00,0x05,
+       0xff,0xf0,0xa5,0x90,0x9d,0x00,0x10,0x08,0x05,0xff,0xe7,0xa1,0x8e,0x00,0x05,0xff,
+       0xe7,0xa2,0x8c,0x00,0xd3,0x43,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0xa3,
+       0x8c,0x00,0x05,0xff,0xe4,0x83,0xa3,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0x98,0xa6,
+       0x00,0x05,0xff,0xe7,0xa5,0x96,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0x9a,
+       0x9a,0x00,0x05,0xff,0xf0,0xa5,0x9b,0x85,0x00,0x10,0x08,0x05,0xff,0xe7,0xa6,0x8f,
+       0x00,0x05,0xff,0xe7,0xa7,0xab,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe4,
+       0x84,0xaf,0x00,0x05,0xff,0xe7,0xa9,0x80,0x00,0x10,0x08,0x05,0xff,0xe7,0xa9,0x8a,
+       0x00,0x05,0xff,0xe7,0xa9,0x8f,0x00,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa5,0xa5,
+       0xbc,0x00,0x05,0xff,0xf0,0xa5,0xaa,0xa7,0x00,0x10,0x09,0x05,0xff,0xf0,0xa5,0xaa,
+       0xa7,0x00,0x05,0xff,0xe7,0xab,0xae,0x00,0xd4,0x83,0xd3,0x42,0xd2,0x21,0xd1,0x11,
+       0x10,0x08,0x05,0xff,0xe4,0x88,0x82,0x00,0x05,0xff,0xf0,0xa5,0xae,0xab,0x00,0x10,
+       0x08,0x05,0xff,0xe7,0xaf,0x86,0x00,0x05,0xff,0xe7,0xaf,0x89,0x00,0xd1,0x11,0x10,
+       0x08,0x05,0xff,0xe4,0x88,0xa7,0x00,0x05,0xff,0xf0,0xa5,0xb2,0x80,0x00,0x10,0x08,
+       0x05,0xff,0xe7,0xb3,0x92,0x00,0x05,0xff,0xe4,0x8a,0xa0,0x00,0xd2,0x21,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe7,0xb3,0xa8,0x00,0x05,0xff,0xe7,0xb3,0xa3,0x00,0x10,0x08,
+       0x05,0xff,0xe7,0xb4,0x80,0x00,0x05,0xff,0xf0,0xa5,0xbe,0x86,0x00,0xd1,0x10,0x10,
+       0x08,0x05,0xff,0xe7,0xb5,0xa3,0x00,0x05,0xff,0xe4,0x8c,0x81,0x00,0x10,0x08,0x05,
+       0xff,0xe7,0xb7,0x87,0x00,0x05,0xff,0xe7,0xb8,0x82,0x00,0xd3,0x44,0xd2,0x22,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe7,0xb9,0x85,0x00,0x05,0xff,0xe4,0x8c,0xb4,0x00,0x10,
+       0x09,0x05,0xff,0xf0,0xa6,0x88,0xa8,0x00,0x05,0xff,0xf0,0xa6,0x89,0x87,0x00,0xd1,
+       0x11,0x10,0x08,0x05,0xff,0xe4,0x8d,0x99,0x00,0x05,0xff,0xf0,0xa6,0x8b,0x99,0x00,
+       0x10,0x08,0x05,0xff,0xe7,0xbd,0xba,0x00,0x05,0xff,0xf0,0xa6,0x8c,0xbe,0x00,0xd2,
+       0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe7,0xbe,0x95,0x00,0x05,0xff,0xe7,0xbf,0xba,
+       0x00,0x10,0x08,0x05,0xff,0xe8,0x80,0x85,0x00,0x05,0xff,0xf0,0xa6,0x93,0x9a,0x00,
+       0xd1,0x11,0x10,0x09,0x05,0xff,0xf0,0xa6,0x94,0xa3,0x00,0x05,0xff,0xe8,0x81,0xa0,
+       0x00,0x10,0x09,0x05,0xff,0xf0,0xa6,0x96,0xa8,0x00,0x05,0xff,0xe8,0x81,0xb0,0x00,
+       0xe0,0x11,0x02,0xcf,0x86,0xe5,0x07,0x01,0xd4,0x85,0xd3,0x42,0xd2,0x21,0xd1,0x11,
+       0x10,0x09,0x05,0xff,0xf0,0xa3,0x8d,0x9f,0x00,0x05,0xff,0xe4,0x8f,0x95,0x00,0x10,
+       0x08,0x05,0xff,0xe8,0x82,0xb2,0x00,0x05,0xff,0xe8,0x84,0x83,0x00,0xd1,0x10,0x10,
+       0x08,0x05,0xff,0xe4,0x90,0x8b,0x00,0x05,0xff,0xe8,0x84,0xbe,0x00,0x10,0x08,0x05,
+       0xff,0xe5,0xaa,0xb5,0x00,0x05,0xff,0xf0,0xa6,0x9e,0xa7,0x00,0xd2,0x23,0xd1,0x12,
+       0x10,0x09,0x05,0xff,0xf0,0xa6,0x9e,0xb5,0x00,0x05,0xff,0xf0,0xa3,0x8e,0x93,0x00,
+       0x10,0x09,0x05,0xff,0xf0,0xa3,0x8e,0x9c,0x00,0x05,0xff,0xe8,0x88,0x81,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe8,0x88,0x84,0x00,0x05,0xff,0xe8,0xbe,0x9e,0x00,0x10,
+       0x08,0x05,0xff,0xe4,0x91,0xab,0x00,0x05,0xff,0xe8,0x8a,0x91,0x00,0xd3,0x41,0xd2,
+       0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x8a,0x8b,0x00,0x05,0xff,0xe8,0x8a,0x9d,
+       0x00,0x10,0x08,0x05,0xff,0xe5,0x8a,0xb3,0x00,0x05,0xff,0xe8,0x8a,0xb1,0x00,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe8,0x8a,0xb3,0x00,0x05,0xff,0xe8,0x8a,0xbd,0x00,0x10,
+       0x08,0x05,0xff,0xe8,0x8b,0xa6,0x00,0x05,0xff,0xf0,0xa6,0xac,0xbc,0x00,0xd2,0x20,
+       0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x8b,0xa5,0x00,0x05,0xff,0xe8,0x8c,0x9d,0x00,
+       0x10,0x08,0x05,0xff,0xe8,0x8d,0xa3,0x00,0x05,0xff,0xe8,0x8e,0xad,0x00,0xd1,0x10,
+       0x10,0x08,0x05,0xff,0xe8,0x8c,0xa3,0x00,0x05,0xff,0xe8,0x8e,0xbd,0x00,0x10,0x08,
+       0x05,0xff,0xe8,0x8f,0xa7,0x00,0x05,0xff,0xe8,0x91,0x97,0x00,0xd4,0x85,0xd3,0x43,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x8d,0x93,0x00,0x05,0xff,0xe8,0x8f,
+       0x8a,0x00,0x10,0x08,0x05,0xff,0xe8,0x8f,0x8c,0x00,0x05,0xff,0xe8,0x8f,0x9c,0x00,
+       0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa6,0xb0,0xb6,0x00,0x05,0xff,0xf0,0xa6,0xb5,
+       0xab,0x00,0x10,0x09,0x05,0xff,0xf0,0xa6,0xb3,0x95,0x00,0x05,0xff,0xe4,0x94,0xab,
+       0x00,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x93,0xb1,0x00,0x05,0xff,0xe8,
+       0x93,0xb3,0x00,0x10,0x08,0x05,0xff,0xe8,0x94,0x96,0x00,0x05,0xff,0xf0,0xa7,0x8f,
+       0x8a,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe8,0x95,0xa4,0x00,0x05,0xff,0xf0,0xa6,
+       0xbc,0xac,0x00,0x10,0x08,0x05,0xff,0xe4,0x95,0x9d,0x00,0x05,0xff,0xe4,0x95,0xa1,
+       0x00,0xd3,0x42,0xd2,0x22,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa6,0xbe,0xb1,0x00,
+       0x05,0xff,0xf0,0xa7,0x83,0x92,0x00,0x10,0x08,0x05,0xff,0xe4,0x95,0xab,0x00,0x05,
+       0xff,0xe8,0x99,0x90,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x99,0x9c,0x00,0x05,
+       0xff,0xe8,0x99,0xa7,0x00,0x10,0x08,0x05,0xff,0xe8,0x99,0xa9,0x00,0x05,0xff,0xe8,
+       0x9a,0xa9,0x00,0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9a,0x88,0x00,0x05,
+       0xff,0xe8,0x9c,0x8e,0x00,0x10,0x08,0x05,0xff,0xe8,0x9b,0xa2,0x00,0x05,0xff,0xe8,
+       0x9d,0xb9,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe8,0x9c,0xa8,0x00,0x05,0xff,0xe8,
+       0x9d,0xab,0x00,0x10,0x08,0x05,0xff,0xe8,0x9e,0x86,0x00,0x05,0xff,0xe4,0x97,0x97,
+       0x00,0xcf,0x86,0xe5,0x08,0x01,0xd4,0x83,0xd3,0x41,0xd2,0x20,0xd1,0x10,0x10,0x08,
+       0x05,0xff,0xe8,0x9f,0xa1,0x00,0x05,0xff,0xe8,0xa0,0x81,0x00,0x10,0x08,0x05,0xff,
+       0xe4,0x97,0xb9,0x00,0x05,0xff,0xe8,0xa1,0xa0,0x00,0xd1,0x11,0x10,0x08,0x05,0xff,
+       0xe8,0xa1,0xa3,0x00,0x05,0xff,0xf0,0xa7,0x99,0xa7,0x00,0x10,0x08,0x05,0xff,0xe8,
+       0xa3,0x97,0x00,0x05,0xff,0xe8,0xa3,0x9e,0x00,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,
+       0xff,0xe4,0x98,0xb5,0x00,0x05,0xff,0xe8,0xa3,0xba,0x00,0x10,0x08,0x05,0xff,0xe3,
+       0x92,0xbb,0x00,0x05,0xff,0xf0,0xa7,0xa2,0xae,0x00,0xd1,0x11,0x10,0x09,0x05,0xff,
+       0xf0,0xa7,0xa5,0xa6,0x00,0x05,0xff,0xe4,0x9a,0xbe,0x00,0x10,0x08,0x05,0xff,0xe4,
+       0x9b,0x87,0x00,0x05,0xff,0xe8,0xaa,0xa0,0x00,0xd3,0x41,0xd2,0x21,0xd1,0x10,0x10,
+       0x08,0x05,0xff,0xe8,0xab,0xad,0x00,0x05,0xff,0xe8,0xae,0x8a,0x00,0x10,0x08,0x05,
+       0xff,0xe8,0xb1,0x95,0x00,0x05,0xff,0xf0,0xa7,0xb2,0xa8,0x00,0xd1,0x10,0x10,0x08,
+       0x05,0xff,0xe8,0xb2,0xab,0x00,0x05,0xff,0xe8,0xb3,0x81,0x00,0x10,0x08,0x05,0xff,
+       0xe8,0xb4,0x9b,0x00,0x05,0xff,0xe8,0xb5,0xb7,0x00,0xd2,0x22,0xd1,0x12,0x10,0x09,
+       0x05,0xff,0xf0,0xa7,0xbc,0xaf,0x00,0x05,0xff,0xf0,0xa0,0xa0,0x84,0x00,0x10,0x08,
+       0x05,0xff,0xe8,0xb7,0x8b,0x00,0x05,0xff,0xe8,0xb6,0xbc,0x00,0xd1,0x11,0x10,0x08,
+       0x05,0xff,0xe8,0xb7,0xb0,0x00,0x05,0xff,0xf0,0xa0,0xa3,0x9e,0x00,0x10,0x08,0x05,
+       0xff,0xe8,0xbb,0x94,0x00,0x05,0xff,0xe8,0xbc,0xb8,0x00,0xd4,0x84,0xd3,0x43,0xd2,
+       0x22,0xd1,0x12,0x10,0x09,0x05,0xff,0xf0,0xa8,0x97,0x92,0x00,0x05,0xff,0xf0,0xa8,
+       0x97,0xad,0x00,0x10,0x08,0x05,0xff,0xe9,0x82,0x94,0x00,0x05,0xff,0xe9,0x83,0xb1,
+       0x00,0xd1,0x11,0x10,0x08,0x05,0xff,0xe9,0x84,0x91,0x00,0x05,0xff,0xf0,0xa8,0x9c,
+       0xae,0x00,0x10,0x08,0x05,0xff,0xe9,0x84,0x9b,0x00,0x05,0xff,0xe9,0x88,0xb8,0x00,
+       0xd2,0x20,0xd1,0x10,0x10,0x08,0x05,0xff,0xe9,0x8b,0x97,0x00,0x05,0xff,0xe9,0x8b,
+       0x98,0x00,0x10,0x08,0x05,0xff,0xe9,0x89,0xbc,0x00,0x05,0xff,0xe9,0x8f,0xb9,0x00,
+       0xd1,0x11,0x10,0x08,0x05,0xff,0xe9,0x90,0x95,0x00,0x05,0xff,0xf0,0xa8,0xaf,0xba,
+       0x00,0x10,0x08,0x05,0xff,0xe9,0x96,0x8b,0x00,0x05,0xff,0xe4,0xa6,0x95,0x00,0xd3,
+       0x43,0xd2,0x21,0xd1,0x11,0x10,0x08,0x05,0xff,0xe9,0x96,0xb7,0x00,0x05,0xff,0xf0,
+       0xa8,0xb5,0xb7,0x00,0x10,0x08,0x05,0xff,0xe4,0xa7,0xa6,0x00,0x05,0xff,0xe9,0x9b,
+       0x83,0x00,0xd1,0x10,0x10,0x08,0x05,0xff,0xe5,0xb6,0xb2,0x00,0x05,0xff,0xe9,0x9c,
+       0xa3,0x00,0x10,0x09,0x05,0xff,0xf0,0xa9,0x85,0x85,0x00,0x05,0xff,0xf0,0xa9,0x88,
+       0x9a,0x00,0xd2,0x21,0xd1,0x10,0x10,0x08,0x05,0xff,0xe4,0xa9,0xae,0x00,0x05,0xff,
+       0xe4,0xa9,0xb6,0x00,0x10,0x08,0x05,0xff,0xe9,0x9f,0xa0,0x00,0x05,0xff,0xf0,0xa9,
+       0x90,0x8a,0x00,0x91,0x11,0x10,0x08,0x05,0xff,0xe4,0xaa,0xb2,0x00,0x05,0xff,0xf0,
+       0xa9,0x92,0x96,0x00,0x05,0xff,0xe9,0xa0,0x8b,0x00,0xe2,0x10,0x01,0xe1,0x09,0x01,
+       0xe0,0x02,0x01,0xcf,0x86,0x95,0xfb,0xd4,0x82,0xd3,0x41,0xd2,0x21,0xd1,0x11,0x10,
+       0x08,0x05,0xff,0xe9,0xa0,0xa9,0x00,0x05,0xff,0xf0,0xa9,0x96,0xb6,0x00,0x10,0x08,
+       0x05,0xff,0xe9,0xa3,0xa2,0x00,0x05,0xff,0xe4,0xac,0xb3,0x00,0xd1,0x10,0x10,0x08,
+       0x05,0xff,0xe9,0xa4,0xa9,0x00,0x05,0xff,0xe9,0xa6,0xa7,0x00,0x10,0x08,0x05,0xff,
+       0xe9,0xa7,0x82,0x00,0x05,0xff,0xe9,0xa7,0xbe,0x00,0xd2,0x21,0xd1,0x11,0x10,0x08,
+       0x05,0xff,0xe4,0xaf,0x8e,0x00,0x05,0xff,0xf0,0xa9,0xac,0xb0,0x00,0x10,0x08,0x05,
+       0xff,0xe9,0xac,0x92,0x00,0x05,0xff,0xe9,0xb1,0x80,0x00,0xd1,0x10,0x10,0x08,0x05,
+       0xff,0xe9,0xb3,0xbd,0x00,0x05,0xff,0xe4,0xb3,0x8e,0x00,0x10,0x08,0x05,0xff,0xe4,
+       0xb3,0xad,0x00,0x05,0xff,0xe9,0xb5,0xa7,0x00,0xd3,0x44,0xd2,0x23,0xd1,0x11,0x10,
+       0x09,0x05,0xff,0xf0,0xaa,0x83,0x8e,0x00,0x05,0xff,0xe4,0xb3,0xb8,0x00,0x10,0x09,
+       0x05,0xff,0xf0,0xaa,0x84,0x85,0x00,0x05,0xff,0xf0,0xaa,0x88,0x8e,0x00,0xd1,0x11,
+       0x10,0x09,0x05,0xff,0xf0,0xaa,0x8a,0x91,0x00,0x05,0xff,0xe9,0xba,0xbb,0x00,0x10,
+       0x08,0x05,0xff,0xe4,0xb5,0x96,0x00,0x05,0xff,0xe9,0xbb,0xb9,0x00,0xd2,0x20,0xd1,
+       0x10,0x10,0x08,0x05,0xff,0xe9,0xbb,0xbe,0x00,0x05,0xff,0xe9,0xbc,0x85,0x00,0x10,
+       0x08,0x05,0xff,0xe9,0xbc,0x8f,0x00,0x05,0xff,0xe9,0xbc,0x96,0x00,0x91,0x11,0x10,
+       0x08,0x05,0xff,0xe9,0xbc,0xbb,0x00,0x05,0xff,0xf0,0xaa,0x98,0x80,0x00,0x00,0x00,
+       0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xcf,0x06,0x00,0x00,0xd3,0x06,
+       0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,
+       0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,
+       0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xd3,0x08,
+       0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd1,0x08,
+       0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,
+       0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,
+       0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,0x53,0x04,
+       0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xcf,0x86,0xd5,0xc0,
+       0xd4,0x60,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,
+       0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,
+       0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,
+       0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,
+       0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,
+       0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,
+       0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,
+       0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,
+       0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,
+       0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,
+       0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,
+       0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xd4,0x60,
+       0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,
+       0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,
+       0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,
+       0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,
+       0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,
+       0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xd3,0x08,
+       0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd1,0x08,
+       0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,
+       0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,
+       0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,0x53,0x04,
+       0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xe0,0x83,0x01,0xcf,
+       0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,
+       0x86,0xcf,0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,
+       0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,
+       0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,
+       0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,
+       0x00,0x54,0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,
+       0x00,0x02,0x00,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,
+       0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,
+       0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,
+       0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,
+       0x00,0xd4,0x60,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,
+       0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,
+       0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,
+       0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,
+       0x00,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,
+       0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,
+       0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,
+       0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,
+       0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,
+       0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xcf,
+       0x86,0xd5,0xc0,0xd4,0x60,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,
+       0x86,0xcf,0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,
+       0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,
+       0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,
+       0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,
+       0x00,0x54,0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,
+       0x00,0x02,0x00,0xd3,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,
+       0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,
+       0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,
+       0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,
+       0x04,0x00,0x00,0x53,0x04,0x00,0x00,0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,
+       0x00,0xd4,0xd9,0xd3,0x81,0xd2,0x79,0xd1,0x71,0xd0,0x69,0xcf,0x86,0xd5,0x60,0xd4,
+       0x59,0xd3,0x52,0xd2,0x33,0xd1,0x2c,0xd0,0x25,0xcf,0x86,0x95,0x1e,0x94,0x19,0x93,
+       0x14,0x92,0x0f,0x91,0x0a,0x10,0x05,0x00,0xff,0x00,0x05,0xff,0x00,0x00,0xff,0x00,
+       0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x05,0xff,0x00,0xcf,0x06,0x05,0xff,
+       0x00,0xcf,0x06,0x00,0xff,0x00,0xd1,0x07,0xcf,0x06,0x07,0xff,0x00,0xd0,0x07,0xcf,
+       0x06,0x07,0xff,0x00,0xcf,0x86,0x55,0x05,0x07,0xff,0x00,0x14,0x05,0x07,0xff,0x00,
+       0x00,0xff,0x00,0xcf,0x06,0x00,0xff,0x00,0xcf,0x06,0x00,0xff,0x00,0xcf,0x06,0x00,
+       0xff,0x00,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,
+       0xcf,0x06,0x00,0x00,0xd2,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xd1,0x08,0xcf,0x86,
+       0xcf,0x06,0x00,0x00,0xd0,0x08,0xcf,0x86,0xcf,0x06,0x00,0x00,0xcf,0x86,0xd5,0x06,
+       0xcf,0x06,0x00,0x00,0xd4,0x06,0xcf,0x06,0x00,0x00,0xd3,0x06,0xcf,0x06,0x00,0x00,
+       0xd2,0x06,0xcf,0x06,0x00,0x00,0xd1,0x06,0xcf,0x06,0x00,0x00,0xd0,0x06,0xcf,0x06,
+       0x00,0x00,0xcf,0x86,0x55,0x04,0x00,0x00,0x54,0x04,0x00,0x00,0x53,0x04,0x00,0x00,
+       0x52,0x04,0x00,0x00,0x11,0x04,0x00,0x00,0x02,0x00,0xcf,0x86,0xcf,0x06,0x02,0x00,
+       0x81,0x80,0xcf,0x86,0x85,0x84,0xcf,0x86,0xcf,0x06,0x02,0x00,0x00,0x00,0x00,0x00
+};
diff --git a/lib/ext2fs/utf8n.h b/lib/ext2fs/utf8n.h
new file mode 100644 (file)
index 0000000..5f23290
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2014 SGI.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would 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.
+ *
+ */
+
+/* This code is copied from the linux kernel.  We have a userspace
+ * version here to such that hashes will match that implementation.
+ */
+
+#ifndef UTF8NORM_H
+#define UTF8NORM_H
+
+#include <stdint.h>
+#include <unistd.h>
+#include <string.h>
+
+/* Encoding a unicode version number as a single unsigned int. */
+#define UNICODE_MAJ_SHIFT              (16)
+#define UNICODE_MIN_SHIFT              (8)
+
+#define UNICODE_AGE(MAJ, MIN, REV)                     \
+       (((unsigned int)(MAJ) << UNICODE_MAJ_SHIFT) |   \
+        ((unsigned int)(MIN) << UNICODE_MIN_SHIFT) |   \
+        ((unsigned int)(REV)))
+
+/* Highest unicode version supported by the data tables. */
+extern int utf8version_is_supported(uint8_t maj, uint8_t min, uint8_t rev);
+extern int utf8version_latest(void);
+
+/*
+ * Look for the correct const struct utf8data for a unicode version.
+ * Returns NULL if the version requested is too new.
+ *
+ * Two normalization forms are supported: nfkdi and nfkdicf.
+ *
+ * nfkdi:
+ *  - Apply unicode normalization form NFKD.
+ *  - Remove any Default_Ignorable_Code_Point.
+ *
+ * nfkdicf:
+ *  - Apply unicode normalization form NFKD.
+ *  - Remove any Default_Ignorable_Code_Point.
+ *  - Apply a full casefold (C + F).
+ */
+extern const struct utf8data *utf8nfkdi(unsigned int maxage);
+extern const struct utf8data *utf8nfkdicf(unsigned int maxage);
+
+/*
+ * Determine the maximum age of any unicode character in the string.
+ * Returns 0 if only unassigned code points are present.
+ * Returns -1 if the input is not valid UTF-8.
+ */
+extern int utf8agemax(const struct utf8data *data, const char *s);
+extern int utf8nagemax(const struct utf8data *data, const char *s, size_t len);
+
+/*
+ * Determine the minimum age of any unicode character in the string.
+ * Returns 0 if any unassigned code points are present.
+ * Returns -1 if the input is not valid UTF-8.
+ */
+extern int utf8agemin(const struct utf8data *data, const char *s);
+extern int utf8nagemin(const struct utf8data *data, const char *s, size_t len);
+
+/*
+ * Determine the length of the normalized from of the string,
+ * excluding any terminating NULL byte.
+ * Returns 0 if only ignorable code points are present.
+ * Returns -1 if the input is not valid UTF-8.
+ */
+extern ssize_t utf8len(const struct utf8data *data, const char *s);
+extern ssize_t utf8nlen(const struct utf8data *data, const char *s, size_t len);
+
+/* Needed in struct utf8cursor below. */
+#define UTF8HANGULLEAF (12)
+
+/*
+ * Cursor structure used by the normalizer.
+ */
+struct utf8cursor {
+       const struct utf8data   *data;
+       const char      *s;
+       const char      *p;
+       const char      *ss;
+       const char      *sp;
+       unsigned int    len;
+       unsigned int    slen;
+       short int       ccc;
+       short int       nccc;
+       unsigned char   hangul[UTF8HANGULLEAF];
+};
+
+/*
+ * Initialize a utf8cursor to normalize a string.
+ * Returns 0 on success.
+ * Returns -1 on failure.
+ */
+extern int utf8cursor(struct utf8cursor *u8c, const struct utf8data *data,
+                     const char *s);
+extern int utf8ncursor(struct utf8cursor *u8c, const struct utf8data *data,
+                      const char *s, size_t len);
+
+/*
+ * Get the next byte in the normalization.
+ * Returns a value > 0 && < 256 on success.
+ * Returns 0 when the end of the normalization is reached.
+ * Returns -1 if the string being normalized is not valid UTF-8.
+ */
+extern int utf8byte(struct utf8cursor *u8c);
+
+#endif /* UTF8NORM_H */
index 028ae9e7ca4c798d1507c23052aabb6a7a1fa477..5949d096687b7bac5b4dd863e4281d87f59191cd 100644 (file)
@@ -29,7 +29,7 @@ The operator '+' causes the selected attributes to be added to the
 existing attributes of the files; '-' causes them to be removed; and '='
 causes them to be the only attributes that the files have.
 .PP
-The letters 'aAcCdDeijPsStTu' select the new attributes for the files:
+The letters 'aAcCdDeFijPsStTu' select the new attributes for the files:
 append only (a),
 no atime updates (A),
 compressed (c),
@@ -37,6 +37,7 @@ no copy on write (C),
 no dump (d),
 synchronous directory updates (D),
 extent format (e),
+case-insensitive directory lookups (F),
 immutable (i),
 data journalling (j),
 project hierarchy (P),
@@ -119,6 +120,11 @@ set or reset using
 although it can be displayed by
 .BR lsattr (1).
 .PP
+A directory with the 'F' attribute set indicates that all the path
+lookups inside that directory are made in a case-insensitive fashion.
+This attribute can only be changed in empty directories on file systems
+with the fname_encoding feature enabled.
+.PP
 A file with the 'i' attribute cannot be modified: it cannot be deleted or
 renamed, no link can be created to this file, most of the file's
 metadata can not be modified, and the file can not be opened in write mode.
index a5b401a741b73621fd39c43c9e820f0c71a782bc..a5d60170bdb64b0e70e61d1df136d55766678550 100644 (file)
@@ -86,7 +86,7 @@ static unsigned long sf;
 static void usage(void)
 {
        fprintf(stderr,
-               _("Usage: %s [-pRVf] [-+=aAcCdDeijPsStTu] [-v version] files...\n"),
+               _("Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"),
                program_name);
        exit(1);
 }
@@ -112,6 +112,7 @@ static const struct flags_char flags_array[] = {
        { EXT2_NOTAIL_FL, 't' },
        { EXT2_TOPDIR_FL, 'T' },
        { FS_NOCOW_FL, 'C' },
+       { EXT4_CASEFOLD_FL, 'F' },
        { 0, 0 }
 };
 
index b80b7426c43a04d3d60da3500bcccf39b0b6547b..9c23fadcec255fe526854c65380a4448c3a7c4a0 100644 (file)
@@ -377,7 +377,8 @@ static void open_device(char *device_name, ext2_filsys *fs)
 #ifdef DEBUGFS
 #include "debugfs.h"
 
-void do_freefrag(int argc, char **argv)
+void do_freefrag(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                void *infop EXT2FS_ATTR((unused)))
 #else
 int main(int argc, char *argv[])
 #endif
index a7bfdf24cd791be354f8ab47367ef4f280e81861..bbbb57ae74a99bc167e53261bf6afcefdc313562 100644 (file)
@@ -12,6 +12,15 @@ e2image \- Save critical ext2/ext3/ext4 filesystem metadata to a file
 ]
 [
 .B \-f
+.B \-b
+.I superblock
+]
+[
+.B \-B
+.I blocksize
+]
+[
+.B \-fr
 ]
 .I device
 .I image-file
@@ -167,6 +176,22 @@ the
 option will prevent analysis of problems related to hash-tree indexed
 directories.
 .PP
+Option
+.B \-b
+.I superblock
+can be used to get image from partition with broken primary superblock.
+The partition is copied as-is including broken primary superblock.
+.PP
+Option
+.B \-B
+.I blocksize
+can be used to set superblock block size. Normally, e2fsck will search
+for the superblock at various different block sizes in an attempt to find
+the appropriate blocksize. This search can be fooled in some cases.  This
+option forces e2fsck to only try locating the superblock at a particular
+blocksize. If the superblock is not found, e2fsck will terminate with a
+fatal error.
+.PP
 Note that this will work even if you substitute "/dev/hda1" for another raw
 disk image, or QCOW2 image previously created by
 .BR e2image .
@@ -217,6 +242,14 @@ This can be useful to write a qcow2 image containing all data to a
 sparse image file where it can be loop mounted, or to a disk partition.
 Note that this may not work with qcow2 images not generated by e2image.
 .PP
+Options
+.B \-b
+.I superblock
+and
+.B \-B
+.I blocksize
+can be used same way as for raw images.
+.PP
 .SH INCLUDING DATA
 Normally
 .B e2image
index 9e21d0dba35bae6d09453625a82f84ccf67ffea7..3c881feec01a7aa77ac84ae698ece3689518f253 100644 (file)
@@ -104,7 +104,8 @@ static int get_bits_from_size(size_t size)
 
 static void usage(void)
 {
-       fprintf(stderr, _("Usage: %s [ -r|Q ] [ -f ] device image-file\n"),
+       fprintf(stderr, _("Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize]"
+                         "[ -fr ] device image-file\n"),
                program_name);
        fprintf(stderr, _("       %s -I device image-file\n"), program_name);
        fprintf(stderr, _("       %s -ra  [  -cfnp  ] [ -o src_offset ] "
@@ -1267,7 +1268,8 @@ static void output_qcow2_meta_data_blocks(ext2_filsys fs, int fd)
        free_qcow2_image(img);
 }
 
-static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags)
+static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags,
+                                blk64_t superblock)
 {
        struct process_block_struct     pb;
        struct ext2_inode               inode;
@@ -1295,6 +1297,22 @@ static void write_raw_image_file(ext2_filsys fs, int fd, int type, int flags)
                }
        }
 
+       if (superblock) {
+               int j;
+
+               ext2fs_mark_block_bitmap2(meta_block_map, superblock);
+               meta_blocks_count++;
+
+               /*
+                * Mark the backup superblock descriptors
+                */
+               for (j = 0; j < fs->desc_blocks; j++) {
+                       ext2fs_mark_block_bitmap2(meta_block_map,
+                       ext2fs_descriptor_block_loc2(fs, superblock, j));
+               }
+               meta_blocks_count += fs->desc_blocks;
+       }
+
        mark_table_blocks(fs);
        if (show_progress)
                fprintf(stderr, "%s", _("Scanning inodes...\n"));
@@ -1474,6 +1492,8 @@ int main (int argc, char ** argv)
        int ignore_rw_mount = 0;
        int check = 0;
        struct stat st;
+       blk64_t superblock = 0;
+       int blocksize = 0;
 
 #ifdef ENABLE_NLS
        setlocale(LC_MESSAGES, "");
@@ -1487,8 +1507,14 @@ int main (int argc, char ** argv)
        if (argc && *argv)
                program_name = *argv;
        add_error_table(&et_ext2_error_table);
-       while ((c = getopt(argc, argv, "nrsIQafo:O:pc")) != EOF)
+       while ((c = getopt(argc, argv, "b:B:nrsIQafo:O:pc")) != EOF)
                switch (c) {
+               case 'b':
+                       superblock = strtoull(optarg, NULL, 0);
+                       break;
+               case 'B':
+                       blocksize = strtoul(optarg, NULL, 0);
+                       break;
                case 'I':
                        flags |= E2IMAGE_INSTALL_FLAG;
                        break;
@@ -1540,6 +1566,11 @@ int main (int argc, char ** argv)
                                                 "with raw or QCOW2 images."));
                exit(1);
        }
+       if (superblock && !img_type) {
+               com_err(program_name, 0, "%s", _("-b option can only be used "
+                                                "with raw or QCOW2 images."));
+               exit(1);
+       }
        if ((source_offset || dest_offset) && img_type != E2IMAGE_RAW) {
                com_err(program_name, 0, "%s",
                        _("Offsets are only allowed with raw images."));
@@ -1590,8 +1621,8 @@ int main (int argc, char ** argv)
                }
        }
        sprintf(offset_opt, "offset=%llu", source_offset);
-       retval = ext2fs_open2(device_name, offset_opt, open_flag, 0, 0,
-                             unix_io_manager, &fs);
+       retval = ext2fs_open2(device_name, offset_opt, open_flag,
+                             superblock, blocksize, unix_io_manager, &fs);
         if (retval) {
                com_err (program_name, retval, _("while trying to open %s"),
                         device_name);
@@ -1681,7 +1712,7 @@ skip_device:
                exit(1);
        }
        if (img_type)
-               write_raw_image_file(fs, fd, img_type, flags);
+               write_raw_image_file(fs, fd, img_type, flags, superblock);
        else
                write_image_file(fs, fd);
 
index d8a6b16e1d808ca09927a070ba04038827ff7e74..ee5e170979a1eb85401e0d431b1e7afc1dfcf5b1 100644 (file)
@@ -151,6 +151,16 @@ can be specified using the
 .B \-G
 option.
 .TP
+.B fname_encoding
+.br
+This ext4 feature provides file system level character encoding support
+for files and directories name.  This feature is name-preserving on the
+disk, but it allows applications to lookup for a file in the file system
+using any encoding equivalent version of the file name.
+
+This feature is required to perform in-kernel case-insensitive file
+name lookups.
+.TP
 .B has_journal
 .br
 Create a journal to ensure filesystem consistency even across unclean
index 4ed37df1d2fb1609ddd3c4f9f89b038f85c1faa0..3bc7ada3b30781daf39e0deb129ea7ea82a3eff0 100644 (file)
@@ -42,6 +42,9 @@ dump core on error
 \fB-o\fR minixdf
 minix-style df
 .TP
+\fB-o\fR fakeroot
+pretend to be root for permission checks
+.TP
 \fB-o\fR no_default_opts
 do not include default fuse options
 .TP
index 3214be4a37b62c83721ebcf5e5121e31add845d6..b2e4e84b5e94942e790afcfba3c91b256951f4e0 100644 (file)
@@ -322,6 +322,7 @@ struct fuse2fs {
        int no_default_opts;
        int panic_on_error;
        int minixdf;
+       int fakeroot;
        int alloc_all_blocks;
        FILE *err_fp;
        unsigned int next_generation;
@@ -630,6 +631,7 @@ static int fs_writeable(ext2_filsys fs)
 static int check_inum_access(ext2_filsys fs, ext2_ino_t ino, mode_t mask)
 {
        struct fuse_context *ctxt = fuse_get_context();
+       struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
        struct ext2_inode inode;
        mode_t perms;
        errcode_t err;
@@ -659,7 +661,7 @@ static int check_inum_access(ext2_filsys fs, ext2_ino_t ino, mode_t mask)
                return -EACCES;
 
        /* Figure out what root's allowed to do */
-       if (ctxt->uid == 0) {
+       if (ff->fakeroot || ctxt->uid == 0) {
                /* Non-file access always ok */
                if (!LINUX_S_ISREG(inode.i_mode))
                        return 0;
@@ -1905,7 +1907,7 @@ static int op_chmod(const char *path, mode_t mode)
                goto out;
        }
 
-       if (ctxt->uid != 0 && ctxt->uid != inode.i_uid) {
+       if (!ff->fakeroot && ctxt->uid != 0 && ctxt->uid != inode.i_uid) {
                ret = -EPERM;
                goto out;
        }
@@ -1915,7 +1917,7 @@ static int op_chmod(const char *path, mode_t mode)
         * of the user's groups, but FUSE only tells us about the primary
         * group.
         */
-       if (ctxt->uid != 0 && ctxt->gid != inode.i_gid)
+       if (!ff->fakeroot && ctxt->uid != 0 && ctxt->gid != inode.i_gid)
                mode &= ~S_ISGID;
 
        inode.i_mode &= ~0xFFF;
@@ -1968,7 +1970,7 @@ static int op_chown(const char *path, uid_t owner, gid_t group)
        /* FUSE seems to feed us ~0 to mean "don't change" */
        if (owner != (uid_t) ~0) {
                /* Only root gets to change UID. */
-               if (ctxt->uid != 0 &&
+               if (!ff->fakeroot && ctxt->uid != 0 &&
                    !(inode.i_uid == ctxt->uid && owner == ctxt->uid)) {
                        ret = -EPERM;
                        goto out;
@@ -1978,7 +1980,7 @@ static int op_chown(const char *path, uid_t owner, gid_t group)
 
        if (group != (gid_t) ~0) {
                /* Only root or the owner get to change GID. */
-               if (ctxt->uid != 0 && inode.i_uid != ctxt->uid) {
+               if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid) {
                        ret = -EPERM;
                        goto out;
                }
@@ -3120,6 +3122,7 @@ static int ioctl_setflags(ext2_filsys fs, struct fuse2fs_file_handle *fh,
        int ret;
        __u32 flags = *(__u32 *)data;
        struct fuse_context *ctxt = fuse_get_context();
+       struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
 
        FUSE2FS_CHECK_MAGIC(fs, fh, FUSE2FS_FILE_MAGIC);
        dbg_printf("%s: ino=%d\n", __func__, fh->ino);
@@ -3129,7 +3132,7 @@ static int ioctl_setflags(ext2_filsys fs, struct fuse2fs_file_handle *fh,
        if (err)
                return translate_error(fs, fh->ino, err);
 
-       if (ctxt->uid != 0 && inode.i_uid != ctxt->uid)
+       if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid)
                return -EPERM;
 
        if ((inode.i_flags ^ flags) & ~FUSE2FS_MODIFIABLE_IFLAGS)
@@ -3176,6 +3179,7 @@ static int ioctl_setversion(ext2_filsys fs, struct fuse2fs_file_handle *fh,
        int ret;
        __u32 generation = *(__u32 *)data;
        struct fuse_context *ctxt = fuse_get_context();
+       struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
 
        FUSE2FS_CHECK_MAGIC(fs, fh, FUSE2FS_FILE_MAGIC);
        dbg_printf("%s: ino=%d\n", __func__, fh->ino);
@@ -3185,7 +3189,7 @@ static int ioctl_setversion(ext2_filsys fs, struct fuse2fs_file_handle *fh,
        if (err)
                return translate_error(fs, fh->ino, err);
 
-       if (ctxt->uid != 0 && inode.i_uid != ctxt->uid)
+       if (!ff->fakeroot && ctxt->uid != 0 && inode.i_uid != ctxt->uid)
                return -EPERM;
 
        inode.i_generation = generation;
@@ -3655,6 +3659,7 @@ static struct fuse_opt fuse2fs_opts[] = {
        FUSE2FS_OPT("ro",               ro,                     1),
        FUSE2FS_OPT("errors=panic",     panic_on_error,         1),
        FUSE2FS_OPT("minixdf",          minixdf,                1),
+       FUSE2FS_OPT("fakeroot",         fakeroot,               1),
        FUSE2FS_OPT("fuse2fs_debug",    debug,                  1),
        FUSE2FS_OPT("no_default_opts",  no_default_opts,        1),
 
@@ -3693,6 +3698,7 @@ static int fuse2fs_opt_proc(void *data, const char *arg,
        "    -o ro                  read-only mount\n"
        "    -o errors=panic        dump core on error\n"
        "    -o minixdf             minix-style df\n"
+       "    -o fakeroot            pretend to be root for permission checks\n"
        "    -o no_default_opts     do not include default fuse options\n"
        "    -o fuse2fs_debug       enable fuse2fs debugging\n"
        "\n",
@@ -3849,6 +3855,15 @@ int main(int argc, char *argv[])
        if (fctx.no_default_opts == 0)
                fuse_opt_add_arg(&args, extra_args);
 
+       if (fctx.fakeroot) {
+#ifdef HAVE_MOUNT_NODEV
+               fuse_opt_add_arg(&args,"-onodev");
+#endif
+#ifdef HAVE_MOUNT_NOSUID
+               fuse_opt_add_arg(&args,"-onosuid");
+#endif
+       }
+
        if (fctx.debug) {
                int     i;
 
index cce523f1d0f2032ef6fed0aa4c040f3ecd30f254..7162494acaae3dc5188a05ea2fb3cdbcba7f90c3 100644 (file)
@@ -280,6 +280,31 @@ option is still accepted for backwards compatibility, but is deprecated.
 The following extended options are supported:
 .RS 1.2i
 .TP
+.BI fname_encoding= encoding-name
+Enable the
+.I fname_encoding
+feature in the super block and set
+.I encoding-name
+as the encoding to be used.  If
+.I encoding-name
+is not specified, the encoding defined in
+.BR mke2fs.conf (5)
+is used.
+.TP
+.BI fname_encoding_flags= encoding-flags
+Define parameters for file name character encoding operations.  If a
+flag is not changed using this parameter, its default value is used.
+.I encoding-flags
+should be a comma-separated lists of flags to be enabled.  To disable a
+flag, add it to the list with the prefix "no".
+
+The only flag that can be set right now is
+.I strict
+which means that invalid strings should be rejected by the file system.
+In the default configuration, the
+.I strict
+flag is disabled.
+.TP
 .BI mmp_update_interval= interval
 Adjust the initial MMP update interval to
 .I interval
index f05003fc30b96fd49eb26cae3620845777e8e795..be3586cf75570c53f7679b74470ee1104fbfc76d 100644 (file)
@@ -790,6 +790,8 @@ static void parse_extended_opts(struct ext2_super_block *param,
        int     len;
        int     r_usage = 0;
        int     ret;
+       int     encoding = -1;
+       char    *encoding_flags = NULL;
 
        len = strlen(opts);
        buf = malloc(len+1);
@@ -1056,6 +1058,31 @@ static void parse_extended_opts(struct ext2_super_block *param,
                        }
                } else if (!strcmp(token, "android_sparse")) {
                        android_sparse_file = 1;
+               } else if (!strcmp(token, "fname_encoding")) {
+                       if (!arg) {
+                               profile_get_string(profile, "options",
+                                                  "fname_encoding", 0, 0,
+                                                  &arg);
+                               if (!arg) {
+                                       r_usage++;
+                                       continue;
+                               }
+                       }
+
+                       encoding = e2p_str2encoding(arg);
+                       if (encoding < 0) {
+                               fprintf(stderr, _("Invalid encoding: %s"), arg);
+                               r_usage++;
+                               continue;
+                       }
+                       param->s_encoding = encoding;
+                       ext2fs_set_feature_fname_encoding(param);
+               } else if (!strcmp(token, "fname_encoding_flags")) {
+                       if (!arg) {
+                               r_usage++;
+                               continue;
+                       }
+                       encoding_flags = arg;
                } else {
                        r_usage++;
                        badopt = token;
@@ -1080,6 +1107,8 @@ static void parse_extended_opts(struct ext2_super_block *param,
                        "\ttest_fs\n"
                        "\tdiscard\n"
                        "\tnodiscard\n"
+                       "\tfname_encoding=<encoding>\n"
+                       "\tfname_encoding_flags=<flags>\n"
                        "\tquotatype=<quota type(s) to be enabled>\n\n"),
                        badopt ? badopt : "");
                free(buf);
@@ -1091,6 +1120,25 @@ static void parse_extended_opts(struct ext2_super_block *param,
                                  "multiple of stride %u.\n\n"),
                        param->s_raid_stripe_width, param->s_raid_stride);
 
+       if (ext2fs_has_feature_fname_encoding(param)) {
+               param->s_encoding_flags =
+                       e2p_get_encoding_flags(param->s_encoding);
+
+               if (encoding_flags &&
+                   e2p_str2encoding_flags(param->s_encoding, encoding_flags,
+                                          &param->s_encoding_flags)) {
+                       fprintf(stderr, _("error: Invalid encoding flag: %s\n"),
+                               encoding_flags);
+                       free(buf);
+                       exit(1);
+               }
+       } else if (encoding_flags) {
+               fprintf(stderr, _("error: An encoding must be explicitly "
+                                 "specified when passing encoding-flags\n"));
+               free(buf);
+               exit(1);
+       }
+
        free(buf);
 }
 
@@ -1112,6 +1160,7 @@ static __u32 ok_features[3] = {
                EXT4_FEATURE_INCOMPAT_64BIT|
                EXT4_FEATURE_INCOMPAT_INLINE_DATA|
                EXT4_FEATURE_INCOMPAT_ENCRYPT |
+               EXT4_FEATURE_INCOMPAT_FNAME_ENCODING |
                EXT4_FEATURE_INCOMPAT_CSUM_SEED |
                EXT4_FEATURE_INCOMPAT_LARGEDIR,
        /* R/O compat */
@@ -1518,6 +1567,8 @@ static void PRS(int argc, char *argv[])
        int             use_bsize;
        char            *newpath;
        int             pathlen = sizeof(PATH_SET) + 1;
+       char            *encoding_name = NULL;
+       int             encoding;
 
        if (oldpath)
                pathlen += strlen(oldpath);
@@ -2026,6 +2077,7 @@ profile_error:
                ext2fs_clear_feature_huge_file(&fs_param);
                ext2fs_clear_feature_metadata_csum(&fs_param);
                ext2fs_clear_feature_ea_inode(&fs_param);
+               ext2fs_clear_feature_fname_encoding(&fs_param);
        }
        edit_feature(fs_features ? fs_features : tmp,
                     &fs_param.s_feature_compat);
@@ -2341,6 +2393,26 @@ profile_error:
        if (packed_meta_blocks)
                journal_location = 0;
 
+       if (ext2fs_has_feature_fname_encoding(&fs_param)) {
+               profile_get_string(profile, "options", "fname_encoding",
+                                  0, 0, &encoding_name);
+               if (!encoding_name) {
+                       com_err(program_name, 0, "%s",
+                               _("Filename encoding type must be specified\n"
+                                 "Use -E fname_encoding=<name> instead"));
+                       exit(1);
+               }
+               encoding = e2p_str2encoding(encoding_name);
+               if (encoding < 0) {
+                       com_err(program_name, 0, "%s",
+                               _("Unknown default filename encoding\n"
+                                 "Use -E fname_encoding=<name> instead"));
+                       exit(1);
+               }
+               fs_param.s_encoding = encoding;
+               fs_param.s_encoding_flags = e2p_get_encoding_flags(encoding);
+       }
+
        /* Get options from profile */
        for (cpp = fs_types; *cpp; cpp++) {
                tmp = NULL;
@@ -2385,6 +2457,15 @@ profile_error:
                }
        }
 
+       if (ext2fs_has_feature_fname_encoding(&fs_param) &&
+           ext2fs_has_feature_encrypt(&fs_param)) {
+               com_err(program_name, 0, "%s",
+                       _("The encrypt and encoding features are not "
+                         "compatible.\nThey can not be both enabled "
+                         "simultaneously.\n"));
+                     exit (1);
+       }
+
        /* Don't allow user to set both metadata_csum and uninit_bg bits. */
        if (ext2fs_has_feature_metadata_csum(&fs_param) &&
            ext2fs_has_feature_gdt_csum(&fs_param))
index cb4e2f75a04c86a9acbd02855c160c9d304d64e6..cdebf08cf2686b51f0ea000afdff26e92dfadfc8 100644 (file)
@@ -97,6 +97,10 @@ The following relations are defined in the
 .I [options]
 stanza.
 .TP
+.I fname_encoding
+This relation defines the file name encoding to be used by mke2fs, in
+case the user doesn't specify an encoding in the command line.
+.TP
 .I proceed_delay
 If this relation is set to a positive integer, then mke2fs will
 wait
index 01e35cf8315007b42a5c78475e776bfac58ad8f6..00afd9128a2774d1ab75f48acd2b6830292c73bf 100644 (file)
@@ -45,3 +45,6 @@
             blocksize = 4096
             inode_size = 128
        }
+
+[options]
+       fname_encoding = utf8
index 4cf3b070c931241747b8fe6c657213822b07e070..b60db6ed5a83c3d8c079db3e2a43cf3ae6d6498c 100644 (file)
@@ -238,6 +238,10 @@ program.
 This superblock setting is only honored in 2.6.35+ kernels;
 and not at all by the ext2 and ext3 file system drivers.
 .TP
+.B force_fsck
+Set a flag in the filesystem superblock indicating that errors have been found.
+This will force fsck to run at the next mount.
+.TP
 .B test_fs
 Set a flag in the filesystem superblock indicating that it may be
 mounted using experimental kernel code, such as the ext4dev filesystem.
index 7c5ba0c779e6ad9e7bf3d108d5b48109b15d5f0b..fbdf78a8f849d130a1e1625eca86b52e87620668 100644 (file)
@@ -497,64 +497,6 @@ static void convert_64bit(ext2_filsys fs, int direction)
                fprintf(stderr, _("' to disable 64-bit mode.\n"));
 }
 
-/* Rewrite extents */
-static errcode_t rewrite_extents(ext2_filsys fs, ext2_ino_t ino,
-                                struct ext2_inode *inode)
-{
-       ext2_extent_handle_t    handle;
-       struct ext2fs_extent    extent;
-       errcode_t               errcode;
-       struct ext2_extent_info info;
-
-       if (!(inode->i_flags & EXT4_EXTENTS_FL) ||
-           !ext2fs_has_feature_metadata_csum(fs->super))
-               return 0;
-
-       errcode = ext2fs_extent_open(fs, ino, &handle);
-       if (errcode)
-               return errcode;
-
-       errcode = ext2fs_extent_get(handle, EXT2_EXTENT_ROOT, &extent);
-       if (errcode)
-               goto out;
-
-       do {
-               errcode = ext2fs_extent_get_info(handle, &info);
-               if (errcode)
-                       break;
-
-               /*
-                * If this is the first extent in an extent block that we
-                * haven't visited, rewrite the extent to force the ETB
-                * checksum to be rewritten.
-                */
-               if (info.curr_entry == 1 && info.curr_level != 0 &&
-                   !(extent.e_flags & EXT2_EXTENT_FLAGS_SECOND_VISIT)) {
-                       errcode = ext2fs_extent_replace(handle, 0, &extent);
-                       if (errcode)
-                               break;
-               }
-
-               /* Skip to the end of a block of leaf nodes */
-               if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) {
-                       errcode = ext2fs_extent_get(handle,
-                                                   EXT2_EXTENT_LAST_SIB,
-                                                   &extent);
-                       if (errcode)
-                               break;
-               }
-
-               errcode = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT, &extent);
-       } while (errcode == 0);
-
-out:
-       /* Ok if we run off the end */
-       if (errcode == EXT2_ET_EXTENT_NO_NEXT)
-               errcode = 0;
-       ext2fs_extent_free(handle);
-       return errcode;
-}
-
 /*
  * Rewrite directory blocks with checksums
  */
@@ -849,7 +791,7 @@ static void rewrite_one_inode(struct rewrite_context *ctx, ext2_ino_t ino,
        if (retval)
                fatal_err(retval, "while writing inode");
 
-       retval = rewrite_extents(ctx->fs, ino, inode);
+       retval = ext2fs_fix_extents_checksums(ctx->fs, ino, inode);
        if (retval)
                fatal_err(retval, "while rewriting extents");
 
@@ -1459,6 +1401,12 @@ mmp_error:
        }
 
        if (FEATURE_ON(E2P_FEATURE_INCOMPAT, EXT4_FEATURE_INCOMPAT_ENCRYPT)) {
+               if (ext2fs_has_feature_fname_encoding(sb)) {
+                       fputs(_("Cannot enable encrypt feature on filesystems "
+                               "with the encoding feature enabled.\n"),
+                             stderr);
+                       return 1;
+               }
                fs->super->s_encrypt_algos[0] =
                        EXT4_ENCRYPTION_MODE_AES_256_XTS;
                fs->super->s_encrypt_algos[1] =
@@ -2125,6 +2073,10 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
                               intv);
                        fs->super->s_mmp_update_interval = intv;
                        ext2fs_mark_super_dirty(fs);
+               } else if (!strcmp(token, "force_fsck")) {
+                       fs->super->s_state |= EXT2_ERROR_FS;
+                       printf(_("Setting filesystem error flag to force fsck.\n"));
+                       ext2fs_mark_super_dirty(fs);
                } else if (!strcmp(token, "test_fs")) {
                        fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
                        printf("Setting test filesystem flag\n");
@@ -2207,6 +2159,7 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts)
                        "\tmmp_update_interval=<mmp update interval in seconds>\n"
                        "\tstride=<RAID per-disk chunk size in blocks>\n"
                        "\tstripe_width=<RAID stride*data disks in blocks>\n"
+                       "\tforce_fsck\n"
                        "\ttest_fs\n"
                        "\t^test_fs\n"));
                free(buf);
index e52bcd5f892200a60662a0dc1bc5e93c793273bc..914c6d3a9eb34175775adf1fc97eabcec07420d3 100644 (file)
@@ -70,9 +70,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: e2fsprogs 1.44.6\n"
+"Project-Id-Version: e2fsprogs 1.45.0\n"
 "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2019-03-05 14:46-0500\n"
+"POT-Creation-Date: 2019-03-06 13:35-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -95,12 +95,12 @@ msgstr ""
 msgid "while reading the bad blocks inode"
 msgstr ""
 
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1550
-#: e2fsck/unix.c:1664 misc/badblocks.c:1251 misc/badblocks.c:1259
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1551
+#: e2fsck/unix.c:1665 misc/badblocks.c:1251 misc/badblocks.c:1259
 #: misc/badblocks.c:1273 misc/badblocks.c:1285 misc/dumpe2fs.c:431
-#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1412
-#: misc/e2image.c:1596 misc/e2image.c:1617 misc/mke2fs.c:236
-#: misc/tune2fs.c:2843 misc/tune2fs.c:2942 resize/main.c:414
+#: misc/dumpe2fs.c:688 misc/dumpe2fs.c:692 misc/e2image.c:1430
+#: misc/e2image.c:1627 misc/e2image.c:1648 misc/mke2fs.c:236
+#: misc/tune2fs.c:2796 misc/tune2fs.c:2895 resize/main.c:414
 #, c-format
 msgid "while trying to open %s"
 msgstr ""
@@ -202,12 +202,12 @@ msgstr ""
 msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n"
 msgstr ""
 
-#: e2fsck/iscan.c:81 e2fsck/unix.c:1075
+#: e2fsck/iscan.c:81 e2fsck/unix.c:1076
 #, c-format
 msgid "while opening %s for flushing"
 msgstr ""
 
-#: e2fsck/iscan.c:86 e2fsck/unix.c:1081 resize/main.c:383
+#: e2fsck/iscan.c:86 e2fsck/unix.c:1082 resize/main.c:383
 #, c-format
 msgid "while trying to flush %s"
 msgstr ""
@@ -217,11 +217,11 @@ msgstr ""
 msgid "while trying to open '%s'"
 msgstr ""
 
-#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1305
+#: e2fsck/iscan.c:119 e2fsck/scantest.c:114 misc/e2image.c:1323
 msgid "while opening inode scan"
 msgstr ""
 
-#: e2fsck/iscan.c:127 misc/e2image.c:1324
+#: e2fsck/iscan.c:127 misc/e2image.c:1342
 msgid "while getting next inode"
 msgstr ""
 
@@ -244,7 +244,7 @@ msgstr ""
 msgid "%s: journal too short\n"
 msgstr ""
 
-#: e2fsck/journal.c:972 misc/fuse2fs.c:3786
+#: e2fsck/journal.c:972 misc/fuse2fs.c:3792
 #, c-format
 msgid "%s: recovering journal\n"
 msgstr ""
@@ -515,86 +515,86 @@ msgstr ""
 msgid "internal error: couldn't lookup EA inode record for %u"
 msgstr ""
 
-#: e2fsck/pass1.c:356
+#: e2fsck/pass1.c:357
 #, c-format
 msgid "while hashing entry with e_value_inum = %u"
 msgstr ""
 
-#: e2fsck/pass1.c:774 e2fsck/pass2.c:1005
+#: e2fsck/pass1.c:775 e2fsck/pass2.c:1006
 msgid "reading directory block"
 msgstr ""
 
-#: e2fsck/pass1.c:1223
+#: e2fsck/pass1.c:1224
 msgid "in-use inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1234
+#: e2fsck/pass1.c:1235
 msgid "directory inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1244
+#: e2fsck/pass1.c:1245
 msgid "regular file inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:1253 misc/e2image.c:1280
+#: e2fsck/pass1.c:1254 misc/e2image.c:1282
 msgid "in-use block map"
 msgstr ""
 
-#: e2fsck/pass1.c:1262
+#: e2fsck/pass1.c:1263
 msgid "metadata block map"
 msgstr ""
 
-#: e2fsck/pass1.c:1324
+#: e2fsck/pass1.c:1325
 msgid "opening inode scan"
 msgstr ""
 
-#: e2fsck/pass1.c:1362
+#: e2fsck/pass1.c:1363
 msgid "getting next inode from scan"
 msgstr ""
 
-#: e2fsck/pass1.c:2066
+#: e2fsck/pass1.c:2067
 msgid "Pass 1"
 msgstr ""
 
-#: e2fsck/pass1.c:2127
+#: e2fsck/pass1.c:2128
 #, c-format
 msgid "reading indirect blocks of inode %u"
 msgstr ""
 
-#: e2fsck/pass1.c:2178
+#: e2fsck/pass1.c:2179
 msgid "bad inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:2218
+#: e2fsck/pass1.c:2219
 msgid "inode in bad block map"
 msgstr ""
 
-#: e2fsck/pass1.c:2238
+#: e2fsck/pass1.c:2239
 msgid "imagic inode map"
 msgstr ""
 
-#: e2fsck/pass1.c:2269
+#: e2fsck/pass1.c:2270
 msgid "multiply claimed block map"
 msgstr ""
 
-#: e2fsck/pass1.c:2394
+#: e2fsck/pass1.c:2395
 msgid "ext attr block map"
 msgstr ""
 
-#: e2fsck/pass1.c:3638
+#: e2fsck/pass1.c:3639
 #, c-format
 msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
 msgstr ""
 
-#: e2fsck/pass1.c:4058
+#: e2fsck/pass1.c:4059
 msgid "block bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:4064
+#: e2fsck/pass1.c:4065
 msgid "inode bitmap"
 msgstr ""
 
-#: e2fsck/pass1.c:4070
+#: e2fsck/pass1.c:4071
 msgid "inode table"
 msgstr ""
 
@@ -602,7 +602,7 @@ msgstr ""
 msgid "Pass 2"
 msgstr ""
 
-#: e2fsck/pass2.c:1077 e2fsck/pass2.c:1244
+#: e2fsck/pass2.c:1078 e2fsck/pass2.c:1245
 msgid "Can not continue."
 msgstr ""
 
@@ -2903,7 +2903,7 @@ msgstr ""
 msgid "Clearing"
 msgstr ""
 
-#: e2fsck/unix.c:77
+#: e2fsck/unix.c:78
 #, c-format
 msgid ""
 "Usage: %s [-panyrcdfktvDFV] [-b superblock] [-B blocksize]\n"
@@ -2911,7 +2911,7 @@ msgid ""
 "\t\t[-E extended-options] [-z undo_file] device\n"
 msgstr ""
 
-#: e2fsck/unix.c:82
+#: e2fsck/unix.c:83
 msgid ""
 "\n"
 "Emergency help:\n"
@@ -2923,7 +2923,7 @@ msgid ""
 " -f                   Force checking even if filesystem is marked clean\n"
 msgstr ""
 
-#: e2fsck/unix.c:88
+#: e2fsck/unix.c:89
 msgid ""
 " -v                   Be verbose\n"
 " -b superblock        Use alternative superblock\n"
@@ -2934,12 +2934,12 @@ msgid ""
 " -z undo_file         Create an undo file\n"
 msgstr ""
 
-#: e2fsck/unix.c:136
+#: e2fsck/unix.c:137
 #, c-format
 msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
 msgstr ""
 
-#: e2fsck/unix.c:162
+#: e2fsck/unix.c:163
 #, c-format
 msgid ""
 "\n"
@@ -2950,51 +2950,51 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:166
+#: e2fsck/unix.c:167
 #, c-format
 msgid "%12u non-contiguous file (%0d.%d%%)\n"
 msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:171
+#: e2fsck/unix.c:172
 #, c-format
 msgid "%12u non-contiguous directory (%0d.%d%%)\n"
 msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:176
+#: e2fsck/unix.c:177
 #, c-format
 msgid "             # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
 msgstr ""
 
-#: e2fsck/unix.c:184
+#: e2fsck/unix.c:185
 msgid "             Extent depth histogram: "
 msgstr ""
 
-#: e2fsck/unix.c:193
+#: e2fsck/unix.c:194
 #, c-format
 msgid "%12llu block used (%2.2f%%, out of %llu)\n"
 msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:197
+#: e2fsck/unix.c:198
 #, c-format
 msgid "%12u bad block\n"
 msgid_plural "%12u bad blocks\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:199
+#: e2fsck/unix.c:200
 #, c-format
 msgid "%12u large file\n"
 msgid_plural "%12u large files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:201
+#: e2fsck/unix.c:202
 #, c-format
 msgid ""
 "\n"
@@ -3005,102 +3005,102 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:203
+#: e2fsck/unix.c:204
 #, c-format
 msgid "%12u directory\n"
 msgid_plural "%12u directories\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:205
+#: e2fsck/unix.c:206
 #, c-format
 msgid "%12u character device file\n"
 msgid_plural "%12u character device files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:208
+#: e2fsck/unix.c:209
 #, c-format
 msgid "%12u block device file\n"
 msgid_plural "%12u block device files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:210
+#: e2fsck/unix.c:211
 #, c-format
 msgid "%12u fifo\n"
 msgid_plural "%12u fifos\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:212
+#: e2fsck/unix.c:213
 #, c-format
 msgid "%12u link\n"
 msgid_plural "%12u links\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:214
+#: e2fsck/unix.c:215
 #, c-format
 msgid "%12u symbolic link"
 msgid_plural "%12u symbolic links"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:216
+#: e2fsck/unix.c:217
 #, c-format
 msgid " (%u fast symbolic link)\n"
 msgid_plural " (%u fast symbolic links)\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:220
+#: e2fsck/unix.c:221
 #, c-format
 msgid "%12u socket\n"
 msgid_plural "%12u sockets\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:224
+#: e2fsck/unix.c:225
 #, c-format
 msgid "%12u file\n"
 msgid_plural "%12u files\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: e2fsck/unix.c:237 misc/badblocks.c:1002 misc/tune2fs.c:3033 misc/util.c:126
+#: e2fsck/unix.c:238 misc/badblocks.c:1002 misc/tune2fs.c:2986 misc/util.c:126
 #: resize/main.c:354
 #, c-format
 msgid "while determining whether %s is mounted."
 msgstr ""
 
-#: e2fsck/unix.c:258
+#: e2fsck/unix.c:259
 #, c-format
 msgid "Warning!  %s is mounted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:261
+#: e2fsck/unix.c:262
 #, c-format
 msgid "Warning!  %s is in use.\n"
 msgstr ""
 
-#: e2fsck/unix.c:267
+#: e2fsck/unix.c:268
 #, c-format
 msgid "%s is mounted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:269
+#: e2fsck/unix.c:270
 #, c-format
 msgid "%s is in use.\n"
 msgstr ""
 
-#: e2fsck/unix.c:271
+#: e2fsck/unix.c:272
 msgid ""
 "Cannot continue, aborting.\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:273
+#: e2fsck/unix.c:274
 msgid ""
 "\n"
 "\n"
@@ -3109,85 +3109,85 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:278
+#: e2fsck/unix.c:279
 msgid "Do you really want to continue"
 msgstr ""
 
-#: e2fsck/unix.c:280
+#: e2fsck/unix.c:281
 msgid "check aborted.\n"
 msgstr ""
 
-#: e2fsck/unix.c:374
+#: e2fsck/unix.c:375
 msgid " contains a file system with errors"
 msgstr ""
 
-#: e2fsck/unix.c:376
+#: e2fsck/unix.c:377
 msgid " was not cleanly unmounted"
 msgstr ""
 
-#: e2fsck/unix.c:378
+#: e2fsck/unix.c:379
 msgid " primary superblock features different from backup"
 msgstr ""
 
-#: e2fsck/unix.c:382
+#: e2fsck/unix.c:383
 #, c-format
 msgid " has been mounted %u times without being checked"
 msgstr ""
 
-#: e2fsck/unix.c:389
+#: e2fsck/unix.c:390
 msgid " has filesystem last checked time in the future"
 msgstr ""
 
-#: e2fsck/unix.c:395
+#: e2fsck/unix.c:396
 #, c-format
 msgid " has gone %u days without being checked"
 msgstr ""
 
-#: e2fsck/unix.c:403
+#: e2fsck/unix.c:404
 msgid "ignoring check interval, broken_system_clock set\n"
 msgstr ""
 
-#: e2fsck/unix.c:409
+#: e2fsck/unix.c:410
 msgid ", check forced.\n"
 msgstr ""
 
-#: e2fsck/unix.c:442
+#: e2fsck/unix.c:443
 #, c-format
 msgid "%s: clean, %u/%u files, %llu/%llu blocks"
 msgstr ""
 
-#: e2fsck/unix.c:462
+#: e2fsck/unix.c:463
 msgid " (check deferred; on battery)"
 msgstr ""
 
-#: e2fsck/unix.c:465
+#: e2fsck/unix.c:466
 msgid " (check after next mount)"
 msgstr ""
 
-#: e2fsck/unix.c:467
+#: e2fsck/unix.c:468
 #, c-format
 msgid " (check in %ld mounts)"
 msgstr ""
 
-#: e2fsck/unix.c:617
+#: e2fsck/unix.c:618
 #, c-format
 msgid "ERROR: Couldn't open /dev/null (%s)\n"
 msgstr ""
 
-#: e2fsck/unix.c:688
+#: e2fsck/unix.c:689
 msgid "Invalid EA version.\n"
 msgstr ""
 
-#: e2fsck/unix.c:701
+#: e2fsck/unix.c:702
 msgid "Invalid readahead buffer size.\n"
 msgstr ""
 
-#: e2fsck/unix.c:750
+#: e2fsck/unix.c:751
 #, c-format
 msgid "Unknown extended option: %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:758
+#: e2fsck/unix.c:759
 msgid ""
 "\n"
 "Extended options are separated by commas, and may take an argument which\n"
@@ -3195,77 +3195,77 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:762
+#: e2fsck/unix.c:763
 msgid "\tea_ver=<ea_version (1 or 2)>\n"
 msgstr ""
 
-#: e2fsck/unix.c:771
+#: e2fsck/unix.c:772
 msgid "\treadahead_kb=<buffer size>\n"
 msgstr ""
 
-#: e2fsck/unix.c:783
+#: e2fsck/unix.c:784
 #, c-format
 msgid ""
 "Syntax error in e2fsck config file (%s, line #%d)\n"
 "\t%s\n"
 msgstr ""
 
-#: e2fsck/unix.c:856
+#: e2fsck/unix.c:857
 #, c-format
 msgid "Error validating file descriptor %d: %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:860
+#: e2fsck/unix.c:861
 msgid "Invalid completion information file descriptor"
 msgstr ""
 
-#: e2fsck/unix.c:875
+#: e2fsck/unix.c:876
 msgid "Only one of the options -p/-a, -n or -y may be specified."
 msgstr ""
 
-#: e2fsck/unix.c:896
+#: e2fsck/unix.c:897
 #, c-format
 msgid "The -t option is not supported on this version of e2fsck.\n"
 msgstr ""
 
-#: e2fsck/unix.c:927 e2fsck/unix.c:1005 misc/e2initrd_helper.c:330
-#: misc/tune2fs.c:1747 misc/tune2fs.c:2042 misc/tune2fs.c:2060
+#: e2fsck/unix.c:928 e2fsck/unix.c:1006 misc/e2initrd_helper.c:330
+#: misc/tune2fs.c:1695 misc/tune2fs.c:1990 misc/tune2fs.c:2008
 #, c-format
 msgid "Unable to resolve '%s'"
 msgstr ""
 
-#: e2fsck/unix.c:984
+#: e2fsck/unix.c:985
 msgid "The -n and -D options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:989
+#: e2fsck/unix.c:990
 msgid "The -n and -c options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:994
+#: e2fsck/unix.c:995
 msgid "The -n and -l/-L options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1018
+#: e2fsck/unix.c:1019
 msgid "The -D and -E fixes_only options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1024
+#: e2fsck/unix.c:1025
 msgid "The -E bmap2extent and fixes_only options are incompatible."
 msgstr ""
 
-#: e2fsck/unix.c:1088
+#: e2fsck/unix.c:1089
 msgid "The -c and the -l/-L options may not be both used at the same time.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1135
+#: e2fsck/unix.c:1136
 #, c-format
 msgid ""
 "E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1144
+#: e2fsck/unix.c:1145
 #, c-format
 msgid ""
 "\n"
@@ -3273,31 +3273,31 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1235
+#: e2fsck/unix.c:1236
 #, c-format
 msgid ""
 "MMP interval is %u seconds and total wait time is %u seconds. Please "
 "wait...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1252 e2fsck/unix.c:1257
+#: e2fsck/unix.c:1253 e2fsck/unix.c:1258
 msgid "while checking MMP block"
 msgstr ""
 
-#: e2fsck/unix.c:1259
+#: e2fsck/unix.c:1260
 #, c-format
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
 "'tune2fs -f -E clear_mmp %s'\n"
 msgstr ""
 
-#: e2fsck/unix.c:1275
+#: e2fsck/unix.c:1276
 msgid "while reading MMP block"
 msgstr ""
 
-#: e2fsck/unix.c:1295 e2fsck/unix.c:1347 misc/e2undo.c:236 misc/e2undo.c:281
-#: misc/mke2fs.c:2613 misc/mke2fs.c:2664 misc/tune2fs.c:2760
-#: misc/tune2fs.c:2805 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1296 e2fsck/unix.c:1348 misc/e2undo.c:236 misc/e2undo.c:281
+#: misc/mke2fs.c:2694 misc/mke2fs.c:2745 misc/tune2fs.c:2713
+#: misc/tune2fs.c:2758 resize/main.c:188 resize/main.c:233
 #, c-format
 msgid ""
 "Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3305,205 +3305,210 @@ msgid ""
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1336 misc/e2undo.c:270 misc/mke2fs.c:2653 misc/tune2fs.c:2794
+#: e2fsck/unix.c:1337 misc/e2undo.c:270 misc/mke2fs.c:2734 misc/tune2fs.c:2747
 #: resize/main.c:222
 #, c-format
 msgid "while trying to delete %s"
 msgstr ""
 
-#: e2fsck/unix.c:1362 misc/mke2fs.c:2679 resize/main.c:243
+#: e2fsck/unix.c:1363 misc/mke2fs.c:2760 resize/main.c:243
 msgid "while trying to setup undo file\n"
 msgstr ""
 
-#: e2fsck/unix.c:1405
+#: e2fsck/unix.c:1406
 msgid "Error: ext2fs library version out of date!\n"
 msgstr ""
 
-#: e2fsck/unix.c:1412
+#: e2fsck/unix.c:1413
 msgid "while trying to initialize program"
 msgstr ""
 
-#: e2fsck/unix.c:1435
+#: e2fsck/unix.c:1436
 #, c-format
 msgid "\tUsing %s, %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1447
+#: e2fsck/unix.c:1448
 msgid "need terminal for interactive repairs"
 msgstr ""
 
-#: e2fsck/unix.c:1508
+#: e2fsck/unix.c:1509
 #, c-format
 msgid "%s: %s trying backup blocks...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1510
+#: e2fsck/unix.c:1511
 msgid "Superblock invalid,"
 msgstr ""
 
-#: e2fsck/unix.c:1511
+#: e2fsck/unix.c:1512
 msgid "Group descriptors look bad..."
 msgstr ""
 
-#: e2fsck/unix.c:1521
+#: e2fsck/unix.c:1522
 #, c-format
 msgid "%s: %s while using the backup blocks"
 msgstr ""
 
-#: e2fsck/unix.c:1525
+#: e2fsck/unix.c:1526
 #, c-format
 msgid "%s: going back to original superblock\n"
 msgstr ""
 
-#: e2fsck/unix.c:1554
+#: e2fsck/unix.c:1555
 msgid ""
 "The filesystem revision is apparently too high for this version of e2fsck.\n"
 "(Or the filesystem superblock is corrupt)\n"
 "\n"
 msgstr ""
 
-#: e2fsck/unix.c:1561
+#: e2fsck/unix.c:1562
 msgid "Could this be a zero-length partition?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1563
+#: e2fsck/unix.c:1564
 #, c-format
 msgid "You must have %s access to the filesystem or be root\n"
 msgstr ""
 
-#: e2fsck/unix.c:1569
+#: e2fsck/unix.c:1570
 msgid "Possibly non-existent or swap device?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1571
+#: e2fsck/unix.c:1572
 msgid "Filesystem mounted or opened exclusively by another program?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1575
+#: e2fsck/unix.c:1576
 msgid "Possibly non-existent device?\n"
 msgstr ""
 
-#: e2fsck/unix.c:1578
+#: e2fsck/unix.c:1579
 msgid ""
 "Disk write-protected; use the -n option to do a read-only\n"
 "check of the device.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1592
+#: e2fsck/unix.c:1593
 #, c-format
 msgid "%s: Trying to load superblock despite errors...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1667
+#: e2fsck/unix.c:1668
 msgid "Get a newer version of e2fsck!"
 msgstr ""
 
-#: e2fsck/unix.c:1711
+#: e2fsck/unix.c:1712
 #, c-format
 msgid "while checking journal for %s"
 msgstr ""
 
-#: e2fsck/unix.c:1714
+#: e2fsck/unix.c:1715
 msgid "Cannot proceed with file system check"
 msgstr ""
 
-#: e2fsck/unix.c:1725
+#: e2fsck/unix.c:1726
 msgid ""
 "Warning: skipping journal recovery because doing a read-only filesystem "
 "check.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1737
+#: e2fsck/unix.c:1738
 #, c-format
 msgid "unable to set superblock flags on %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1743
+#: e2fsck/unix.c:1744
 #, c-format
 msgid "Journal checksum error found in %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1747
+#: e2fsck/unix.c:1748
 #, c-format
 msgid "Journal corrupted in %s\n"
 msgstr ""
 
-#: e2fsck/unix.c:1751
+#: e2fsck/unix.c:1752
 #, c-format
 msgid "while recovering journal of %s"
 msgstr ""
 
-#: e2fsck/unix.c:1773
+#: e2fsck/unix.c:1774
 #, c-format
 msgid "%s has unsupported feature(s):"
 msgstr ""
 
-#: e2fsck/unix.c:1832
+#: e2fsck/unix.c:1791
+#, c-format
+msgid "%s has unsupported encoding: %0x\n"
+msgstr ""
+
+#: e2fsck/unix.c:1842
 #, c-format
 msgid "%s: %s while reading bad blocks inode\n"
 msgstr ""
 
-#: e2fsck/unix.c:1835
+#: e2fsck/unix.c:1845
 msgid "This doesn't bode well, but we'll try to go on...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1875
+#: e2fsck/unix.c:1885
 #, c-format
 msgid "Creating journal (%d blocks): "
 msgstr ""
 
-#: e2fsck/unix.c:1885
+#: e2fsck/unix.c:1895
 msgid " Done.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1887
+#: e2fsck/unix.c:1897
 msgid ""
 "\n"
 "*** journal has been regenerated ***\n"
 msgstr ""
 
-#: e2fsck/unix.c:1893
+#: e2fsck/unix.c:1903
 msgid "aborted"
 msgstr ""
 
-#: e2fsck/unix.c:1895
+#: e2fsck/unix.c:1905
 #, c-format
 msgid "%s: e2fsck canceled.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1922
+#: e2fsck/unix.c:1932
 msgid "Restarting e2fsck from the beginning...\n"
 msgstr ""
 
-#: e2fsck/unix.c:1926
+#: e2fsck/unix.c:1936
 msgid "while resetting context"
 msgstr ""
 
-#: e2fsck/unix.c:1985
+#: e2fsck/unix.c:1995
 #, c-format
 msgid ""
 "\n"
 "%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:1987
+#: e2fsck/unix.c:1997
 #, c-format
 msgid "%s: File system was modified.\n"
 msgstr ""
 
-#: e2fsck/unix.c:1991 e2fsck/util.c:71
+#: e2fsck/unix.c:2001 e2fsck/util.c:71
 #, c-format
 msgid ""
 "\n"
 "%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:1996
+#: e2fsck/unix.c:2006
 #, c-format
 msgid "%s: ***** REBOOT SYSTEM *****\n"
 msgstr ""
 
-#: e2fsck/unix.c:2006 e2fsck/util.c:77
+#: e2fsck/unix.c:2016 e2fsck/util.c:77
 #, c-format
 msgid ""
 "\n"
@@ -3842,68 +3847,68 @@ msgstr ""
 
 #: misc/chattr.c:89
 #, c-format
-msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTu] [-v version] files...\n"
+msgid "Usage: %s [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files...\n"
 msgstr ""
 
-#: misc/chattr.c:159
+#: misc/chattr.c:160
 #, c-format
 msgid "bad project - %s\n"
 msgstr ""
 
-#: misc/chattr.c:173
+#: misc/chattr.c:174
 #, c-format
 msgid "bad version - %s\n"
 msgstr ""
 
-#: misc/chattr.c:219 misc/lsattr.c:127
+#: misc/chattr.c:220 misc/lsattr.c:127
 #, c-format
 msgid "while trying to stat %s"
 msgstr ""
 
-#: misc/chattr.c:226
+#: misc/chattr.c:227
 #, c-format
 msgid "while reading flags on %s"
 msgstr ""
 
-#: misc/chattr.c:231 misc/chattr.c:243
+#: misc/chattr.c:232 misc/chattr.c:244
 #, c-format
 msgid "Flags of %s set as "
 msgstr ""
 
-#: misc/chattr.c:252
+#: misc/chattr.c:253
 #, c-format
 msgid "while setting flags on %s"
 msgstr ""
 
-#: misc/chattr.c:260
+#: misc/chattr.c:261
 #, c-format
 msgid "Version of %s set as %lu\n"
 msgstr ""
 
-#: misc/chattr.c:264
+#: misc/chattr.c:265
 #, c-format
 msgid "while setting version on %s"
 msgstr ""
 
-#: misc/chattr.c:271
+#: misc/chattr.c:272
 #, c-format
 msgid "Project of %s set as %lu\n"
 msgstr ""
 
-#: misc/chattr.c:275
+#: misc/chattr.c:276
 #, c-format
 msgid "while setting project on %s"
 msgstr ""
 
-#: misc/chattr.c:297
+#: misc/chattr.c:298
 msgid "Couldn't allocate path variable in chattr_dir_proc"
 msgstr ""
 
-#: misc/chattr.c:337
+#: misc/chattr.c:338
 msgid "= is incompatible with - and +\n"
 msgstr ""
 
-#: misc/chattr.c:345
+#: misc/chattr.c:346
 msgid "Must use '-v', =, - or +\n"
 msgstr ""
 
@@ -4206,7 +4211,7 @@ msgstr ""
 msgid "reading MMP block %llu from '%s'\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:507 misc/mke2fs.c:798 misc/tune2fs.c:2079
+#: misc/dumpe2fs.c:507 misc/mke2fs.c:800 misc/tune2fs.c:2027
 msgid "Couldn't allocate memory to parse options!\n"
 msgstr ""
 
@@ -4234,12 +4239,12 @@ msgid ""
 "\tblocksize=<blocksize>\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:649 misc/mke2fs.c:1845
+#: misc/dumpe2fs.c:649 misc/mke2fs.c:1896
 #, c-format
 msgid "\tUsing %s\n"
 msgstr ""
 
-#: misc/dumpe2fs.c:694 misc/e2image.c:1598 misc/tune2fs.c:2960
+#: misc/dumpe2fs.c:694 misc/e2image.c:1629 misc/tune2fs.c:2913
 #: resize/main.c:416
 msgid "Couldn't find valid filesystem superblock.\n"
 msgstr ""
@@ -4262,191 +4267,197 @@ msgstr ""
 
 #: misc/e2image.c:107
 #, c-format
-msgid "Usage: %s [ -r|Q ] [ -f ] device image-file\n"
+msgid ""
+"Usage: %s [ -r|Q ] [ -f ] [ -b superblock ] [ -B blocksize][ -fr ] device "
+"image-file\n"
 msgstr ""
 
-#: misc/e2image.c:109
+#: misc/e2image.c:110
 #, c-format
 msgid "       %s -I device image-file\n"
 msgstr ""
 
-#: misc/e2image.c:110
+#: misc/e2image.c:111
 #, c-format
 msgid ""
 "       %s -ra  [  -cfnp  ] [ -o src_offset ] [ -O dest_offset ] src_fs "
 "[ dest_fs ]\n"
 msgstr ""
 
-#: misc/e2image.c:175 misc/e2image.c:588 misc/e2image.c:594 misc/e2image.c:1193
+#: misc/e2image.c:176 misc/e2image.c:589 misc/e2image.c:595 misc/e2image.c:1194
 msgid "while allocating buffer"
 msgstr ""
 
-#: misc/e2image.c:180
+#: misc/e2image.c:181
 #, c-format
 msgid "Writing block %llu\n"
 msgstr ""
 
-#: misc/e2image.c:194
+#: misc/e2image.c:195
 #, c-format
 msgid "error writing block %llu"
 msgstr ""
 
-#: misc/e2image.c:197
+#: misc/e2image.c:198
 msgid "error in generic_write()"
 msgstr ""
 
-#: misc/e2image.c:214
+#: misc/e2image.c:215
 msgid "Error: header size is bigger than wrt_size\n"
 msgstr ""
 
-#: misc/e2image.c:219
+#: misc/e2image.c:220
 msgid "Couldn't allocate header buffer\n"
 msgstr ""
 
-#: misc/e2image.c:247
+#: misc/e2image.c:248
 msgid "while writing superblock"
 msgstr ""
 
-#: misc/e2image.c:256
+#: misc/e2image.c:257
 msgid "while writing inode table"
 msgstr ""
 
-#: misc/e2image.c:264
+#: misc/e2image.c:265
 msgid "while writing block bitmap"
 msgstr ""
 
-#: misc/e2image.c:272
+#: misc/e2image.c:273
 msgid "while writing inode bitmap"
 msgstr ""
 
-#: misc/e2image.c:514
+#: misc/e2image.c:515
 #, c-format
 msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
 msgstr ""
 
-#: misc/e2image.c:526
+#: misc/e2image.c:527
 #, c-format
 msgid "Corrupt directory block %llu: bad name_len (%d)\n"
 msgstr ""
 
-#: misc/e2image.c:567
+#: misc/e2image.c:568
 #, c-format
 msgid "%llu / %llu blocks (%d%%)"
 msgstr ""
 
-#: misc/e2image.c:598 misc/e2image.c:638
+#: misc/e2image.c:599 misc/e2image.c:639
 msgid "Copying "
 msgstr ""
 
-#: misc/e2image.c:635
+#: misc/e2image.c:636
 msgid ""
 "Stopping now will destroy the filesystem, interrupt again if you are sure\n"
 msgstr ""
 
-#: misc/e2image.c:661
+#: misc/e2image.c:662
 #, c-format
 msgid " %s remaining at %.2f MB/s"
 msgstr ""
 
-#: misc/e2image.c:673 misc/e2image.c:1203
+#: misc/e2image.c:674 misc/e2image.c:1204
 #, c-format
 msgid "error reading block %llu"
 msgstr ""
 
-#: misc/e2image.c:727
+#: misc/e2image.c:728
 #, c-format
 msgid "Copied %llu / %llu blocks (%d%%) in %s "
 msgstr ""
 
-#: misc/e2image.c:731
+#: misc/e2image.c:732
 #, c-format
 msgid "at %.2f MB/s"
 msgstr ""
 
-#: misc/e2image.c:767
+#: misc/e2image.c:768
 msgid "while allocating l1 table"
 msgstr ""
 
-#: misc/e2image.c:812
+#: misc/e2image.c:813
 msgid "while allocating l2 cache"
 msgstr ""
 
-#: misc/e2image.c:835
+#: misc/e2image.c:836
 msgid ""
 "Warning: There are still tables in the cache while putting the cache, data "
 "will be lost so the image may not be valid.\n"
 msgstr ""
 
-#: misc/e2image.c:1160
+#: misc/e2image.c:1161
 msgid "while allocating ext2_qcow2_image"
 msgstr ""
 
-#: misc/e2image.c:1167
+#: misc/e2image.c:1168
 msgid "while initializing ext2_qcow2_image"
 msgstr ""
 
-#: misc/e2image.c:1226 misc/e2image.c:1244
+#: misc/e2image.c:1227 misc/e2image.c:1245
 msgid "Programming error: multiple sequential refcount blocks created!\n"
 msgstr ""
 
-#: misc/e2image.c:1284
+#: misc/e2image.c:1286
 msgid "while allocating block bitmap"
 msgstr ""
 
-#: misc/e2image.c:1293
+#: misc/e2image.c:1295
 msgid "while allocating scramble block bitmap"
 msgstr ""
 
-#: misc/e2image.c:1300
+#: misc/e2image.c:1318
 msgid "Scanning inodes...\n"
 msgstr ""
 
-#: misc/e2image.c:1312
+#: misc/e2image.c:1330
 msgid "Can't allocate block buffer"
 msgstr ""
 
-#: misc/e2image.c:1351 misc/e2image.c:1365
+#: misc/e2image.c:1369 misc/e2image.c:1383
 #, c-format
 msgid "while iterating over inode %u"
 msgstr ""
 
-#: misc/e2image.c:1397
+#: misc/e2image.c:1415
 msgid "Raw and qcow2 images cannot be installed"
 msgstr ""
 
-#: misc/e2image.c:1419
+#: misc/e2image.c:1437
 msgid "error reading bitmaps"
 msgstr ""
 
-#: misc/e2image.c:1431
+#: misc/e2image.c:1449
 msgid "while opening device file"
 msgstr ""
 
-#: misc/e2image.c:1442
+#: misc/e2image.c:1460
 msgid "while restoring the image table"
 msgstr ""
 
-#: misc/e2image.c:1539
+#: misc/e2image.c:1565
 msgid "-a option can only be used with raw or QCOW2 images."
 msgstr ""
 
-#: misc/e2image.c:1545
+#: misc/e2image.c:1570
+msgid "-b option can only be used with raw or QCOW2 images."
+msgstr ""
+
+#: misc/e2image.c:1576
 msgid "Offsets are only allowed with raw images."
 msgstr ""
 
-#: misc/e2image.c:1550
+#: misc/e2image.c:1581
 msgid "Move mode is only allowed with raw images."
 msgstr ""
 
-#: misc/e2image.c:1555
+#: misc/e2image.c:1586
 msgid "Move mode requires all data mode."
 msgstr ""
 
-#: misc/e2image.c:1565
+#: misc/e2image.c:1596
 msgid "checking if mounted"
 msgstr ""
 
-#: misc/e2image.c:1572
+#: misc/e2image.c:1603
 msgid ""
 "\n"
 "Running e2image on a R/W mounted filesystem can result in an\n"
@@ -4454,51 +4465,51 @@ msgid ""
 "Use -f option if you really want to do that.\n"
 msgstr ""
 
-#: misc/e2image.c:1626
+#: misc/e2image.c:1657
 msgid "QCOW2 image can not be written to the stdout!\n"
 msgstr ""
 
-#: misc/e2image.c:1632
+#: misc/e2image.c:1663
 msgid "Can not stat output\n"
 msgstr ""
 
-#: misc/e2image.c:1642
+#: misc/e2image.c:1673
 #, c-format
 msgid "Image (%s) is compressed\n"
 msgstr ""
 
-#: misc/e2image.c:1645
+#: misc/e2image.c:1676
 #, c-format
 msgid "Image (%s) is encrypted\n"
 msgstr ""
 
-#: misc/e2image.c:1648
+#: misc/e2image.c:1679
 #, c-format
 msgid "Image (%s) is corrupted\n"
 msgstr ""
 
-#: misc/e2image.c:1652
+#: misc/e2image.c:1683
 #, c-format
 msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
 msgstr ""
 
-#: misc/e2image.c:1662
+#: misc/e2image.c:1693
 msgid "The -c option only supported in raw mode\n"
 msgstr ""
 
-#: misc/e2image.c:1667
+#: misc/e2image.c:1698
 msgid "The -c option not supported when writing to stdout\n"
 msgstr ""
 
-#: misc/e2image.c:1674
+#: misc/e2image.c:1705
 msgid "while allocating check_buf"
 msgstr ""
 
-#: misc/e2image.c:1680
+#: misc/e2image.c:1711
 msgid "The -p option only supported in raw mode\n"
 msgstr ""
 
-#: misc/e2image.c:1690
+#: misc/e2image.c:1721
 #, c-format
 msgid "%d blocks already contained the data to be copied\n"
 msgstr ""
@@ -4528,7 +4539,7 @@ msgstr ""
 msgid "e2label: not an ext2 filesystem\n"
 msgstr ""
 
-#: misc/e2label.c:97 misc/tune2fs.c:3164
+#: misc/e2label.c:97 misc/tune2fs.c:3117
 #, c-format
 msgid "Warning: label too long, truncating.\n"
 msgstr ""
@@ -4543,7 +4554,7 @@ msgstr ""
 msgid "e2label: error writing superblock\n"
 msgstr ""
 
-#: misc/e2label.c:117 misc/tune2fs.c:1739
+#: misc/e2label.c:117 misc/tune2fs.c:1687
 #, c-format
 msgid "Usage: e2label device [newlabel]\n"
 msgstr ""
@@ -4849,51 +4860,51 @@ msgstr ""
 msgid "%s: too many arguments\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3739
+#: misc/fuse2fs.c:3745
 msgid "Mounting read-only.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3763
+#: misc/fuse2fs.c:3769
 #, c-format
 msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3775 misc/fuse2fs.c:3789
+#: misc/fuse2fs.c:3781 misc/fuse2fs.c:3795
 #, c-format
 msgid "%s: %s.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3776 misc/fuse2fs.c:3791 misc/tune2fs.c:3060
+#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3797 misc/tune2fs.c:3013
 #, c-format
 msgid "Please run e2fsck -fy %s.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3798
+#: misc/fuse2fs.c:3804
 msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3806
+#: misc/fuse2fs.c:3812
 #, c-format
 msgid "%s: Writing to the journal is not supported.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3821
+#: misc/fuse2fs.c:3827
 msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3825
+#: misc/fuse2fs.c:3831
 msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3830
+#: misc/fuse2fs.c:3836
 msgid "Warning: Check time reached; running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3834
+#: misc/fuse2fs.c:3840
 msgid "Orphans detected; running e2fsck is recommended.\n"
 msgstr ""
 
-#: misc/fuse2fs.c:3838
+#: misc/fuse2fs.c:3844
 msgid "Errors detected; running e2fsck is required.\n"
 msgstr ""
 
@@ -4986,7 +4997,7 @@ msgid ""
 "Could not write %d blocks in inode table starting at %llu: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:456 misc/mke2fs.c:2726 misc/mke2fs.c:3131
+#: misc/mke2fs.c:456 misc/mke2fs.c:2807 misc/mke2fs.c:3212
 msgid "done                            \n"
 msgstr ""
 
@@ -5151,70 +5162,75 @@ msgstr ""
 msgid "Superblock backups stored on blocks: "
 msgstr ""
 
-#: misc/mke2fs.c:820
+#: misc/mke2fs.c:822
 #, c-format
 msgid "%s requires '-O 64bit'\n"
 msgstr ""
 
-#: misc/mke2fs.c:826
+#: misc/mke2fs.c:828
 #, c-format
 msgid "'%s' must be before 'resize=%u'\n"
 msgstr ""
 
-#: misc/mke2fs.c:839
+#: misc/mke2fs.c:841
 #, c-format
 msgid "Invalid desc_size: '%s'\n"
 msgstr ""
 
-#: misc/mke2fs.c:853
+#: misc/mke2fs.c:855
 #, c-format
 msgid "Invalid hash seed: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:865
+#: misc/mke2fs.c:867
 #, c-format
 msgid "Invalid offset: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:879 misc/tune2fs.c:2107
+#: misc/mke2fs.c:881 misc/tune2fs.c:2055
 #, c-format
 msgid "Invalid mmp_update_interval: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:896
+#: misc/mke2fs.c:898
 #, c-format
 msgid "Invalid # of backup superblocks: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:918
+#: misc/mke2fs.c:920
 #, c-format
 msgid "Invalid stride parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:933
+#: misc/mke2fs.c:935
 #, c-format
 msgid "Invalid stripe-width parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:956
+#: misc/mke2fs.c:958
 #, c-format
 msgid "Invalid resize parameter: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:963
+#: misc/mke2fs.c:965
 msgid "The resize maximum must be greater than the filesystem size.\n"
 msgstr ""
 
-#: misc/mke2fs.c:987
+#: misc/mke2fs.c:989
 msgid "On-line resizing not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:1013 misc/mke2fs.c:1022
+#: misc/mke2fs.c:1015 misc/mke2fs.c:1024
 #, c-format
 msgid "Invalid root_owner: '%s'\n"
 msgstr ""
 
-#: misc/mke2fs.c:1065
+#: misc/mke2fs.c:1074
+#, c-format
+msgid "Invalid encoding: %s"
+msgstr ""
+
+#: misc/mke2fs.c:1092
 #, c-format
 msgid ""
 "\n"
@@ -5237,11 +5253,13 @@ msgid ""
 "\ttest_fs\n"
 "\tdiscard\n"
 "\tnodiscard\n"
+"\tfname_encoding=<encoding>\n"
+"\tfname_encoding_flags=<flags>\n"
 "\tquotatype=<quota type(s) to be enabled>\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1090
+#: misc/mke2fs.c:1119
 #, c-format
 msgid ""
 "\n"
@@ -5249,41 +5267,53 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1135
+#: misc/mke2fs.c:1130
+#, c-format
+msgid "error: Invalid encoding flag: %s\n"
+msgstr ""
+
+#: misc/mke2fs.c:1136
+#, c-format
+msgid ""
+"error: An encoding must be explicitly specified when passing encoding-"
+"flags\n"
+msgstr ""
+
+#: misc/mke2fs.c:1184
 #, c-format
 msgid ""
 "Syntax error in mke2fs config file (%s, line #%d)\n"
 "\t%s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1148 misc/tune2fs.c:1126
+#: misc/mke2fs.c:1197 misc/tune2fs.c:1068
 #, c-format
 msgid "Invalid filesystem option set: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1160 misc/tune2fs.c:417
+#: misc/mke2fs.c:1209 misc/tune2fs.c:417
 #, c-format
 msgid "Invalid mount option set: %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1296
+#: misc/mke2fs.c:1345
 #, c-format
 msgid ""
 "\n"
 "Your mke2fs.conf file does not define the %s filesystem type.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1300
+#: misc/mke2fs.c:1349
 msgid ""
 "You probably need to install an updated mke2fs.conf file.\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1304
+#: misc/mke2fs.c:1353
 msgid "Aborting...\n"
 msgstr ""
 
-#: misc/mke2fs.c:1345
+#: misc/mke2fs.c:1394
 #, c-format
 msgid ""
 "\n"
@@ -5291,154 +5321,154 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1527
+#: misc/mke2fs.c:1578
 msgid "Couldn't allocate memory for new PATH.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1564
+#: misc/mke2fs.c:1615
 #, c-format
 msgid "Couldn't init profile successfully (error: %ld).\n"
 msgstr ""
 
-#: misc/mke2fs.c:1597
+#: misc/mke2fs.c:1648
 #, c-format
 msgid "invalid block size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1601
+#: misc/mke2fs.c:1652
 #, c-format
 msgid "Warning: blocksize %d not usable on most systems.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1617
+#: misc/mke2fs.c:1668
 #, c-format
 msgid "invalid cluster size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1630
+#: misc/mke2fs.c:1681
 msgid "'-R' is deprecated, use '-E' instead"
 msgstr ""
 
-#: misc/mke2fs.c:1644 misc/tune2fs.c:1836
+#: misc/mke2fs.c:1695 misc/tune2fs.c:1784
 #, c-format
 msgid "bad error behavior - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1656
+#: misc/mke2fs.c:1707
 msgid "Illegal number for blocks per group"
 msgstr ""
 
-#: misc/mke2fs.c:1661
+#: misc/mke2fs.c:1712
 msgid "blocks per group must be multiple of 8"
 msgstr ""
 
-#: misc/mke2fs.c:1669
+#: misc/mke2fs.c:1720
 msgid "Illegal number for flex_bg size"
 msgstr ""
 
-#: misc/mke2fs.c:1675
+#: misc/mke2fs.c:1726
 msgid "flex_bg size must be a power of 2"
 msgstr ""
 
-#: misc/mke2fs.c:1680
+#: misc/mke2fs.c:1731
 #, c-format
 msgid "flex_bg size (%lu) must be less than or equal to 2^31"
 msgstr ""
 
-#: misc/mke2fs.c:1690
+#: misc/mke2fs.c:1741
 #, c-format
 msgid "invalid inode ratio %s (min %d/max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:1700
+#: misc/mke2fs.c:1751
 #, c-format
 msgid "invalid inode size - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1713
+#: misc/mke2fs.c:1764
 msgid ""
 "Warning: -K option is deprecated and should not be used anymore. Use '-E "
 "nodiscard' extended option instead!\n"
 msgstr ""
 
-#: misc/mke2fs.c:1724
+#: misc/mke2fs.c:1775
 msgid "in malloc for bad_blocks_filename"
 msgstr ""
 
-#: misc/mke2fs.c:1733
+#: misc/mke2fs.c:1784
 #, c-format
 msgid ""
 "Warning: label too long; will be truncated to '%s'\n"
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:1742
+#: misc/mke2fs.c:1793
 #, c-format
 msgid "invalid reserved blocks percent - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1757
+#: misc/mke2fs.c:1808
 #, c-format
 msgid "bad num inodes - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1770
+#: misc/mke2fs.c:1821
 msgid "while allocating fs_feature string"
 msgstr ""
 
-#: misc/mke2fs.c:1787
+#: misc/mke2fs.c:1838
 #, c-format
 msgid "bad revision level - %s"
 msgstr ""
 
-#: misc/mke2fs.c:1792
+#: misc/mke2fs.c:1843
 #, c-format
 msgid "while trying to create revision %d"
 msgstr ""
 
-#: misc/mke2fs.c:1806
+#: misc/mke2fs.c:1857
 msgid "The -t option may only be used once"
 msgstr ""
 
-#: misc/mke2fs.c:1814
+#: misc/mke2fs.c:1865
 msgid "The -T option may only be used once"
 msgstr ""
 
-#: misc/mke2fs.c:1870 misc/mke2fs.c:3215
+#: misc/mke2fs.c:1921 misc/mke2fs.c:3296
 #, c-format
 msgid "while trying to open journal device %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:1876
+#: misc/mke2fs.c:1927
 #, c-format
 msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1882
+#: misc/mke2fs.c:1933
 #, c-format
 msgid "Using journal device's blocksize: %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:1893
+#: misc/mke2fs.c:1944
 #, c-format
 msgid "invalid blocks '%s' on device '%s'"
 msgstr ""
 
-#: misc/mke2fs.c:1923
+#: misc/mke2fs.c:1974
 msgid "filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:1941 resize/main.c:497
+#: misc/mke2fs.c:1992 resize/main.c:497
 msgid "while trying to determine filesystem size"
 msgstr ""
 
-#: misc/mke2fs.c:1947
+#: misc/mke2fs.c:1998
 msgid ""
 "Couldn't determine device size; you must specify\n"
 "the size of the filesystem\n"
 msgstr ""
 
-#: misc/mke2fs.c:1954
+#: misc/mke2fs.c:2005
 msgid ""
 "Device size reported to be zero.  Invalid partition specified, or\n"
 "\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5446,132 +5476,144 @@ msgid ""
 "\tto re-read your partition table.\n"
 msgstr ""
 
-#: misc/mke2fs.c:1971
+#: misc/mke2fs.c:2022
 msgid "Filesystem larger than apparent device size."
 msgstr ""
 
-#: misc/mke2fs.c:1991
+#: misc/mke2fs.c:2042
 msgid "Failed to parse fs types list\n"
 msgstr ""
 
-#: misc/mke2fs.c:2040
+#: misc/mke2fs.c:2092
 msgid "The HURD does not support the filetype feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2045
+#: misc/mke2fs.c:2097
 msgid "The HURD does not support the huge_file feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2050
+#: misc/mke2fs.c:2102
 msgid "The HURD does not support the metadata_csum feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2055
+#: misc/mke2fs.c:2107
 msgid "The HURD does not support the ea_inode feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2065
+#: misc/mke2fs.c:2117
 msgid "while trying to determine hardware sector size"
 msgstr ""
 
-#: misc/mke2fs.c:2071
+#: misc/mke2fs.c:2123
 msgid "while trying to determine physical sector size"
 msgstr ""
 
-#: misc/mke2fs.c:2103
+#: misc/mke2fs.c:2155
 msgid "while setting blocksize; too small for device\n"
 msgstr ""
 
-#: misc/mke2fs.c:2108
+#: misc/mke2fs.c:2160
 #, c-format
 msgid ""
 "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
 msgstr ""
 
-#: misc/mke2fs.c:2132
+#: misc/mke2fs.c:2184
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
 "\tin 32 bits using a blocksize of %d.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2144
+#: misc/mke2fs.c:2196
 #, c-format
 msgid ""
 "%s: Size of device (0x%llx blocks) %s too big to create\n"
 "\ta filesystem using a blocksize of %d.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2166
+#: misc/mke2fs.c:2218
 msgid "fs_types for mke2fs.conf resolution: "
 msgstr ""
 
-#: misc/mke2fs.c:2173
+#: misc/mke2fs.c:2225
 msgid "Filesystem features not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2181
+#: misc/mke2fs.c:2233
 msgid "Sparse superblocks not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2191
+#: misc/mke2fs.c:2243
 msgid "Journals not supported with revision 0 filesystems\n"
 msgstr ""
 
-#: misc/mke2fs.c:2204
+#: misc/mke2fs.c:2256
 #, c-format
 msgid "invalid reserved blocks percent - %lf"
 msgstr ""
 
-#: misc/mke2fs.c:2221
+#: misc/mke2fs.c:2273
 msgid ""
 "Extents MUST be enabled for a 64-bit filesystem.  Pass -O extents to "
 "rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2241
+#: misc/mke2fs.c:2293
 msgid "The cluster size may not be smaller than the block size.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2247
+#: misc/mke2fs.c:2299
 msgid "specifying a cluster size requires the bigalloc feature"
 msgstr ""
 
-#: misc/mke2fs.c:2267
+#: misc/mke2fs.c:2319
 #, c-format
 msgid "warning: Unable to get device geometry for %s\n"
 msgstr ""
 
-#: misc/mke2fs.c:2270
+#: misc/mke2fs.c:2322
 #, c-format
 msgid "%s alignment is offset by %lu bytes.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2272
+#: misc/mke2fs.c:2324
 #, c-format
 msgid ""
 "This may result in very poor performance, (re)-partitioning suggested.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2293
+#: misc/mke2fs.c:2345
 #, c-format
 msgid "%d-byte blocks too big for system (max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:2297
+#: misc/mke2fs.c:2349
 #, c-format
 msgid ""
 "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
 msgstr ""
 
-#: misc/mke2fs.c:2305
+#: misc/mke2fs.c:2357
 #, c-format
 msgid ""
 "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
 "and journal checksum features.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2360
+#: misc/mke2fs.c:2401
+msgid ""
+"Filename encoding type must be specified\n"
+"Use -E fname_encoding=<name> instead"
+msgstr ""
+
+#: misc/mke2fs.c:2408
+msgid ""
+"Unknown default filename encoding\n"
+"Use -E fname_encoding=<name> instead"
+msgstr ""
+
+#: misc/mke2fs.c:2432
 #, c-format
 msgid ""
 "\n"
@@ -5581,22 +5623,28 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:2375
+#: misc/mke2fs.c:2447
 #, c-format
 msgid "%d byte inodes are too small for project quota"
 msgstr ""
 
-#: misc/mke2fs.c:2397
+#: misc/mke2fs.c:2463
+msgid ""
+"The encrypt and encoding features are not compatible.\n"
+"They can not be both enabled simultaneously.\n"
+msgstr ""
+
+#: misc/mke2fs.c:2478
 msgid "Can't support bigalloc feature without extents feature"
 msgstr ""
 
-#: misc/mke2fs.c:2404
+#: misc/mke2fs.c:2485
 msgid ""
 "The resize_inode and meta_bg features are not compatible.\n"
 "They can not be both enabled simultaneously.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2412
+#: misc/mke2fs.c:2493
 msgid ""
 "\n"
 "Warning: the bigalloc feature is still under development\n"
@@ -5604,39 +5652,39 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/mke2fs.c:2424
+#: misc/mke2fs.c:2505
 msgid "reserved online resize blocks not supported on non-sparse filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:2433
+#: misc/mke2fs.c:2514
 msgid "blocks per group count out of range"
 msgstr ""
 
-#: misc/mke2fs.c:2455
+#: misc/mke2fs.c:2536
 msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
 msgstr ""
 
-#: misc/mke2fs.c:2467
+#: misc/mke2fs.c:2548
 #, c-format
 msgid "invalid inode size %d (min %d/max %d)"
 msgstr ""
 
-#: misc/mke2fs.c:2482
+#: misc/mke2fs.c:2563
 #, c-format
 msgid "%d byte inodes are too small for inline data; specify larger size"
 msgstr ""
 
-#: misc/mke2fs.c:2497
+#: misc/mke2fs.c:2578
 #, c-format
 msgid "too many inodes (%llu), raise inode ratio?"
 msgstr ""
 
-#: misc/mke2fs.c:2504
+#: misc/mke2fs.c:2585
 #, c-format
 msgid "too many inodes (%llu), specify < 2^32 inodes"
 msgstr ""
 
-#: misc/mke2fs.c:2518
+#: misc/mke2fs.c:2599
 #, c-format
 msgid ""
 "inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5644,153 +5692,153 @@ msgid ""
 "\tor lower inode count (-N).\n"
 msgstr ""
 
-#: misc/mke2fs.c:2705
+#: misc/mke2fs.c:2786
 msgid "Discarding device blocks: "
 msgstr ""
 
-#: misc/mke2fs.c:2721
+#: misc/mke2fs.c:2802
 msgid "failed - "
 msgstr ""
 
-#: misc/mke2fs.c:2780
+#: misc/mke2fs.c:2861
 msgid "while initializing quota context"
 msgstr ""
 
-#: misc/mke2fs.c:2787
+#: misc/mke2fs.c:2868
 msgid "while writing quota inodes"
 msgstr ""
 
-#: misc/mke2fs.c:2812
+#: misc/mke2fs.c:2893
 #, c-format
 msgid "bad error behavior in profile - %s"
 msgstr ""
 
-#: misc/mke2fs.c:2888
+#: misc/mke2fs.c:2969
 msgid "in malloc for android_sparse_params"
 msgstr ""
 
-#: misc/mke2fs.c:2902
+#: misc/mke2fs.c:2983
 msgid "while setting up superblock"
 msgstr ""
 
-#: misc/mke2fs.c:2918
+#: misc/mke2fs.c:2999
 msgid ""
 "Extents are not enabled.  The file extent tree can be checksummed, whereas "
 "block maps cannot.  Not enabling extents reduces the coverage of metadata "
 "checksumming.  Pass -O extents to rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2925
+#: misc/mke2fs.c:3006
 msgid ""
 "64-bit filesystem support is not enabled.  The larger fields afforded by "
 "this feature enable full-strength checksumming.  Pass -O 64bit to rectify.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2933
+#: misc/mke2fs.c:3014
 msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
 msgstr ""
 
-#: misc/mke2fs.c:2957
+#: misc/mke2fs.c:3038
 msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
 msgstr ""
 
-#: misc/mke2fs.c:3056
+#: misc/mke2fs.c:3137
 #, c-format
 msgid "unknown os - %s"
 msgstr ""
 
-#: misc/mke2fs.c:3119
+#: misc/mke2fs.c:3200
 msgid "Allocating group tables: "
 msgstr ""
 
-#: misc/mke2fs.c:3127
+#: misc/mke2fs.c:3208
 msgid "while trying to allocate filesystem tables"
 msgstr ""
 
-#: misc/mke2fs.c:3136
+#: misc/mke2fs.c:3217
 msgid ""
 "\n"
 "\twhile converting subcluster bitmap"
 msgstr ""
 
-#: misc/mke2fs.c:3142
+#: misc/mke2fs.c:3223
 #, c-format
 msgid "%s may be further corrupted by superblock rewrite\n"
 msgstr ""
 
-#: misc/mke2fs.c:3183
+#: misc/mke2fs.c:3264
 #, c-format
 msgid "while zeroing block %llu at end of filesystem"
 msgstr ""
 
-#: misc/mke2fs.c:3196
+#: misc/mke2fs.c:3277
 msgid "while reserving blocks for online resize"
 msgstr ""
 
-#: misc/mke2fs.c:3208 misc/tune2fs.c:1544
+#: misc/mke2fs.c:3289 misc/tune2fs.c:1492
 msgid "journal"
 msgstr ""
 
-#: misc/mke2fs.c:3220
+#: misc/mke2fs.c:3301
 #, c-format
 msgid "Adding journal to device %s: "
 msgstr ""
 
-#: misc/mke2fs.c:3227
+#: misc/mke2fs.c:3308
 #, c-format
 msgid ""
 "\n"
 "\twhile trying to add journal to device %s"
 msgstr ""
 
-#: misc/mke2fs.c:3232 misc/mke2fs.c:3261 misc/mke2fs.c:3299
-#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1573 misc/tune2fs.c:1592
+#: misc/mke2fs.c:3313 misc/mke2fs.c:3342 misc/mke2fs.c:3380
+#: misc/mk_hugefiles.c:600 misc/tune2fs.c:1521 misc/tune2fs.c:1540
 msgid "done\n"
 msgstr ""
 
-#: misc/mke2fs.c:3238
+#: misc/mke2fs.c:3319
 msgid "Skipping journal creation in super-only mode\n"
 msgstr ""
 
-#: misc/mke2fs.c:3248
+#: misc/mke2fs.c:3329
 #, c-format
 msgid "Creating journal (%u blocks): "
 msgstr ""
 
-#: misc/mke2fs.c:3257
+#: misc/mke2fs.c:3338
 msgid ""
 "\n"
 "\twhile trying to create journal"
 msgstr ""
 
-#: misc/mke2fs.c:3269 misc/tune2fs.c:1191
+#: misc/mke2fs.c:3350 misc/tune2fs.c:1133
 msgid ""
 "\n"
 "Error while enabling multiple mount protection feature."
 msgstr ""
 
-#: misc/mke2fs.c:3274
+#: misc/mke2fs.c:3355
 #, c-format
 msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
 msgstr ""
 
-#: misc/mke2fs.c:3290
+#: misc/mke2fs.c:3371
 msgid "Copying files into the device: "
 msgstr ""
 
-#: misc/mke2fs.c:3296
+#: misc/mke2fs.c:3377
 msgid "while populating file system"
 msgstr ""
 
-#: misc/mke2fs.c:3303
+#: misc/mke2fs.c:3384
 msgid "Writing superblocks and filesystem accounting information: "
 msgstr ""
 
-#: misc/mke2fs.c:3310
+#: misc/mke2fs.c:3391
 msgid "while writing out and closing file system"
 msgstr ""
 
-#: misc/mke2fs.c:3313
+#: misc/mke2fs.c:3394
 msgid ""
 "done\n"
 "\n"
@@ -5895,19 +5943,19 @@ msgstr ""
 msgid "while trying to open external journal"
 msgstr ""
 
-#: misc/tune2fs.c:287 misc/tune2fs.c:2851
+#: misc/tune2fs.c:287 misc/tune2fs.c:2804
 #, c-format
 msgid "%s is not a journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:296 misc/tune2fs.c:2860
+#: misc/tune2fs.c:296 misc/tune2fs.c:2813
 #, c-format
 msgid ""
 "Journal superblock is corrupted, nr_users\n"
 "is too high (%d).\n"
 msgstr ""
 
-#: misc/tune2fs.c:303 misc/tune2fs.c:2867
+#: misc/tune2fs.c:303 misc/tune2fs.c:2820
 msgid "Filesystem's UUID not found on journal device.\n"
 msgstr ""
 
@@ -5962,207 +6010,213 @@ msgstr ""
 msgid "' to disable 64-bit mode.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1093
+#: misc/tune2fs.c:1035
 msgid ""
 "WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
 "  This requires Linux >= v4.4.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1129
+#: misc/tune2fs.c:1071
 #, c-format
 msgid "Clearing filesystem feature '%s' not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1135
+#: misc/tune2fs.c:1077
 #, c-format
 msgid "Setting filesystem feature '%s' not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1144
+#: misc/tune2fs.c:1086
 msgid ""
 "The has_journal feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1152
+#: misc/tune2fs.c:1094
 msgid ""
 "The needs_recovery flag is set.  Please run e2fsck before clearing\n"
 "the has_journal flag.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1170
+#: misc/tune2fs.c:1112
 msgid ""
 "Setting filesystem feature 'sparse_super' not supported\n"
 "for filesystems with the meta_bg feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1183
+#: misc/tune2fs.c:1125
 msgid ""
 "The multiple mount protection feature can't\n"
 "be set if the filesystem is mounted or\n"
 "read-only.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1201
+#: misc/tune2fs.c:1143
 #, c-format
 msgid "Multiple mount protection has been enabled with update interval %ds.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1210
+#: misc/tune2fs.c:1152
 msgid ""
 "The multiple mount protection feature cannot\n"
 "be disabled if the filesystem is readonly.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1218
+#: misc/tune2fs.c:1160
 msgid "Error while reading bitmaps\n"
 msgstr ""
 
-#: misc/tune2fs.c:1227
+#: misc/tune2fs.c:1169
 #, c-format
 msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
 msgstr ""
 
-#: misc/tune2fs.c:1232
+#: misc/tune2fs.c:1174
 msgid "while reading MMP block."
 msgstr ""
 
-#: misc/tune2fs.c:1264
+#: misc/tune2fs.c:1206
 msgid ""
 "Clearing the flex_bg flag would cause the the filesystem to be\n"
 "inconsistent.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1275
+#: misc/tune2fs.c:1217
 msgid ""
 "The huge_file feature may only be cleared when the filesystem is\n"
 "unmounted or mounted read-only.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1286
+#: misc/tune2fs.c:1228
 msgid "Enabling checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1288
+#: misc/tune2fs.c:1230
 msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1294
+#: misc/tune2fs.c:1236
 msgid ""
 "Extents are not enabled.  The file extent tree can be checksummed, whereas "
 "block maps cannot.  Not enabling extents reduces the coverage of metadata "
 "checksumming.  Re-run with -O extent to rectify.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1301
+#: misc/tune2fs.c:1243
 msgid ""
 "64-bit filesystem support is not enabled.  The larger fields afforded by "
 "this feature enable full-strength checksumming.  Run resize2fs -b to "
 "rectify.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1327
+#: misc/tune2fs.c:1269
 msgid "Disabling checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1329
+#: misc/tune2fs.c:1271
 msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1392
+#: misc/tune2fs.c:1334
 #, c-format
 msgid "Cannot enable 64-bit mode while mounted!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1402
+#: misc/tune2fs.c:1344
 #, c-format
 msgid "Cannot disable 64-bit mode while mounted!\n"
 msgstr ""
 
-#: misc/tune2fs.c:1432
+#: misc/tune2fs.c:1374
 #, c-format
 msgid "Cannot enable project feature; inode size too small.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1453
+#: misc/tune2fs.c:1395
 msgid ""
 "\n"
 "Warning: '^quota' option overrides '-Q'arguments.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1471
+#: misc/tune2fs.c:1405
+msgid ""
+"Cannot enable encrypt feature on filesystems with the encoding feature "
+"enabled.\n"
+msgstr ""
+
+#: misc/tune2fs.c:1419
 msgid ""
 "Setting feature 'metadata_csum_seed' is only supported\n"
 "on filesystems with the metadata_csum feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1489
+#: misc/tune2fs.c:1437
 msgid ""
 "UUID has changed since enabling metadata_csum.  Filesystem must be "
 "unmounted \n"
 "to safely rewrite all metadata to match the new UUID.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1495
+#: misc/tune2fs.c:1443
 msgid "Recalculating checksums could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:1537
+#: misc/tune2fs.c:1485
 msgid "The filesystem already has a journal.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1557
+#: misc/tune2fs.c:1505
 #, c-format
 msgid ""
 "\n"
 "\twhile trying to open journal on %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:1561
+#: misc/tune2fs.c:1509
 #, c-format
 msgid "Creating journal on device %s: "
 msgstr ""
 
-#: misc/tune2fs.c:1569
+#: misc/tune2fs.c:1517
 #, c-format
 msgid "while adding filesystem to journal on %s"
 msgstr ""
 
-#: misc/tune2fs.c:1575
+#: misc/tune2fs.c:1523
 msgid "Creating journal inode: "
 msgstr ""
 
-#: misc/tune2fs.c:1589
+#: misc/tune2fs.c:1537
 msgid ""
 "\n"
 "\twhile trying to create journal file"
 msgstr ""
 
-#: misc/tune2fs.c:1627
+#: misc/tune2fs.c:1575
 #, c-format
 msgid "Cannot enable project quota; inode size too small.\n"
 msgstr ""
 
-#: misc/tune2fs.c:1640
+#: misc/tune2fs.c:1588
 msgid "while initializing quota context in support library"
 msgstr ""
 
-#: misc/tune2fs.c:1655
+#: misc/tune2fs.c:1603
 #, c-format
 msgid "while updating quota limits (%d)"
 msgstr ""
 
-#: misc/tune2fs.c:1663
+#: misc/tune2fs.c:1611
 #, c-format
 msgid "while writing quota file (%d)"
 msgstr ""
 
-#: misc/tune2fs.c:1681
+#: misc/tune2fs.c:1629
 #, c-format
 msgid "while removing quota file (%d)"
 msgstr ""
 
-#: misc/tune2fs.c:1724
+#: misc/tune2fs.c:1672
 msgid ""
 "\n"
 "Bad quota options specified.\n"
@@ -6176,65 +6230,65 @@ msgid ""
 "\n"
 msgstr ""
 
-#: misc/tune2fs.c:1782
+#: misc/tune2fs.c:1730
 #, c-format
 msgid "Couldn't parse date/time specifier: %s"
 msgstr ""
 
-#: misc/tune2fs.c:1807 misc/tune2fs.c:1820
+#: misc/tune2fs.c:1755 misc/tune2fs.c:1768
 #, c-format
 msgid "bad mounts count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1863
+#: misc/tune2fs.c:1811
 #, c-format
 msgid "bad gid/group name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1896
+#: misc/tune2fs.c:1844
 #, c-format
 msgid "bad interval - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1925
+#: misc/tune2fs.c:1873
 #, c-format
 msgid "bad reserved block ratio - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1940
+#: misc/tune2fs.c:1888
 msgid "-o may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:1949
+#: misc/tune2fs.c:1897
 msgid "-O may only be specified once"
 msgstr ""
 
-#: misc/tune2fs.c:1966
+#: misc/tune2fs.c:1914
 #, c-format
 msgid "bad reserved blocks count - %s"
 msgstr ""
 
-#: misc/tune2fs.c:1995
+#: misc/tune2fs.c:1943
 #, c-format
 msgid "bad uid/user name - %s"
 msgstr ""
 
-#: misc/tune2fs.c:2012
+#: misc/tune2fs.c:1960
 #, c-format
 msgid "bad inode size - %s"
 msgstr ""
 
-#: misc/tune2fs.c:2019
+#: misc/tune2fs.c:1967
 #, c-format
 msgid "Inode size must be a power of two- %s"
 msgstr ""
 
-#: misc/tune2fs.c:2116
+#: misc/tune2fs.c:2064
 #, c-format
 msgid "mmp_update_interval too big: %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:2121
+#: misc/tune2fs.c:2069
 #, c-format
 msgid "Setting multiple mount protection update interval to %lu second\n"
 msgid_plural ""
@@ -6242,27 +6296,32 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: misc/tune2fs.c:2144
+#: misc/tune2fs.c:2078
+#, c-format
+msgid "Setting filesystem error flag to force fsck.\n"
+msgstr ""
+
+#: misc/tune2fs.c:2096
 #, c-format
 msgid "Invalid RAID stride: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2159
+#: misc/tune2fs.c:2111
 #, c-format
 msgid "Invalid RAID stripe-width: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2174
+#: misc/tune2fs.c:2126
 #, c-format
 msgid "Invalid hash algorithm: %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:2180
+#: misc/tune2fs.c:2132
 #, c-format
 msgid "Setting default hash algorithm to %s (%d)\n"
 msgstr ""
 
-#: misc/tune2fs.c:2199
+#: misc/tune2fs.c:2151
 msgid ""
 "\n"
 "Bad options specified.\n"
@@ -6277,76 +6336,77 @@ msgid ""
 "\tmmp_update_interval=<mmp update interval in seconds>\n"
 "\tstride=<RAID per-disk chunk size in blocks>\n"
 "\tstripe_width=<RAID stride*data disks in blocks>\n"
+"\tforce_fsck\n"
 "\ttest_fs\n"
 "\t^test_fs\n"
 msgstr ""
 
-#: misc/tune2fs.c:2669
+#: misc/tune2fs.c:2622
 msgid "Failed to read inode bitmap\n"
 msgstr ""
 
-#: misc/tune2fs.c:2674
+#: misc/tune2fs.c:2627
 msgid "Failed to read block bitmap\n"
 msgstr ""
 
-#: misc/tune2fs.c:2691 resize/resize2fs.c:1277
+#: misc/tune2fs.c:2644 resize/resize2fs.c:1277
 msgid "blocks to be moved"
 msgstr ""
 
-#: misc/tune2fs.c:2694
+#: misc/tune2fs.c:2647
 msgid "Failed to allocate block bitmap when increasing inode size\n"
 msgstr ""
 
-#: misc/tune2fs.c:2700
+#: misc/tune2fs.c:2653
 msgid "Not enough space to increase inode size \n"
 msgstr ""
 
-#: misc/tune2fs.c:2705
+#: misc/tune2fs.c:2658
 msgid "Failed to relocate blocks during inode resize \n"
 msgstr ""
 
-#: misc/tune2fs.c:2737
+#: misc/tune2fs.c:2690
 msgid ""
 "Error in resizing the inode size.\n"
 "Run e2undo to undo the file system changes. \n"
 msgstr ""
 
-#: misc/tune2fs.c:2947
+#: misc/tune2fs.c:2900
 msgid ""
 "If you are sure the filesystem is not in use on any node, run:\n"
 "'tune2fs -f -E clear_mmp {device}'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2954
+#: misc/tune2fs.c:2907
 #, c-format
 msgid ""
 "MMP block magic is bad. Try to fix it by running:\n"
 "'e2fsck -f %s'\n"
 msgstr ""
 
-#: misc/tune2fs.c:2966
+#: misc/tune2fs.c:2919
 msgid "Cannot modify a journal device.\n"
 msgstr ""
 
-#: misc/tune2fs.c:2979
+#: misc/tune2fs.c:2932
 #, c-format
 msgid "The inode size is already %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:2986
+#: misc/tune2fs.c:2939
 msgid "Shrinking inode size is not supported\n"
 msgstr ""
 
-#: misc/tune2fs.c:2991
+#: misc/tune2fs.c:2944
 #, c-format
 msgid "Invalid inode size %lu (max %d)\n"
 msgstr ""
 
-#: misc/tune2fs.c:2997
+#: misc/tune2fs.c:2950
 msgid "Resizing inodes could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3045
+#: misc/tune2fs.c:2998
 #, c-format
 msgid ""
 "Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6357,153 +6417,153 @@ msgid ""
 "by journal recovery.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3056
+#: misc/tune2fs.c:3009
 #, c-format
 msgid "Recovering journal.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3075
+#: misc/tune2fs.c:3028
 #, c-format
 msgid "Setting maximal mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3081
+#: misc/tune2fs.c:3034
 #, c-format
 msgid "Setting current mount count to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3086
+#: misc/tune2fs.c:3039
 #, c-format
 msgid "Setting error behavior to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3091
+#: misc/tune2fs.c:3044
 #, c-format
 msgid "Setting reserved blocks gid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3096
+#: misc/tune2fs.c:3049
 #, c-format
 msgid "interval between checks is too big (%lu)"
 msgstr ""
 
-#: misc/tune2fs.c:3103
+#: misc/tune2fs.c:3056
 #, c-format
 msgid "Setting interval between checks to %lu seconds\n"
 msgstr ""
 
-#: misc/tune2fs.c:3110
+#: misc/tune2fs.c:3063
 #, c-format
 msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
 msgstr ""
 
-#: misc/tune2fs.c:3116
+#: misc/tune2fs.c:3069
 #, c-format
 msgid "reserved blocks count is too big (%llu)"
 msgstr ""
 
-#: misc/tune2fs.c:3123
+#: misc/tune2fs.c:3076
 #, c-format
 msgid "Setting reserved blocks count to %llu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3128
+#: misc/tune2fs.c:3081
 msgid ""
 "\n"
 "The filesystem already has sparse superblocks.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3131
+#: misc/tune2fs.c:3084
 msgid ""
 "\n"
 "Setting the sparse superblock flag not supported\n"
 "for filesystems with the meta_bg feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3141
+#: misc/tune2fs.c:3094
 #, c-format
 msgid ""
 "\n"
 "Sparse superblock flag set.  %s"
 msgstr ""
 
-#: misc/tune2fs.c:3146
+#: misc/tune2fs.c:3099
 msgid ""
 "\n"
 "Clearing the sparse superblock flag not supported.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3154
+#: misc/tune2fs.c:3107
 #, c-format
 msgid "Setting time filesystem last checked to %s\n"
 msgstr ""
 
-#: misc/tune2fs.c:3160
+#: misc/tune2fs.c:3113
 #, c-format
 msgid "Setting reserved blocks uid to %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3192
+#: misc/tune2fs.c:3145
 msgid "Error in using clear_mmp. It must be used with -f\n"
 msgstr ""
 
-#: misc/tune2fs.c:3210
+#: misc/tune2fs.c:3163
 msgid ""
 "The quota feature may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3228
+#: misc/tune2fs.c:3181
 msgid "Setting the UUID on this filesystem could take some time."
 msgstr ""
 
-#: misc/tune2fs.c:3243
+#: misc/tune2fs.c:3196
 msgid "The UUID may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3246
+#: misc/tune2fs.c:3199
 msgid ""
 "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
 "and re-run this command.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3276
+#: misc/tune2fs.c:3229
 msgid "Invalid UUID format\n"
 msgstr ""
 
-#: misc/tune2fs.c:3292
+#: misc/tune2fs.c:3245
 msgid "Need to update journal superblock.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3314
+#: misc/tune2fs.c:3267
 msgid "The inode size may only be changed when the filesystem is unmounted.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3321
+#: misc/tune2fs.c:3274
 msgid ""
 "Changing the inode size not supported for filesystems with the flex_bg\n"
 "feature enabled.\n"
 msgstr ""
 
-#: misc/tune2fs.c:3339
+#: misc/tune2fs.c:3292
 #, c-format
 msgid "Setting inode size %lu\n"
 msgstr ""
 
-#: misc/tune2fs.c:3343
+#: misc/tune2fs.c:3296
 msgid "Failed to change inode size\n"
 msgstr ""
 
-#: misc/tune2fs.c:3357
+#: misc/tune2fs.c:3310
 #, c-format
 msgid "Setting stride size to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3362
+#: misc/tune2fs.c:3315
 #, c-format
 msgid "Setting stripe width to %d\n"
 msgstr ""
 
-#: misc/tune2fs.c:3369
+#: misc/tune2fs.c:3322
 #, c-format
 msgid "Setting extended default mount options to '%s'\n"
 msgstr ""
@@ -6985,24 +7045,24 @@ msgstr ""
 msgid "meta-data blocks"
 msgstr ""
 
-#: resize/resize2fs.c:1386 resize/resize2fs.c:2473
+#: resize/resize2fs.c:1386 resize/resize2fs.c:2421
 msgid "new meta blocks"
 msgstr ""
 
-#: resize/resize2fs.c:2696
+#: resize/resize2fs.c:2644
 msgid "Should never happen!  No sb in last super_sparse bg?\n"
 msgstr ""
 
-#: resize/resize2fs.c:2701
+#: resize/resize2fs.c:2649
 msgid "Should never happen!  Unexpected old_desc in super_sparse bg?\n"
 msgstr ""
 
-#: resize/resize2fs.c:2774
+#: resize/resize2fs.c:2722
 msgid "Should never happen: resize inode corrupt!\n"
 msgstr ""
 
 #: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.44.6"
+msgid "EXT2FS Library version 1.45.0"
 msgstr ""
 
 #: lib/ext2fs/ext2_err.c:12
index 38032e5c310964d6376c38b130a0159fc28fc30f..c2e10471bfd1a7cc4f14f1fda5d624529a0e8f77 100644 (file)
@@ -1927,59 +1927,6 @@ out:
        return err;
 }
 
-/* Rewrite extents */
-static errcode_t rewrite_extents(ext2_filsys fs, ext2_ino_t ino)
-{
-       ext2_extent_handle_t    handle;
-       struct ext2fs_extent    extent;
-       errcode_t               errcode;
-       struct ext2_extent_info info;
-
-       errcode = ext2fs_extent_open(fs, ino, &handle);
-       if (errcode)
-               return errcode;
-
-       errcode = ext2fs_extent_get(handle, EXT2_EXTENT_ROOT, &extent);
-       if (errcode)
-               goto out;
-
-       do {
-               errcode = ext2fs_extent_get_info(handle, &info);
-               if (errcode)
-                       break;
-
-               /*
-                * If this is the first extent in an extent block that we
-                * haven't visited, rewrite the extent to force the ETB
-                * checksum to be rewritten.
-                */
-               if (info.curr_entry == 1 && info.curr_level != 0 &&
-                   !(extent.e_flags & EXT2_EXTENT_FLAGS_SECOND_VISIT)) {
-                       errcode = ext2fs_extent_replace(handle, 0, &extent);
-                       if (errcode)
-                               break;
-               }
-
-               /* Skip to the end of a block of leaf nodes */
-               if (extent.e_flags & EXT2_EXTENT_FLAGS_LEAF) {
-                       errcode = ext2fs_extent_get(handle,
-                                                   EXT2_EXTENT_LAST_SIB,
-                                                   &extent);
-                       if (errcode)
-                               break;
-               }
-
-               errcode = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT, &extent);
-       } while (errcode == 0);
-
-out:
-       /* Ok if we run off the end */
-       if (errcode == EXT2_ET_EXTENT_NO_NEXT)
-               errcode = 0;
-       ext2fs_extent_free(handle);
-       return errcode;
-}
-
 static void quiet_com_err_proc(const char *whoami EXT2FS_ATTR((unused)),
                               errcode_t code EXT2FS_ATTR((unused)),
                               const char *fmt EXT2FS_ATTR((unused)),
@@ -2276,7 +2223,8 @@ remap_blocks:
                /* Fix up extent block checksums with the new inode number */
                if (ext2fs_has_feature_metadata_csum(rfs->old_fs->super) &&
                    (inode->i_flags & EXT4_EXTENTS_FL)) {
-                       retval = rewrite_extents(rfs->old_fs, new_inode);
+                       retval = ext2fs_fix_extents_checksums(rfs->old_fs,
+                                                             new_inode, NULL);
                        if (retval)
                                goto errout;
                }
diff --git a/scrub/Makefile.in b/scrub/Makefile.in
new file mode 100644 (file)
index 0000000..2f6d630
--- /dev/null
@@ -0,0 +1,185 @@
+#
+# Makefile for e2scrub
+#
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+top_builddir = ..
+my_dir = scrub
+INSTALL = @INSTALL@
+
+@MCONFIG@
+
+PROGS=         e2scrub e2scrub_all
+MANPAGES=      e2scrub.8 e2scrub_all.8
+CONFFILES=     e2scrub.conf
+
+ifeq ($(HAVE_UDEV),yes)
+UDEV_RULES     = e2scrub.rules
+INSTALLDIRS_TGT        += installdirs-udev
+INSTALL_TGT    += install-udev
+UNINSTALL_TGT  += uninstall-udev
+endif
+
+ifeq ($(HAVE_CROND),yes)
+CRONTABS       = e2scrub_all.cron
+LIBPROGS       += e2scrub_all_cron
+INSTALLDIRS_TGT        += installdirs-crond installdirs-libprogs
+INSTALL_TGT    += install-crond install-libprogs
+UNINSTALL_TGT  += uninstall-crond uninstall-libprogs
+endif
+
+ifeq ($(HAVE_SYSTEMD),yes)
+SERVICE_FILES  = e2scrub@.service e2scrub_all.service e2scrub_all.timer e2scrub_fail@.service e2scrub_reap.service
+LIBPROGS       += e2scrub_fail
+INSTALLDIRS_TGT        += installdirs-systemd installdirs-libprogs
+INSTALL_TGT    += install-systemd install-libprogs
+UNINSTALL_TGT  += uninstall-systemd uninstall-libprogs
+endif
+
+all:: $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
+
+e2scrub: $(DEP_SUBSTITUTE) e2scrub.in
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2scrub.in $@
+       $(Q) chmod a+x $@
+
+e2scrub_all: e2scrub_all.in
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2scrub_all.in $@
+       $(Q) chmod a+x $@
+
+e2scrub_fail: e2scrub_fail.in
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2scrub_fail.in $@
+       $(Q) chmod a+x $@
+
+e2scrub_all_cron: e2scrub_all_cron.in
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/e2scrub_all_cron.in $@
+       $(Q) chmod a+x $@
+
+%.8: %.8.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+%.conf: %.conf.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+%.rules: %.rules.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+%.service: %.service.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+%.cron: %.cron.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+%.timer: %.timer.in $(DEP_SUBSTITUTE)
+       $(E) "  SUBST $@"
+       $(Q) $(SUBSTITUTE_UPTIME) $< $@
+
+installdirs-udev:
+       $(E) "  MKDIR_P $(UDEV_RULES_DIR)"
+       $(Q) $(MKDIR_P) $(DESTDIR)$(UDEV_RULES_DIR)
+
+installdirs-crond:
+       $(E) "  MKDIR_P $(CROND_DIR)"
+       $(Q) $(MKDIR_P) $(DESTDIR)$(CROND_DIR)
+
+installdirs-libprogs:
+       $(E) "  MKDIR_P $(pkglibdir)"
+       $(Q) $(MKDIR_P) $(DESTDIR)$(pkglibdir)
+
+installdirs-systemd:
+       $(E) "  MKDIR_P $(SYSTEMD_SYSTEM_UNIT_DIR)"
+       $(Q) $(MKDIR_P) $(DESTDIR)$(SYSTEMD_SYSTEM_UNIT_DIR)
+
+installdirs: $(INSTALLDIRS_TGT)
+       $(E) "  MKDIR_P $(root_sbindir) $(man8dir) $(root_sysconfdir)"
+       $(Q) $(MKDIR_P) $(DESTDIR)$(root_sbindir) \
+               $(DESTDIR)$(man8dir) $(DESTDIR)$(root_sysconfdir)
+
+install-udev:
+       $(Q) for i in $(UDEV_RULES); do \
+               $(ES) " INSTALL $(UDEV_RULES_DIR)/$$i"; \
+               $(INSTALL_DATA) $$i $(DESTDIR)$(UDEV_RULES_DIR)/96-$$i; \
+       done
+
+install-crond:
+       $(Q) if test -n "$(CRONTABS)" ; then \
+               $(ES) " INSTALL $(CROND_DIR)/e2scrub_all" ; \
+               $(INSTALL_DATA) e2scrub_all.cron $(DESTDIR)$(CROND_DIR)/e2scrub_all ; \
+       fi
+
+install-libprogs: $(LIBPROGS)
+       $(Q) for i in $(LIBPROGS); do \
+               $(ES) " INSTALL $(pkglibdir)/$$i"; \
+               $(INSTALL_PROGRAM) $$i $(DESTDIR)$(pkglibdir)/$$i; \
+       done
+
+install-systemd: $(SERVICE_FILES)
+       $(Q) for i in $(SERVICE_FILES); do \
+               $(ES) " INSTALL_DATA $(SYSTEMD_SYSTEM_UNIT_DIR)/$$i"; \
+               $(INSTALL_DATA) $$i $(DESTDIR)$(SYSTEMD_SYSTEM_UNIT_DIR)/$$i; \
+       done
+
+install: $(PROGS) $(MANPAGES) $(FMANPAGES) installdirs $(INSTALL_TGT)
+       $(Q) for i in $(PROGS); do \
+               $(ES) " INSTALL $(root_sbindir)/$$i"; \
+               $(INSTALL_PROGRAM) $$i $(DESTDIR)$(root_sbindir)/$$i; \
+       done
+       $(Q) for i in $(MANPAGES); do \
+               for j in $(COMPRESS_EXT); do \
+                       $(RM) -f $(DESTDIR)$(man8dir)/$$i.$$j; \
+               done; \
+               $(ES) " INSTALL_DATA $(man8dir)/$$i"; \
+               $(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
+       done
+       $(Q) for i in $(CONFFILES); do \
+               $(ES) " INSTALL_DATA $(root_sysconfdir)/$$i"; \
+               $(INSTALL_DATA) $$i $(DESTDIR)$(root_sysconfdir)/$$i; \
+       done
+
+uninstall-udev:
+       for i in $(UDEV_RULES); do \
+               $(RM) -f $(DESTDIR)$(UDEV_RULES_DIR)/96-$$i; \
+       done
+
+uninstall-crond:
+       if test -n "$(CRONTABS)" ; then \
+               $(RM) -f $(DESTDIR)$(CROND_DIR)/e2scrub_all ; \
+       fi
+
+uninstall-libprogs:
+       for i in $(LIBPROGS); do \
+               $(RM) -f $(DESTDIR)$(pkglibdir)/$$i; \
+       done
+
+uninstall-systemd:
+       for i in $(SERVICE_FILES); do \
+               $(RM) -f $(DESTDIR)$(SYSTEMD_SYSTEM_UNIT_DIR)/$$i; \
+       done
+
+uninstall: $(UNINSTALL_TGT)
+       for i in $(PROGS); do \
+               $(RM) -f $(DESTDIR)$(root_sbindir)/$$i; \
+       done
+       for i in $(MANPAGES); do \
+               $(RM) -f $(DESTDIR)$(man8dir)/$$i; \
+       done
+       for i in $(CONFFILES); do \
+               $(RM) -f $(DESTDIR)$(root_sysconfdir)/$$i; \
+       done
+
+clean::
+       $(RM) -f $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
+
+mostlyclean: clean
+distclean: clean
+       $(RM) -f .depend Makefile $(srcdir)/TAGS $(srcdir)/Makefile.in.old
diff --git a/scrub/e2scrub.8.in b/scrub/e2scrub.8.in
new file mode 100644 (file)
index 0000000..ff03523
--- /dev/null
@@ -0,0 +1,60 @@
+.TH E2SCRUB 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
+.SH NAME
+e2scrub - check the contents of a mounted ext[234] filesystem
+.SH SYNOPSYS
+.B
+e2scrub [OPTION] MOUNTPOINT | DEVICE
+.SH DESCRIPTION
+.B e2scrub
+attempts to check (but not repair) all metadata in a mounted ext[234]
+filesystem if the filesystem resides on a LVM logical volume.
+The block device of the LVM logical volume can also be passed in.
+
+This program snapshots the volume and runs a file system check on the snapshot
+to look for corruption errors.
+The LVM volume group must have at least 256MiB of unallocated space to
+dedicate to the snapshot or the logical volume will be skipped.
+The snapshot will be named
+.IR lvname ".e2scrub"
+and
+.B udev
+will not create symbolic links to it under
+.IR /dev/disk .
+Every attempt will be made to remove the snapshots prior to running
+.BR e2scrub ,
+but in a dire situation it may be necessary to remove the snapshot manually.
+
+If no errors are found,
+.B fstrim
+can be called on the file system if it is mounted.
+If errors are found, the file system will be marked as having errors.
+The filesystem should be taken offline and
+.B e2fsck
+run as soon as possible, because
+.B e2scrub
+does not fix corruptions.
+If the filesystem is not repaired,
+.B e2fsck
+will be run before the next mount.
+.SH OPTIONS
+.TP
+\fB-r\fR
+Remove the e2scrub snapshot and exit without checking anything.
+.TP
+\fB-t\fR
+Run
+.B
+fstrim(1)
+on the mounted filesystem if no errors are found.
+.TP
+\fB-V\fR
+Print version information and exit.
+.SH EXIT CODE
+The exit codes are the same as in
+.BR e2fsck (8)
+.SH SEE ALSO
+.BR e2fsck (8)
+.SH AUTHOR
+Darrick J. Wong <darrick.wong@oracle.com>
+.SH COPYRIGHT
+Copyright Â©2018 Oracle.  License is GPLv2+. <http://www.gnu.org/licenses/gpl-2.0.html>
diff --git a/scrub/e2scrub.conf.in b/scrub/e2scrub.conf.in
new file mode 100644 (file)
index 0000000..5c03087
--- /dev/null
@@ -0,0 +1,21 @@
+# e2scrub configuration file
+
+# e-mail destination used by e2scrub_fail when problems are found with
+# the file system.
+# recipient=root
+
+# e-mail sender used by e2scrub_fail when problems are found with
+# the file system.
+# sender=e2scrub@host.domain.name
+
+# Snapshots will be created to run fsck; the snapshot will be of this size.
+# snap_size_mb=256
+
+# Set this to 1 to enable fstrim for everyone.
+# fstrim=0
+
+# Arguments passed into e2fsck.
+# e2fsck_opts="-vtt"
+
+# Set this to 1 to have e2scrub_all scrub all LVs, not just the mounted ones.
+# scrub_all=0
diff --git a/scrub/e2scrub.in b/scrub/e2scrub.in
new file mode 100644 (file)
index 0000000..51a9093
--- /dev/null
@@ -0,0 +1,273 @@
+#!/bin/bash
+
+#  Copyright (C) 2018 Oracle.  All Rights Reserved.
+#
+#  Author: Darrick J. Wong <darrick.wong@oracle.com>
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it would be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write the Free Software Foundation,
+#  Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
+
+# Automatically check a LVM-managed filesystem online.
+# We use lvm snapshots to do this, which means that we can only
+# check filesystems in VGs that have at least 256MB (or so) of
+# free space.
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+snap_size_mb=256
+fstrim=0
+reap=0
+e2fsck_opts=""
+conffile="@root_sysconfdir@/e2scrub.conf"
+
+test -f "${conffile}" && . "${conffile}"
+
+print_help() {
+       echo "Usage: $0 [OPTIONS] mountpoint | device"
+       echo
+       echo "mountpoint must be on a LVM-managed block device"
+       echo "-r: Remove e2scrub snapshot and exit, do not check anything."
+       echo "-t: Run fstrim if successful."
+       echo "-V: Print version information and exit."
+}
+
+print_version() {
+       echo "e2scrub @E2FSPROGS_VERSION@ (@E2FSPROGS_DATE@)"
+}
+
+exitcode() {
+       ret="$1"
+
+       # If we're being run as a service, the return code must fit the LSB
+       # init script action error guidelines, which is to say that we
+       # compress all errors to 1 ("generic or unspecified error", LSB 5.0
+       # section 22.2) and hope the admin will scan the log for what
+       # actually happened.
+
+       # We have to sleep 2 seconds here because journald uses the pid to
+       # connect our log messages to the systemd service.  This is critical
+       # for capturing all the log messages if the scrub fails, because the
+       # fail service uses the service name to gather log messages for the
+       # error report.
+       if [ -n "${SERVICE_MODE}" ]; then
+               test "${ret}" -ne 0 && ret=1
+               sleep 2
+       fi
+
+       exit "${ret}"
+}
+
+while getopts "rtV" opt; do
+       case "${opt}" in
+       "r") reap=1;;
+       "t") fstrim=1;;
+       "V") print_version; exitcode 0;;
+       *) print_help; exitcode 2;;
+       esac
+done
+shift "$((OPTIND - 1))"
+
+arg="$1"
+if [ -z "${arg}" ]; then
+       print_help
+       exitcode 1
+fi
+
+if ! type lsblk >& /dev/null ; then
+    echo "e2scrub: can't find lsblk --- is util-linux installed?"
+    exitcode 1
+fi
+
+if ! type lvcreate >& /dev/null ; then
+    echo "e2scrub: can't find lvcreate --- is lvm2 installed?"
+    exitcode 1
+fi
+
+# Find the device for a given mountpoint
+dev_from_mount() {
+       local mountpt="$(realpath "$1")"
+
+       lsblk -o NAME,FSTYPE,MOUNTPOINT -p -P -n 2> /dev/null | while read vars; do
+               eval "${vars}"
+               if [ "${mountpt}" != "${MOUNTPOINT}" ]; then
+                       continue
+               fi
+               case "${FSTYPE}" in
+               ext[234])
+                       echo "${NAME}"
+                       return 0
+                       ;;
+               esac
+       done
+       return 1
+}
+
+# Check a device argument
+dev_from_arg() {
+       local dev="$1"
+       local fstype="$(lsblk -o FSTYPE -n "${dev}" 2> /dev/null)"
+
+       case "${fstype}" in
+       ext[234])
+               echo "${dev}"
+               return 0
+               ;;
+       esac
+       return 1
+}
+
+mnt_from_dev() {
+       local dev="$1"
+
+       if [ -n "${dev}" ]; then
+               lsblk -o MOUNTPOINT -n "${dev}"
+       fi
+}
+
+# Construct block device path and mountpoint from argument
+if [ -b "${arg}" ]; then
+       dev="$(dev_from_arg "${arg}")"
+       mnt="$(mnt_from_dev "${dev}")"
+else
+       dev="$(dev_from_mount "${arg}")"
+       mnt="${arg}"
+fi
+if [ ! -e "${dev}" ]; then
+       echo "${arg}: Not an ext[234] filesystem."
+       print_help
+       exitcode 16
+fi
+
+# Make sure this is an LVM device we can snapshot
+lvm_vars="$(lvs --nameprefixes -o name,vgname,lv_role --noheadings "${dev}" 2> /dev/null)"
+eval "${lvm_vars}"
+if [ -z "${LVM2_VG_NAME}" ] || [ -z "${LVM2_LV_NAME}" ] ||
+   echo "${LVM2_LV_ROLE}" | grep -q "snapshot"; then
+       echo "${arg}: Not connnected to a LVM logical volume."
+       print_help
+       exitcode 16
+fi
+start_time="$(date +'%Y%m%d%H%M%S')"
+snap="${LVM2_LV_NAME}.e2scrub"
+snap_dev="/dev/${LVM2_VG_NAME}/${snap}"
+
+teardown() {
+       # Remove and wait for removal to succeed.
+       ${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 3>&-
+       while [ -e "${snap_dev}" ] && [ "$?" -eq "5" ]; do
+               sleep 0.5
+               ${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 3>&-
+       done
+}
+
+check() {
+       # First we recover the journal, then we see if e2fsck tries any
+       # non-optimization repairs.  If either of these two returns a
+       # non-zero status (errors fixed or remaining) then this fs is bad.
+       E2FSCK_FIXES_ONLY=1
+       export E2FSCK_FIXES_ONLY
+       ${DBG} "@root_sbindir@/e2fsck" -E journal_only -p ${e2fsck_opts} "${snap_dev}" || return $?
+       ${DBG} "@root_sbindir@/e2fsck" -f -y ${e2fsck_opts} "${snap_dev}"
+}
+
+mark_clean() {
+       ${DBG} "@root_sbindir@/tune2fs" -C 0 -T "${start_time}" "${dev}"
+}
+
+mark_corrupt() {
+       ${DBG} "@root_sbindir@/tune2fs" -E force_fsck "${dev}"
+}
+
+setup() {
+       # Try to remove snapshot for 30s, bail out if we can't remove it.
+       lveremove_deadline="$(( $(date "+%s") + 30))"
+       ${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 3>&- 2>/dev/null
+       while [ -e "${snap_dev}" ] && [ "$?" -eq "5" ] &&
+             [ "$(date "+%s")" -lt "${lvremove_deadline}" ]; do
+               sleep 0.5
+               ${DBG} lvremove -f "${LVM2_VG_NAME}/${snap}" 3>&-
+       done
+       if [ -e "${snap_dev}" ]; then
+               echo "${arg}: e2scrub snapshot is in use, cannot check!"
+               return 1
+       fi
+       # Create the snapshot, wait for device to appear.
+       ${DBG} lvcreate -s -L "${snap_size_mb}m" -n "${snap}" "${LVM2_VG_NAME}/${LVM2_LV_NAME}" 3>&-
+       if [ $? -ne 0 ]; then
+               echo "${arg}: e2scrub snapshot FAILED, will not check!"
+               return 1
+       fi
+       ${DBG} udevadm settle 2> /dev/null
+       return 0
+}
+
+if [ "${reap}" -gt 0 ]; then
+       if [ -e "${snap_dev}" ]; then
+               teardown 2> /dev/null
+       fi
+       exit 0
+fi
+if ! setup; then
+       exitcode 8
+fi
+trap "teardown; exit 1" EXIT INT QUIT TERM
+
+# Check and react
+check
+case "$?" in
+"0")
+       # Clean check!
+       echo "${arg}: Scrub succeeded."
+       mark_clean
+       teardown
+       trap '' EXIT
+
+       # Trim the free space, which requires the snapshot be deleted.
+       if [ "${fstrim}" -eq 1 ] && [ -d "${mnt}" ] && type fstrim > /dev/null 2>&1; then
+               echo "${arg}: Trimming free space."
+               fstrim -v "${mnt}"
+       fi
+
+       ret=0
+       ;;
+"8")
+       # Operational error, what now?
+       echo "${arg}: e2fsck operational error."
+       teardown
+       trap '' EXIT
+       ret=8
+       ;;
+*)
+       # fsck failed.  Check if the snapshot is invalid; if so, make a
+       # note of that at the end of the log.  This isn't necessarily a
+       # failure because the mounted fs could have overflowed the
+       # snapshot with regular disk writes /or/ our repair process
+       # could have done it by repairing too much.
+       #
+       # If it's really corrupt we ought to fsck at next boot.
+       is_invalid="$(lvs -o lv_snapshot_invalid --noheadings "${snap_dev}" | awk '{print $1}')"
+       if [ -n "${is_invalid}" ]; then
+               echo "${arg}: Scrub FAILED due to invalid snapshot."
+               ret=8
+       else
+               echo "${arg}: Scrub FAILED due to corruption!  Unmount and run e2fsck -y."
+               mark_corrupt
+               ret=6
+       fi
+       teardown
+       trap '' EXIT
+       ;;
+esac
+
+exitcode "${ret}"
diff --git a/scrub/e2scrub.rules.in b/scrub/e2scrub.rules.in
new file mode 100644 (file)
index 0000000..5e1b35b
--- /dev/null
@@ -0,0 +1,2 @@
+# Try to hide our fsck snapshots from udev's /dev/disk linking...
+ACTION=="add|change", ENV{DM_LV_NAME}=="*.e2scrub", OPTIONS="link_priority=-100"
diff --git a/scrub/e2scrub@.service.in b/scrub/e2scrub@.service.in
new file mode 100644 (file)
index 0000000..496f894
--- /dev/null
@@ -0,0 +1,20 @@
+[Unit]
+Description=Online ext4 Metadata Check for %I
+OnFailure=e2scrub_fail@%i.service
+Documentation=man:e2scrub(8)
+
+[Service]
+Type=oneshot
+WorkingDirectory=/
+PrivateNetwork=true
+ProtectSystem=true
+ProtectHome=read-only
+PrivateTmp=yes
+AmbientCapabilities=CAP_SYS_ADMIN CAP_SYS_RAWIO
+NoNewPrivileges=yes
+User=root
+IOSchedulingClass=idle
+CPUSchedulingPolicy=idle
+Environment=SERVICE_MODE=1
+ExecStart=@root_sbindir@/e2scrub -t %I
+SyslogIdentifier=%N
diff --git a/scrub/e2scrub_all.8.in b/scrub/e2scrub_all.8.in
new file mode 100644 (file)
index 0000000..ba3b873
--- /dev/null
@@ -0,0 +1,36 @@
+.TH E2SCRUB 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
+.SH NAME
+e2scrub_all - check all mounted ext[234] filesystems for errors.
+.SH SYNOPSYS
+.B
+e2scrub_all [OPTION]
+.SH DESCRIPTION
+Searches the system for all LVM logical volumes containing an ext2, ext3, or
+ext4 file system, and checks them for problems.
+The checking is performed by invoking the
+.B e2scrub
+tool, which will look for corruptions.
+Corrupt filesystems will be tagged as having errors so that fsck will be
+invoked before the next mount.
+If no errors are encountered,
+.B fstrim
+will be called on the filesystem if it is mounted.
+See the
+.B e2scrub
+manual page for more information about how the checking is performed.
+.SH OPTIONS
+.TP
+\fB-A\fR
+Scrub all ext[234] filesystems even if they are not mounted.
+.TP
+\fB-r\fR
+Remove e2scrub snapshots but do not check anything.
+.TP
+\fB-V\fR
+Print version information and exit.
+.SH SEE ALSO
+.BR e2scrub "(8)"
+.SH AUTHOR
+Darrick J. Wong <darrick.wong@oracle.com>
+.SH COPYRIGHT
+Copyright Â©2018 Oracle.  License is GPLv2+. <http://www.gnu.org/licenses/gpl-2.0.html>
diff --git a/scrub/e2scrub_all.cron.in b/scrub/e2scrub_all.cron.in
new file mode 100644 (file)
index 0000000..7d42c3f
--- /dev/null
@@ -0,0 +1,2 @@
+30 3 * * 0 root test -e /run/systemd/system || @pkglibdir@/e2scrub_all_cron
+10 3 * * * root test -e /run/systemd/system || @root_sbindir@/e2scrub_all -A -r
diff --git a/scrub/e2scrub_all.in b/scrub/e2scrub_all.in
new file mode 100644 (file)
index 0000000..d725a7f
--- /dev/null
@@ -0,0 +1,153 @@
+#!/bin/bash
+
+#  Copyright (C) 2018 Oracle.  All Rights Reserved.
+#
+#  Author: Darrick J. Wong <darrick.wong@oracle.com>
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it would be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write the Free Software Foundation,
+#  Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+scrub_all=0
+conffile="@root_sysconfdir@/e2scrub.conf"
+
+test -f "${conffile}" && . "${conffile}"
+
+scrub_args=""
+
+print_help() {
+       echo "Usage: $0 [OPTIONS]"
+       echo " -A: Scrub all ext[234] filesystems even if not mounted."
+       echo " -r: Remove e2scrub snapshots."
+       echo " -V: Print version information and exit."
+}
+
+print_version() {
+       echo "e2scrub_all @E2FSPROGS_VERSION@ (@E2FSPROGS_DATE@)"
+}
+
+exitcode() {
+       ret="$1"
+
+       # If we're being run as a service, the return code must fit the LSB
+       # init script action error guidelines, which is to say that we
+       # compress all errors to 1 ("generic or unspecified error", LSB 5.0
+       # section 22.2) and hope the admin will scan the log for what
+       # actually happened.
+
+       # We have to sleep 2 seconds here because journald uses the pid to
+       # connect our log messages to the systemd service.  This is critical
+       # for capturing all the log messages if the scrub fails, because the
+       # fail service uses the service name to gather log messages for the
+       # error report.
+       if [ -n "${SERVICE_MODE}" ]; then
+               test "${ret}" -ne 0 && ret=1
+               sleep 2
+       fi
+
+       exit "${ret}"
+}
+
+while getopts "ArV" opt; do
+       case "${opt}" in
+       "A") scrub_all=1;;
+       "r") scrub_args="${scrub_args} -r";;
+       "V") print_version; exitcode 0;;
+       *) print_help; exitcode 2;;
+       esac
+done
+shift "$((OPTIND - 1))"
+
+# If some prerequisite packages are not installed, exit with a code
+# indicating success to avoid spamming the sysadmin with fail messages
+# when e2scrub_all is run out of cron or a systemd timer.
+
+if ! type lsblk >& /dev/null ; then
+    echo "e2scrub_all: can't find lsblk --- is util-linux installed?"
+    exitcode 0
+fi
+
+if ! type lvcreate >& /dev/null ; then
+    echo "e2scrub_all: can't find lvcreate --- is lvm2 installed?"
+    exitcode 0
+fi
+
+# Find scrub targets, make sure we only do this once.
+ls_scrub_targets() {
+       lsblk -o NAME,FSTYPE,MOUNTPOINT -p -P -n | while read vars; do
+               eval "${vars}"
+
+               # Skip non-ext[234]
+               case "${FSTYPE}" in
+               ext[234])       ;;
+               *)              continue;;
+               esac
+
+               # Skip unmounted filesystems unless -A
+               if [ "${scrub_all}" -eq 0 ] && [ -z "${MOUNTPOINT}" ]; then
+                       continue;
+               fi
+
+               # Skip non-lvm devices and lvm snapshots
+               lvm_vars="$(lvs --nameprefixes -o vg_name,lv_name,lv_role --noheadings "${NAME}" 2> /dev/null)"
+               test $? -ne 0 && continue
+               eval "${lvm_vars}"
+               echo "${LVM2_LV_ROLE}" | grep -q "snapshot" && continue
+
+               if [ -n "${MOUNTPOINT}" ]; then
+                       echo "${MOUNTPOINT}"
+               else
+                       echo "${NAME}"
+               fi
+       done | sort | uniq
+}
+
+# systemd doesn't know to do path escaping on the instance variable we pass
+# to the e2scrub service, which breaks things if there is a dash in the path
+# name.  Therefore, do the path escaping ourselves if needed.
+#
+# systemd path escaping also drops the initial slash so we add that back in so
+# that log messages from the service units preserve the full path and users can
+# look up log messages using full paths.  However, for "/" the escaping rules
+# do /not/ drop the initial slash, so we have to special-case that here.
+escape_path_for_systemd() {
+       local path="$1"
+
+       if [ "${path}" != "/" ]; then
+               echo "-$(systemd-escape --path "${path}")"
+       else
+               echo "-"
+       fi
+}
+
+# Scrub any mounted fs on lvm by creating a snapshot and fscking that.
+stdin="$(realpath /dev/stdin)"
+ls_scrub_targets | while read tgt; do
+       # If we're not reaping and systemd is present, try invoking the
+       # systemd service.
+       if [ -z "${scrub_args}" ] && type systemctl > /dev/null 2>&1; then
+               tgt_esc="$(escape_path_for_systemd "${tgt}")"
+               ${DBG} systemctl start "e2scrub@${tgt_esc}" 2> /dev/null < "${stdin}"
+               res=$?
+               if [ "${res}" -eq 0 ] || [ "${res}" -eq 1 ]; then
+                       continue;
+               fi
+       fi
+
+       # Otherwise use direct invocation
+       ${DBG} "@root_sbindir@/e2scrub" ${scrub_args} "${tgt}" < "${stdin}"
+done
+
+exitcode 0
diff --git a/scrub/e2scrub_all.service.in b/scrub/e2scrub_all.service.in
new file mode 100644 (file)
index 0000000..bc05184
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Online ext4 Metadata Check for All Filesystems
+ConditionACPower=true
+Documentation=man:e2scrub_all(8)
+
+[Service]
+Type=oneshot
+Environment=SERVICE_MODE=1
+ExecStart=@root_sbindir@/e2scrub_all
+SyslogIdentifier=e2scrub_all
diff --git a/scrub/e2scrub_all.timer.in b/scrub/e2scrub_all.timer.in
new file mode 100644 (file)
index 0000000..3d558bb
--- /dev/null
@@ -0,0 +1,11 @@
+[Unit]
+Description=Periodic ext4 Online Metadata Check for All Filesystems
+
+[Timer]
+# Run on Sunday at 3:10am, to avoid running afoul of DST changes
+OnCalendar=Sun *-*-* 03:10:00
+RandomizedDelaySec=60
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/scrub/e2scrub_all_cron.in b/scrub/e2scrub_all_cron.in
new file mode 100644 (file)
index 0000000..f9cff87
--- /dev/null
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+#  Copyright (C) 2018 Oracle.  All Rights Reserved.
+#
+#  Author: Darrick J. Wong <darrick.wong@oracle.com>
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it would be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write the Free Software Foundation,
+#  Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
+
+# Run e2scrub_all from a cronjob if we don't have systemd and we're not
+# running on AC power.
+
+on_ac_power() {
+       local any_known=no
+
+       # try sysfs power class first
+       if [ -d /sys/class/power_supply ]; then
+               for psu in /sys/class/power_supply/*; do
+                       if [ -r "$psu/type" ]; then
+                               type=$(cat "$psu/type")
+
+                               # ignore batteries
+                               [ "$type" = "Battery" ] && continue
+
+                               online=$(cat "$psu/online")
+
+                               [ "$online" = 1 ] && return 0
+                               [ "$online" = 0 ] && any_known=yes
+                       fi
+               done
+
+               [ "$any_known" = "yes" ] && return 1
+       fi
+
+       # else fall back to AC adapters in /proc
+       if [ -d /proc/acpi/ac_adapter ]; then
+               for ac in /proc/acpi/ac_adapter/*; do
+                       if [ -r "$ac/state" ]; then
+                               grep -q on-line "$ac/state" && return 0
+                               grep -q off-line "$ac/state" && any_known=yes
+                       elif [ -r "$ac/status" ]; then
+                               grep -q on-line "$ac/status" && return 0
+                               grep -q off-line "$ac/status" && any_known=yes
+                       fi
+               done
+
+               [ "$any_known" = "yes" ] && return 1
+       fi
+
+       # Can't tell, just assume we're on AC.
+       return 0
+}
+
+test -e /run/systemd/system && exit 0
+on_ac_power || exit 0
+
+exec @root_sbindir@/e2scrub_all
diff --git a/scrub/e2scrub_fail.in b/scrub/e2scrub_fail.in
new file mode 100644 (file)
index 0000000..2c0754a
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# Email logs of failed e2scrub unit runs when the systemd service fails.
+
+device="$1"
+test -z "${device}" && exit 0
+
+if ! type sendmail > /dev/null 2>&1; then
+       echo "$0: sendmail program not found."
+       exit 1
+fi
+
+if test -f /etc/e2scrub.conf ; then
+   . /etc/e2scrub.conf
+fi
+
+hostname="$(hostname -f 2>/dev/null)"
+test -z "${hostname}" && hostname="${HOSTNAME}"
+service_name="e2scrub@$(systemd-escape ${device})"
+
+if test -z "${recipient}" ; then
+    recipient="root"
+fi
+
+if test -z "${sender}" ; then
+    sender="<e2scrub@${hostname}>"
+fi
+
+(cat << ENDL
+To: ${recipient}
+From: ${sender}
+Subject: e2scrub failure on ${device}
+
+So sorry, the automatic e2scrub of ${device} on ${hostname} failed.
+
+A log of what happened follows:
+ENDL
+systemctl status --full --lines 4294967295 "${service_name}") | sendmail -t -i
diff --git a/scrub/e2scrub_fail@.service.in b/scrub/e2scrub_fail@.service.in
new file mode 100644 (file)
index 0000000..4bad311
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Online ext4 Metadata Check Failure Reporting for %I
+Documentation=man:e2scrub(8)
+
+[Service]
+Type=oneshot
+ExecStart=@pkglibdir@/e2scrub_fail "%I"
+User=mail
+Group=mail
+SupplementaryGroups=systemd-journal
diff --git a/scrub/e2scrub_reap.service.in b/scrub/e2scrub_reap.service.in
new file mode 100644 (file)
index 0000000..b053615
--- /dev/null
@@ -0,0 +1,22 @@
+[Unit]
+Description=Remove Stale Online ext4 Metadata Check Snapshots
+Documentation=man:e2scrub_all(8)
+
+[Service]
+Type=oneshot
+WorkingDirectory=/
+PrivateNetwork=true
+ProtectSystem=true
+ProtectHome=read-only
+PrivateTmp=yes
+AmbientCapabilities=CAP_SYS_ADMIN CAP_SYS_RAWIO
+NoNewPrivileges=yes
+User=root
+IOSchedulingClass=idle
+CPUSchedulingPolicy=idle
+ExecStart=@root_sbindir@/e2scrub_all -A -r
+SyslogIdentifier=%N
+RemainAfterExit=no
+
+[Install]
+WantedBy=default.target
diff --git a/tests/i_zero_super/expect.1 b/tests/i_zero_super/expect.1
new file mode 100644 (file)
index 0000000..fda32b9
--- /dev/null
@@ -0,0 +1,22 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Free blocks count wrong for group #0 (7987, counted=7982).
+Fix? no
+
+Free blocks count wrong (11602, counted=11597).
+Fix? no
+
+Free inodes count wrong for group #0 (1493, counted=1488).
+Fix? no
+
+Free inodes count wrong (2997, counted=2992).
+Fix? no
+
+
+test_filesys: ********** WARNING: Filesystem still has errors **********
+
+test_filesys: 11/3008 files (0.0% non-contiguous), 398/12000 blocks
+Exit status is 4
diff --git a/tests/i_zero_super/image.gz b/tests/i_zero_super/image.gz
new file mode 100644 (file)
index 0000000..eea9140
Binary files /dev/null and b/tests/i_zero_super/image.gz differ
diff --git a/tests/i_zero_super/script b/tests/i_zero_super/script
new file mode 100644 (file)
index 0000000..6b02d86
--- /dev/null
@@ -0,0 +1,11 @@
+if test -x $E2IMAGE_EXE; then
+
+ONE_PASS_ONLY=true
+FSCK_OPT="-n -b 8193 -f"
+PREP_CMD="$E2IMAGE_EXE -r -b 8193 -B 1024 $TMPFILE $TMPFILE.raw; \
+         mv $TMPFILE.raw $TMPFILE"
+. $cmd_dir/run_e2fsck
+
+else
+       echo "$test_name: $test_description: skipped"
+fi
index 0a0f306de3ddb17c0aaafcf65f8a789502c82461..8b01ea499f9d94e9eac3e5187407af9c1b1e61ca 100644 (file)
@@ -61,7 +61,8 @@ static int parse_inode(const char *request, const char *desc,
        return 0;
 }
 
-void do_create_icount(int argc, char **argv)
+void do_create_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                     void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
        char            *progname;
@@ -91,7 +92,8 @@ void do_create_icount(int argc, char **argv)
        }
 }
 
-void do_free_icount(int argc, char **argv)
+void do_free_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        if (argc != 1) {
                printf("Usage: free_icount\n");
@@ -104,7 +106,8 @@ void do_free_icount(int argc, char **argv)
        test_icount = 0;
 }
 
-void do_fetch(int argc, char **argv)
+void do_fetch(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "usage: %s inode\n";
        errcode_t       retval;
@@ -127,7 +130,8 @@ void do_fetch(int argc, char **argv)
        printf("Count is %u\n", count);
 }
 
-void do_increment(int argc, char **argv)
+void do_increment(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "usage: %s inode\n";
        errcode_t       retval;
@@ -151,7 +155,8 @@ void do_increment(int argc, char **argv)
        printf("Count is now %u\n", count);
 }
 
-void do_decrement(int argc, char **argv)
+void do_decrement(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "usage: %s inode\n";
        errcode_t       retval;
@@ -175,7 +180,8 @@ void do_decrement(int argc, char **argv)
        printf("Count is now %u\n", count);
 }
 
-void do_store(int argc, char **argv)
+void do_store(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        const char      *usage = "usage: %s inode count\n";
        errcode_t       retval;
@@ -204,7 +210,8 @@ void do_store(int argc, char **argv)
        }
 }
 
-void do_dump(int argc, char **argv)
+void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
        ext2_ino_t      i;
@@ -228,7 +235,8 @@ void do_dump(int argc, char **argv)
        }
 }
 
-void do_validate(int argc, char **argv)
+void do_validate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        errcode_t       retval;
 
@@ -246,7 +254,8 @@ void do_validate(int argc, char **argv)
        printf("Icount structure successfully validated\n");
 }
 
-void do_get_size(int argc, char **argv)
+void do_get_size(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+                   void *infop EXT2FS_ATTR((unused)))
 {
        ext2_ino_t      size;
 
index 59ea1a47f358e6c031a92a04bd42f45078786073..29d56abfdbbe029bc4968eee239daf6b988fda1f 100644 (file)
@@ -1,10 +1,10 @@
-void do_create_icount(int argc, char **argv);
-void do_free_icount(int argc, char **argv);
-void do_fetch(int argc, char **argv);
-void do_increment(int argc, char **argv);
-void do_decrement(int argc, char **argv);
-void do_store(int argc, char **argv);
-void do_get_size(int argc, char **argv);
-void do_dump(int argc, char **argv);
-void do_validate(int argc, char **argv);
+void do_create_icount(int argc, char **argv, int sci_idx, void *infop);
+void do_free_icount(int argc, char **argv, int sci_idx, void *infop);
+void do_fetch(int argc, char **argv, int sci_idx, void *infop);
+void do_increment(int argc, char **argv, int sci_idx, void *infop);
+void do_decrement(int argc, char **argv, int sci_idx, void *infop);
+void do_store(int argc, char **argv, int sci_idx, void *infop);
+void do_get_size(int argc, char **argv, int sci_idx, void *infop);
+void do_dump(int argc, char **argv, int sci_idx, void *infop);
+void do_validate(int argc, char **argv, int sci_idx, void *infop);
 
index 96117d9e00191a5d39d5aa4b6146ea8e49901b1d..a3df17e4585799e3d712147b99d850f9d92d3da6 100644 (file)
@@ -9,7 +9,7 @@ top_builddir = ..
 my_dir = util
 INSTALL = @INSTALL@
 
-SRCS = $(srcdir)/subst.c
+SRCS = $(srcdir)/subst.c $(srcdir)/mkutf8data.c
 
 @MCONFIG@
 
@@ -19,7 +19,7 @@ SRCS = $(srcdir)/subst.c
        $(Q) $(CHECK_CMD) $(ALL_CFLAGS) $<
        $(Q) $(CPPCHECK_CMD) $(CPPFLAGS) $<
 
-PROGS=         subst symlinks
+PROGS=         subst symlinks mkutf8data
 
 all:: $(PROGS) gen-tarball
 
@@ -33,6 +33,10 @@ subst: subst.o
        $(E) "  LD $@"
        $(Q) $(BUILD_CC) $(BUILD_LDFLAGS) -o subst subst.o
 
+mkutf8data: mkutf8data.o
+       $(E) "  LD $@"
+       $(Q) $(BUILD_CC) $(BUILD_LDFLAGS) -o mkutf8data mkutf8data.o
+
 copy_sparse: copy_sparse.o
        $(E) "  LD $@"
        $(Q) $(BUILD_CC) $(BUILD_LDFLAGS) -o copy_sparse copy_sparse.o
@@ -53,7 +57,7 @@ tarballs: gen-tarball
 
 clean::
        $(RM) -f $(PROGS) \#* *.s *.o *.a *~ core *.tar.gz gen-tarball \
-               copy-sparse dirpaths.h install-symlink
+               copy-sparse dirpaths.h install-symlink mkutf8data
 
 mostlyclean: clean
 
@@ -66,3 +70,4 @@ distclean: clean
 # the Makefile.in file
 #
 subst.o: $(srcdir)/subst.c $(top_builddir)/lib/config.h dirpaths.h
+mkutf8data.o: $(srcdir)/mkutf8data.c
diff --git a/util/mkutf8data.c b/util/mkutf8data.c
new file mode 100644 (file)
index 0000000..49bb0e1
--- /dev/null
@@ -0,0 +1,3392 @@
+/*
+ * Copyright (c) 2014 SGI.
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+/* Generator for a compact trie for unicode normalization */
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+/* Default names of the in- and output files. */
+
+#define AGE_NAME       "DerivedAge.txt"
+#define CCC_NAME       "DerivedCombiningClass.txt"
+#define PROP_NAME      "DerivedCoreProperties.txt"
+#define DATA_NAME      "UnicodeData.txt"
+#define FOLD_NAME      "CaseFolding.txt"
+#define NORM_NAME      "NormalizationCorrections.txt"
+#define TEST_NAME      "NormalizationTest.txt"
+#define UTF8_NAME      "utf8data.h"
+
+const char     *age_name  = AGE_NAME;
+const char     *ccc_name  = CCC_NAME;
+const char     *prop_name = PROP_NAME;
+const char     *data_name = DATA_NAME;
+const char     *fold_name = FOLD_NAME;
+const char     *norm_name = NORM_NAME;
+const char     *test_name = TEST_NAME;
+const char     *utf8_name = UTF8_NAME;
+
+int verbose = 0;
+
+/* An arbitrary line size limit on input lines. */
+
+#define LINESIZE       1024
+char line[LINESIZE];
+char buf0[LINESIZE];
+char buf1[LINESIZE];
+char buf2[LINESIZE];
+char buf3[LINESIZE];
+
+const char *argv0;
+
+/* ------------------------------------------------------------------ */
+
+/*
+ * Unicode version numbers consist of three parts: major, minor, and a
+ * revision.  These numbers are packed into an unsigned int to obtain
+ * a single version number.
+ *
+ * To save space in the generated trie, the unicode version is not
+ * stored directly, instead we calculate a generation number from the
+ * unicode versions seen in the DerivedAge file, and use that as an
+ * index into a table of unicode versions.
+ */
+#define UNICODE_MAJ_SHIFT              (16)
+#define UNICODE_MIN_SHIFT              (8)
+
+#define UNICODE_MAJ_MAX                        ((unsigned short)-1)
+#define UNICODE_MIN_MAX                        ((unsigned char)-1)
+#define UNICODE_REV_MAX                        ((unsigned char)-1)
+
+#define UNICODE_AGE(MAJ,MIN,REV)                       \
+       (((unsigned int)(MAJ) << UNICODE_MAJ_SHIFT) |   \
+        ((unsigned int)(MIN) << UNICODE_MIN_SHIFT) |   \
+        ((unsigned int)(REV)))
+
+unsigned int *ages;
+int ages_count;
+
+unsigned int unicode_maxage;
+
+static int age_valid(unsigned int major, unsigned int minor,
+                    unsigned int revision)
+{
+       if (major > UNICODE_MAJ_MAX)
+               return 0;
+       if (minor > UNICODE_MIN_MAX)
+               return 0;
+       if (revision > UNICODE_REV_MAX)
+               return 0;
+       return 1;
+}
+
+/* ------------------------------------------------------------------ */
+
+/*
+ * utf8trie_t
+ *
+ * A compact binary tree, used to decode UTF-8 characters.
+ *
+ * Internal nodes are one byte for the node itself, and up to three
+ * bytes for an offset into the tree.  The first byte contains the
+ * following information:
+ *  NEXTBYTE  - flag        - advance to next byte if set
+ *  BITNUM    - 3 bit field - the bit number to tested
+ *  OFFLEN    - 2 bit field - number of bytes in the offset
+ * if offlen == 0 (non-branching node)
+ *  RIGHTPATH - 1 bit field - set if the following node is for the
+ *                            right-hand path (tested bit is set)
+ *  TRIENODE  - 1 bit field - set if the following node is an internal
+ *                            node, otherwise it is a leaf node
+ * if offlen != 0 (branching node)
+ *  LEFTNODE  - 1 bit field - set if the left-hand node is internal
+ *  RIGHTNODE - 1 bit field - set if the right-hand node is internal
+ *
+ * Due to the way utf8 works, there cannot be branching nodes with
+ * NEXTBYTE set, and moreover those nodes always have a righthand
+ * descendant.
+ */
+typedef unsigned char utf8trie_t;
+#define BITNUM         0x07
+#define NEXTBYTE       0x08
+#define OFFLEN         0x30
+#define OFFLEN_SHIFT   4
+#define RIGHTPATH      0x40
+#define TRIENODE       0x80
+#define RIGHTNODE      0x40
+#define LEFTNODE       0x80
+
+/*
+ * utf8leaf_t
+ *
+ * The leaves of the trie are embedded in the trie, and so the same
+ * underlying datatype, unsigned char.
+ *
+ * leaf[0]: The unicode version, stored as a generation number that is
+ *          an index into utf8agetab[].  With this we can filter code
+ *          points based on the unicode version in which they were
+ *          defined.  The CCC of a non-defined code point is 0.
+ * leaf[1]: Canonical Combining Class. During normalization, we need
+ *          to do a stable sort into ascending order of all characters
+ *          with a non-zero CCC that occur between two characters with
+ *          a CCC of 0, or at the begin or end of a string.
+ *          The unicode standard guarantees that all CCC values are
+ *          between 0 and 254 inclusive, which leaves 255 available as
+ *          a special value.
+ *          Code points with CCC 0 are known as stoppers.
+ * leaf[2]: Decomposition. If leaf[1] == 255, then leaf[2] is the
+ *          start of a NUL-terminated string that is the decomposition
+ *          of the character.
+ *          The CCC of a decomposable character is the same as the CCC
+ *          of the first character of its decomposition.
+ *          Some characters decompose as the empty string: these are
+ *          characters with the Default_Ignorable_Code_Point property.
+ *          These do affect normalization, as they all have CCC 0.
+ *
+ * The decompositions in the trie have been fully expanded.
+ *
+ * Casefolding, if applicable, is also done using decompositions.
+ */
+typedef unsigned char utf8leaf_t;
+
+#define LEAF_GEN(LEAF) ((LEAF)[0])
+#define LEAF_CCC(LEAF) ((LEAF)[1])
+#define LEAF_STR(LEAF) ((const char*)((LEAF) + 2))
+
+#define MAXGEN         (255)
+
+#define MINCCC         (0)
+#define MAXCCC         (254)
+#define STOPPER                (0)
+#define DECOMPOSE      (255)
+#define HANGUL         ((char)(255))
+
+#define UTF8HANGULLEAF (12)
+
+struct tree;
+static utf8leaf_t *utf8nlookup(struct tree *, unsigned char *,
+                              const char *, size_t);
+static utf8leaf_t *utf8lookup(struct tree *, unsigned char *, const char *);
+
+unsigned char *utf8data;
+size_t utf8data_size;
+
+utf8trie_t *nfkdi;
+utf8trie_t *nfkdicf;
+
+/* ------------------------------------------------------------------ */
+
+/*
+ * UTF8 valid ranges.
+ *
+ * The UTF-8 encoding spreads the bits of a 32bit word over several
+ * bytes. This table gives the ranges that can be held and how they'd
+ * be represented.
+ *
+ * 0x00000000 0x0000007F: 0xxxxxxx
+ * 0x00000000 0x000007FF: 110xxxxx 10xxxxxx
+ * 0x00000000 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00000000 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ *
+ * There is an additional requirement on UTF-8, in that only the
+ * shortest representation of a 32bit value is to be used.  A decoder
+ * must not decode sequences that do not satisfy this requirement.
+ * Thus the allowed ranges have a lower bound.
+ *
+ * 0x00000000 0x0000007F: 0xxxxxxx
+ * 0x00000080 0x000007FF: 110xxxxx 10xxxxxx
+ * 0x00000800 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * 0x00010000 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x00200000 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * 0x04000000 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ *
+ * Actual unicode characters are limited to the range 0x0 - 0x10FFFF,
+ * 17 planes of 65536 values.  This limits the sequences actually seen
+ * even more, to just the following.
+ *
+ *          0 -     0x7f: 0                     0x7f
+ *       0x80 -    0x7ff: 0xc2 0x80             0xdf 0xbf
+ *      0x800 -   0xffff: 0xe0 0xa0 0x80        0xef 0xbf 0xbf
+ *    0x10000 - 0x10ffff: 0xf0 0x90 0x80 0x80   0xf4 0x8f 0xbf 0xbf
+ *
+ * Even within those ranges not all values are allowed: the surrogates
+ * 0xd800 - 0xdfff should never be seen.
+ *
+ * Note that the longest sequence seen with valid usage is 4 bytes,
+ * the same a single UTF-32 character.  This makes the UTF-8
+ * representation of Unicode strictly smaller than UTF-32.
+ *
+ * The shortest sequence requirement was introduced by:
+ *    Corrigendum #1: UTF-8 Shortest Form
+ * It can be found here:
+ *    http://www.unicode.org/versions/corrigendum1.html
+ *
+ */
+
+#define UTF8_2_BITS     0xC0
+#define UTF8_3_BITS     0xE0
+#define UTF8_4_BITS     0xF0
+#define UTF8_N_BITS     0x80
+#define UTF8_2_MASK     0xE0
+#define UTF8_3_MASK     0xF0
+#define UTF8_4_MASK     0xF8
+#define UTF8_N_MASK     0xC0
+#define UTF8_V_MASK     0x3F
+#define UTF8_V_SHIFT    6
+
+static int utf8encode(char *str, unsigned int val)
+{
+       int len;
+
+       if (val < 0x80) {
+               str[0] = val;
+               len = 1;
+       } else if (val < 0x800) {
+               str[1] = val & UTF8_V_MASK;
+               str[1] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[0] = val;
+               str[0] |= UTF8_2_BITS;
+               len = 2;
+       } else if (val < 0x10000) {
+               str[2] = val & UTF8_V_MASK;
+               str[2] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[1] = val & UTF8_V_MASK;
+               str[1] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[0] = val;
+               str[0] |= UTF8_3_BITS;
+               len = 3;
+       } else if (val < 0x110000) {
+               str[3] = val & UTF8_V_MASK;
+               str[3] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[2] = val & UTF8_V_MASK;
+               str[2] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[1] = val & UTF8_V_MASK;
+               str[1] |= UTF8_N_BITS;
+               val >>= UTF8_V_SHIFT;
+               str[0] = val;
+               str[0] |= UTF8_4_BITS;
+               len = 4;
+       } else {
+               printf("%#x: illegal val\n", val);
+               len = 0;
+       }
+       return len;
+}
+
+static unsigned int utf8decode(const char *str)
+{
+       const unsigned char *s = (const unsigned char*)str;
+       unsigned int unichar = 0;
+
+       if (*s < 0x80) {
+               unichar = *s;
+       } else if (*s < UTF8_3_BITS) {
+               unichar = *s++ & 0x1F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s & 0x3F;
+       } else if (*s < UTF8_4_BITS) {
+               unichar = *s++ & 0x0F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s++ & 0x3F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s & 0x3F;
+       } else {
+               unichar = *s++ & 0x0F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s++ & 0x3F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s++ & 0x3F;
+               unichar <<= UTF8_V_SHIFT;
+               unichar |= *s & 0x3F;
+       }
+       return unichar;
+}
+
+static int utf32valid(unsigned int unichar)
+{
+       return unichar < 0x110000;
+}
+
+#define HANGUL_SYLLABLE(U)     ((U) >= 0xAC00 && (U) <= 0xD7A3)
+
+#define NODE 1
+#define LEAF 0
+
+struct tree {
+       void *root;
+       int childnode;
+       const char *type;
+       unsigned int maxage;
+       struct tree *next;
+       int (*leaf_equal)(void *, void *);
+       void (*leaf_print)(void *, int);
+       int (*leaf_mark)(void *);
+       int (*leaf_size)(void *);
+       int *(*leaf_index)(struct tree *, void *);
+       unsigned char *(*leaf_emit)(void *, unsigned char *);
+       int leafindex[0x110000];
+       int index;
+};
+
+struct node {
+       int index;
+       int offset;
+       int mark;
+       int size;
+       struct node *parent;
+       void *left;
+       void *right;
+       unsigned char bitnum;
+       unsigned char nextbyte;
+       unsigned char leftnode;
+       unsigned char rightnode;
+       unsigned int keybits;
+       unsigned int keymask;
+};
+
+/*
+ * Example lookup function for a tree.
+ */
+static void *lookup(struct tree *tree, const char *key)
+{
+       struct node *node;
+       void *leaf = NULL;
+
+       node = tree->root;
+       while (!leaf && node) {
+               if (node->nextbyte)
+                       key++;
+               if (*key & (1 << (node->bitnum & 7))) {
+                       /* Right leg */
+                       if (node->rightnode == NODE) {
+                               node = node->right;
+                       } else if (node->rightnode == LEAF) {
+                               leaf = node->right;
+                       } else {
+                               node = NULL;
+                       }
+               } else {
+                       /* Left leg */
+                       if (node->leftnode == NODE) {
+                               node = node->left;
+                       } else if (node->leftnode == LEAF) {
+                               leaf = node->left;
+                       } else {
+                               node = NULL;
+                       }
+               }
+       }
+
+       return leaf;
+}
+
+/*
+ * A simple non-recursive tree walker: keep track of visits to the
+ * left and right branches in the leftmask and rightmask.
+ */
+static void tree_walk(struct tree *tree)
+{
+       struct node *node;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       int indent = 1;
+       int nodes, singletons, leaves;
+
+       nodes = singletons = leaves = 0;
+
+       printf("%s_%x root %p\n", tree->type, tree->maxage, tree->root);
+       if (tree->childnode == LEAF) {
+               assert(tree->root);
+               tree->leaf_print(tree->root, indent);
+               leaves = 1;
+       } else {
+               assert(tree->childnode == NODE);
+               node = tree->root;
+               leftmask = rightmask = 0;
+               while (node) {
+                       printf("%*snode @ %p bitnum %d nextbyte %d"
+                              " left %p right %p mask %x bits %x\n",
+                               indent, "", node,
+                               node->bitnum, node->nextbyte,
+                               node->left, node->right,
+                               node->keymask, node->keybits);
+                       nodes += 1;
+                       if (!(node->left && node->right))
+                               singletons += 1;
+
+                       while (node) {
+                               bitmask = 1 << node->bitnum;
+                               if ((leftmask & bitmask) == 0) {
+                                       leftmask |= bitmask;
+                                       if (node->leftnode == LEAF) {
+                                               assert(node->left);
+                                               tree->leaf_print(node->left,
+                                                                indent+1);
+                                               leaves += 1;
+                                       } else if (node->left) {
+                                               assert(node->leftnode == NODE);
+                                               indent += 1;
+                                               node = node->left;
+                                               break;
+                                       }
+                               }
+                               if ((rightmask & bitmask) == 0) {
+                                       rightmask |= bitmask;
+                                       if (node->rightnode == LEAF) {
+                                               assert(node->right);
+                                               tree->leaf_print(node->right,
+                                                                indent+1);
+                                               leaves += 1;
+                                       } else if (node->right) {
+                                               assert(node->rightnode == NODE);
+                                               indent += 1;
+                                               node = node->right;
+                                               break;
+                                       }
+                               }
+                               leftmask &= ~bitmask;
+                               rightmask &= ~bitmask;
+                               node = node->parent;
+                               indent -= 1;
+                       }
+               }
+       }
+       printf("nodes %d leaves %d singletons %d\n",
+              nodes, leaves, singletons);
+}
+
+/*
+ * Allocate an initialize a new internal node.
+ */
+static struct node *alloc_node(struct node *parent)
+{
+       struct node *node;
+       int bitnum;
+
+       node = malloc(sizeof(*node));
+       node->left = node->right = NULL;
+       node->parent = parent;
+       node->leftnode = NODE;
+       node->rightnode = NODE;
+       node->keybits = 0;
+       node->keymask = 0;
+       node->mark = 0;
+       node->index = 0;
+       node->offset = -1;
+       node->size = 4;
+
+       if (node->parent) {
+               bitnum = parent->bitnum;
+               if ((bitnum & 7) == 0) {
+                       node->bitnum = bitnum + 7 + 8;
+                       node->nextbyte = 1;
+               } else {
+                       node->bitnum = bitnum - 1;
+                       node->nextbyte = 0;
+               }
+       } else {
+               node->bitnum = 7;
+               node->nextbyte = 0;
+       }
+
+       return node;
+}
+
+/*
+ * Insert a new leaf into the tree, and collapse any subtrees that are
+ * fully populated and end in identical leaves. A nextbyte tagged
+ * internal node will not be removed to preserve the tree's integrity.
+ * Note that due to the structure of utf8, no nextbyte tagged node
+ * will be a candidate for removal.
+ */
+static int insert(struct tree *tree, char *key, int keylen, void *leaf)
+{
+       struct node *node;
+       struct node *parent;
+       void **cursor;
+       int keybits;
+
+       assert(keylen >= 1 && keylen <= 4);
+
+       node = NULL;
+       cursor = &tree->root;
+       keybits = 8 * keylen;
+
+       /* Insert, creating path along the way. */
+       while (keybits) {
+               if (!*cursor)
+                       *cursor = alloc_node(node);
+               node = *cursor;
+               if (node->nextbyte)
+                       key++;
+               if (*key & (1 << (node->bitnum & 7)))
+                       cursor = &node->right;
+               else
+                       cursor = &node->left;
+               keybits--;
+       }
+       *cursor = leaf;
+
+       /* Merge subtrees if possible. */
+       while (node) {
+               if (*key & (1 << (node->bitnum & 7)))
+                       node->rightnode = LEAF;
+               else
+                       node->leftnode = LEAF;
+               if (node->nextbyte)
+                       break;
+               if (node->leftnode == NODE || node->rightnode == NODE)
+                       break;
+               assert(node->left);
+               assert(node->right);
+               /* Compare */
+               if (! tree->leaf_equal(node->left, node->right))
+                       break;
+               /* Keep left, drop right leaf. */
+               leaf = node->left;
+               /* Check in parent */
+               parent = node->parent;
+               if (!parent) {
+                       /* root of tree! */
+                       tree->root = leaf;
+                       tree->childnode = LEAF;
+               } else if (parent->left == node) {
+                       parent->left = leaf;
+                       parent->leftnode = LEAF;
+                       if (parent->right) {
+                               parent->keymask = 0;
+                               parent->keybits = 0;
+                       } else {
+                               parent->keymask |= (1 << node->bitnum);
+                       }
+               } else if (parent->right == node) {
+                       parent->right = leaf;
+                       parent->rightnode = LEAF;
+                       if (parent->left) {
+                               parent->keymask = 0;
+                               parent->keybits = 0;
+                       } else {
+                               parent->keymask |= (1 << node->bitnum);
+                               parent->keybits |= (1 << node->bitnum);
+                       }
+               } else {
+                       /* internal tree error */
+                       assert(0);
+               }
+               free(node);
+               node = parent;
+       }
+
+       /* Propagate keymasks up along singleton chains. */
+       while (node) {
+               parent = node->parent;
+               if (!parent)
+                       break;
+               /* Nix the mask for parents with two children. */
+               if (node->keymask == 0) {
+                       parent->keymask = 0;
+                       parent->keybits = 0;
+               } else if (parent->left && parent->right) {
+                       parent->keymask = 0;
+                       parent->keybits = 0;
+               } else {
+                       assert((parent->keymask & node->keymask) == 0);
+                       parent->keymask |= node->keymask;
+                       parent->keymask |= (1 << parent->bitnum);
+                       parent->keybits |= node->keybits;
+                       if (parent->right)
+                               parent->keybits |= (1 << parent->bitnum);
+               }
+               node = parent;
+       }
+
+       return 0;
+}
+
+/*
+ * Prune internal nodes.
+ *
+ * Fully populated subtrees that end at the same leaf have already
+ * been collapsed.  There are still internal nodes that have for both
+ * their left and right branches a sequence of singletons that make
+ * identical choices and end in identical leaves.  The keymask and
+ * keybits collected in the nodes describe the choices made in these
+ * singleton chains.  When they are identical for the left and right
+ * branch of a node, and the two leaves comare identical, the node in
+ * question can be removed.
+ *
+ * Note that nodes with the nextbyte tag set will not be removed by
+ * this to ensure tree integrity.  Note as well that the structure of
+ * utf8 ensures that these nodes would not have been candidates for
+ * removal in any case.
+ */
+static void prune(struct tree *tree)
+{
+       struct node *node;
+       struct node *left;
+       struct node *right;
+       struct node *parent;
+       void *leftleaf;
+       void *rightleaf;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       int count;
+
+       if (verbose > 0)
+               printf("Pruning %s_%x\n", tree->type, tree->maxage);
+
+       count = 0;
+       if (tree->childnode == LEAF)
+               return;
+       if (!tree->root)
+               return;
+
+       leftmask = rightmask = 0;
+       node = tree->root;
+       while (node) {
+               if (node->nextbyte)
+                       goto advance;
+               if (node->leftnode == LEAF)
+                       goto advance;
+               if (node->rightnode == LEAF)
+                       goto advance;
+               if (!node->left)
+                       goto advance;
+               if (!node->right)
+                       goto advance;
+               left = node->left;
+               right = node->right;
+               if (left->keymask == 0)
+                       goto advance;
+               if (right->keymask == 0)
+                       goto advance;
+               if (left->keymask != right->keymask)
+                       goto advance;
+               if (left->keybits != right->keybits)
+                       goto advance;
+               leftleaf = NULL;
+               while (!leftleaf) {
+                       assert(left->left || left->right);
+                       if (left->leftnode == LEAF)
+                               leftleaf = left->left;
+                       else if (left->rightnode == LEAF)
+                               leftleaf = left->right;
+                       else if (left->left)
+                               left = left->left;
+                       else if (left->right)
+                               left = left->right;
+                       else
+                               assert(0);
+               }
+               rightleaf = NULL;
+               while (!rightleaf) {
+                       assert(right->left || right->right);
+                       if (right->leftnode == LEAF)
+                               rightleaf = right->left;
+                       else if (right->rightnode == LEAF)
+                               rightleaf = right->right;
+                       else if (right->left)
+                               right = right->left;
+                       else if (right->right)
+                               right = right->right;
+                       else
+                               assert(0);
+               }
+               if (! tree->leaf_equal(leftleaf, rightleaf))
+                       goto advance;
+               /*
+                * This node has identical singleton-only subtrees.
+                * Remove it.
+                */
+               parent = node->parent;
+               left = node->left;
+               right = node->right;
+               if (parent->left == node)
+                       parent->left = left;
+               else if (parent->right == node)
+                       parent->right = left;
+               else
+                       assert(0);
+               left->parent = parent;
+               left->keymask |= (1 << node->bitnum);
+               node->left = NULL;
+               while (node) {
+                       bitmask = 1 << node->bitnum;
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+                       if (node->leftnode == NODE && node->left) {
+                               left = node->left;
+                               free(node);
+                               count++;
+                               node = left;
+                       } else if (node->rightnode == NODE && node->right) {
+                               right = node->right;
+                               free(node);
+                               count++;
+                               node = right;
+                       } else {
+                               node = NULL;
+                       }
+               }
+               /* Propagate keymasks up along singleton chains. */
+               node = parent;
+               /* Force re-check */
+               bitmask = 1 << node->bitnum;
+               leftmask &= ~bitmask;
+               rightmask &= ~bitmask;
+               for (;;) {
+                       if (node->left && node->right)
+                               break;
+                       if (node->left) {
+                               left = node->left;
+                               node->keymask |= left->keymask;
+                               node->keybits |= left->keybits;
+                       }
+                       if (node->right) {
+                               right = node->right;
+                               node->keymask |= right->keymask;
+                               node->keybits |= right->keybits;
+                       }
+                       node->keymask |= (1 << node->bitnum);
+                       node = node->parent;
+                       /* Force re-check */
+                       bitmask = 1 << node->bitnum;
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+               }
+       advance:
+               bitmask = 1 << node->bitnum;
+               if ((leftmask & bitmask) == 0 &&
+                   node->leftnode == NODE &&
+                   node->left) {
+                       leftmask |= bitmask;
+                       node = node->left;
+               } else if ((rightmask & bitmask) == 0 &&
+                          node->rightnode == NODE &&
+                          node->right) {
+                       rightmask |= bitmask;
+                       node = node->right;
+               } else {
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+                       node = node->parent;
+               }
+       }
+       if (verbose > 0)
+               printf("Pruned %d nodes\n", count);
+}
+
+/*
+ * Mark the nodes in the tree that lead to leaves that must be
+ * emitted.
+ */
+static void mark_nodes(struct tree *tree)
+{
+       struct node *node;
+       struct node *n;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       int marked;
+
+       marked = 0;
+       if (verbose > 0)
+               printf("Marking %s_%x\n", tree->type, tree->maxage);
+       if (tree->childnode == LEAF)
+               goto done;
+
+       assert(tree->childnode == NODE);
+       node = tree->root;
+       leftmask = rightmask = 0;
+       while (node) {
+               bitmask = 1 << node->bitnum;
+               if ((leftmask & bitmask) == 0) {
+                       leftmask |= bitmask;
+                       if (node->leftnode == LEAF) {
+                               assert(node->left);
+                               if (tree->leaf_mark(node->left)) {
+                                       n = node;
+                                       while (n && !n->mark) {
+                                               marked++;
+                                               n->mark = 1;
+                                               n = n->parent;
+                                       }
+                               }
+                       } else if (node->left) {
+                               assert(node->leftnode == NODE);
+                               node = node->left;
+                               continue;
+                       }
+               }
+               if ((rightmask & bitmask) == 0) {
+                       rightmask |= bitmask;
+                       if (node->rightnode == LEAF) {
+                               assert(node->right);
+                               if (tree->leaf_mark(node->right)) {
+                                       n = node;
+                                       while (n && !n->mark) {
+                                               marked++;
+                                               n->mark = 1;
+                                               n = n->parent;
+                                       }
+                               }
+                       } else if (node->right) {
+                               assert(node->rightnode == NODE);
+                               node = node->right;
+                               continue;
+                       }
+               }
+               leftmask &= ~bitmask;
+               rightmask &= ~bitmask;
+               node = node->parent;
+       }
+
+       /* second pass: left siblings and singletons */
+
+       assert(tree->childnode == NODE);
+       node = tree->root;
+       leftmask = rightmask = 0;
+       while (node) {
+               bitmask = 1 << node->bitnum;
+               if ((leftmask & bitmask) == 0) {
+                       leftmask |= bitmask;
+                       if (node->leftnode == LEAF) {
+                               assert(node->left);
+                               if (tree->leaf_mark(node->left)) {
+                                       n = node;
+                                       while (n && !n->mark) {
+                                               marked++;
+                                               n->mark = 1;
+                                               n = n->parent;
+                                       }
+                               }
+                       } else if (node->left) {
+                               assert(node->leftnode == NODE);
+                               node = node->left;
+                               if (!node->mark && node->parent->mark) {
+                                       marked++;
+                                       node->mark = 1;
+                               }
+                               continue;
+                       }
+               }
+               if ((rightmask & bitmask) == 0) {
+                       rightmask |= bitmask;
+                       if (node->rightnode == LEAF) {
+                               assert(node->right);
+                               if (tree->leaf_mark(node->right)) {
+                                       n = node;
+                                       while (n && !n->mark) {
+                                               marked++;
+                                               n->mark = 1;
+                                               n = n->parent;
+                                       }
+                               }
+                       } else if (node->right) {
+                               assert(node->rightnode == NODE);
+                               node = node->right;
+                               if (!node->mark && node->parent->mark &&
+                                   !node->parent->left) {
+                                       marked++;
+                                       node->mark = 1;
+                               }
+                               continue;
+                       }
+               }
+               leftmask &= ~bitmask;
+               rightmask &= ~bitmask;
+               node = node->parent;
+       }
+done:
+       if (verbose > 0)
+               printf("Marked %d nodes\n", marked);
+}
+
+/*
+ * Compute the index of each node and leaf, which is the offset in the
+ * emitted trie.  These values must be pre-computed because relative
+ * offsets between nodes are used to navigate the tree.
+ */
+static int index_nodes(struct tree *tree, int index)
+{
+       struct node *node;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       int count;
+       int indent;
+
+       /* Align to a cache line (or half a cache line?). */
+       while (index % 64)
+               index++;
+       tree->index = index;
+       indent = 1;
+       count = 0;
+
+       if (verbose > 0)
+               printf("Indexing %s_%x: %d\n", tree->type, tree->maxage, index);
+       if (tree->childnode == LEAF) {
+               index += tree->leaf_size(tree->root);
+               goto done;
+       }
+
+       assert(tree->childnode == NODE);
+       node = tree->root;
+       leftmask = rightmask = 0;
+       while (node) {
+               if (!node->mark)
+                       goto skip;
+               count++;
+               if (node->index != index)
+                       node->index = index;
+               index += node->size;
+skip:
+               while (node) {
+                       bitmask = 1 << node->bitnum;
+                       if (node->mark && (leftmask & bitmask) == 0) {
+                               leftmask |= bitmask;
+                               if (node->leftnode == LEAF) {
+                                       assert(node->left);
+                                       *tree->leaf_index(tree, node->left) =
+                                                                       index;
+                                       index += tree->leaf_size(node->left);
+                                       count++;
+                               } else if (node->left) {
+                                       assert(node->leftnode == NODE);
+                                       indent += 1;
+                                       node = node->left;
+                                       break;
+                               }
+                       }
+                       if (node->mark && (rightmask & bitmask) == 0) {
+                               rightmask |= bitmask;
+                               if (node->rightnode == LEAF) {
+                                       assert(node->right);
+                                       *tree->leaf_index(tree, node->right) = index;
+                                       index += tree->leaf_size(node->right);
+                                       count++;
+                               } else if (node->right) {
+                                       assert(node->rightnode == NODE);
+                                       indent += 1;
+                                       node = node->right;
+                                       break;
+                               }
+                       }
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+                       node = node->parent;
+                       indent -= 1;
+               }
+       }
+done:
+       /* Round up to a multiple of 16 */
+       while (index % 16)
+               index++;
+       if (verbose > 0)
+               printf("Final index %d\n", index);
+       return index;
+}
+
+/*
+ * Mark the nodes in a subtree, helper for size_nodes().
+ */
+static int mark_subtree(struct node *node)
+{
+       int changed;
+
+       if (!node || node->mark)
+               return 0;
+       node->mark = 1;
+       node->index = node->parent->index;
+       changed = 1;
+       if (node->leftnode == NODE)
+               changed += mark_subtree(node->left);
+       if (node->rightnode == NODE)
+               changed += mark_subtree(node->right);
+       return changed;
+}
+
+/*
+ * Compute the size of nodes and leaves. We start by assuming that
+ * each node needs to store a three-byte offset. The indexes of the
+ * nodes are calculated based on that, and then this function is
+ * called to see if the sizes of some nodes can be reduced.  This is
+ * repeated until no more changes are seen.
+ */
+static int size_nodes(struct tree *tree)
+{
+       struct tree *next;
+       struct node *node;
+       struct node *right;
+       struct node *n;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       unsigned int pathbits;
+       unsigned int pathmask;
+       unsigned int nbit;
+       int changed;
+       int offset;
+       int size;
+       int indent;
+
+       indent = 1;
+       changed = 0;
+       size = 0;
+
+       if (verbose > 0)
+               printf("Sizing %s_%x\n", tree->type, tree->maxage);
+       if (tree->childnode == LEAF)
+               goto done;
+
+       assert(tree->childnode == NODE);
+       pathbits = 0;
+       pathmask = 0;
+       node = tree->root;
+       leftmask = rightmask = 0;
+       while (node) {
+               if (!node->mark)
+                       goto skip;
+               offset = 0;
+               if (!node->left || !node->right) {
+                       size = 1;
+               } else {
+                       if (node->rightnode == NODE) {
+                               /*
+                                * If the right node is not marked,
+                                * look for a corresponding node in
+                                * the next tree.  Such a node need
+                                * not exist.
+                                */
+                               right = node->right;
+                               next = tree->next;
+                               while (!right->mark) {
+                                       assert(next);
+                                       n = next->root;
+                                       while (n->bitnum != node->bitnum) {
+                                               nbit = 1 << n->bitnum;
+                                               if (!(pathmask & nbit))
+                                                       break;
+                                               if (pathbits & nbit) {
+                                                       if (n->rightnode == LEAF)
+                                                               break;
+                                                       n = n->right;
+                                               } else {
+                                                       if (n->leftnode == LEAF)
+                                                               break;
+                                                       n = n->left;
+                                               }
+                                       }
+                                       if (n->bitnum != node->bitnum)
+                                               break;
+                                       n = n->right;
+                                       right = n;
+                                       next = next->next;
+                               }
+                               /* Make sure the right node is marked. */
+                               if (!right->mark)
+                                       changed += mark_subtree(right);
+                               offset = right->index - node->index;
+                       } else {
+                               offset = *tree->leaf_index(tree, node->right);
+                               offset -= node->index;
+                       }
+                       assert(offset >= 0);
+                       assert(offset <= 0xffffff);
+                       if (offset <= 0xff) {
+                               size = 2;
+                       } else if (offset <= 0xffff) {
+                               size = 3;
+                       } else { /* offset <= 0xffffff */
+                               size = 4;
+                       }
+               }
+               if (node->size != size || node->offset != offset) {
+                       node->size = size;
+                       node->offset = offset;
+                       changed++;
+               }
+skip:
+               while (node) {
+                       bitmask = 1 << node->bitnum;
+                       pathmask |= bitmask;
+                       if (node->mark && (leftmask & bitmask) == 0) {
+                               leftmask |= bitmask;
+                               if (node->leftnode == LEAF) {
+                                       assert(node->left);
+                               } else if (node->left) {
+                                       assert(node->leftnode == NODE);
+                                       indent += 1;
+                                       node = node->left;
+                                       break;
+                               }
+                       }
+                       if (node->mark && (rightmask & bitmask) == 0) {
+                               rightmask |= bitmask;
+                               pathbits |= bitmask;
+                               if (node->rightnode == LEAF) {
+                                       assert(node->right);
+                               } else if (node->right) {
+                                       assert(node->rightnode == NODE);
+                                       indent += 1;
+                                       node = node->right;
+                                       break;
+                               }
+                       }
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+                       pathmask &= ~bitmask;
+                       pathbits &= ~bitmask;
+                       node = node->parent;
+                       indent -= 1;
+               }
+       }
+done:
+       if (verbose > 0)
+               printf("Found %d changes\n", changed);
+       return changed;
+}
+
+/*
+ * Emit a trie for the given tree into the data array.
+ */
+static void emit(struct tree *tree, unsigned char *data)
+{
+       struct node *node;
+       unsigned int leftmask;
+       unsigned int rightmask;
+       unsigned int bitmask;
+       int offlen;
+       int offset;
+       int index;
+       int indent;
+       int size;
+       int bytes;
+       int leaves;
+       int nodes[4];
+       unsigned char byte;
+
+       nodes[0] = nodes[1] = nodes[2] = nodes[3] = 0;
+       leaves = 0;
+       bytes = 0;
+       index = tree->index;
+       data += index;
+       indent = 1;
+       if (verbose > 0)
+               printf("Emitting %s_%x\n", tree->type, tree->maxage);
+       if (tree->childnode == LEAF) {
+               assert(tree->root);
+               tree->leaf_emit(tree->root, data);
+               size = tree->leaf_size(tree->root);
+               index += size;
+               leaves++;
+               goto done;
+       }
+
+       assert(tree->childnode == NODE);
+       node = tree->root;
+       leftmask = rightmask = 0;
+       while (node) {
+               if (!node->mark)
+                       goto skip;
+               assert(node->offset != -1);
+               assert(node->index == index);
+
+               byte = 0;
+               if (node->nextbyte)
+                       byte |= NEXTBYTE;
+               byte |= (node->bitnum & BITNUM);
+               if (node->left && node->right) {
+                       if (node->leftnode == NODE)
+                               byte |= LEFTNODE;
+                       if (node->rightnode == NODE)
+                               byte |= RIGHTNODE;
+                       if (node->offset <= 0xff)
+                               offlen = 1;
+                       else if (node->offset <= 0xffff)
+                               offlen = 2;
+                       else
+                               offlen = 3;
+                       nodes[offlen]++;
+                       offset = node->offset;
+                       byte |= offlen << OFFLEN_SHIFT;
+                       *data++ = byte;
+                       index++;
+                       while (offlen--) {
+                               *data++ = offset & 0xff;
+                               index++;
+                               offset >>= 8;
+                       }
+               } else if (node->left) {
+                       if (node->leftnode == NODE)
+                               byte |= TRIENODE;
+                       nodes[0]++;
+                       *data++ = byte;
+                       index++;
+               } else if (node->right) {
+                       byte |= RIGHTNODE;
+                       if (node->rightnode == NODE)
+                               byte |= TRIENODE;
+                       nodes[0]++;
+                       *data++ = byte;
+                       index++;
+               } else {
+                       assert(0);
+               }
+skip:
+               while (node) {
+                       bitmask = 1 << node->bitnum;
+                       if (node->mark && (leftmask & bitmask) == 0) {
+                               leftmask |= bitmask;
+                               if (node->leftnode == LEAF) {
+                                       assert(node->left);
+                                       data = tree->leaf_emit(node->left,
+                                                              data);
+                                       size = tree->leaf_size(node->left);
+                                       index += size;
+                                       bytes += size;
+                                       leaves++;
+                               } else if (node->left) {
+                                       assert(node->leftnode == NODE);
+                                       indent += 1;
+                                       node = node->left;
+                                       break;
+                               }
+                       }
+                       if (node->mark && (rightmask & bitmask) == 0) {
+                               rightmask |= bitmask;
+                               if (node->rightnode == LEAF) {
+                                       assert(node->right);
+                                       data = tree->leaf_emit(node->right,
+                                                              data);
+                                       size = tree->leaf_size(node->right);
+                                       index += size;
+                                       bytes += size;
+                                       leaves++;
+                               } else if (node->right) {
+                                       assert(node->rightnode == NODE);
+                                       indent += 1;
+                                       node = node->right;
+                                       break;
+                               }
+                       }
+                       leftmask &= ~bitmask;
+                       rightmask &= ~bitmask;
+                       node = node->parent;
+                       indent -= 1;
+               }
+       }
+done:
+       if (verbose > 0) {
+               printf("Emitted %d (%d) leaves",
+                       leaves, bytes);
+               printf(" %d (%d+%d+%d+%d) nodes",
+                       nodes[0] + nodes[1] + nodes[2] + nodes[3],
+                       nodes[0], nodes[1], nodes[2], nodes[3]);
+               printf(" %d total\n", index - tree->index);
+       }
+}
+
+/* ------------------------------------------------------------------ */
+
+/*
+ * Unicode data.
+ *
+ * We need to keep track of the Canonical Combining Class, the Age,
+ * and decompositions for a code point.
+ *
+ * For the Age, we store the index into the ages table.  Effectively
+ * this is a generation number that the table maps to a unicode
+ * version.
+ *
+ * The correction field is used to indicate that this entry is in the
+ * corrections array, which contains decompositions that were
+ * corrected in later revisions.  The value of the correction field is
+ * the Unicode version in which the mapping was corrected.
+ */
+struct unicode_data {
+       unsigned int code;
+       int ccc;
+       int gen;
+       int correction;
+       unsigned int *utf32nfkdi;
+       unsigned int *utf32nfkdicf;
+       char *utf8nfkdi;
+       char *utf8nfkdicf;
+};
+
+struct unicode_data unicode_data[0x110000];
+struct unicode_data *corrections;
+int    corrections_count;
+
+struct tree *nfkdi_tree;
+struct tree *nfkdicf_tree;
+
+struct tree *trees;
+int          trees_count;
+
+/*
+ * Check the corrections array to see if this entry was corrected at
+ * some point.
+ */
+static struct unicode_data *corrections_lookup(struct unicode_data *u)
+{
+       int i;
+
+       for (i = 0; i != corrections_count; i++)
+               if (u->code == corrections[i].code)
+                       return &corrections[i];
+       return u;
+}
+
+static int nfkdi_equal(void *l, void *r)
+{
+       struct unicode_data *left = l;
+       struct unicode_data *right = r;
+
+       if (left->gen != right->gen)
+               return 0;
+       if (left->ccc != right->ccc)
+               return 0;
+       if (left->utf8nfkdi && right->utf8nfkdi &&
+           strcmp(left->utf8nfkdi, right->utf8nfkdi) == 0)
+               return 1;
+       if (left->utf8nfkdi || right->utf8nfkdi)
+               return 0;
+       return 1;
+}
+
+static int nfkdicf_equal(void *l, void *r)
+{
+       struct unicode_data *left = l;
+       struct unicode_data *right = r;
+
+       if (left->gen != right->gen)
+               return 0;
+       if (left->ccc != right->ccc)
+               return 0;
+       if (left->utf8nfkdicf && right->utf8nfkdicf &&
+           strcmp(left->utf8nfkdicf, right->utf8nfkdicf) == 0)
+               return 1;
+       if (left->utf8nfkdicf && right->utf8nfkdicf)
+               return 0;
+       if (left->utf8nfkdicf || right->utf8nfkdicf)
+               return 0;
+       if (left->utf8nfkdi && right->utf8nfkdi &&
+           strcmp(left->utf8nfkdi, right->utf8nfkdi) == 0)
+               return 1;
+       if (left->utf8nfkdi || right->utf8nfkdi)
+               return 0;
+       return 1;
+}
+
+static void nfkdi_print(void *l, int indent)
+{
+       struct unicode_data *leaf = l;
+
+       printf("%*sleaf @ %p code %X ccc %d gen %d", indent, "", leaf,
+               leaf->code, leaf->ccc, leaf->gen);
+       if (leaf->utf8nfkdi && leaf->utf8nfkdi[0] == HANGUL)
+               printf(" nfkdi \"%s\"", "HANGUL SYLLABLE");
+       else if (leaf->utf8nfkdi)
+               printf(" nfkdi \"%s\"", (const char*)leaf->utf8nfkdi);
+       printf("\n");
+}
+
+static void nfkdicf_print(void *l, int indent)
+{
+       struct unicode_data *leaf = l;
+
+       printf("%*sleaf @ %p code %X ccc %d gen %d", indent, "", leaf,
+               leaf->code, leaf->ccc, leaf->gen);
+       if (leaf->utf8nfkdicf)
+               printf(" nfkdicf \"%s\"", (const char*)leaf->utf8nfkdicf);
+       else if (leaf->utf8nfkdi && leaf->utf8nfkdi[0] == HANGUL)
+               printf(" nfkdi \"%s\"", "HANGUL SYLLABLE");
+       else if (leaf->utf8nfkdi)
+               printf(" nfkdi \"%s\"", (const char*)leaf->utf8nfkdi);
+       printf("\n");
+}
+
+static int nfkdi_mark(void *l)
+{
+       return 1;
+}
+
+static int nfkdicf_mark(void *l)
+{
+       struct unicode_data *leaf = l;
+
+       if (leaf->utf8nfkdicf)
+               return 1;
+       return 0;
+}
+
+static int correction_mark(void *l)
+{
+       struct unicode_data *leaf = l;
+
+       return leaf->correction;
+}
+
+static int nfkdi_size(void *l)
+{
+       struct unicode_data *leaf = l;
+
+       int size = 2;
+       if (HANGUL_SYLLABLE(leaf->code))
+               size += 1;
+       else if (leaf->utf8nfkdi)
+               size += strlen(leaf->utf8nfkdi) + 1;
+       return size;
+}
+
+static int nfkdicf_size(void *l)
+{
+       struct unicode_data *leaf = l;
+
+       int size = 2;
+       if (HANGUL_SYLLABLE(leaf->code))
+               size += 1;
+       else if (leaf->utf8nfkdicf)
+               size += strlen(leaf->utf8nfkdicf) + 1;
+       else if (leaf->utf8nfkdi)
+               size += strlen(leaf->utf8nfkdi) + 1;
+       return size;
+}
+
+static int *nfkdi_index(struct tree *tree, void *l)
+{
+       struct unicode_data *leaf = l;
+
+       return &tree->leafindex[leaf->code];
+}
+
+static int *nfkdicf_index(struct tree *tree, void *l)
+{
+       struct unicode_data *leaf = l;
+
+       return &tree->leafindex[leaf->code];
+}
+
+static unsigned char *nfkdi_emit(void *l, unsigned char *data)
+{
+       struct unicode_data *leaf = l;
+       unsigned char *s;
+
+       *data++ = leaf->gen;
+       if (HANGUL_SYLLABLE(leaf->code)) {
+               *data++ = DECOMPOSE;
+               *data++ = HANGUL;
+       } else if (leaf->utf8nfkdi) {
+               *data++ = DECOMPOSE;
+               s = (unsigned char*)leaf->utf8nfkdi;
+               while ((*data++ = *s++) != 0)
+                       ;
+       } else {
+               *data++ = leaf->ccc;
+       }
+       return data;
+}
+
+static unsigned char *nfkdicf_emit(void *l, unsigned char *data)
+{
+       struct unicode_data *leaf = l;
+       unsigned char *s;
+
+       *data++ = leaf->gen;
+       if (HANGUL_SYLLABLE(leaf->code)) {
+               *data++ = DECOMPOSE;
+               *data++ = HANGUL;
+       } else if (leaf->utf8nfkdicf) {
+               *data++ = DECOMPOSE;
+               s = (unsigned char*)leaf->utf8nfkdicf;
+               while ((*data++ = *s++) != 0)
+                       ;
+       } else if (leaf->utf8nfkdi) {
+               *data++ = DECOMPOSE;
+               s = (unsigned char*)leaf->utf8nfkdi;
+               while ((*data++ = *s++) != 0)
+                       ;
+       } else {
+               *data++ = leaf->ccc;
+       }
+       return data;
+}
+
+static void utf8_create(struct unicode_data *data)
+{
+       char utf[18*4+1];
+       char *u;
+       unsigned int *um;
+       int i;
+
+       if (data->utf8nfkdi) {
+               assert(data->utf8nfkdi[0] == HANGUL);
+               return;
+       }
+
+       u = utf;
+       um = data->utf32nfkdi;
+       if (um) {
+               for (i = 0; um[i]; i++)
+                       u += utf8encode(u, um[i]);
+               *u = '\0';
+               data->utf8nfkdi = strdup(utf);
+       }
+       u = utf;
+       um = data->utf32nfkdicf;
+       if (um) {
+               for (i = 0; um[i]; i++)
+                       u += utf8encode(u, um[i]);
+               *u = '\0';
+               if (!data->utf8nfkdi || strcmp(data->utf8nfkdi, utf))
+                       data->utf8nfkdicf = strdup(utf);
+       }
+}
+
+static void utf8_init(void)
+{
+       unsigned int unichar;
+       int i;
+
+       for (unichar = 0; unichar != 0x110000; unichar++)
+               utf8_create(&unicode_data[unichar]);
+
+       for (i = 0; i != corrections_count; i++)
+               utf8_create(&corrections[i]);
+}
+
+static void trees_init(void)
+{
+       struct unicode_data *data;
+       unsigned int maxage;
+       unsigned int nextage;
+       int count;
+       int i;
+       int j;
+
+       /* Count the number of different ages. */
+       count = 0;
+       nextage = (unsigned int)-1;
+       do {
+               maxage = nextage;
+               nextage = 0;
+               for (i = 0; i <= corrections_count; i++) {
+                       data = &corrections[i];
+                       if (nextage < data->correction &&
+                           data->correction < maxage)
+                               nextage = data->correction;
+               }
+               count++;
+       } while (nextage);
+
+       /* Two trees per age: nfkdi and nfkdicf */
+       trees_count = count * 2;
+       trees = calloc(trees_count, sizeof(struct tree));
+
+       /* Assign ages to the trees. */
+       count = trees_count;
+       nextage = (unsigned int)-1;
+       do {
+               maxage = nextage;
+               trees[--count].maxage = maxage;
+               trees[--count].maxage = maxage;
+               nextage = 0;
+               for (i = 0; i <= corrections_count; i++) {
+                       data = &corrections[i];
+                       if (nextage < data->correction &&
+                           data->correction < maxage)
+                               nextage = data->correction;
+               }
+       } while (nextage);
+
+       /* The ages assigned above are off by one. */
+       for (i = 0; i != trees_count; i++) {
+               j = 0;
+               while (ages[j] < trees[i].maxage)
+                       j++;
+               trees[i].maxage = ages[j-1];
+       }
+
+       /* Set up the forwarding between trees. */
+       trees[trees_count-2].next = &trees[trees_count-1];
+       trees[trees_count-1].leaf_mark = nfkdi_mark;
+       trees[trees_count-2].leaf_mark = nfkdicf_mark;
+       for (i = 0; i != trees_count-2; i += 2) {
+               trees[i].next = &trees[trees_count-2];
+               trees[i].leaf_mark = correction_mark;
+               trees[i+1].next = &trees[trees_count-1];
+               trees[i+1].leaf_mark = correction_mark;
+       }
+
+       /* Assign the callouts. */
+       for (i = 0; i != trees_count; i += 2) {
+               trees[i].type = "nfkdicf";
+               trees[i].leaf_equal = nfkdicf_equal;
+               trees[i].leaf_print = nfkdicf_print;
+               trees[i].leaf_size = nfkdicf_size;
+               trees[i].leaf_index = nfkdicf_index;
+               trees[i].leaf_emit = nfkdicf_emit;
+
+               trees[i+1].type = "nfkdi";
+               trees[i+1].leaf_equal = nfkdi_equal;
+               trees[i+1].leaf_print = nfkdi_print;
+               trees[i+1].leaf_size = nfkdi_size;
+               trees[i+1].leaf_index = nfkdi_index;
+               trees[i+1].leaf_emit = nfkdi_emit;
+       }
+
+       /* Finish init. */
+       for (i = 0; i != trees_count; i++)
+               trees[i].childnode = NODE;
+}
+
+static void trees_populate(void)
+{
+       struct unicode_data *data;
+       unsigned int unichar;
+       char keyval[4];
+       int keylen;
+       int i;
+
+       for (i = 0; i != trees_count; i++) {
+               if (verbose > 0) {
+                       printf("Populating %s_%x\n",
+                               trees[i].type, trees[i].maxage);
+               }
+               for (unichar = 0; unichar != 0x110000; unichar++) {
+                       if (unicode_data[unichar].gen < 0)
+                               continue;
+                       keylen = utf8encode(keyval, unichar);
+                       data = corrections_lookup(&unicode_data[unichar]);
+                       if (data->correction <= trees[i].maxage)
+                               data = &unicode_data[unichar];
+                       insert(&trees[i], keyval, keylen, data);
+               }
+       }
+}
+
+static void trees_reduce(void)
+{
+       int i;
+       int size;
+       int changed;
+
+       for (i = 0; i != trees_count; i++)
+               prune(&trees[i]);
+       for (i = 0; i != trees_count; i++)
+               mark_nodes(&trees[i]);
+       do {
+               size = 0;
+               for (i = 0; i != trees_count; i++)
+                       size = index_nodes(&trees[i], size);
+               changed = 0;
+               for (i = 0; i != trees_count; i++)
+                       changed += size_nodes(&trees[i]);
+       } while (changed);
+
+       utf8data = calloc(size, 1);
+       utf8data_size = size;
+       for (i = 0; i != trees_count; i++)
+               emit(&trees[i], utf8data);
+
+       if (verbose > 0) {
+               for (i = 0; i != trees_count; i++) {
+                       printf("%s_%x idx %d\n",
+                               trees[i].type, trees[i].maxage, trees[i].index);
+               }
+       }
+
+       nfkdi = utf8data + trees[trees_count-1].index;
+       nfkdicf = utf8data + trees[trees_count-2].index;
+
+       nfkdi_tree = &trees[trees_count-1];
+       nfkdicf_tree = &trees[trees_count-2];
+}
+
+static void verify(struct tree *tree)
+{
+       struct unicode_data *data;
+       utf8leaf_t      *leaf;
+       unsigned int    unichar;
+       char            key[4];
+       unsigned char   hangul[UTF8HANGULLEAF];
+       int             report;
+       int             nocf;
+
+       if (verbose > 0)
+               printf("Verifying %s_%x\n", tree->type, tree->maxage);
+       nocf = strcmp(tree->type, "nfkdicf");
+
+       for (unichar = 0; unichar != 0x110000; unichar++) {
+               report = 0;
+               data = corrections_lookup(&unicode_data[unichar]);
+               if (data->correction <= tree->maxage)
+                       data = &unicode_data[unichar];
+               utf8encode(key,unichar);
+               leaf = utf8lookup(tree, hangul, key);
+
+               if (!leaf) {
+                       if (data->gen != -1)
+                               report++;
+                       if (unichar < 0xd800 || unichar > 0xdfff)
+                               report++;
+               } else {
+                       if (unichar >= 0xd800 && unichar <= 0xdfff)
+                               report++;
+                       if (data->gen == -1)
+                               report++;
+                       if (data->gen != LEAF_GEN(leaf))
+                               report++;
+                       if (LEAF_CCC(leaf) == DECOMPOSE) {
+                               if (HANGUL_SYLLABLE(data->code)) {
+                                       if (data->utf8nfkdi[0] != HANGUL)
+                                               report++;
+                               } else if (nocf) {
+                                       if (!data->utf8nfkdi) {
+                                               report++;
+                                       } else if (strcmp(data->utf8nfkdi,
+                                                         LEAF_STR(leaf))) {
+                                               report++;
+                                       }
+                               } else {
+                                       if (!data->utf8nfkdicf &&
+                                           !data->utf8nfkdi) {
+                                               report++;
+                                       } else if (data->utf8nfkdicf) {
+                                               if (strcmp(data->utf8nfkdicf,
+                                                          LEAF_STR(leaf)))
+                                                       report++;
+                                       } else if (strcmp(data->utf8nfkdi,
+                                                         LEAF_STR(leaf))) {
+                                               report++;
+                                       }
+                               }
+                       } else if (data->ccc != LEAF_CCC(leaf)) {
+                               report++;
+                       }
+               }
+               if (report) {
+                       printf("%X code %X gen %d ccc %d"
+                               " nfkdi -> \"%s\"",
+                               unichar, data->code, data->gen,
+                               data->ccc,
+                               data->utf8nfkdi);
+                       if (leaf) {
+                               printf(" gen %d ccc %d"
+                                       " nfkdi -> \"%s\"",
+                                       LEAF_GEN(leaf),
+                                       LEAF_CCC(leaf),
+                                       LEAF_CCC(leaf) == DECOMPOSE ?
+                                               LEAF_STR(leaf) : "");
+                       }
+                       printf("\n");
+               }
+       }
+}
+
+static void trees_verify(void)
+{
+       int i;
+
+       for (i = 0; i != trees_count; i++)
+               verify(&trees[i]);
+}
+
+/* ------------------------------------------------------------------ */
+
+static void help(void)
+{
+       printf("Usage: %s [options]\n", argv0);
+       printf("\n");
+       printf("This program creates an a data trie used for parsing and\n");
+       printf("normalization of UTF-8 strings. The trie is derived from\n");
+       printf("a set of input files from the Unicode character database\n");
+       printf("found at: http://www.unicode.org/Public/UCD/latest/ucd/\n");
+       printf("\n");
+       printf("The generated tree supports two normalization forms:\n");
+       printf("\n");
+       printf("\tnfkdi:\n");
+       printf("\t- Apply unicode normalization form NFKD.\n");
+       printf("\t- Remove any Default_Ignorable_Code_Point.\n");
+       printf("\n");
+       printf("\tnfkdicf:\n");
+       printf("\t- Apply unicode normalization form NFKD.\n");
+       printf("\t- Remove any Default_Ignorable_Code_Point.\n");
+       printf("\t- Apply a full casefold (C + F).\n");
+       printf("\n");
+       printf("These forms were chosen as being most useful when dealing\n");
+       printf("with file names: NFKD catches most cases where characters\n");
+       printf("should be considered equivalent. The ignorables are mostly\n");
+       printf("invisible, making names hard to type.\n");
+       printf("\n");
+       printf("The options to specify the files to be used are listed\n");
+       printf("below with their default values, which are the names used\n");
+       printf("by version 11.0.0 of the Unicode Character Database.\n");
+       printf("\n");
+       printf("The input files:\n");
+       printf("\t-a %s\n", AGE_NAME);
+       printf("\t-c %s\n", CCC_NAME);
+       printf("\t-p %s\n", PROP_NAME);
+       printf("\t-d %s\n", DATA_NAME);
+       printf("\t-f %s\n", FOLD_NAME);
+       printf("\t-n %s\n", NORM_NAME);
+       printf("\n");
+       printf("Additionally, the generated tables are tested using:\n");
+       printf("\t-t %s\n", TEST_NAME);
+       printf("\n");
+       printf("Finally, the output file:\n");
+       printf("\t-o %s\n", UTF8_NAME);
+       printf("\n");
+}
+
+static void usage(void)
+{
+       help();
+       exit(1);
+}
+
+static void open_fail(const char *name, int error)
+{
+       printf("Error %d opening %s: %s\n", error, name, strerror(error));
+       exit(1);
+}
+
+static void file_fail(const char *filename)
+{
+       printf("Error parsing %s\n", filename);
+       exit(1);
+}
+
+static void line_fail(const char *filename, const char *line)
+{
+       printf("Error parsing %s:%s\n", filename, line);
+       exit(1);
+}
+
+/* ------------------------------------------------------------------ */
+
+static void print_utf32(unsigned int *utf32str)
+{
+       int     i;
+
+       for (i = 0; utf32str[i]; i++)
+               printf(" %X", utf32str[i]);
+}
+
+static void print_utf32nfkdi(unsigned int unichar)
+{
+       printf(" %X ->", unichar);
+       print_utf32(unicode_data[unichar].utf32nfkdi);
+       printf("\n");
+}
+
+static void print_utf32nfkdicf(unsigned int unichar)
+{
+       printf(" %X ->", unichar);
+       print_utf32(unicode_data[unichar].utf32nfkdicf);
+       printf("\n");
+}
+
+/* ------------------------------------------------------------------ */
+
+static void age_init(void)
+{
+       FILE *file;
+       unsigned int first;
+       unsigned int last;
+       unsigned int unichar;
+       unsigned int major;
+       unsigned int minor;
+       unsigned int revision;
+       int gen;
+       int count;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", age_name);
+
+       file = fopen(age_name, "r");
+       if (!file)
+               open_fail(age_name, errno);
+       count = 0;
+
+       gen = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "# Age=V%d_%d_%d",
+                               &major, &minor, &revision);
+               if (ret == 3) {
+                       ages_count++;
+                       if (verbose > 1)
+                               printf(" Age V%d_%d_%d\n",
+                                       major, minor, revision);
+                       if (!age_valid(major, minor, revision))
+                               line_fail(age_name, line);
+                       continue;
+               }
+               ret = sscanf(line, "# Age=V%d_%d", &major, &minor);
+               if (ret == 2) {
+                       ages_count++;
+                       if (verbose > 1)
+                               printf(" Age V%d_%d\n", major, minor);
+                       if (!age_valid(major, minor, 0))
+                               line_fail(age_name, line);
+                       continue;
+               }
+       }
+
+       /* We must have found something above. */
+       if (verbose > 1)
+               printf("%d age entries\n", ages_count);
+       if (ages_count == 0 || ages_count > MAXGEN)
+               file_fail(age_name);
+
+       /* There is a 0 entry. */
+       ages_count++;
+       ages = calloc(ages_count + 1, sizeof(*ages));
+       /* And a guard entry. */
+       ages[ages_count] = (unsigned int)-1;
+
+       rewind(file);
+       count = 0;
+       gen = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "# Age=V%d_%d_%d",
+                               &major, &minor, &revision);
+               if (ret == 3) {
+                       ages[++gen] =
+                               UNICODE_AGE(major, minor, revision);
+                       if (verbose > 1)
+                               printf(" Age V%d_%d_%d = gen %d\n",
+                                       major, minor, revision, gen);
+                       if (!age_valid(major, minor, revision))
+                               line_fail(age_name, line);
+                       continue;
+               }
+               ret = sscanf(line, "# Age=V%d_%d", &major, &minor);
+               if (ret == 2) {
+                       ages[++gen] = UNICODE_AGE(major, minor, 0);
+                       if (verbose > 1)
+                               printf(" Age V%d_%d = %d\n",
+                                       major, minor, gen);
+                       if (!age_valid(major, minor, 0))
+                               line_fail(age_name, line);
+                       continue;
+               }
+               ret = sscanf(line, "%X..%X ; %d.%d #",
+                            &first, &last, &major, &minor);
+               if (ret == 4) {
+                       for (unichar = first; unichar <= last; unichar++)
+                               unicode_data[unichar].gen = gen;
+                       count += 1 + last - first;
+                       if (verbose > 1)
+                               printf("  %X..%X gen %d\n", first, last, gen);
+                       if (!utf32valid(first) || !utf32valid(last))
+                               line_fail(age_name, line);
+                       continue;
+               }
+               ret = sscanf(line, "%X ; %d.%d #", &unichar, &major, &minor);
+               if (ret == 3) {
+                       unicode_data[unichar].gen = gen;
+                       count++;
+                       if (verbose > 1)
+                               printf("  %X gen %d\n", unichar, gen);
+                       if (!utf32valid(unichar))
+                               line_fail(age_name, line);
+                       continue;
+               }
+       }
+       unicode_maxage = ages[gen];
+       fclose(file);
+
+       /* Nix surrogate block */
+       if (verbose > 1)
+               printf(" Removing surrogate block D800..DFFF\n");
+       for (unichar = 0xd800; unichar <= 0xdfff; unichar++)
+               unicode_data[unichar].gen = -1;
+
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(age_name);
+}
+
+static void ccc_init(void)
+{
+       FILE *file;
+       unsigned int first;
+       unsigned int last;
+       unsigned int unichar;
+       unsigned int value;
+       int count;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", ccc_name);
+
+       file = fopen(ccc_name, "r");
+       if (!file)
+               open_fail(ccc_name, errno);
+
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X..%X ; %d #", &first, &last, &value);
+               if (ret == 3) {
+                       for (unichar = first; unichar <= last; unichar++) {
+                               unicode_data[unichar].ccc = value;
+                                count++;
+                       }
+                       if (verbose > 1)
+                               printf(" %X..%X ccc %d\n", first, last, value);
+                       if (!utf32valid(first) || !utf32valid(last))
+                               line_fail(ccc_name, line);
+                       continue;
+               }
+               ret = sscanf(line, "%X ; %d #", &unichar, &value);
+               if (ret == 2) {
+                       unicode_data[unichar].ccc = value;
+                        count++;
+                       if (verbose > 1)
+                               printf(" %X ccc %d\n", unichar, value);
+                       if (!utf32valid(unichar))
+                               line_fail(ccc_name, line);
+                       continue;
+               }
+       }
+       fclose(file);
+
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(ccc_name);
+}
+
+static void nfkdi_init(void)
+{
+       FILE *file;
+       unsigned int unichar;
+       unsigned int mapping[19]; /* Magic - guaranteed not to be exceeded. */
+       char *s;
+       unsigned int *um;
+       int count;
+       int i;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", data_name);
+       file = fopen(data_name, "r");
+       if (!file)
+               open_fail(data_name, errno);
+
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X;%*[^;];%*[^;];%*[^;];%*[^;];%[^;];",
+                            &unichar, buf0);
+               if (ret != 2)
+                       continue;
+               if (!utf32valid(unichar))
+                       line_fail(data_name, line);
+
+               s = buf0;
+               /* skip over <tag> */
+               if (*s == '<')
+                       while (*s++ != ' ')
+                               ;
+               /* decode the decomposition into UTF-32 */
+               i = 0;
+               while (*s) {
+                       mapping[i] = strtoul(s, &s, 16);
+                       if (!utf32valid(mapping[i]))
+                               line_fail(data_name, line);
+                       i++;
+               }
+               mapping[i++] = 0;
+
+               um = malloc(i * sizeof(unsigned int));
+               memcpy(um, mapping, i * sizeof(unsigned int));
+               unicode_data[unichar].utf32nfkdi = um;
+
+               if (verbose > 1)
+                       print_utf32nfkdi(unichar);
+               count++;
+       }
+       fclose(file);
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(data_name);
+}
+
+static void nfkdicf_init(void)
+{
+       FILE *file;
+       unsigned int unichar;
+       unsigned int mapping[19]; /* Magic - guaranteed not to be exceeded. */
+       char status;
+       char *s;
+       unsigned int *um;
+       int i;
+       int count;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", fold_name);
+       file = fopen(fold_name, "r");
+       if (!file)
+               open_fail(fold_name, errno);
+
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X; %c; %[^;];", &unichar, &status, buf0);
+               if (ret != 3)
+                       continue;
+               if (!utf32valid(unichar))
+                       line_fail(fold_name, line);
+               /* Use the C+F casefold. */
+               if (status != 'C' && status != 'F')
+                       continue;
+               s = buf0;
+               if (*s == '<')
+                       while (*s++ != ' ')
+                               ;
+               i = 0;
+               while (*s) {
+                       mapping[i] = strtoul(s, &s, 16);
+                       if (!utf32valid(mapping[i]))
+                               line_fail(fold_name, line);
+                       i++;
+               }
+               mapping[i++] = 0;
+
+               um = malloc(i * sizeof(unsigned int));
+               memcpy(um, mapping, i * sizeof(unsigned int));
+               unicode_data[unichar].utf32nfkdicf = um;
+
+               if (verbose > 1)
+                       print_utf32nfkdicf(unichar);
+               count++;
+       }
+       fclose(file);
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(fold_name);
+}
+
+static void ignore_init(void)
+{
+       FILE *file;
+       unsigned int unichar;
+       unsigned int first;
+       unsigned int last;
+       unsigned int *um;
+       int count;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", prop_name);
+       file = fopen(prop_name, "r");
+       if (!file)
+               open_fail(prop_name, errno);
+       assert(file);
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X..%X ; %s # ", &first, &last, buf0);
+               if (ret == 3) {
+                       if (strcmp(buf0, "Default_Ignorable_Code_Point"))
+                               continue;
+                       if (!utf32valid(first) || !utf32valid(last))
+                               line_fail(prop_name, line);
+                       for (unichar = first; unichar <= last; unichar++) {
+                               free(unicode_data[unichar].utf32nfkdi);
+                               um = malloc(sizeof(unsigned int));
+                               *um = 0;
+                               unicode_data[unichar].utf32nfkdi = um;
+                               free(unicode_data[unichar].utf32nfkdicf);
+                               um = malloc(sizeof(unsigned int));
+                               *um = 0;
+                               unicode_data[unichar].utf32nfkdicf = um;
+                               count++;
+                       }
+                       if (verbose > 1)
+                               printf(" %X..%X Default_Ignorable_Code_Point\n",
+                                       first, last);
+                       continue;
+               }
+               ret = sscanf(line, "%X ; %s # ", &unichar, buf0);
+               if (ret == 2) {
+                       if (strcmp(buf0, "Default_Ignorable_Code_Point"))
+                               continue;
+                       if (!utf32valid(unichar))
+                               line_fail(prop_name, line);
+                       free(unicode_data[unichar].utf32nfkdi);
+                       um = malloc(sizeof(unsigned int));
+                       *um = 0;
+                       unicode_data[unichar].utf32nfkdi = um;
+                       free(unicode_data[unichar].utf32nfkdicf);
+                       um = malloc(sizeof(unsigned int));
+                       *um = 0;
+                       unicode_data[unichar].utf32nfkdicf = um;
+                       if (verbose > 1)
+                               printf(" %X Default_Ignorable_Code_Point\n",
+                                       unichar);
+                       count++;
+                       continue;
+               }
+       }
+       fclose(file);
+
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(prop_name);
+}
+
+static void corrections_init(void)
+{
+       FILE *file;
+       unsigned int unichar;
+       unsigned int major;
+       unsigned int minor;
+       unsigned int revision;
+       unsigned int age;
+       unsigned int *um;
+       unsigned int mapping[19]; /* Magic - guaranteed not to be exceeded. */
+       char *s;
+       int i;
+       int count;
+       int ret;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", norm_name);
+       file = fopen(norm_name, "r");
+       if (!file)
+               open_fail(norm_name, errno);
+
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X;%[^;];%[^;];%d.%d.%d #",
+                               &unichar, buf0, buf1,
+                               &major, &minor, &revision);
+               if (ret != 6)
+                       continue;
+               if (!utf32valid(unichar) || !age_valid(major, minor, revision))
+                       line_fail(norm_name, line);
+               count++;
+       }
+       corrections = calloc(count, sizeof(struct unicode_data));
+       corrections_count = count;
+       rewind(file);
+
+       count = 0;
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%X;%[^;];%[^;];%d.%d.%d #",
+                               &unichar, buf0, buf1,
+                               &major, &minor, &revision);
+               if (ret != 6)
+                       continue;
+               if (!utf32valid(unichar) || !age_valid(major, minor, revision))
+                       line_fail(norm_name, line);
+               corrections[count] = unicode_data[unichar];
+               assert(corrections[count].code == unichar);
+               age = UNICODE_AGE(major, minor, revision);
+               corrections[count].correction = age;
+
+               i = 0;
+               s = buf0;
+               while (*s) {
+                       mapping[i] = strtoul(s, &s, 16);
+                       if (!utf32valid(mapping[i]))
+                               line_fail(norm_name, line);
+                       i++;
+               }
+               mapping[i++] = 0;
+
+               um = malloc(i * sizeof(unsigned int));
+               memcpy(um, mapping, i * sizeof(unsigned int));
+               corrections[count].utf32nfkdi = um;
+
+               if (verbose > 1)
+                       printf(" %X -> %s -> %s V%d_%d_%d\n",
+                               unichar, buf0, buf1, major, minor, revision);
+               count++;
+       }
+       fclose(file);
+
+       if (verbose > 0)
+               printf("Found %d entries\n", count);
+       if (count == 0)
+               file_fail(norm_name);
+}
+
+/* ------------------------------------------------------------------ */
+
+/*
+ * Hangul decomposition (algorithm from Section 3.12 of Unicode 6.3.0)
+ *
+ * AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+ * D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+ *
+ * SBase = 0xAC00
+ * LBase = 0x1100
+ * VBase = 0x1161
+ * TBase = 0x11A7
+ * LCount = 19
+ * VCount = 21
+ * TCount = 28
+ * NCount = 588 (VCount * TCount)
+ * SCount = 11172 (LCount * NCount)
+ *
+ * Decomposition:
+ *   SIndex = s - SBase
+ *
+ * LV (Canonical/Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *
+ * LVT (Canonical)
+ *   LVIndex = (SIndex / TCount) * TCount
+ *   TIndex = (Sindex % TCount)
+ *   LVPart = SBase + LVIndex
+ *   TPart = TBase + TIndex
+ *
+ * LVT (Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   TIndex = (Sindex % TCount)
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *   if (TIndex == 0) {
+ *          d = <LPart, VPart>
+ *   } else {
+ *          TPart = TBase + TIndex
+ *          d = <LPart, VPart, TPart>
+ *   }
+ *
+ */
+
+static void hangul_decompose(void)
+{
+       unsigned int sb = 0xAC00;
+       unsigned int lb = 0x1100;
+       unsigned int vb = 0x1161;
+       unsigned int tb = 0x11a7;
+       /* unsigned int lc = 19; */
+       unsigned int vc = 21;
+       unsigned int tc = 28;
+       unsigned int nc = (vc * tc);
+       /* unsigned int sc = (lc * nc); */
+       unsigned int unichar;
+       unsigned int mapping[4];
+       unsigned int *um;
+        int count;
+       int i;
+
+       if (verbose > 0)
+               printf("Decomposing hangul\n");
+       /* Hangul */
+       count = 0;
+       for (unichar = 0xAC00; unichar <= 0xD7A3; unichar++) {
+               unsigned int si = unichar - sb;
+               unsigned int li = si / nc;
+               unsigned int vi = (si % nc) / tc;
+               unsigned int ti = si % tc;
+
+               i = 0;
+               mapping[i++] = lb + li;
+               mapping[i++] = vb + vi;
+               if (ti)
+                       mapping[i++] = tb + ti;
+               mapping[i++] = 0;
+
+               assert(!unicode_data[unichar].utf32nfkdi);
+               um = malloc(i * sizeof(unsigned int));
+               memcpy(um, mapping, i * sizeof(unsigned int));
+               unicode_data[unichar].utf32nfkdi = um;
+
+               assert(!unicode_data[unichar].utf32nfkdicf);
+               um = malloc(i * sizeof(unsigned int));
+               memcpy(um, mapping, i * sizeof(unsigned int));
+               unicode_data[unichar].utf32nfkdicf = um;
+
+               /*
+                * Add a cookie as a reminder that the hangul syllable
+                * decompositions must not be stored in the generated
+                * trie.
+                */
+               unicode_data[unichar].utf8nfkdi = malloc(2);
+               unicode_data[unichar].utf8nfkdi[0] = HANGUL;
+               unicode_data[unichar].utf8nfkdi[1] = '\0';
+
+               if (verbose > 1)
+                       print_utf32nfkdi(unichar);
+
+               count++;
+       }
+       if (verbose > 0)
+               printf("Created %d entries\n", count);
+}
+
+static void nfkdi_decompose(void)
+{
+       unsigned int unichar;
+       unsigned int mapping[19]; /* Magic - guaranteed not to be exceeded. */
+       unsigned int *um;
+       unsigned int *dc;
+       int count;
+       int i;
+       int j;
+       int ret;
+
+       if (verbose > 0)
+               printf("Decomposing nfkdi\n");
+
+       count = 0;
+       for (unichar = 0; unichar != 0x110000; unichar++) {
+               if (!unicode_data[unichar].utf32nfkdi)
+                       continue;
+               for (;;) {
+                       ret = 1;
+                       i = 0;
+                       um = unicode_data[unichar].utf32nfkdi;
+                       while (*um) {
+                               dc = unicode_data[*um].utf32nfkdi;
+                               if (dc) {
+                                       for (j = 0; dc[j]; j++)
+                                               mapping[i++] = dc[j];
+                                       ret = 0;
+                               } else {
+                                       mapping[i++] = *um;
+                               }
+                               um++;
+                       }
+                       mapping[i++] = 0;
+                       if (ret)
+                               break;
+                       free(unicode_data[unichar].utf32nfkdi);
+                       um = malloc(i * sizeof(unsigned int));
+                       memcpy(um, mapping, i * sizeof(unsigned int));
+                       unicode_data[unichar].utf32nfkdi = um;
+               }
+               /* Add this decomposition to nfkdicf if there is no entry. */
+               if (!unicode_data[unichar].utf32nfkdicf) {
+                       um = malloc(i * sizeof(unsigned int));
+                       memcpy(um, mapping, i * sizeof(unsigned int));
+                       unicode_data[unichar].utf32nfkdicf = um;
+               }
+               if (verbose > 1)
+                       print_utf32nfkdi(unichar);
+               count++;
+       }
+       if (verbose > 0)
+               printf("Processed %d entries\n", count);
+}
+
+static void nfkdicf_decompose(void)
+{
+       unsigned int unichar;
+       unsigned int mapping[19]; /* Magic - guaranteed not to be exceeded. */
+       unsigned int *um;
+       unsigned int *dc;
+       int count;
+       int i;
+       int j;
+       int ret;
+
+       if (verbose > 0)
+               printf("Decomposing nfkdicf\n");
+       count = 0;
+       for (unichar = 0; unichar != 0x110000; unichar++) {
+               if (!unicode_data[unichar].utf32nfkdicf)
+                       continue;
+               for (;;) {
+                       ret = 1;
+                       i = 0;
+                       um = unicode_data[unichar].utf32nfkdicf;
+                       while (*um) {
+                               dc = unicode_data[*um].utf32nfkdicf;
+                               if (dc) {
+                                       for (j = 0; dc[j]; j++)
+                                               mapping[i++] = dc[j];
+                                       ret = 0;
+                               } else {
+                                       mapping[i++] = *um;
+                               }
+                               um++;
+                       }
+                       mapping[i++] = 0;
+                       if (ret)
+                               break;
+                       free(unicode_data[unichar].utf32nfkdicf);
+                       um = malloc(i * sizeof(unsigned int));
+                       memcpy(um, mapping, i * sizeof(unsigned int));
+                       unicode_data[unichar].utf32nfkdicf = um;
+               }
+               if (verbose > 1)
+                       print_utf32nfkdicf(unichar);
+               count++;
+       }
+       if (verbose > 0)
+               printf("Processed %d entries\n", count);
+}
+
+/* ------------------------------------------------------------------ */
+
+int utf8agemax(struct tree *, const char *);
+int utf8nagemax(struct tree *, const char *, size_t);
+int utf8agemin(struct tree *, const char *);
+int utf8nagemin(struct tree *, const char *, size_t);
+ssize_t utf8len(struct tree *, const char *);
+ssize_t utf8nlen(struct tree *, const char *, size_t);
+struct utf8cursor;
+int utf8cursor(struct utf8cursor *, struct tree *, const char *);
+int utf8ncursor(struct utf8cursor *, struct tree *, const char *, size_t);
+int utf8byte(struct utf8cursor *);
+
+/*
+ * Hangul decomposition (algorithm from Section 3.12 of Unicode 6.3.0)
+ *
+ * AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+ * D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+ *
+ * SBase = 0xAC00
+ * LBase = 0x1100
+ * VBase = 0x1161
+ * TBase = 0x11A7
+ * LCount = 19
+ * VCount = 21
+ * TCount = 28
+ * NCount = 588 (VCount * TCount)
+ * SCount = 11172 (LCount * NCount)
+ *
+ * Decomposition:
+ *   SIndex = s - SBase
+ *
+ * LV (Canonical/Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *
+ * LVT (Canonical)
+ *   LVIndex = (SIndex / TCount) * TCount
+ *   TIndex = (Sindex % TCount)
+ *   LVPart = SBase + LVIndex
+ *   TPart = TBase + TIndex
+ *
+ * LVT (Full)
+ *   LIndex = SIndex / NCount
+ *   VIndex = (Sindex % NCount) / TCount
+ *   TIndex = (Sindex % TCount)
+ *   LPart = LBase + LIndex
+ *   VPart = VBase + VIndex
+ *   if (TIndex == 0) {
+ *          d = <LPart, VPart>
+ *   } else {
+ *          TPart = TBase + TIndex
+ *          d = <LPart, VPart, TPart>
+ *   }
+ */
+
+/* Constants */
+#define SB     (0xAC00)
+#define LB     (0x1100)
+#define VB     (0x1161)
+#define TB     (0x11A7)
+#define LC     (19)
+#define VC     (21)
+#define TC     (28)
+#define NC     (VC * TC)
+#define SC     (LC * NC)
+
+/* Algorithmic decomposition of hangul syllable. */
+static utf8leaf_t *utf8hangul(const char *str, unsigned char *hangul)
+{
+       unsigned int    si;
+       unsigned int    li;
+       unsigned int    vi;
+       unsigned int    ti;
+       unsigned char   *h;
+
+       /* Calculate the SI, LI, VI, and TI values. */
+       si = utf8decode(str) - SB;
+       li = si / NC;
+       vi = (si % NC) / TC;
+       ti = si % TC;
+
+       /* Fill in base of leaf. */
+       h = hangul;
+       LEAF_GEN(h) = 2;
+       LEAF_CCC(h) = DECOMPOSE;
+       h += 2;
+
+       /* Add LPart, a 3-byte UTF-8 sequence. */
+       h += utf8encode((char *)h, li + LB);
+
+       /* Add VPart, a 3-byte UTF-8 sequence. */
+       h += utf8encode((char *)h, vi + VB);
+
+       /* Add TPart if required, also a 3-byte UTF-8 sequence. */
+       if (ti)
+               h += utf8encode((char *)h, ti + TB);
+
+       /* Terminate string. */
+       h[0] = '\0';
+
+       return hangul;
+}
+
+/*
+ * Use trie to scan s, touching at most len bytes.
+ * Returns the leaf if one exists, NULL otherwise.
+ *
+ * A non-NULL return guarantees that the UTF-8 sequence starting at s
+ * is well-formed and corresponds to a known unicode code point.  The
+ * shorthand for this will be "is valid UTF-8 unicode".
+ */
+static utf8leaf_t *utf8nlookup(struct tree *tree, unsigned char *hangul,
+                              const char *s, size_t len)
+{
+       utf8trie_t      *trie = utf8data + tree->index;
+       int             offlen;
+       int             offset;
+       int             mask;
+       int             node;
+
+       if (!tree)
+               return NULL;
+       if (len == 0)
+               return NULL;
+       node = 1;
+       while (node) {
+               offlen = (*trie & OFFLEN) >> OFFLEN_SHIFT;
+               if (*trie & NEXTBYTE) {
+                       if (--len == 0)
+                               return NULL;
+                       s++;
+               }
+               mask = 1 << (*trie & BITNUM);
+               if (*s & mask) {
+                       /* Right leg */
+                       if (offlen) {
+                               /* Right node at offset of trie */
+                               node = (*trie & RIGHTNODE);
+                               offset = trie[offlen];
+                               while (--offlen) {
+                                       offset <<= 8;
+                                       offset |= trie[offlen];
+                               }
+                               trie += offset;
+                       } else if (*trie & RIGHTPATH) {
+                               /* Right node after this node */
+                               node = (*trie & TRIENODE);
+                               trie++;
+                       } else {
+                               /* No right node. */
+                               return NULL;
+                       }
+               } else {
+                       /* Left leg */
+                       if (offlen) {
+                               /* Left node after this node. */
+                               node = (*trie & LEFTNODE);
+                               trie += offlen + 1;
+                       } else if (*trie & RIGHTPATH) {
+                               /* No left node. */
+                               return NULL;
+                       } else {
+                               /* Left node after this node */
+                               node = (*trie & TRIENODE);
+                               trie++;
+                       }
+               }
+       }
+       /*
+        * Hangul decomposition is done algorithmically. These are the
+        * codepoints >= 0xAC00 and <= 0xD7A3. Their UTF-8 encoding is
+        * always 3 bytes long, so s has been advanced twice, and the
+        * start of the sequence is at s-2.
+        */
+       if (LEAF_CCC(trie) == DECOMPOSE && LEAF_STR(trie)[0] == HANGUL)
+               trie = utf8hangul(s - 2, hangul);
+       return trie;
+}
+
+/*
+ * Use trie to scan s.
+ * Returns the leaf if one exists, NULL otherwise.
+ *
+ * Forwards to trie_nlookup().
+ */
+static utf8leaf_t *utf8lookup(struct tree *tree, unsigned char *hangul,
+                             const char *s)
+{
+       return utf8nlookup(tree, hangul, s, (size_t)-1);
+}
+
+/*
+ * Return the number of bytes used by the current UTF-8 sequence.
+ * Assumes the input points to the first byte of a valid UTF-8
+ * sequence.
+ */
+static inline int utf8clen(const char *s)
+{
+       unsigned char c = *s;
+       return 1 + (c >= 0xC0) + (c >= 0xE0) + (c >= 0xF0);
+}
+
+/*
+ * Maximum age of any character in s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ * Return 0 if only non-assigned code points are used.
+ */
+int utf8agemax(struct tree *tree, const char *s)
+{
+       utf8leaf_t      *leaf;
+       int             age = 0;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+
+       while (*s) {
+               leaf = utf8lookup(tree, hangul, s);
+               if (!leaf)
+                       return -1;
+               leaf_age = ages[LEAF_GEN(leaf)];
+               if (leaf_age <= tree->maxage && leaf_age > age)
+                       age = leaf_age;
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Minimum age of any character in s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ * Return 0 if non-assigned code points are used.
+ */
+int utf8agemin(struct tree *tree, const char *s)
+{
+       utf8leaf_t      *leaf;
+       int             age;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+       age = tree->maxage;
+       while (*s) {
+               leaf = utf8lookup(tree, hangul, s);
+               if (!leaf)
+                       return -1;
+               leaf_age = ages[LEAF_GEN(leaf)];
+               if (leaf_age <= tree->maxage && leaf_age < age)
+                       age = leaf_age;
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Maximum age of any character in s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+int utf8nagemax(struct tree *tree, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       int             age = 0;
+       int             leaf_age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+
+        while (len && *s) {
+               leaf = utf8nlookup(tree, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               leaf_age = ages[LEAF_GEN(leaf)];
+               if (leaf_age <= tree->maxage && leaf_age > age)
+                       age = leaf_age;
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Maximum age of any character in s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+int utf8nagemin(struct tree *tree, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       int             leaf_age;
+       int             age;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+       age = tree->maxage;
+        while (len && *s) {
+               leaf = utf8nlookup(tree, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               leaf_age = ages[LEAF_GEN(leaf)];
+               if (leaf_age <= tree->maxage && leaf_age < age)
+                       age = leaf_age;
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return age;
+}
+
+/*
+ * Length of the normalization of s.
+ * Return -1 if s is not valid UTF-8 unicode.
+ *
+ * A string of Default_Ignorable_Code_Point has length 0.
+ */
+ssize_t utf8len(struct tree *tree, const char *s)
+{
+       utf8leaf_t      *leaf;
+       size_t          ret = 0;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+       while (*s) {
+               leaf = utf8lookup(tree, hangul, s);
+               if (!leaf)
+                       return -1;
+               if (ages[LEAF_GEN(leaf)] > tree->maxage)
+                       ret += utf8clen(s);
+               else if (LEAF_CCC(leaf) == DECOMPOSE)
+                       ret += strlen(LEAF_STR(leaf));
+               else
+                       ret += utf8clen(s);
+               s += utf8clen(s);
+       }
+       return ret;
+}
+
+/*
+ * Length of the normalization of s, touch at most len bytes.
+ * Return -1 if s is not valid UTF-8 unicode.
+ */
+ssize_t utf8nlen(struct tree *tree, const char *s, size_t len)
+{
+       utf8leaf_t      *leaf;
+       size_t          ret = 0;
+       unsigned char   hangul[UTF8HANGULLEAF];
+
+       if (!tree)
+               return -1;
+       while (len && *s) {
+               leaf = utf8nlookup(tree, hangul, s, len);
+               if (!leaf)
+                       return -1;
+               if (ages[LEAF_GEN(leaf)] > tree->maxage)
+                       ret += utf8clen(s);
+               else if (LEAF_CCC(leaf) == DECOMPOSE)
+                       ret += strlen(LEAF_STR(leaf));
+               else
+                       ret += utf8clen(s);
+               len -= utf8clen(s);
+               s += utf8clen(s);
+       }
+       return ret;
+}
+
+/*
+ * Cursor structure used by the normalizer.
+ */
+struct utf8cursor {
+       struct tree     *tree;
+       const char      *s;
+       const char      *p;
+       const char      *ss;
+       const char      *sp;
+       unsigned int    len;
+       unsigned int    slen;
+       short int       ccc;
+       short int       nccc;
+       unsigned int    unichar;
+       unsigned char   hangul[UTF8HANGULLEAF];
+};
+
+/*
+ * Set up an utf8cursor for use by utf8byte().
+ *
+ *   s      : string.
+ *   len    : length of s.
+ *   u8c    : pointer to cursor.
+ *   trie   : utf8trie_t to use for normalization.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+int utf8ncursor(struct utf8cursor *u8c, struct tree *tree, const char *s,
+               size_t len)
+{
+       if (!tree)
+               return -1;
+       if (!s)
+               return -1;
+       u8c->tree = tree;
+       u8c->s = s;
+       u8c->p = NULL;
+       u8c->ss = NULL;
+       u8c->sp = NULL;
+       u8c->len = len;
+       u8c->slen = 0;
+       u8c->ccc = STOPPER;
+       u8c->nccc = STOPPER;
+       u8c->unichar = 0;
+       /* Check we didn't clobber the maximum length. */
+       if (u8c->len != len)
+               return -1;
+       /* The first byte of s may not be an utf8 continuation. */
+       if (len > 0 && (*s & 0xC0) == 0x80)
+               return -1;
+       return 0;
+}
+
+/*
+ * Set up an utf8cursor for use by utf8byte().
+ *
+ *   s      : NUL-terminated string.
+ *   u8c    : pointer to cursor.
+ *   trie   : utf8trie_t to use for normalization.
+ *
+ * Returns -1 on error, 0 on success.
+ */
+int utf8cursor(struct utf8cursor *u8c, struct tree *tree, const char *s)
+{
+       return utf8ncursor(u8c, tree, s, (unsigned int)-1);
+}
+
+/*
+ * Get one byte from the normalized form of the string described by u8c.
+ *
+ * Returns the byte cast to an unsigned char on succes, and -1 on failure.
+ *
+ * The cursor keeps track of the location in the string in u8c->s.
+ * When a character is decomposed, the current location is stored in
+ * u8c->p, and u8c->s is set to the start of the decomposition. Note
+ * that bytes from a decomposition do not count against u8c->len.
+ *
+ * Characters are emitted if they match the current CCC in u8c->ccc.
+ * Hitting end-of-string while u8c->ccc == STOPPER means we're done,
+ * and the function returns 0 in that case.
+ *
+ * Sorting by CCC is done by repeatedly scanning the string.  The
+ * values of u8c->s and u8c->p are stored in u8c->ss and u8c->sp at
+ * the start of the scan.  The first pass finds the lowest CCC to be
+ * emitted and stores it in u8c->nccc, the second pass emits the
+ * characters with this CCC and finds the next lowest CCC. This limits
+ * the number of passes to 1 + the number of different CCCs in the
+ * sequence being scanned.
+ *
+ * Therefore:
+ *  u8c->p  != NULL -> a decomposition is being scanned.
+ *  u8c->ss != NULL -> this is a repeating scan.
+ *  u8c->ccc == -1  -> this is the first scan of a repeating scan.
+ */
+int utf8byte(struct utf8cursor *u8c)
+{
+       utf8leaf_t *leaf;
+       int ccc;
+
+       for (;;) {
+               /* Check for the end of a decomposed character. */
+               if (u8c->p && *u8c->s == '\0') {
+                       u8c->s = u8c->p;
+                       u8c->p = NULL;
+               }
+
+               /* Check for end-of-string. */
+               if (!u8c->p && (u8c->len == 0 || *u8c->s == '\0')) {
+                       /* There is no next byte. */
+                       if (u8c->ccc == STOPPER)
+                               return 0;
+                       /* End-of-string during a scan counts as a stopper. */
+                       ccc = STOPPER;
+                       goto ccc_mismatch;
+               } else if ((*u8c->s & 0xC0) == 0x80) {
+                       /* This is a continuation of the current character. */
+                       if (!u8c->p)
+                               u8c->len--;
+                       return (unsigned char)*u8c->s++;
+               }
+
+               /* Look up the data for the current character. */
+               if (u8c->p) {
+                       leaf = utf8lookup(u8c->tree, u8c->hangul, u8c->s);
+               } else {
+                       leaf = utf8nlookup(u8c->tree, u8c->hangul,
+                                          u8c->s, u8c->len);
+               }
+
+               /* No leaf found implies that the input is a binary blob. */
+               if (!leaf)
+                       return -1;
+
+               /* Characters that are too new have CCC 0. */
+               if (ages[LEAF_GEN(leaf)] > u8c->tree->maxage) {
+                       ccc = STOPPER;
+               } else if ((ccc = LEAF_CCC(leaf)) == DECOMPOSE) {
+                       u8c->len -= utf8clen(u8c->s);
+                       u8c->p = u8c->s + utf8clen(u8c->s);
+                       u8c->s = LEAF_STR(leaf);
+                       /* Empty decomposition implies CCC 0. */
+                       if (*u8c->s == '\0') {
+                               if (u8c->ccc == STOPPER)
+                                       continue;
+                               ccc = STOPPER;
+                               goto ccc_mismatch;
+                       }
+                       leaf = utf8lookup(u8c->tree, u8c->hangul, u8c->s);
+                       ccc = LEAF_CCC(leaf);
+               }
+               u8c->unichar = utf8decode(u8c->s);
+
+               /*
+                * If this is not a stopper, then see if it updates
+                * the next canonical class to be emitted.
+                */
+               if (ccc != STOPPER && u8c->ccc < ccc && ccc < u8c->nccc)
+                       u8c->nccc = ccc;
+
+               /*
+                * Return the current byte if this is the current
+                * combining class.
+                */
+               if (ccc == u8c->ccc) {
+                       if (!u8c->p)
+                               u8c->len--;
+                       return (unsigned char)*u8c->s++;
+               }
+
+               /* Current combining class mismatch. */
+       ccc_mismatch:
+               if (u8c->nccc == STOPPER) {
+                       /*
+                        * Scan forward for the first canonical class
+                        * to be emitted.  Save the position from
+                        * which to restart.
+                        */
+                       assert(u8c->ccc == STOPPER);
+                       u8c->ccc = MINCCC - 1;
+                       u8c->nccc = ccc;
+                       u8c->sp = u8c->p;
+                       u8c->ss = u8c->s;
+                       u8c->slen = u8c->len;
+                       if (!u8c->p)
+                               u8c->len -= utf8clen(u8c->s);
+                       u8c->s += utf8clen(u8c->s);
+               } else if (ccc != STOPPER) {
+                       /* Not a stopper, and not the ccc we're emitting. */
+                       if (!u8c->p)
+                               u8c->len -= utf8clen(u8c->s);
+                       u8c->s += utf8clen(u8c->s);
+               } else if (u8c->nccc != MAXCCC + 1) {
+                       /* At a stopper, restart for next ccc. */
+                       u8c->ccc = u8c->nccc;
+                       u8c->nccc = MAXCCC + 1;
+                       u8c->s = u8c->ss;
+                       u8c->p = u8c->sp;
+                       u8c->len = u8c->slen;
+               } else {
+                       /* All done, proceed from here. */
+                       u8c->ccc = STOPPER;
+                       u8c->nccc = STOPPER;
+                       u8c->sp = NULL;
+                       u8c->ss = NULL;
+                       u8c->slen = 0;
+               }
+       }
+}
+
+/* ------------------------------------------------------------------ */
+
+static int normalize_line(struct tree *tree)
+{
+       char *s;
+       char *t;
+       int c;
+       struct utf8cursor u8c;
+
+       /* First test: null-terminated string. */
+       s = buf2;
+       t = buf3;
+       if (utf8cursor(&u8c, tree, s))
+               return -1;
+       while ((c = utf8byte(&u8c)) > 0)
+               if (c != (unsigned char)*t++)
+                       return -1;
+       if (c < 0)
+               return -1;
+       if (*t != 0)
+               return -1;
+
+       /* Second test: length-limited string. */
+       s = buf2;
+       /* Replace NUL with a value that will cause an error if seen. */
+       s[strlen(s) + 1] = -1;
+       t = buf3;
+       if (utf8cursor(&u8c, tree, s))
+               return -1;
+       while ((c = utf8byte(&u8c)) > 0)
+               if (c != (unsigned char)*t++)
+                       return -1;
+       if (c < 0)
+               return -1;
+       if (*t != 0)
+               return -1;
+
+       return 0;
+}
+
+static void normalization_test(void)
+{
+       FILE *file;
+       unsigned int unichar;
+       struct unicode_data *data;
+       char *s;
+       char *t;
+       int ret;
+       int ignorables;
+       int tests = 0;
+       int failures = 0;
+
+       if (verbose > 0)
+               printf("Parsing %s\n", test_name);
+       /* Step one, read data from file. */
+       file = fopen(test_name, "r");
+       if (!file)
+               open_fail(test_name, errno);
+
+       while (fgets(line, LINESIZE, file)) {
+               ret = sscanf(line, "%[^;];%*[^;];%*[^;];%*[^;];%[^;];",
+                            buf0, buf1);
+               if (ret != 2 || *line == '#')
+                       continue;
+               s = buf0;
+               t = buf2;
+               while (*s) {
+                       unichar = strtoul(s, &s, 16);
+                       t += utf8encode(t, unichar);
+               }
+               *t = '\0';
+
+               ignorables = 0;
+               s = buf1;
+               t = buf3;
+               while (*s) {
+                       unichar = strtoul(s, &s, 16);
+                       data = &unicode_data[unichar];
+                       if (data->utf8nfkdi && !*data->utf8nfkdi)
+                               ignorables = 1;
+                       else
+                               t += utf8encode(t, unichar);
+               }
+               *t = '\0';
+
+               tests++;
+               if (normalize_line(nfkdi_tree) < 0) {
+                       printf("Line %s -> %s", buf0, buf1);
+                       if (ignorables)
+                               printf(" (ignorables removed)");
+                       printf(" failure\n");
+                       failures++;
+               }
+       }
+       fclose(file);
+       if (verbose > 0)
+               printf("Ran %d tests with %d failures\n", tests, failures);
+       if (failures)
+               file_fail(test_name);
+}
+
+/* ------------------------------------------------------------------ */
+
+static void write_file(void)
+{
+       FILE *file;
+       int i;
+       int j;
+       int t;
+       int gen;
+
+       if (verbose > 0)
+               printf("Writing %s\n", utf8_name);
+       file = fopen(utf8_name, "w");
+       if (!file)
+               open_fail(utf8_name, errno);
+
+       fprintf(file, "/* This file is generated code, do not edit. */\n");
+       fprintf(file, "#ifndef __INCLUDED_FROM_UTF8NORM_C__\n");
+       fprintf(file, "#error Only nls_utf8-norm.c should include this file.\n");
+       fprintf(file, "#endif\n");
+       fprintf(file, "\n");
+       fprintf(file, "static const unsigned int utf8vers = %#x;\n",
+               unicode_maxage);
+       fprintf(file, "\n");
+       fprintf(file, "static const unsigned int utf8agetab[] = {\n");
+       for (i = 0; i != ages_count; i++)
+               fprintf(file, "\t%#x%s\n", ages[i],
+                       ages[i] == unicode_maxage ? "" : ",");
+       fprintf(file, "};\n");
+       fprintf(file, "\n");
+       fprintf(file, "static const struct utf8data utf8nfkdicfdata[] = {\n");
+       t = 0;
+       for (gen = 0; gen < ages_count; gen++) {
+               fprintf(file, "\t{ %#x, %d }%s\n",
+                       ages[gen], trees[t].index,
+                       ages[gen] == unicode_maxage ? "" : ",");
+               if (trees[t].maxage == ages[gen])
+                       t += 2;
+       }
+       fprintf(file, "};\n");
+       fprintf(file, "\n");
+       fprintf(file, "static const struct utf8data utf8nfkdidata[] = {\n");
+       t = 1;
+       for (gen = 0; gen < ages_count; gen++) {
+               fprintf(file, "\t{ %#x, %d }%s\n",
+                       ages[gen], trees[t].index,
+                       ages[gen] == unicode_maxage ? "" : ",");
+               if (trees[t].maxage == ages[gen])
+                       t += 2;
+       }
+       fprintf(file, "};\n");
+       fprintf(file, "\n");
+       fprintf(file, "static const unsigned char utf8data[%zd] = {\n",
+               utf8data_size);
+       t = 0;
+       for (i = 0; i != utf8data_size; i += 16) {
+               if (i == trees[t].index) {
+                       fprintf(file, "\t/* %s_%x */\n",
+                               trees[t].type, trees[t].maxage);
+                       if (t < trees_count-1)
+                               t++;
+               }
+               fprintf(file, "\t");
+               for (j = i; j != i + 16; j++)
+                       fprintf(file, "0x%.2x%s", utf8data[j],
+                               (j < utf8data_size -1 ? "," : ""));
+               fprintf(file, "\n");
+       }
+       fprintf(file, "};\n");
+       fclose(file);
+}
+
+/* ------------------------------------------------------------------ */
+
+int main(int argc, char *argv[])
+{
+       unsigned int unichar;
+       int opt;
+
+       argv0 = argv[0];
+
+       while ((opt = getopt(argc, argv, "a:c:d:f:hn:o:p:t:v")) != -1) {
+               switch (opt) {
+               case 'a':
+                       age_name = optarg;
+                       break;
+               case 'c':
+                       ccc_name = optarg;
+                       break;
+               case 'd':
+                       data_name = optarg;
+                       break;
+               case 'f':
+                       fold_name = optarg;
+                       break;
+               case 'n':
+                       norm_name = optarg;
+                       break;
+               case 'o':
+                       utf8_name = optarg;
+                       break;
+               case 'p':
+                       prop_name = optarg;
+                       break;
+               case 't':
+                       test_name = optarg;
+                       break;
+               case 'v':
+                       verbose++;
+                       break;
+               case 'h':
+                       help();
+                       exit(0);
+               default:
+                       usage();
+               }
+       }
+
+       if (verbose > 1)
+               help();
+       for (unichar = 0; unichar != 0x110000; unichar++)
+               unicode_data[unichar].code = unichar;
+       age_init();
+       ccc_init();
+       nfkdi_init();
+       nfkdicf_init();
+       ignore_init();
+       corrections_init();
+       hangul_decompose();
+       nfkdi_decompose();
+       nfkdicf_decompose();
+       utf8_init();
+       trees_init();
+       trees_populate();
+       trees_reduce();
+       trees_verify();
+       /* Prevent "unused function" warning. */
+       (void)lookup(nfkdi_tree, " ");
+       if (verbose > 2)
+               tree_walk(nfkdi_tree);
+       if (verbose > 2)
+               tree_walk(nfkdicf_tree);
+       normalization_test();
+       write_file();
+
+       return 0;
+}
index fbc044dc87229f927fc1ded4f963f1bf7f8993b2..0da45541e1a915a0a775a554178d8a2755cc6070 100644 (file)
@@ -2,6 +2,7 @@ AWK                     @AWK@
 SED                    @SED@
 E2FSPROGS_MONTH                @E2FSPROGS_MONTH@
 E2FSPROGS_YEAR         @E2FSPROGS_YEAR@
+E2FSPROGS_DATE         @E2FSPROGS_DATE@
 E2FSPROGS_VERSION      @E2FSPROGS_VERSION@
 SIZEOF_LONG_LONG       @SIZEOF_LONG_LONG@
 SIZEOF_LONG            @SIZEOF_LONG@
@@ -18,3 +19,8 @@ $prefix                       @prefix@
 JDEV                   
 # Enable the documentation for the tdb profile in e2fsck.conf's man page
 TDB_MAN_COMMENT                @TDB_MAN_COMMENT@
+root_sbindir           @root_sbindir@
+root_bindir            @root_bindir@
+libdir                 @libdir@
+$exec_prefix           @exec_prefix@
+pkglibdir              @libdir@/e2fsprogs
diff --git a/util/ucd/README b/util/ucd/README
new file mode 100644 (file)
index 0000000..9fed514
--- /dev/null
@@ -0,0 +1,37 @@
+The files in this directory are part of the Unicode Character Database
+for version 11.0.0 of the Unicode standard.
+
+The full set of UCD files are not distributed with e2fsprogs, since they
+are very large and only needed to regenerate the lib/ext2fs/utf8data.h
+during an Unicode version update.  They can be found in the link below
+and also in the Linux kernel source tree:
+
+  http://www.unicode.org/Public/11.0.0/ucd/
+
+The latest released version of the UCD can be found here:
+
+  http://www.unicode.org/Public/UCD/latest/
+
+The files in this directory are identical, except that they have been
+renamed with a suffix indicating the unicode version.
+
+Individual source links:
+
+  http://www.unicode.org/Public/11.0.0/ucd/CaseFolding.txt
+  http://www.unicode.org/Public/11.0.0/ucd/DerivedAge.txt
+  http://www.unicode.org/Public/11.0.0/ucd/extracted/DerivedCombiningClass.txt
+  http://www.unicode.org/Public/11.0.0/ucd/DerivedCoreProperties.txt
+  http://www.unicode.org/Public/11.0.0/ucd/NormalizationCorrections.txt
+  http://www.unicode.org/Public/11.0.0/ucd/NormalizationTest.txt
+  http://www.unicode.org/Public/11.0.0/ucd/UnicodeData.txt
+
+md5sums
+
+  414436796cf097df55f798e1585448ee  CaseFolding-11.0.0.txt
+  6032a595fbb782694456491d86eecfac  DerivedAge-11.0.0.txt
+  3240997d671297ac754ab0d27577acf7  DerivedCombiningClass-11.0.0.txt
+  d41d8cd98f00b204e9800998ecf8427e  DerivedCombiningClass.txt
+  2a4fe257d9d8184518e036194d2248ec  DerivedCoreProperties-11.0.0.txt
+  4e7d383fa0dd3cd9d49d64e5b7b7c9e0  NormalizationCorrections-11.0.0.txt
+  c9500c5b8b88e584469f056023ecc3f2  NormalizationTest-11.0.0.txt
+  acc291106c3758d2025f8d7bd5518bee  UnicodeData-11.0.0.txt
index aa6d7a85486fa76383362797de6837e98885ca43..6c04f7201ffdb8f1d90def22c662529fdfc4d75b 100644 (file)
--- a/version.h
+++ b/version.h
@@ -7,5 +7,5 @@
  * file may be redistributed under the GNU Public License v2.
  */
 
-#define E2FSPROGS_VERSION "1.44.6"
-#define E2FSPROGS_DATE "5-Mar-2019"
+#define E2FSPROGS_VERSION "1.45.0"
+#define E2FSPROGS_DATE "6-Mar-2019"