summaryrefslogtreecommitdiff
path: root/Build/source/utils/t1utils
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
committerKarl Berry <karl@freefriends.org>2021-02-25 19:22:25 +0000
commitad547a6b5986815fda458221149728d9d9ab1d87 (patch)
tree16296910eb3eca724371474ea9aea3994dc69614 /Build/source/utils/t1utils
parent947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff)
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/t1utils')
-rw-r--r--Build/source/utils/t1utils/ChangeLog108
-rw-r--r--Build/source/utils/t1utils/Makefile.am83
-rw-r--r--Build/source/utils/t1utils/Makefile.in1381
-rw-r--r--Build/source/utils/t1utils/TLpatches/ChangeLog71
-rw-r--r--Build/source/utils/t1utils/TLpatches/TL-Changes16
-rw-r--r--Build/source/utils/t1utils/TLpatches/patch-03-warnings54
-rw-r--r--Build/source/utils/t1utils/TLpatches/patch-04-TL-binary48
-rw-r--r--Build/source/utils/t1utils/TLpatches/patch-05-getopt11
-rw-r--r--Build/source/utils/t1utils/TLpatches/patch-07-warnings29
-rw-r--r--Build/source/utils/t1utils/TLpatches/patch-08-notuse-system-memmem24
-rw-r--r--Build/source/utils/t1utils/ac/withenable.ac7
-rw-r--r--Build/source/utils/t1utils/aclocal.m41170
-rw-r--r--Build/source/utils/t1utils/config.h.in108
-rwxr-xr-xBuild/source/utils/t1utils/configure7083
-rw-r--r--Build/source/utils/t1utils/configure.ac127
-rw-r--r--Build/source/utils/t1utils/strerror.c25
-rw-r--r--Build/source/utils/t1utils/t1utils-src/INSTALL176
-rw-r--r--Build/source/utils/t1utils/t1utils-src/LICENSE30
-rw-r--r--Build/source/utils/t1utils/t1utils-src/Makefile.am28
-rw-r--r--Build/source/utils/t1utils/t1utils-src/NEWS.md339
-rw-r--r--Build/source/utils/t1utils/t1utils-src/README.md61
-rw-r--r--Build/source/utils/t1utils/t1utils-src/clp.c2503
-rw-r--r--Build/source/utils/t1utils/t1utils-src/config.h.in114
-rw-r--r--Build/source/utils/t1utils/t1utils-src/configure.ac125
-rw-r--r--Build/source/utils/t1utils/t1utils-src/include/lcdf/clp.h334
-rw-r--r--Build/source/utils/t1utils/t1utils-src/include/lcdf/inttypes.h36
-rw-r--r--Build/source/utils/t1utils/t1utils-src/memmem.c34
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1ascii.151
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1ascii.c312
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1asm.196
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1asm.c810
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1asmhelp.h58
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1binary.142
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1binary.c285
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1disasm.196
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1disasm.c760
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1lib.c449
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1lib.h56
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1mac.162
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1mac.c1028
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1unmac.179
-rw-r--r--Build/source/utils/t1utils/t1utils-src/t1unmac.c921
-rwxr-xr-xBuild/source/utils/t1utils/t1utils.test35
-rw-r--r--Build/source/utils/t1utils/tests/Symbol.pfa1044
-rw-r--r--Build/source/utils/t1utils/tests/Symbol.pfbbin0 -> 31586 bytes
-rw-r--r--Build/source/utils/t1utils/tests/Symbol.raw5226
-rw-r--r--Build/source/utils/t1utils/version.ac11
47 files changed, 25546 insertions, 0 deletions
diff --git a/Build/source/utils/t1utils/ChangeLog b/Build/source/utils/t1utils/ChangeLog
new file mode 100644
index 00000000000..5296bbfd374
--- /dev/null
+++ b/Build/source/utils/t1utils/ChangeLog
@@ -0,0 +1,108 @@
+2020-10-31 Akira Kakuto <kakuto@w32tex.org>
+
+ Import t1utils-1.42.
+ * version.ac: Adapted.
+
+2017-08-30 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * Makefile.am, configure.ac: Do not use system memmem.
+
+2017-08-28 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import t1utils-1.41.
+ * version.ac, configure.ac: Adapted.
+
+2016-02-22 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * Makefile.am, configure.ac: New convention.
+
+2015-07-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Better dependencies for 'make check'.
+
+2015-03-01 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import t1utils-1.39.
+ * version.ac: Adjust.
+
+2015-02-16 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Use the fragment ../../am/dist_hook.am.
+
+2014-06-16 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Drop the obsolete ACLOCAL_AMFLAGS.
+
+2013-10-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import t1utils-1.38.
+ * version.ac: Adjust.
+
+2013-01-29 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Allow subdir-objects.
+
+2012-11-20 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am: Avoid use of deprecated INCLUDES.
+
+2011-11-04 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * t1utils.test: Perform all sub-tests and report failed ones.
+
+2011-09-25 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * t1utils.test: New shell script for tests.
+ * tests/Symbol.{pfa,pfb,raw}: Test input and expected output.
+ * Makefile.am: Add the test and its data.
+
+2011-07-21 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import t1utils-1.37.
+ * version.ac: New file defining the t1utils version.
+ * configure.ac: Adapt.
+
+2010-06-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: t1utils-1.36.
+
+2010-05-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * configure.ac: t1utils-1.35.
+
+2009-11-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am, configure.ac: Proxy build system for TeX Live,
+ using the t1utils-1.34 distribution tree.
+ * t1utils-1.34-PATCHES: New directory with patches applied to
+ the t1utils-1.34 distribution.
+
+2009-08-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Avoid maximal compiler warnings.
+ * configure.ac: Check for strtoul().
+ * t1ascii.c (pfa_output_end), t1binary.c (pfb_output_end),
+ t1asm.c (check_line_charstring, texlive_getline, charstring_start,
+ charstring_end, get_charstring_token, parse_charstring),
+ t1disasm.c (disasm_output_end): ANSI C function definitions.
+ * t1disasm.c (oog_memstr): Unconstify arg1 and result strings.
+ (eexec_line): Unconstify CharStrings resulting from oog_memstr().
+
+2009-08-19 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * Makefile.am (AM_CFLAGS), configure.ac: Enable TL style
+ compiler warnings.
+ * clp.c (finish_string_list), t1ascii.c (short_usage, usage),
+ t1asm.c (short_usage, usage), t1binary.c (short_usage, usage),
+ t1disasm.c (short_usage, usage), t1mac.c (short_usage, usage),
+ t1unmac.c (short_usage, usage, check_appledouble, translate_binhex,
+ check_binhex_crc, check_binhex): Declare as static.
+
+2009-06-12 Francois Charette <firmicus@ankabut.net>
+
+ * t1asm.c: rename getline to texlive_getline.
+
+2009-05-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt to TL2009 build system.
+
diff --git a/Build/source/utils/t1utils/Makefile.am b/Build/source/utils/t1utils/Makefile.am
new file mode 100644
index 00000000000..1ffc632fcb9
--- /dev/null
+++ b/Build/source/utils/t1utils/Makefile.am
@@ -0,0 +1,83 @@
+## Makefile.am for the TeX Live subdirectory utils/t1utils/
+##
+## Copyright (C) 2008-2015 Peter Breitenlohner <tex-live@tug.org>
+## You may freely use, modify and/or distribute this file.
+##
+#************************************************************************
+#
+# Adapted for TeX Live from t1utils/Makefile.am
+#
+#************************************************************************
+##
+## We want to re-distribute the whole original t1utils source tree.
+##
+## With current automake (1.10.2) 'make distcheck' fails when
+## DISTFILES contains a directory and files in that directory.
+## Thus nodist_* for all files in $(T1UTILS_TREE).
+EXTRA_DIST = $(T1UTILS_TREE)
+
+## Patches applied to the original source tree
+##
+EXTRA_DIST += t1utils-PATCHES
+
+# Files not to be distributed
+include $(srcdir)/../../am/dist_hook.am
+NEVER_NAMES += $(NEVER_NAMES_SUB)
+
+AM_CPPFLAGS = -I$(top_srcdir)/$(T1UTILS_TREE)/include
+AM_CFLAGS = $(WARNING_CFLAGS)
+
+bin_PROGRAMS = t1ascii t1binary t1asm t1disasm t1unmac t1mac
+
+dist_man_MANS = \
+ $(T1UTILS_TREE)/t1ascii.1 \
+ $(T1UTILS_TREE)/t1binary.1 \
+ $(T1UTILS_TREE)/t1asm.1 \
+ $(T1UTILS_TREE)/t1disasm.1 \
+ $(T1UTILS_TREE)/t1unmac.1 \
+ $(T1UTILS_TREE)/t1mac.1
+
+t1ascii_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1ascii.c
+
+t1binary_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1binary.c
+
+t1asm_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/memmem.c \
+ @T1UTILS_TREE@/t1asm.c
+
+t1disasm_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/memmem.c \
+ @T1UTILS_TREE@/t1disasm.c
+
+t1unmac_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1unmac.c
+
+t1mac_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1mac.c
+
+LDADD = @LIBOBJS@
+
+## Tests
+##
+TESTS = t1utils.test
+EXTRA_DIST += $(TESTS)
+t1utils.log: t1ascii$(EXEEXT) t1binary$(EXEEXT) t1asm$(EXEEXT) t1disasm$(EXEEXT)
+
+## t1utils.test
+EXTRA_DIST += tests/Symbol.pfa tests/Symbol.pfb tests/Symbol.raw
+DISTCLEANFILES = Symbol.pfa Symbol.pfb Symbol.raw
+
diff --git a/Build/source/utils/t1utils/Makefile.in b/Build/source/utils/t1utils/Makefile.in
new file mode 100644
index 00000000000..f12c32addbf
--- /dev/null
+++ b/Build/source/utils/t1utils/Makefile.in
@@ -0,0 +1,1381 @@
+# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = t1ascii$(EXEEXT) t1binary$(EXEEXT) t1asm$(EXEEXT) \
+ t1disasm$(EXEEXT) t1unmac$(EXEEXT) t1mac$(EXEEXT)
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
+ $(top_srcdir)/../../m4/kpse-warnings.m4 \
+ $(top_srcdir)/version.ac $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(am__DIST_COMMON)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_t1ascii_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) \
+ @T1UTILS_TREE@/t1ascii.$(OBJEXT)
+t1ascii_OBJECTS = $(am_t1ascii_OBJECTS)
+t1ascii_LDADD = $(LDADD)
+t1ascii_DEPENDENCIES = @LIBOBJS@
+am_t1asm_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) @T1UTILS_TREE@/memmem.$(OBJEXT) \
+ @T1UTILS_TREE@/t1asm.$(OBJEXT)
+t1asm_OBJECTS = $(am_t1asm_OBJECTS)
+t1asm_LDADD = $(LDADD)
+t1asm_DEPENDENCIES = @LIBOBJS@
+am_t1binary_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) \
+ @T1UTILS_TREE@/t1binary.$(OBJEXT)
+t1binary_OBJECTS = $(am_t1binary_OBJECTS)
+t1binary_LDADD = $(LDADD)
+t1binary_DEPENDENCIES = @LIBOBJS@
+am_t1disasm_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) @T1UTILS_TREE@/memmem.$(OBJEXT) \
+ @T1UTILS_TREE@/t1disasm.$(OBJEXT)
+t1disasm_OBJECTS = $(am_t1disasm_OBJECTS)
+t1disasm_LDADD = $(LDADD)
+t1disasm_DEPENDENCIES = @LIBOBJS@
+am_t1mac_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) @T1UTILS_TREE@/t1mac.$(OBJEXT)
+t1mac_OBJECTS = $(am_t1mac_OBJECTS)
+t1mac_LDADD = $(LDADD)
+t1mac_DEPENDENCIES = @LIBOBJS@
+am_t1unmac_OBJECTS = @T1UTILS_TREE@/clp.$(OBJEXT) \
+ @T1UTILS_TREE@/t1lib.$(OBJEXT) \
+ @T1UTILS_TREE@/t1unmac.$(OBJEXT)
+t1unmac_OBJECTS = $(am_t1unmac_OBJECTS)
+t1unmac_LDADD = $(LDADD)
+t1unmac_DEPENDENCIES = @LIBOBJS@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = $(DEPDIR)/strerror.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/clp.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/memmem.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1ascii.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1asm.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1binary.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1disasm.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1lib.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1mac.Po \
+ @T1UTILS_TREE@/$(DEPDIR)/t1unmac.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(t1ascii_SOURCES) $(t1asm_SOURCES) $(t1binary_SOURCES) \
+ $(t1disasm_SOURCES) $(t1mac_SOURCES) $(t1unmac_SOURCES)
+DIST_SOURCES = $(t1ascii_SOURCES) $(t1asm_SOURCES) $(t1binary_SOURCES) \
+ $(t1disasm_SOURCES) $(t1mac_SOURCES) $(t1unmac_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(dist_man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
+ config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope check recheck
+am__tty_colors_dummy = \
+ mgn= red= grn= lgn= blu= brg= std=; \
+ am__color_tests=no
+am__tty_colors = { \
+ $(am__tty_colors_dummy); \
+ if test "X$(AM_COLOR_TESTS)" = Xno; then \
+ am__color_tests=no; \
+ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+ am__color_tests=yes; \
+ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+ am__color_tests=yes; \
+ fi; \
+ if test $$am__color_tests = yes; then \
+ red=''; \
+ grn=''; \
+ lgn=''; \
+ blu=''; \
+ mgn=''; \
+ brg=''; \
+ std=''; \
+ fi; \
+}
+am__recheck_rx = ^[ ]*:recheck:[ ]*
+am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
+am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+ recheck = 1; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ { \
+ if ((getline line2 < ($$0 ".log")) < 0) \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+ { \
+ recheck = 0; \
+ break; \
+ } \
+ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+ { \
+ break; \
+ } \
+ }; \
+ if (recheck) \
+ print $$0; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+ print "fatal: making $@: " msg | "cat >&2"; \
+ exit 1; \
+} \
+function rst_section(header) \
+{ \
+ print header; \
+ len = length(header); \
+ for (i = 1; i <= len; i = i + 1) \
+ printf "="; \
+ printf "\n\n"; \
+} \
+{ \
+ copy_in_global_log = 1; \
+ global_test_result = "RUN"; \
+ while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".trs"); \
+ if (line ~ /$(am__global_test_result_rx)/) \
+ { \
+ sub("$(am__global_test_result_rx)", "", line); \
+ sub("[ ]*$$", "", line); \
+ global_test_result = line; \
+ } \
+ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+ copy_in_global_log = 0; \
+ }; \
+ if (copy_in_global_log) \
+ { \
+ rst_section(global_test_result ": " $$0); \
+ while ((rc = (getline line < ($$0 ".log"))) != 0) \
+ { \
+ if (rc < 0) \
+ fatal("failed to read from " $$0 ".log"); \
+ print line; \
+ }; \
+ printf "\n"; \
+ }; \
+ close ($$0 ".trs"); \
+ close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+ --color-tests "$$am__color_tests" \
+ --enable-hard-errors "$$am__enable_hard_errors" \
+ --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test. Creates the
+# directory for the log if needed. Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log. Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup); \
+$(am__vpath_adj_setup) $(am__vpath_adj) \
+$(am__tty_colors); \
+srcdir=$(srcdir); export srcdir; \
+case "$@" in \
+ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
+ *) am__odir=.;; \
+esac; \
+test "x$$am__odir" = x"." || test -d "$$am__odir" \
+ || $(MKDIR_P) "$$am__odir" || exit $$?; \
+if test -f "./$$f"; then dir=./; \
+elif test -f "$$f"; then dir=; \
+else dir="$(srcdir)/"; fi; \
+tst=$$dir$$f; log='$@'; \
+if test -n '$(DISABLE_HARD_ERRORS)'; then \
+ am__enable_hard_errors=no; \
+else \
+ am__enable_hard_errors=yes; \
+fi; \
+case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
+ am__expect_failure=yes;; \
+ *) \
+ am__expect_failure=no;; \
+esac; \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed). The result is saved in the shell variable
+# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+ bases='$(TEST_LOGS)'; \
+ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+ bases=`echo $$bases`
+AM_TESTSUITE_SUMMARY_HEADER = ' for $(PACKAGE_STRING)'
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/../../build-aux/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+ $(TEST_LOG_FLAGS)
+am__set_b = \
+ case '$@' in \
+ */*) \
+ case '$*' in \
+ */*) b='$*';; \
+ *) b=`echo '$@' | sed 's/\.log$$//'`; \
+ esac;; \
+ *) \
+ b='$*';; \
+ esac
+am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/../../am/dist_hook.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/../../build-aux/compile \
+ $(top_srcdir)/../../build-aux/depcomp \
+ $(top_srcdir)/../../build-aux/install-sh \
+ $(top_srcdir)/../../build-aux/missing \
+ $(top_srcdir)/../../build-aux/test-driver \
+ ../../build-aux/ar-lib ../../build-aux/compile \
+ ../../build-aux/config.guess ../../build-aux/config.sub \
+ ../../build-aux/depcomp ../../build-aux/install-sh \
+ ../../build-aux/ltmain.sh ../../build-aux/missing \
+ ../../build-aux/texinfo.tex ../../build-aux/ylwrap ChangeLog \
+ strerror.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ if test -d "$(distdir)"; then \
+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -rf "$(distdir)" \
+ || { sleep 5 && rm -rf "$(distdir)"; }; \
+ else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
+# Exists only to be overridden by the user if desired.
+AM_DISTCHECK_DVI_TARGET = dvi
+distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+T1UTILS_TREE = @T1UTILS_TREE@
+VERSION = @VERSION@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#************************************************************************
+#
+# Adapted for TeX Live from t1utils/Makefile.am
+#
+#************************************************************************
+EXTRA_DIST = $(T1UTILS_TREE) t1utils-PATCHES $(TESTS) tests/Symbol.pfa \
+ tests/Symbol.pfb tests/Symbol.raw
+NEVER_DIST = `find . $(NEVER_NAMES)`
+
+# Files not to be distributed
+NEVER_NAMES = -name .svn $(NEVER_NAMES_SUB)
+NEVER_NAMES_SUB = -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'
+NEVER_NAMES_LT = -o -name .libs -o -name '*.lo'
+AM_CPPFLAGS = -I$(top_srcdir)/$(T1UTILS_TREE)/include
+AM_CFLAGS = $(WARNING_CFLAGS)
+dist_man_MANS = \
+ $(T1UTILS_TREE)/t1ascii.1 \
+ $(T1UTILS_TREE)/t1binary.1 \
+ $(T1UTILS_TREE)/t1asm.1 \
+ $(T1UTILS_TREE)/t1disasm.1 \
+ $(T1UTILS_TREE)/t1unmac.1 \
+ $(T1UTILS_TREE)/t1mac.1
+
+t1ascii_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1ascii.c
+
+t1binary_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1binary.c
+
+t1asm_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/memmem.c \
+ @T1UTILS_TREE@/t1asm.c
+
+t1disasm_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/memmem.c \
+ @T1UTILS_TREE@/t1disasm.c
+
+t1unmac_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1unmac.c
+
+t1mac_SOURCES = \
+ @T1UTILS_TREE@/clp.c \
+ @T1UTILS_TREE@/t1lib.c \
+ @T1UTILS_TREE@/t1mac.c
+
+LDADD = @LIBOBJS@
+TESTS = t1utils.test
+DISTCLEANFILES = Symbol.pfa Symbol.pfb Symbol.raw
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
+am--refresh: Makefile
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../am/dist_hook.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/../../am/dist_hook.am $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @test -f $@ || rm -f stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+@T1UTILS_TREE@/$(am__dirstamp):
+ @$(MKDIR_P) @T1UTILS_TREE@
+ @: > @T1UTILS_TREE@/$(am__dirstamp)
+@T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) @T1UTILS_TREE@/$(DEPDIR)
+ @: > @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+@T1UTILS_TREE@/clp.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+@T1UTILS_TREE@/t1lib.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+@T1UTILS_TREE@/t1ascii.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1ascii$(EXEEXT): $(t1ascii_OBJECTS) $(t1ascii_DEPENDENCIES) $(EXTRA_t1ascii_DEPENDENCIES)
+ @rm -f t1ascii$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1ascii_OBJECTS) $(t1ascii_LDADD) $(LIBS)
+@T1UTILS_TREE@/memmem.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+@T1UTILS_TREE@/t1asm.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1asm$(EXEEXT): $(t1asm_OBJECTS) $(t1asm_DEPENDENCIES) $(EXTRA_t1asm_DEPENDENCIES)
+ @rm -f t1asm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1asm_OBJECTS) $(t1asm_LDADD) $(LIBS)
+@T1UTILS_TREE@/t1binary.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1binary$(EXEEXT): $(t1binary_OBJECTS) $(t1binary_DEPENDENCIES) $(EXTRA_t1binary_DEPENDENCIES)
+ @rm -f t1binary$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1binary_OBJECTS) $(t1binary_LDADD) $(LIBS)
+@T1UTILS_TREE@/t1disasm.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1disasm$(EXEEXT): $(t1disasm_OBJECTS) $(t1disasm_DEPENDENCIES) $(EXTRA_t1disasm_DEPENDENCIES)
+ @rm -f t1disasm$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1disasm_OBJECTS) $(t1disasm_LDADD) $(LIBS)
+@T1UTILS_TREE@/t1mac.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1mac$(EXEEXT): $(t1mac_OBJECTS) $(t1mac_DEPENDENCIES) $(EXTRA_t1mac_DEPENDENCIES)
+ @rm -f t1mac$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1mac_OBJECTS) $(t1mac_LDADD) $(LIBS)
+@T1UTILS_TREE@/t1unmac.$(OBJEXT): @T1UTILS_TREE@/$(am__dirstamp) \
+ @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+
+t1unmac$(EXEEXT): $(t1unmac_OBJECTS) $(t1unmac_DEPENDENCIES) $(EXTRA_t1unmac_DEPENDENCIES)
+ @rm -f t1unmac$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(t1unmac_OBJECTS) $(t1unmac_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f @T1UTILS_TREE@/*.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strerror.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/clp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/memmem.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1ascii.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1asm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1binary.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1disasm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1lib.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1mac.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@@T1UTILS_TREE@/$(DEPDIR)/t1unmac.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+install-man1: $(dist_man_MANS)
+ @$(NORMAL_INSTALL)
+ @list1=''; \
+ list2='$(dist_man_MANS)'; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+ test ! -s cscope.files \
+ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+ -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+ rm -f $< $@
+ $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+ @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+ @$(am__set_TESTS_bases); \
+ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+ redo_bases=`for i in $$bases; do \
+ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+ done`; \
+ if test -n "$$redo_bases"; then \
+ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+ if $(am__make_dryrun); then :; else \
+ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+ fi; \
+ fi; \
+ if test -n "$$am__remaking_logs"; then \
+ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+ "recursion detected" >&2; \
+ elif test -n "$$redo_logs"; then \
+ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+ fi; \
+ if $(am__make_dryrun); then :; else \
+ st=0; \
+ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+ for i in $$redo_bases; do \
+ test -f $$i.trs && test -r $$i.trs \
+ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+ test -f $$i.log && test -r $$i.log \
+ || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+ done; \
+ test $$st -eq 0 || exit 1; \
+ fi
+ @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+ ws='[ ]'; \
+ results=`for b in $$bases; do echo $$b.trs; done`; \
+ test -n "$$results" || results=/dev/null; \
+ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
+ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
+ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
+ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
+ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+ if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+ success=true; \
+ else \
+ success=false; \
+ fi; \
+ br='==================='; br=$$br$$br$$br$$br; \
+ result_count () \
+ { \
+ if test x"$$1" = x"--maybe-color"; then \
+ maybe_colorize=yes; \
+ elif test x"$$1" = x"--no-color"; then \
+ maybe_colorize=no; \
+ else \
+ echo "$@: invalid 'result_count' usage" >&2; exit 4; \
+ fi; \
+ shift; \
+ desc=$$1 count=$$2; \
+ if test $$maybe_colorize = yes && test $$count -gt 0; then \
+ color_start=$$3 color_end=$$std; \
+ else \
+ color_start= color_end=; \
+ fi; \
+ echo "$${color_start}# $$desc $$count$${color_end}"; \
+ }; \
+ create_testsuite_report () \
+ { \
+ result_count $$1 "TOTAL:" $$all "$$brg"; \
+ result_count $$1 "PASS: " $$pass "$$grn"; \
+ result_count $$1 "SKIP: " $$skip "$$blu"; \
+ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+ result_count $$1 "FAIL: " $$fail "$$red"; \
+ result_count $$1 "XPASS:" $$xpass "$$red"; \
+ result_count $$1 "ERROR:" $$error "$$mgn"; \
+ }; \
+ { \
+ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
+ $(am__rst_title); \
+ create_testsuite_report --no-color; \
+ echo; \
+ echo ".. contents:: :depth: 2"; \
+ echo; \
+ for b in $$bases; do echo $$b; done \
+ | $(am__create_global_log); \
+ } >$(TEST_SUITE_LOG).tmp || exit 1; \
+ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
+ if $$success; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
+ fi; \
+ echo "$${col}$$br$${std}"; \
+ echo "$${col}Testsuite summary"$(AM_TESTSUITE_SUMMARY_HEADER)"$${std}"; \
+ echo "$${col}$$br$${std}"; \
+ create_testsuite_report --maybe-color; \
+ echo "$$col$$br$$std"; \
+ if $$success; then :; else \
+ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
+ if test -n "$(PACKAGE_BUGREPORT)"; then \
+ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+ fi; \
+ echo "$$col$$br$$std"; \
+ fi; \
+ $$success || exit 1
+
+check-TESTS:
+ @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
+ @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+ exit $$?;
+recheck: all
+ @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+ @set +e; $(am__set_TESTS_bases); \
+ bases=`for i in $$bases; do echo $$i; done \
+ | $(am__list_recheck_tests)` || exit 1; \
+ log_list=`for i in $$bases; do echo $$i.log; done`; \
+ log_list=`echo $$log_list`; \
+ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+ am__force_recheck=am--force-recheck \
+ TEST_LOGS="$$log_list"; \
+ exit $$?
+.test.log:
+ @p='$<'; \
+ $(am__set_b); \
+ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@ @p='$<'; \
+@am__EXEEXT_TRUE@ $(am__set_b); \
+@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ $(am__remove_distdir)
+ test -d "$(distdir)" || mkdir "$(distdir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -test -n "$(am__skip_mode_fix)" \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
+ $(am__post_remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+ $(am__post_remove_distdir)
+
+dist-lzip: distdir
+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+ $(am__post_remove_distdir)
+
+dist-xz: distdir
+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+ $(am__post_remove_distdir)
+
+dist-zstd: distdir
+ tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
+ $(am__post_remove_distdir)
+
+dist-tarZ: distdir
+ @echo WARNING: "Support for distribution archives compressed with" \
+ "legacy program 'compress' is deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__post_remove_distdir)
+
+dist-shar: distdir
+ @echo WARNING: "Support for shar distribution archives is" \
+ "deprecated." >&2
+ @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
+ $(am__post_remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__post_remove_distdir)
+
+dist dist-all:
+ $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+ $(am__post_remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.lz*) \
+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+ *.tar.xz*) \
+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ *.tar.zst*) \
+ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
+ esac
+ chmod -R a-w $(distdir)
+ chmod u+w $(distdir)
+ mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+ chmod a-w $(distdir)
+ test -d $(distdir)/_build || exit 0; \
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && am__cwd=`pwd` \
+ && $(am__cd) $(distdir)/_build/sub \
+ && ../../configure \
+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=../.. --prefix="$$dc_install_base" \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+ && cd "$$am__cwd" \
+ || exit 1
+ $(am__post_remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+ @test -n '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: trying to run $@ with an empty' \
+ '$$(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ $(am__cd) '$(distuninstallcheck_dir)' || { \
+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+ exit 1; \
+ }; \
+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS) $(MANS) config.h
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+ -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+ -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/$(am__dirstamp)
+ -rm -f @T1UTILS_TREE@/$(am__dirstamp)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f $(DEPDIR)/strerror.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/clp.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/memmem.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1ascii.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1asm.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1binary.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1disasm.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1lib.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1mac.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1unmac.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f $(DEPDIR)/strerror.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/clp.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/memmem.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1ascii.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1asm.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1binary.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1disasm.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1lib.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1mac.Po
+ -rm -f @T1UTILS_TREE@/$(DEPDIR)/t1unmac.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: all check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \
+ check-TESTS check-am clean clean-binPROGRAMS clean-cscope \
+ clean-generic cscope cscopelist-am ctags ctags-am dist \
+ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
+ dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \
+ distclean-compile distclean-generic distclean-hdr \
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+ ps ps-am recheck tags tags-am uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-man uninstall-man1
+
+.PRECIOUS: Makefile
+
+dist-hook:
+ cd "$(distdir)" && rm -rf $(NEVER_DIST)
+t1utils.log: t1ascii$(EXEEXT) t1binary$(EXEEXT) t1asm$(EXEEXT) t1disasm$(EXEEXT)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Build/source/utils/t1utils/TLpatches/ChangeLog b/Build/source/utils/t1utils/TLpatches/ChangeLog
new file mode 100644
index 00000000000..c4d8127c734
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/ChangeLog
@@ -0,0 +1,71 @@
+2020-10-31 Akira Kakuto <kakuto@w32tex.org>
+
+ Import t1utils-1.42.
+ * patch-03-warnings, patch-04-TL-binary, patch-05-getopt,
+ patch-07-warnings, patch-08-notuse-system-memmem: Adapted.
+
+2017-08-30 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ * patch-08-notuse-system-memmem: Added.
+
+2017-08-28 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import t1utils-1.41.
+ * patch-03-warnings, patch-04-TL-binary, patch-05-getopt,
+ patch-07-warnings: Adapted.
+
+2015-03-01 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import t1utils-1.39.
+ * patch-03-warnings, patch-04-TL-binary, patch-05-getopt:
+ Adapted.
+ * patch-06-unsigned (removed): Now handled in original sources.
+ * patch-07-warnings (new): Avoid compiler warnings.
+
+2014-06-19 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-06-unsigned (new): Avoid undefined behaviour.
+
+2013-11-22 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-05-getopt (new): Drop '#include <getopt.h>'.
+
+2013-10-03 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Import t1utils-1.38.
+ * patch-03-warnings, patch-04-TL-binary: Adapted.
+
+2012-08-12 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-04-TL-binary (new): Use binary mode for output files.
+ From Akira Kakuto <kakuto@fuk.kindai.ac.jp> (W32TeX).
+
+2011-07-21 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt to t1utils-1.37.
+ * patch-03-warnings: Adapted.
+
+2010-06-07 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt to t1utils-1.36.
+ * patch-02-static (removed): Now handled in original sources.
+ * patch-03-warnings: Adapted, now mostly in original sources.
+
+2010-05-10 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ Adapt to t1utils-1.35.
+ * patch-01-getline (removed): Now handled in original sources.
+ * patch-02-static, patch-03-warnings: Adapted.
+
+2009-08-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-03-warnings (new): Avoid more compiler warnings.
+
+2009-08-19 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ * patch-02-static (new): Avoid warnings when compiling with
+ 'gcc --Wmissing-prototypes'.
+
+2009-06-12 Francois Charette <firmicus@ankabut.net>
+
+ * patch-01-getline (new): Avoid getline name conflict.
diff --git a/Build/source/utils/t1utils/TLpatches/TL-Changes b/Build/source/utils/t1utils/TLpatches/TL-Changes
new file mode 100644
index 00000000000..dbf73b8689a
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/TL-Changes
@@ -0,0 +1,16 @@
+Changes applied to the t1utils-1.42 tree as obtained from:
+ http://www.lcdf.org/type/
+
+Removed:
+ Makefile.in
+ aclocal.m4
+ compile
+ config.guess
+ config.sub
+ configure
+ depcomp
+ install-sh
+ missing
+
+Moved this file to ../:
+ strerror.c
diff --git a/Build/source/utils/t1utils/TLpatches/patch-03-warnings b/Build/source/utils/t1utils/TLpatches/patch-03-warnings
new file mode 100644
index 00000000000..d76b3deb924
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/patch-03-warnings
@@ -0,0 +1,54 @@
+diff -ur t1utils-1.42/clp.c t1utils-src/clp.c
+--- t1utils-1.42/clp.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/clp.c Sat Oct 31 13:01:47 2020
+@@ -1095,22 +1095,28 @@
+ parse_int(Clp_Parser* clp, const char* arg, int complain, void* user_data)
+ {
+ const char *val;
++ char *temp;
+ uintptr_t type = (uintptr_t) user_data;
+ if (*arg == 0 || isspace((unsigned char) *arg)
+ || ((type & 1) && *arg == '-'))
+ val = arg;
+ else if (type & 1) { /* unsigned */
+ #if HAVE_STRTOUL
+- clp->val.ul = strtoul(arg, (char **) &val, 0);
++ clp->val.ul = strtoul(arg, &temp, 0);
++ val = temp;
+ #else
+ /* don't bother really trying to do it right */
+ if (arg[0] == '-')
+ val = arg;
+- else
+- clp->val.l = strtol(arg, (char **) &val, 0);
++ else {
++ clp->val.l = strtol(arg, &temp, 0);
++ val = temp;
++ }
+ #endif
+- } else
+- clp->val.l = strtol(arg, (char **) &val, 0);
++ } else {
++ clp->val.l = strtol(arg, &temp, 0);
++ val = temp;
++ }
+ if (type <= 1)
+ clp->val.u = (unsigned) clp->val.ul;
+ if (*arg != 0 && *val == 0)
+@@ -1130,11 +1136,14 @@
+ parse_double(Clp_Parser *clp, const char *arg, int complain, void *user_data)
+ {
+ const char *val;
++ char *temp;
+ (void)user_data;
+ if (*arg == 0 || isspace((unsigned char) *arg))
+ val = arg;
+- else
+- clp->val.d = strtod(arg, (char **) &val);
++ else {
++ clp->val.d = strtod(arg, &temp);
++ val = temp;
++ }
+ if (*arg != 0 && *val == 0)
+ return 1;
+ else {
diff --git a/Build/source/utils/t1utils/TLpatches/patch-04-TL-binary b/Build/source/utils/t1utils/TLpatches/patch-04-TL-binary
new file mode 100644
index 00000000000..c9c84c8d848
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/patch-04-TL-binary
@@ -0,0 +1,48 @@
+diff -ur t1utils-1.42/t1ascii.c t1utils-src/t1ascii.c
+--- t1utils-1.42/t1ascii.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1ascii.c Sat Oct 31 13:02:49 2020
+@@ -286,6 +286,7 @@
+ /* As we are processing a PFB (binary) input */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ifp), _O_BINARY);
++ _setmode(_fileno(ofp), _O_BINARY);
+ #endif
+
+ /* prepare font reader */
+diff -ur t1utils-1.42/t1asm.c t1utils-src/t1asm.c
+--- t1utils-1.42/t1asm.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1asm.c Sat Oct 31 13:03:47 2020
+@@ -715,8 +715,7 @@
+ #if defined(_MSDOS) || defined(_WIN32)
+ /* If we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+- if (pfb)
+- _setmode(_fileno(ofp), _O_BINARY);
++ _setmode(_fileno(ofp), _O_BINARY);
+ #endif
+
+ /* Finally, we loop until no more input. Some special things to look for are
+diff -ur t1utils-1.42/t1disasm.c t1utils-src/t1disasm.c
+--- t1utils-1.42/t1disasm.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1disasm.c Sat Oct 31 13:04:32 2020
+@@ -727,6 +727,7 @@
+ /* As we might be processing a PFB (binary) input file, we must set its file
+ mode to binary. */
+ _setmode(_fileno(ifp), _O_BINARY);
++ _setmode(_fileno(ofp), _O_BINARY);
+ #endif
+
+ /* prepare font reader */
+diff -ur t1utils-1.42/t1unmac.c t1utils-src/t1unmac.c
+--- t1utils-1.42/t1unmac.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1unmac.c Sat Oct 31 13:06:12 2020
+@@ -656,8 +655,7 @@
+ _setmode(_fileno(ifp), _O_BINARY);
+ /* If we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+- if (pfb)
+- _setmode(_fileno(ofp), _O_BINARY);
++ _setmode(_fileno(ofp), _O_BINARY);
+ #endif
+
+ if (pfb)
diff --git a/Build/source/utils/t1utils/TLpatches/patch-05-getopt b/Build/source/utils/t1utils/TLpatches/patch-05-getopt
new file mode 100644
index 00000000000..ea581057951
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/patch-05-getopt
@@ -0,0 +1,11 @@
+diff -ur t1utils-1.42/t1unmac.c t1utils-src/t1unmac.c
+--- t1utils-1.42/t1unmac.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1unmac.c Sat Oct 31 13:06:12 2020
+@@ -41,7 +41,6 @@
+ #endif
+ #if defined(_MSDOS) || defined(_WIN32)
+ # include <fcntl.h>
+-# include <getopt.h>
+ # include <io.h>
+ #endif
+ #include <stdio.h>
diff --git a/Build/source/utils/t1utils/TLpatches/patch-07-warnings b/Build/source/utils/t1utils/TLpatches/patch-07-warnings
new file mode 100644
index 00000000000..16c9340879c
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/patch-07-warnings
@@ -0,0 +1,29 @@
+diff -ur t1utils-1.42/t1asmhelp.h t1utils-src/t1asmhelp.h
+--- t1utils-1.42/t1asmhelp.h Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1asmhelp.h Sat Oct 31 13:15:46 2020
+@@ -26,7 +28,8 @@
+ }
+
+
+-static const char* cs_start = "";
++static char cs_start_init[] = "";
++static char *cs_start = cs_start_init;
+
+ static void
+ set_cs_start(const char* line, size_t line_len)
+@@ -37,13 +40,13 @@
+ if ((p = memmem(line, line_len, "string currentfile", 18))
+ && memmem(line, line_len, "readstring", 10)) {
+ /* locate the name of the charstring start command */
+- for (q = p; q != line && q[-1] != '/'; --q)
++ for (q = p; q != line && *(q-1) != '/'; --q)
+ /* nada */;
+ if (q != line) {
+ for (r = q; r != p && !isspace((unsigned char) *r) && *r != '{'; ++r)
+ /* nada */;
+ if (cs_start_set)
+- free((char*) cs_start);
++ free(cs_start);
+ cs_start = p = malloc(r - q + 1);
+ memcpy(p, q, r - q);
+ p[r - q] = 0;
diff --git a/Build/source/utils/t1utils/TLpatches/patch-08-notuse-system-memmem b/Build/source/utils/t1utils/TLpatches/patch-08-notuse-system-memmem
new file mode 100644
index 00000000000..ef0997bc1ca
--- /dev/null
+++ b/Build/source/utils/t1utils/TLpatches/patch-08-notuse-system-memmem
@@ -0,0 +1,24 @@
+diff -ur t1utils-1.42/memmem.c t1utils-src/memmem.c
+--- t1utils-1.42/memmem.c Wed Oct 28 00:08:00 2020
++++ t1utils-src/memmem.c Sat Oct 31 13:12:12 2020
+@@ -9,6 +9,8 @@
+ extern "C" {
+ #endif
+
++#define memmem my_memmem
++
+ void*
+ memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len)
+diff -ur t1utils-1.42/t1asmhelp.h t1utils-src/t1asmhelp.h
+--- t1utils-1.42/t1asmhelp.h Wed Oct 28 00:08:00 2020
++++ t1utils-src/t1asmhelp.h Sat Oct 31 13:15:46 2020
+@@ -7,6 +7,8 @@
+ lenIV to <num>. This indicates the number of random bytes at the beginning
+ of each charstring. */
+
++#define memmem my_memmem
++
+ static void
+ set_lenIV(const char* line, size_t line_len)
+ {
diff --git a/Build/source/utils/t1utils/ac/withenable.ac b/Build/source/utils/t1utils/ac/withenable.ac
new file mode 100644
index 00000000000..e4c5f91a37c
--- /dev/null
+++ b/Build/source/utils/t1utils/ac/withenable.ac
@@ -0,0 +1,7 @@
+## utils/t1utils/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory utils/t1utils/
+dnl
+dnl Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org>
+dnl You may freely use, modify and/or distribute this file.
+dnl
+## configure options and TL libraries required for t1utils
+KPSE_ENABLE_PROG([t1utils])
diff --git a/Build/source/utils/t1utils/aclocal.m4 b/Build/source/utils/t1utils/aclocal.m4
new file mode 100644
index 00000000000..07865f97fc3
--- /dev/null
+++ b/Build/source/utils/t1utils/aclocal.m4
@@ -0,0 +1,1170 @@
+# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.16'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.16.3], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.16.3])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is '.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
+ [$1], [CXX], [depcc="$CXX" am_compiler_list=],
+ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+ [$1], [UPC], [depcc="$UPC" am_compiler_list=],
+ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+ [--enable-dependency-tracking],
+ [do not reject slow dependency extractors])
+AS_HELP_STRING(
+ [--disable-dependency-tracking],
+ [speeds up one-time build])])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ AS_CASE([$CONFIG_FILES],
+ [*\'*], [eval set x "$CONFIG_FILES"],
+ [*], [set x $CONFIG_FILES])
+ shift
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
+ do
+ # Strip MF so we end up with the name of the file.
+ am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`AS_DIRNAME(["$am_mf"])`
+ am_filepart=`AS_BASENAME(["$am_mf"])`
+ AM_RUN_LOG([cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles]) || am_rc=$?
+ done
+ if test $am_rc -ne 0; then
+ AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE="gmake" (or whatever is
+ necessary). You can also try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).])
+ fi
+ AS_UNSET([am_dirpart])
+ AS_UNSET([am_filepart])
+ AS_UNSET([am_mf])
+ AS_UNSET([am_rc])
+ rm -f conftest-deps.mk
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.65])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[AC_DIAGNOSE([obsolete],
+ [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ [ok:ok],,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES([CC])],
+ [m4_define([AC_PROG_CC],
+ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES([CXX])],
+ [m4_define([AC_PROG_CXX],
+ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES([OBJC])],
+ [m4_define([AC_PROG_OBJC],
+ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+ [_AM_DEPENDENCIES([OBJCXX])],
+ [m4_define([AC_PROG_OBJCXX],
+ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+])
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+ fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
+])
+
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST([install_sh])])
+
+# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+ am_maintainer_other[ make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer])],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
+am__doit:
+ @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+ AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+ ['0:this is the am__doit target'],
+ [AS_CASE([$s],
+ [BSD], [am__include='.include' am__quote='"'],
+ [am__include='include' am__quote=''])])
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ AC_MSG_WARN(['missing' script is too old or missing])
+fi
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# --------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+ [whether $CC understands -c and -o together],
+ [am_cv_prog_cc_c_o],
+ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+ alias in your environment])
+ fi
+ if test "$[2]" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+ [AC_MSG_CHECKING([that generated files are newer than configure])
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+ [--enable-silent-rules],
+ [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+ [--disable-silent-rules],
+ [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+ [am_cv_make_support_nested_variables],
+ [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+ dnl Using '$V' instead of '$(V)' breaks IRIX make.
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+
+# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+#
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+
+m4_if([$1], [v7],
+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+ [m4_case([$1],
+ [ustar],
+ [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+ # There is notably a 21 bits limit for the UID and the GID. In fact,
+ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+ # and bug#13588).
+ am_max_uid=2097151 # 2^21 - 1
+ am_max_gid=$am_max_uid
+ # The $UID and $GID variables are not portable, so we need to resort
+ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
+ # below are definitely unexpected, so allow the users to see them
+ # (that is, avoid stderr redirection).
+ am_uid=`id -u || echo unknown`
+ am_gid=`id -g || echo unknown`
+ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+ if test $am_uid -le $am_max_uid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi
+ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+ if test $am_gid -le $am_max_gid; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ _am_tools=none
+ fi],
+
+ [pax],
+ [],
+
+ [m4_fatal([Unknown tar format])])
+
+ AC_MSG_CHECKING([how to create a $1 tar archive])
+
+ # Go ahead even if we have the value already cached. We do so because we
+ # need to set the values for the 'am__tar' and 'am__untar' variables.
+ _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+ for _am_tool in $_am_tools; do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar; do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works.
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ AM_RUN_LOG([cat conftest.dir/file])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+ done
+ rm -rf conftest.dir
+
+ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+ AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../../m4/kpse-common.m4])
+m4_include([../../m4/kpse-warnings.m4])
diff --git a/Build/source/utils/t1utils/config.h.in b/Build/source/utils/t1utils/config.h.in
new file mode 100644
index 00000000000..a1b4a1e01d1
--- /dev/null
+++ b/Build/source/utils/t1utils/config.h.in
@@ -0,0 +1,108 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+#ifndef T1UTILS_CONFIG_H
+#define T1UTILS_CONFIG_H
+
+/* Define if intXX_t types are not available. */
+#undef HAVE_FAKE_INT_TYPES
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtoul' function. */
+#undef HAVE_STRTOUL
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#undef HAVE_UINTPTR_T
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if you have u_intXX_t types but not uintXX_t types. */
+#undef HAVE_U_INT_TYPES
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+#include <lcdf/inttypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Prototype strerror if we don't have it. */
+#if !HAVE_STRERROR
+char *strerror(int errno);
+#endif
+
+/* Prototype my_memmem */
+void *my_memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len);
+
+#ifdef __cplusplus
+}
+/* Get rid of a possible inline macro under C++. */
+# define inline inline
+#endif
+
+#endif /* T1UTILS_CONFIG_H */
diff --git a/Build/source/utils/t1utils/configure b/Build/source/utils/t1utils/configure
new file mode 100755
index 00000000000..29d91eab607
--- /dev/null
+++ b/Build/source/utils/t1utils/configure
@@ -0,0 +1,7083 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for t1utils (TeX Live) 1.42.
+#
+# Report bugs to <tex-k@tug.org>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+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
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+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
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="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
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and tex-k@tug.org
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='t1utils (TeX Live)'
+PACKAGE_TARNAME='t1utils--tex-live-'
+PACKAGE_VERSION='1.42'
+PACKAGE_STRING='t1utils (TeX Live) 1.42'
+PACKAGE_BUGREPORT='tex-k@tug.org'
+PACKAGE_URL=''
+
+ac_unique_file="t1utils-src/t1ascii.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+T1UTILS_TREE
+EGREP
+GREP
+CPP
+LIBOBJS
+WARNING_CFLAGS
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL
+am__quote'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_silent_rules
+enable_maintainer_mode
+enable_dependency_tracking
+enable_compiler_warnings
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures t1utils (TeX Live) 1.42 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root
+ [DATAROOTDIR/doc/t1utils--tex-live-]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of t1utils (TeX Live) 1.42:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-silent-rules less verbose build output (undo: "make V=1")
+ --disable-silent-rules verbose build output (undo: "make V=0")
+ --enable-maintainer-mode
+ enable make rules and dependencies not useful (and
+ sometimes confusing) to the casual installer
+ --enable-dependency-tracking
+ do not reject slow dependency extractors
+ --disable-dependency-tracking
+ speeds up one-time build
+ --enable-compiler-warnings=[no|min|yes|max|all]
+ Turn on compiler warnings [default: yes if
+ maintainer-mode, min otherwise]
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <tex-k@tug.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+t1utils (TeX Live) configure 1.42
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------- ##
+## Report this to tex-k@tug.org ##
+## ---------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=no"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by t1utils (TeX Live) $as_me 1.42, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_aux_dir=
+for ac_dir in ../../build-aux "$srcdir"/../../build-aux; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../../build-aux \"$srcdir\"/../../build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+
+
+am__api_version='1.16'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ am_has_slept=no
+ for am_try in 1 2; do
+ echo "timestamp, slept: $am_has_slept" > conftest.file
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+ alias in your environment" "$LINENO" 5
+ fi
+ if test "$2" = conftest.file || test $am_try -eq 2; then
+ break
+ fi
+ # Just in case.
+ sleep 1
+ am_has_slept=yes
+ done
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+ ( sleep 1 ) &
+ am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --is-lightweight"; then
+ am_missing_run="$MISSING "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip". However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+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_prog_STRIP="${ac_tool_prefix}strip"
+ $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
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; 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_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+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_prog_ac_ct_STRIP="strip"
+ $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
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+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_prog_AWK="$ac_prog"
+ $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
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+ enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+ yes) AM_DEFAULT_VERBOSITY=0;;
+ no) AM_DEFAULT_VERBOSITY=1;;
+ *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+ @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+ am_cv_make_support_nested_variables=yes
+else
+ am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+ AM_V='$(V)'
+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+ AM_V=$AM_DEFAULT_VERBOSITY
+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
+am__doit:
+ @echo this is the am__doit target >confinc.out
+.PHONY: am__doit
+END
+am__include="#"
+am__quote=
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+ (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ case $?:`cat confinc.out 2>/dev/null` in #(
+ '0:this is the am__doit target') :
+ case $s in #(
+ BSD) :
+ am__include='.include' am__quote='"' ;; #(
+ *) :
+ am__include='include' am__quote='' ;;
+esac ;; #(
+ *) :
+ ;;
+esac
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="${ac_tool_prefix}gcc"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+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_prog_ac_ct_CC="gcc"
+ $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
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="${ac_tool_prefix}cc"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+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
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $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
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="$ac_tool_prefix$ac_prog"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+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_prog_ac_ct_CC="$ac_prog"
+ $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
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+# Check whether --enable-compiler-warnings was given.
+if test "${enable_compiler_warnings+set}" = set; then :
+ enableval=$enable_compiler_warnings;
+fi
+case $enable_compiler_warnings in #(
+ no | min | yes | max | all) :
+ ;; #(
+ *) :
+ if test "x$enable_maintainer_mode" = xyes; then :
+ enable_compiler_warnings=yes
+else
+ enable_compiler_warnings=min
+fi ;;
+esac
+
+##tldbg KPSE_BASIC: Remember t1utils () as Kpse_Package (for future messages).
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='t1utils--tex-live-'
+ VERSION='1.42'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# For better backward compatibility. To be removed once Automake 1.9.x
+# dies out for good. For more background, see:
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility. Yes, it's still used
+# in the wild :-( We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes. So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+ cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present. This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message. This
+can help us improve future automake versions.
+
+END
+ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+ echo 'Configuration will proceed anyway, since you have set the' >&2
+ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+ echo >&2
+ else
+ cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+ fi
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts prototypes" >&5
+$as_echo_n "checking whether the compiler accepts prototypes... " >&6; }
+if ${kb_cv_c_prototypes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+extern void foo(int i,...);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ kb_cv_c_prototypes=yes
+else
+ kb_cv_c_prototypes=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kb_cv_c_prototypes" >&5
+$as_echo "$kb_cv_c_prototypes" >&6; }
+if test "x$kb_cv_c_prototypes" = xno; then
+ as_fn_error $? "Sorry, your compiler does not understand prototypes." "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5
+$as_echo_n "checking what warning flags to pass to the C compiler... " >&6; }
+if ${kpse_cv_warning_cflags+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$GCC" = xyes; then
+ kpse_cv_warning_cflags=
+if test "x$enable_compiler_warnings" != xno; then
+ kpse_cv_warning_cflags="-Wimplicit -Wreturn-type"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; #(
+ *) :
+ ;;
+esac
+ case `$CC -dumpversion` in #(
+ 3.[234].* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmin; then
+ kpse_cv_warning_cflags="-Wall -Wunused $kpse_cv_warning_cflags"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations"
+ if test "x$enable_compiler_warnings" != xyes; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings"
+ case `$CC -dumpversion` in #(
+ 3.4.* | 4.* | 5.*) :
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; #(
+ *) :
+ ;;
+esac
+ if test "x$enable_compiler_warnings" != xmax; then
+ kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wshadow"
+ fi
+ fi
+ fi
+fi
+elif test "x$enable_compiler_warnings" = xno; then
+ kpse_cv_warning_cflags=
+else
+ kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_warning_cflags" >&5
+$as_echo "$kpse_cv_warning_cflags" >&6; }
+WARNING_CFLAGS=$kpse_cv_warning_cflags
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="${ac_tool_prefix}gcc"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+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_prog_ac_ct_CC="gcc"
+ $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
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="${ac_tool_prefix}cc"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+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
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $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
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+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_prog_CC="$ac_tool_prefix$ac_prog"
+ $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
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+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_prog_ac_ct_CC="$ac_prog"
+ $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
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ # Make sure it works both with $CC and with simple cc.
+ # Following AC_PROG_CC_C_O, we do the test twice because some
+ # compilers refuse to overwrite an existing .o file with -o,
+ # though they will create one.
+ am_cv_prog_cc_c_o=yes
+ for am_i in 1 2; do
+ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } \
+ && test -f conftest2.$ac_objext; then
+ : OK
+ else
+ am_cv_prog_cc_c_o=no
+ break
+ fi
+ done
+ rm -f core conftest*
+ unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+ # Losing compiler, so override with the script.
+ # FIXME: It is wrong to rewrite CC.
+ # But if we don't then we get into trouble of one sort or another.
+ # A longer-term fix would be to have automake use am__CC in this case,
+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+ CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this sort of thing. */
+ typedef int charset[2];
+ const charset cs = { 0, 0 };
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ if (!foo) return 0;
+ }
+ return !cs[0] && !zero.x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_const=yes
+else
+ ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+
+
+ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
+if test "x$ac_cv_func_strerror" = xyes; then :
+ $as_echo "#define HAVE_STRERROR 1" >>confdefs.h
+
+else
+ case " $LIBOBJS " in
+ *" strerror.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS strerror.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+
+for ac_func in strtoul
+do :
+ ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STRTOUL 1
+_ACEOF
+
+fi
+done
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in inttypes.h sys/types.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "x$ac_cv_header_inttypes_h:$ac_cv_header_sys_types_h" = xno:yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t typedefs" >&5
+$as_echo_n "checking for uintXX_t typedefs... " >&6; }
+if ${lcdf_cv_uint_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then :
+ lcdf_cv_uint_t=yes
+else
+ lcdf_cv_uint_t=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lcdf_cv_uint_t" >&5
+$as_echo "$lcdf_cv_uint_t" >&6; }
+ if test "x$lcdf_cv_uint_t" = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t typedefs" >&5
+$as_echo_n "checking for u_intXX_t typedefs... " >&6; }
+if ${lcdf_cv_u_int_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then :
+ lcdf_cv_u_int_t=yes
+else
+ lcdf_cv_u_int_t=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lcdf_cv_u_int_t" >&5
+$as_echo "$lcdf_cv_u_int_t" >&6; }
+ fi
+fi
+if test "x$ac_cv_header_inttypes_h:$lcdf_cv_uint_t" = xno:no; then
+ if test "x$lcdf_cv_u_int_t" = xyes; then
+
+$as_echo "#define HAVE_U_INT_TYPES 1" >>confdefs.h
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+=========================================
+
+Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
+Assuming \"short\" has 16 bits and \"int\" has 32 bits.
+
+=========================================" >&5
+$as_echo "$as_me: WARNING:
+=========================================
+
+Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
+Assuming \"short\" has 16 bits and \"int\" has 32 bits.
+
+=========================================" >&2;}
+
+$as_echo "#define HAVE_FAKE_INT_TYPES 1" >>confdefs.h
+
+ fi
+fi
+
+ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+"
+if test "x$ac_cv_type_uintptr_t" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+fi
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
+$as_echo_n "checking size of void *... " >&6; }
+if ${ac_cv_sizeof_void_p+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_void_p" = yes; 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 77 "cannot compute sizeof (void *)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_void_p=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
+$as_echo "$ac_cv_sizeof_void_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5
+$as_echo_n "checking size of unsigned long... " >&6; }
+if ${ac_cv_sizeof_unsigned_long+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_unsigned_long" = yes; 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 77 "cannot compute sizeof (unsigned long)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_unsigned_long=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5
+$as_echo "$ac_cv_sizeof_unsigned_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5
+$as_echo_n "checking size of unsigned int... " >&6; }
+if ${ac_cv_sizeof_unsigned_int+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_unsigned_int" = yes; 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 77 "cannot compute sizeof (unsigned int)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_unsigned_int=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5
+$as_echo "$ac_cv_sizeof_unsigned_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
+_ACEOF
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+
+
+
+T1UTILS_TREE=t1utils-src
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+ if test -n "$am_sleep_pid"; then
+ # Hide warnings about reused PIDs.
+ wait $am_sleep_pid 2>/dev/null
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+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
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+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
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by t1utils (TeX Live) $as_me 1.42, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <tex-k@tug.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+t1utils (TeX Live) config.status 1.42
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$ac_tmp/config.h" "$ac_file" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error $? "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Older Autoconf quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ case $CONFIG_FILES in #(
+ *\'*) :
+ eval set x "$CONFIG_FILES" ;; #(
+ *) :
+ set x $CONFIG_FILES ;; #(
+ *) :
+ ;;
+esac
+ shift
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
+ do
+ # Strip MF so we end up with the name of the file.
+ am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$am_mf" : 'X\(//\)[^/]' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { echo "$as_me:$LINENO: cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles" >&5
+ (cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } || am_rc=$?
+ done
+ if test $am_rc -ne 0; 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 $? "Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. If GNU make was not used, consider
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
+ necessary). You can also try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ { am_dirpart=; unset am_dirpart;}
+ { am_filepart=; unset am_filepart;}
+ { am_mf=; unset am_mf;}
+ { am_rc=; unset am_rc;}
+ rm -f conftest-deps.mk
+}
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/Build/source/utils/t1utils/configure.ac b/Build/source/utils/t1utils/configure.ac
new file mode 100644
index 00000000000..2124286841b
--- /dev/null
+++ b/Build/source/utils/t1utils/configure.ac
@@ -0,0 +1,127 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright (C) 2009-2013 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl *********************************************************************
+dnl
+dnl Adapted for TeX Live from t1utils-src/configure.in
+dnl
+dnl *********************************************************************
+dnl
+m4_include([version.ac])[] dnl define t1utils_version
+AC_INIT([t1utils (TeX Live)], t1utils_version, [tex-k@tug.org])
+AC_PREREQ([2.65])
+AC_CONFIG_SRCDIR([t1utils-src/t1ascii.c])
+AC_CONFIG_AUX_DIR([../../build-aux])
+AC_CONFIG_MACRO_DIR([../../m4])
+
+KPSE_BASIC([t1utils])
+
+AC_PROG_CC
+AC_C_CONST
+
+dnl
+dnl strerror()?
+dnl
+
+AC_REPLACE_FUNCS([strerror])
+
+AC_CHECK_FUNCS([strtoul])
+
+dnl
+dnl integer types
+dnl
+
+AC_CHECK_HEADERS([inttypes.h sys/types.h])
+
+if test "x$ac_cv_header_inttypes_h:$ac_cv_header_sys_types_h" = xno:yes; then
+ AC_CACHE_CHECK([for uintXX_t typedefs],
+ [lcdf_cv_uint_t],
+ [AC_EGREP_HEADER([(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]],
+ [sys/types.h],
+ [lcdf_cv_uint_t=yes],
+ [lcdf_cv_uint_t=no])])
+ if test "x$lcdf_cv_uint_t" = xno; then
+ AC_CACHE_CHECK([for u_intXX_t typedefs],
+ [lcdf_cv_u_int_t],
+ [AC_EGREP_HEADER([(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]],
+ [sys/types.h],
+ [lcdf_cv_u_int_t=yes],
+ [lcdf_cv_u_int_t=no])])
+ fi
+fi
+if test "x$ac_cv_header_inttypes_h:$lcdf_cv_uint_t" = xno:no; then
+ if test "x$lcdf_cv_u_int_t" = xyes; then
+ AC_DEFINE([HAVE_U_INT_TYPES], 1,
+ [Define if you have u_intXX_t types but not uintXX_t types.])
+ else
+ AC_MSG_WARN([
+=========================================
+
+Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
+Assuming "short" has 16 bits and "int" has 32 bits.
+
+=========================================])
+ AC_DEFINE([HAVE_FAKE_INT_TYPES], 1,
+ [Define if intXX_t types are not available.])
+ fi
+fi
+
+AC_CHECK_TYPES([uintptr_t], [], [],
+[#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+])
+
+AC_CHECK_SIZEOF([void *])
+AC_CHECK_SIZEOF([unsigned long])
+AC_CHECK_SIZEOF([unsigned int])
+
+
+AC_CONFIG_HEADERS([config.h])
+
+dnl
+dnl verbatim portions of the header
+dnl
+
+AH_TOP([#ifndef T1UTILS_CONFIG_H
+#define T1UTILS_CONFIG_H])
+
+AH_BOTTOM([#include <lcdf/inttypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Prototype strerror if we don't have it. */
+#if !HAVE_STRERROR
+char *strerror(int errno);
+#endif
+
+/* Prototype my_memmem */
+void *my_memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len);
+
+#ifdef __cplusplus
+}
+/* Get rid of a possible inline macro under C++. */
+# define inline inline
+#endif
+
+#endif /* T1UTILS_CONFIG_H */])
+
+AC_SUBST([T1UTILS_TREE], [t1utils-src])
+
+dnl
+dnl Output
+dnl
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/Build/source/utils/t1utils/strerror.c b/Build/source/utils/t1utils/strerror.c
new file mode 100644
index 00000000000..b47f24ed2f8
--- /dev/null
+++ b/Build/source/utils/t1utils/strerror.c
@@ -0,0 +1,25 @@
+/* Some operating systems don't have strerror.
+ This file provides a definition which David Mazieres <dm@lcs.mit.edu>
+ assures me works. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+char *
+strerror(int errno)
+{
+ extern int sys_nerr;
+ extern char *sys_errlist[];
+ if (errno < 0 || errno >= sys_nerr)
+ return (char *)"bad error number";
+ else
+ return sys_errlist[errno];
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/INSTALL b/Build/source/utils/t1utils/t1utils-src/INSTALL
new file mode 100644
index 00000000000..95d84c820fb
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/INSTALL
@@ -0,0 +1,176 @@
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.in' is used to create `configure' by a program
+called `autoconf'. You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/Build/source/utils/t1utils/t1utils-src/LICENSE b/Build/source/utils/t1utils/t1utils-src/LICENSE
new file mode 100644
index 00000000000..82054edc397
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/LICENSE
@@ -0,0 +1,30 @@
+Portions of this software are subject to the license below. The relevant
+source files are clearly marked; they refer to this file using the phrase
+"the Click LICENSE file". This license is an MIT license, plus a clause
+(taken from the W3C license) requiring prior written permission to use our
+names in publicity.
+
+===========================================================================
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+The name and trademarks of copyright holders may NOT be used in advertising
+or publicity pertaining to the Software without specific, written prior
+permission. Title to copyright in this Software and any associated
+documentation will at all times remain with copyright holders.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/Build/source/utils/t1utils/t1utils-src/Makefile.am b/Build/source/utils/t1utils/t1utils-src/Makefile.am
new file mode 100644
index 00000000000..b2c51eaf93b
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/Makefile.am
@@ -0,0 +1,28 @@
+## Process this file with automake to produce Makefile.in
+AUTOMAKE_OPTIONS = foreign
+
+bin_PROGRAMS = t1ascii t1binary t1asm t1disasm t1unmac t1mac
+man_MANS = t1ascii.1 t1binary.1 t1asm.1 t1disasm.1 t1unmac.1 t1mac.1
+
+t1ascii_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1lib.c t1ascii.c
+t1binary_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1lib.c t1binary.c
+t1asm_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1asmhelp.h t1lib.c t1asm.c
+t1disasm_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1asmhelp.h t1lib.c t1disasm.c
+t1unmac_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1lib.c t1unmac.c
+t1mac_SOURCES = include/lcdf/clp.h include/lcdf/inttypes.h \
+ clp.c t1lib.h t1lib.c t1mac.c
+
+AM_CPPFLAGS = -I$(top_srcdir)/include
+LDADD = @LIBOBJS@
+
+EXTRA_DIST = $(man_MANS) INSTALL LICENSE README.md NEWS.md
+
+versionize:
+ perl -pi -e "s/^\\.ds V.*/.ds V $(VERSION)/;" t1ascii.1 t1binary.1 t1disasm.1 t1asm.1 t1unmac.1 t1mac.1
+
+.PHONY: srclinks versionize
diff --git a/Build/source/utils/t1utils/t1utils-src/NEWS.md b/Build/source/utils/t1utils/t1utils-src/NEWS.md
new file mode 100644
index 00000000000..18881bddb00
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/NEWS.md
@@ -0,0 +1,339 @@
+T1utils NEWS
+============
+
+## Version 1.42 – 27.Oct.2020
+
+* Compile fixes for OSes that do not declare a function.
+
+
+## Version 1.41 – 16.Aug.2017
+
+* t1asm, t1disasm: More security fixes.
+
+
+## Version 1.40 – 23.Jul.2017
+
+* t1disasm: More security fixes reported by Jakub Wilk and Niels Thykier.
+
+
+## Version 1.39 – 26.Feb.2015
+
+* t1disasm: Security fixes for buffer overrun reported by Jakub Wilk
+ and Niels Thykier.
+
+
+## Version 1.38 – 29.Sep.2013
+
+* t1disasm: Fix an infinite loop on some fonts reported by Niels
+ Thykier.
+
+
+## Version 1.37 – 29.Jun.2011
+
+* t1asm: Use a dynamically allocated buffer to handle huge characters
+ (reported by Werner Lemberg).
+
+
+## Version 1.36 – 29.May.2010
+
+* Several minor cleanups.
+
+
+## Version 1.35 – 22.Oct.2009
+
+* Don't use "getline" as a symbol (reported by Karl Berry and
+ C.M. Connelly).
+
+
+## Version 1.34 – 1.Mar.2008
+
+* Add `--enable-multiplatform` (requested by Karl Berry).
+
+
+## Version 1.33 – 8.Jan.2008
+
+* Several minor cleanups.
+
+
+## Version 1.32 – 23.Feb.2004
+
+* t1disasm: Avoid memory corruption bug (strings passed to `eexec_line` are
+ not null terminated). Reported by Werner Lemberg.
+
+
+## Version 1.31 – 8.Feb.2004
+
+* All: Support fonts where the eexec-encrypted portion is binary, and the
+ first ciphertext byte is 0. Reported by Werner Lemberg.
+
+
+## Version 1.30 – 6.Jan.2004
+
+* All: Support fonts, such as those in PostScript files printed by
+ acroread, where `currentfile eexec` is not followed by a newline.
+
+
+## Version 1.29 – 6.Oct.2003
+
+* t1disasm: Support odd fonts where a character is defined on the
+ "/CharStrings" line. Reported by Werner Lemberg.
+
+
+## Version 1.28 – 7.Aug.2003
+
+* Address build problems reported by Nelson H.F. Beebe.
+
+
+## Version 1.27 – 26.Mar.2003
+
+* t1ascii: Add optional warning when output lines are longer than 255
+ characters. Requested by Werner Lemberg <wl@gnu.org>.
+
+
+## Version 1.26 – 16.Apr.2002
+
+* t1mac: Fix buglet (C++ comment, and temporary file left behind). Reported
+ by Vladimir Volovich <vvv@vsu.ru>.
+
+
+## Version 1.25 – 3.Jan.2002
+
+* t1asm: Beware extra characters after `currentfile closefile`. Reported by
+ Luc Devroye <luc@cs.mcgill.ca>.
+
+
+## Version 1.24 – 6.Sep.2001
+
+* Fixed compilation bugs on various platforms reported by Nelson H. F.
+ Beebe <beebe@math.utah.edu>.
+
+
+## Version 1.23 – 18.Jun.2001
+
+* Fixed Macintosh file bugs: the MacBinary CRC was calculated incorrectly,
+ and extended finder flags were set to random values in BinHex output.
+ Reported, and patch provided, by Tom Kacvinsky <tjk@ams.org>.
+
+
+## Version 1.22 – 6.Mar.2001
+
+* Fixed bug on processing PFA fonts with DOS line endings. The symptom was
+ t1binary producing strange/unusable fonts. Problem: the all-zeros line,
+ which signals the end of the font's binary section, was not being
+ recognized because of an extra `\r`. This has been a bug since version
+ 1.13 -- chagrin! Problem reported by Han The Thanh
+ <thanh@informatics.muni.cz>.
+
+
+## Version 1.21 – 9.Feb.2001
+
+* t1ascii, t1asm, t1unmac: Raised minimum PFA line length to 8. The Adobe
+ spec may imply that there cannot be whitespace within the first 8 bytes
+ of an ASCII-encoded eexec section; it's somewhat ambiguous. Reported by
+ Rainer Menzner <Rainer.Menzner@neuroinformatik.ruhr-uni-bochum.de>.
+
+
+## Version 1.20 – 22.Jun.2000
+
+* t1asm: Fixed bug where `t1asm -a` would give a “warning: line length
+ raised to 4” error message. Reported by Tom Kacvinsky <tjk@ams.org>.
+
+
+## Version 1.19 – 3.May.2000
+
+* t1mac: Generated Macintosh fonts now use a custom-drawn icon set, rather
+ than Adobe's default. They also have a t1utils-specific creator signature
+ (T1UT), and their file information mentions t1utils.
+
+* t1mac: Added the `--filename` option.
+
+
+## Version 1.18 – 2.May.2000
+
+* t1mac: Fixed bug where generated files appeared corrupted to Macintoshes.
+ Reported by Marten Thavenius <marten.thavenius@bahnhof.se>.
+
+
+## Version 1.17 – 27.Apr.2000
+
+* Added new program, `t1mac`, which translates PFA or PFB fonts into
+ Macintosh-style fonts. T1mac can output in MacBinary, AppleSingle,
+ AppleDouble, or BinHex format. Suggested by Marten Thavenius
+ <marten.thavenius@bahnhof.se>.
+
+* t1unmac: Added support for BinHex.
+
+* t1unmac: Fixed bugs in manual page and program options.
+
+
+## Version 1.16 – 25.Apr.2000
+
+* t1unmac: Supports AppleSingle and AppleDouble files with the
+ `--applesingle/double` option. Requested by Kent Boortz
+ <kent@erix.ericsson.se>.
+
+
+## Version 1.15 – 4.Apr.2000
+
+* t1ascii, t1binary, and t1disasm: Fixed bad error message.
+
+* t1unmac: Generates PFB fonts by default.
+
+
+## Version 1.14 – 25.Aug.1999
+
+* t1asm: Version 1.13 produced complete crap output. My test cases were too
+ limited to catch this. Found by Rainer Menzner
+ <Rainer.Menzner@neuroinformatik.ruhr-uni-bochum.de>.
+
+
+## Version 1.13 – 2.Aug.1999
+
+* t1disasm: Complete rewrite. It now uses t1lib.c functions; the goal is to
+ handle PFA and PFB fonts consistently. This has been extensively tested,
+ but there may be bugs.
+
+* t1disasm, t1asm: Fixed to support fonts with multiple Subrs and
+ CharStrings sections, like some old Oblique fonts.
+
+* PFA minimum line length raised to 4.
+
+* t1ascii, t1binary, t1disasm: Changes in t1lib.c to support reading binary
+ PFA fonts. Requested by Tom Kacvinsky <tjk@ams.org>.
+
+
+## Version 1.12 – 1.Aug.1999
+
+* t1ascii, t1binary, t1asm, t1disasm: Support fonts with whitespace
+ following the `currentfile eexec` line. Embedded fonts in PostScript
+ generated by Acrobat Reader have this property. Reported by Tom Kacvinsky
+ <tjk@ams.org>.
+
+* t1ascii, t1asm, t1unmac: Use lowercase hex digits instead of uppercase.
+
+* t1unmac: Added `--line-length` option for PFA output.
+
+
+## Version 1.11 – 29.May.1999
+
+* Bug fix in t1asm/t1disasm: if a `readhexstring` procedure was defined, we
+ got confused. Reported by Luc Devroye <luc@CS.McGill.CA>.
+
+* t1binary now has a maximum block length of 2^32 - 1. "Feature" requested
+ by Werner Lemberg <wl@gnu.org>.
+
+* t1ascii and t1binary each accept both PFA and PFB fonts. If you pass an
+ ASCII font (PFA) to t1ascii, it will output it mostly unchanged, and
+ similarly for PFB fonts and t1binary. The `-l` options will still take
+ effect, so you can use `t1ascii -l 60` to shorten the encrypted line
+ lengths of a PFA font. t1ascii also does some newline translation
+ (changes carriage returns to newlines).
+
+
+## Version 1.10.1 – 12.Apr.1999
+
+* t1asm: Fixed bug when `-l` option wasn't provided. Caught by Giuseppe
+ Ghibò <ghibo@caesar.polito.it>.
+
+
+## Version 1.10 – 11.Apr.1999
+
+* t1asm/t1disasm: Provide support for Type1C (Compact Font Format) font
+ files. These fonts have unencrypted character strings, signalled by a
+ negative lenIV value. Suggestion and patch thanks to Tom Kacvinsky
+ <tjk@ams.org>.
+
+* t1ascii/t1asm: Added `-l/--line-length` option to control maximum encrypted
+ line length. Suggestion thanks to Giuseppe Ghibò <ghibo@caesar.polito.it>.
+
+
+## Version 1.9 – 14.Feb.1999
+
+* t1asm/t1disasm: Be more robust on fonts that don't end in `mark
+ currentfile closefile`. John Vromans <JVromans@squirrel.nl> provided a
+ font that ended with `mark` on one line and `currentfile closefile` on
+ another; t1asm and t1disasm did not recognize the encrypted section of
+ the font had ended, and generated some garbage.
+
+
+## Version 1.8 – 2.Jan.1999
+
+* Added some more Type 2 commands (flex, flex1, hflex, hflex1) from a
+ revision of the Type 2 spec. (I wouldn't have known about this except for
+ CurveSoft's revised t1utils package, available at
+ http://www.curvesoft.com. These t1utils are more up-to-date than theirs,
+ however.)
+
+* t1asm: Fixed one Type 2 command's translation (cntrmask was incorrectly
+ mapped to 18, not 20).
+
+
+## Version 1.7.2 – 11.Dec.1998
+
+* Integrated patches from Jan-Jaap van der Heijden
+ <J.J.vanderHeijden@student.utwente.nl> to support building t1utils under
+ 32-bit Windows.
+
+
+## Version 1.7.1 – 5.Dec.1998
+
+* The t1utils package now uses automake.
+
+
+## Version 1.7 – 27.Nov.1998
+
+* t1asm: Should now work with fonts that have no /Subrs sections. Previously,
+ assembling such a font would silently fail; all the character definitions
+ would be mistaken for procedures and t1asm wouldn't translate them. Problem
+ noticed and fix suggested by Tom Kacvinsky <tjk@ams.org>.
+
+* t1disasm: Removed spurious debugging output and improved warning message
+ about unknown charstring commands.
+
+* Changed fgetc/fputc into getc/putc.
+
+
+## Version 1.6 – 27.Sep.1998
+
+* `--help` now prints to stdout, following the GNU Coding Standards.
+
+* Makefiles: Added `make uninstall` target, enabled `./configure`'s
+ program name transformations, made VPATH builds possible.
+
+
+## Version 1.5.2 – 6.Aug.1998
+
+* t1asm/t1disasm: Changed unknown charstring commands at the request of
+ Werner Lemberg and LEE Chun-Yu. An unknown escape in the charstring, like
+ 12 X, is translated to "escape_X" rather than "UNKNOWN_12_X".
+
+
+## Version 1.5.1 – 31.May.1998
+
+* t1unmac did not actually understand the `-r` and `-b` options. Fixed.
+
+* t1unmac: Added better diagnostics to help you diagnose seeking problems.
+
+
+## Version 1.5 – 5.Mar.1998
+
+* Initial release with Eddie Kohler as maintainer.
+
+* All: Updated to the GNU program behavior standards (long options, `--help`,
+ `--version`). Banners removed. Added more error messages.
+
+* t1binary: Removed fixed limit on line length.
+
+* t1binary: Supports Macintosh files, whose lines end in `\r`.
+
+* t1binary: Supports an odd number of hex digits in a line.
+
+* t1asm/t1disasm: Added support for Type 2 commands like `blend` and `add`,
+ which also appear in some multiple master fonts like Adobe Jenson.
+
+* t1asm/t1disasm: Added support for unknown charstring commands. t1disasm
+ translates an unknown command #X to "UNKNOWN_X", and t1asm does the reverse.
+
+* t1asm/t1unmac: Changed default output to PFB.
+
+* t1unmac: Used to be called `unpost`. `t1unmac` is a much better name.
diff --git a/Build/source/utils/t1utils/t1utils-src/README.md b/Build/source/utils/t1utils/t1utils-src/README.md
new file mode 100644
index 00000000000..4e8715c72bb
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/README.md
@@ -0,0 +1,61 @@
+T1utils
+=======
+
+T1utils is a collection of simple programs for manipulating PostScript Type 1
+fonts. Together, they allow you to convert between PFA (ASCII) and PFB
+(binary) formats, disassemble PFA or PFB files into human-readable form, and
+reassemble them into PFA or PFB format. Additionally you can extract font
+resources from a Macintosh font file or create a Macintosh Type 1 font file
+from a PFA or PFB font.
+
+There are currently six programs:
+
+* **t1ascii**: Converts PFB files to PFA format.
+
+* **t1binary**: Converts PFA files to PFB format.
+
+* **t1disasm**: Disassembles a Type 1 font (PFA or PFB format) into a
+ raw, human-readable text form for subsequent hand editing, tweaking, hint
+ fixing, and so forth.
+
+* **t1asm**: Assembles the human-readable t1disasm text form into a Type 1
+ font in PFA or PFB format.
+
+* **t1unmac**: Extracts POST resources from a Macintosh Type 1 font file into
+ PFA or PFB format for use outside the Macintosh environment. The Macintosh
+ file should be stored in MacBinary, AppleSingle, AppleDouble, or BinHex
+ format, or as a raw resource fork. Note that t1unmac does not have to run on
+ a Macintosh.
+
+* **t1mac**: Creates a Macintosh Type 1 file from a PFA or PFB-format Type 1
+ font. Writes the Macintosh file in MacBinary, AppleSingle, AppleDouble, or
+ BinHex format, or as a raw resource fork. WARNING: This will not suffice to
+ use the new font on a Macintosh, as Macintoshes cannot read raw Type 1
+ fonts. You will need to create a font suitcase containing bitmap fonts if
+ you do not have such a suitcase for the font already. T1utils cannot help
+ you do this.
+
+Installation
+------------
+
+You need an ANSI C compiler, such as gcc.
+
+Just type `./configure`, then `make`. `make install` will build and install
+the utilities and their manual pages.
+
+`./configure` accepts the usual options. See `INSTALL` for more details. The
+most commonly used option is `--prefix`, which can be used to install the
+utilities in a place other than /usr/local.
+
+Copyright and license
+---------------------
+
+The original t1utils were (c) 1992 I. Lee Hetherington, <ilh@lcs.mit.edu>.
+Changes since version 1.2 are (c) 1998-2017 Eddie Kohler. Distribution is
+under the Click LICENSE, a BSD-like license described in the LICENSE file in
+this directory.
+
+Note that these tools should not be used to illegally copy Type 1 font
+programs. Typeface design is an intricate art that should be rewarded.
+
+Eddie Kohler, ekohler@gmail.com
diff --git a/Build/source/utils/t1utils/t1utils-src/clp.c b/Build/source/utils/t1utils/t1utils-src/clp.c
new file mode 100644
index 00000000000..baf8dc5702e
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/clp.c
@@ -0,0 +1,2503 @@
+/* -*- related-file-name: "../include/lcdf/clp.h" -*- */
+/* clp.c - Complete source code for CLP.
+ * This file is part of CLP, the command line parser package.
+ *
+ * Copyright (c) 1997-2014 Eddie Kohler, ekohler@gmail.com
+ *
+ * CLP is free software. It is distributed under the GNU General Public
+ * License, Version 2, or, alternatively and at your discretion, under the
+ * more permissive (BSD-like) Click LICENSE file as described below.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <lcdf/clp.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <ctype.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_INTTYPES_H || !defined(HAVE_CONFIG_H)
+# include <inttypes.h>
+#endif
+
+/* By default, assume we have inttypes.h, strtoul, and uintptr_t. */
+#if !HAVE_STRTOUL && !defined(HAVE_CONFIG_H)
+# define HAVE_STRTOUL 1
+#endif
+#if !HAVE_UINTPTR_T && !HAVE_INTTYPES_H && defined(HAVE_CONFIG_H)
+typedef unsigned long uintptr_t;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** @file clp.h
+ * @brief Functions for parsing command line options.
+ *
+ * The CLP functions are used to parse command line arguments into options.
+ * It automatically handles value parsing, error messages, long options with
+ * minimum prefix matching, short options, and negated options.
+ *
+ * The CLP model works like this.
+ *
+ * <ol>
+ * <li>The user declares an array of Clp_Option structures that define the
+ * options their program accepts.</li>
+ * <li>The user creates a Clp_Parser object using Clp_NewParser(), passing in
+ * the command line arguments to parse and the Clp_Option structures.</li>
+ * <li>A loop repeatedly calls Clp_Next() to parse the arguments.</li>
+ * </ol>
+ *
+ * Unlike many command line parsing libraries, CLP steps through all arguments
+ * one at a time, rather than slurping up all options at once. This makes it
+ * meaningful to give an option more than once.
+ *
+ * Here's an example.
+ *
+ * @code
+ * #define ANIMAL_OPT 1
+ * #define VEGETABLE_OPT 2
+ * #define MINERALS_OPT 3
+ * #define USAGE_OPT 4
+ *
+ * static const Clp_Option options[] = {
+ * { "animal", 'a', ANIMAL_OPT, Clp_ValString, 0 },
+ * { "vegetable", 'v', VEGETABLE_OPT, Clp_ValString, Clp_Negate | Clp_Optional },
+ * { "minerals", 'm', MINERALS_OPT, Clp_ValInt, 0 },
+ * { "usage", 0, USAGE_OPT, 0, 0 }
+ * };
+ *
+ * int main(int argc, char *argv[]) {
+ * Clp_Parser *clp = Clp_NewParser(argc, argv,
+ * sizeof(options) / sizeof(options[0]), options);
+ * int opt;
+ * while ((opt = Clp_Next(clp)) != Clp_Done)
+ * switch (opt) {
+ * case ANIMAL_OPT:
+ * fprintf(stderr, "animal is %s\n", clp->val.s);
+ * break;
+ * case VEGETABLE_OPT:
+ * if (clp->negated)
+ * fprintf(stderr, "no vegetables!\n");
+ * else if (clp->have_val)
+ * fprintf(stderr, "vegetable is %s\n", clp->val.s);
+ * else
+ * fprintf(stderr, "vegetables OK\n");
+ * break;
+ * case MINERALS_OPT:
+ * fprintf(stderr, "%d minerals\n", clp->val.i);
+ * break;
+ * case USAGE_OPT:
+ * fprintf(stderr, "Usage: 20q [--animal=ANIMAL] [--vegetable[=VEGETABLE]] [--minerals=N]\n");
+ * break;
+ * case Clp_NotOption:
+ * fprintf(stderr, "non-option %s\n", clp->vstr);
+ * break;
+ * }
+ * }
+ * }
+ * @endcode
+ *
+ * Here are a couple of executions.
+ *
+ * <pre>
+ * % ./20q --animal=cat
+ * animal is cat
+ * % ./20q --animal=cat -a dog -afish --animal bird --an=snake
+ * animal is cat
+ * animal is dog
+ * animal is fish
+ * animal is bird
+ * animal is snake
+ * % ./20q --no-vegetables
+ * no vegetables!
+ * % ./20q -v
+ * vegetables OK
+ * % ./20q -vkale
+ * vegetable is kale
+ * % ./20q -m10
+ * 10 minerals
+ * % ./20q -m foo
+ * '-m' expects an integer, not 'foo'
+ * </pre>
+ */
+
+
+/* Option types for Clp_SetOptionChar */
+#define Clp_DoubledLong (Clp_LongImplicit * 2)
+
+#define Clp_InitialValType 8
+#define MAX_AMBIGUOUS_VALUES 4
+
+typedef struct {
+ int val_type;
+ Clp_ValParseFunc func;
+ int flags;
+ void *user_data;
+} Clp_ValType;
+
+typedef struct {
+ unsigned ilong : 1;
+ unsigned ishort : 1;
+ unsigned imandatory : 1;
+ unsigned ioptional : 1;
+ unsigned ipos : 1;
+ unsigned ineg : 1;
+ unsigned iprefmatch : 1;
+ unsigned lmmpos_short : 1;
+ unsigned lmmneg_short : 1;
+ unsigned char ilongoff;
+ int lmmpos;
+ int lmmneg;
+} Clp_InternOption;
+
+
+#define Clp_OptionCharsSize 5
+
+typedef struct {
+ int c;
+ int type;
+} Clp_Oclass;
+#define Clp_OclassSize 10
+
+typedef struct Clp_Internal {
+ const Clp_Option *opt;
+ Clp_InternOption *iopt;
+ int nopt;
+ unsigned opt_generation;
+
+ Clp_ValType *valtype;
+ int nvaltype;
+
+ const char * const *argv;
+ int argc;
+
+ Clp_Oclass oclass[Clp_OclassSize];
+ int noclass;
+ int long1pos;
+ int long1neg;
+ int utf8;
+
+ char option_chars[Clp_OptionCharsSize];
+ const char *xtext;
+
+ const char *program_name;
+ void (*error_handler)(Clp_Parser *, const char *);
+
+ int option_processing;
+ int current_option;
+
+ unsigned char is_short;
+ unsigned char whole_negated; /* true if negated by an option character */
+ unsigned char could_be_short;
+ unsigned char current_short;
+ unsigned char negated_by_no;
+
+ int ambiguous;
+ int ambiguous_values[MAX_AMBIGUOUS_VALUES];
+} Clp_Internal;
+
+
+struct Clp_ParserState {
+ const char * const *argv;
+ int argc;
+
+ char option_chars[Clp_OptionCharsSize];
+ const char *xtext;
+
+ int option_processing;
+
+ unsigned opt_generation;
+ int current_option;
+ unsigned char is_short;
+ unsigned char whole_negated;
+ unsigned char current_short;
+ unsigned char negated_by_no;
+};
+
+
+typedef struct Clp_StringList {
+ Clp_Option *items;
+ Clp_InternOption *iopt;
+ int nitems;
+
+ unsigned char allow_int;
+ unsigned char val_long;
+ int nitems_invalid_report;
+} Clp_StringList;
+
+
+static const Clp_Option clp_option_sentinel[] = {
+ {"", 0, Clp_NotOption, 0, 0},
+ {"", 0, Clp_Done, 0, 0},
+ {"", 0, Clp_BadOption, 0, 0},
+ {"", 0, Clp_Error, 0, 0}
+};
+
+
+static int parse_string(Clp_Parser *, const char *, int, void *);
+static int parse_int(Clp_Parser *, const char *, int, void *);
+static int parse_bool(Clp_Parser *, const char *, int, void *);
+static int parse_double(Clp_Parser *, const char *, int, void *);
+static int parse_string_list(Clp_Parser *, const char *, int, void *);
+
+static int ambiguity_error(Clp_Parser *, int, int *, const Clp_Option *,
+ const Clp_InternOption *, const char *, const char *,
+ ...);
+
+
+/*******
+ * utf8
+ **/
+
+#define U_REPLACEMENT 0xFFFD
+
+static char *
+encode_utf8(char *s, int n, int c)
+{
+ if (c < 0 || c >= 0x110000 || (c >= 0xD800 && c <= 0xDFFF))
+ c = U_REPLACEMENT;
+ if (c <= 0x7F && n >= 1)
+ *s++ = c;
+ else if (c <= 0x7FF && n >= 2) {
+ *s++ = 0xC0 | (c >> 6);
+ goto char1;
+ } else if (c <= 0xFFFF && n >= 3) {
+ *s++ = 0xE0 | (c >> 12);
+ goto char2;
+ } else if (n >= 4) {
+ *s++ = 0xF0 | (c >> 18);
+ *s++ = 0x80 | ((c >> 12) & 0x3F);
+ char2:
+ *s++ = 0x80 | ((c >> 6) & 0x3F);
+ char1:
+ *s++ = 0x80 | (c & 0x3F);
+ }
+ return s;
+}
+
+static int
+decode_utf8(const char *s, const char **cp)
+{
+ int c;
+ if ((unsigned char) *s <= 0x7F) /* 1 byte: 0x000000-0x00007F */
+ c = *s++;
+ else if ((unsigned char) *s <= 0xC1) /* bad/overlong encoding */
+ goto replacement;
+ else if ((unsigned char) *s <= 0xDF) { /* 2 bytes: 0x000080-0x0007FF */
+ if ((s[1] & 0xC0) != 0x80) /* bad encoding */
+ goto replacement;
+ c = (*s++ & 0x1F) << 6;
+ goto char1;
+ } else if ((unsigned char) *s <= 0xEF) { /* 3 bytes: 0x000800-0x00FFFF */
+ if ((s[1] & 0xC0) != 0x80 /* bad encoding */
+ || (s[2] & 0xC0) != 0x80 /* bad encoding */
+ || ((unsigned char) *s == 0xE0 /* overlong encoding */
+ && (s[1] & 0xE0) == 0x80)
+ || ((unsigned char) *s == 0xED /* encoded surrogate */
+ && (s[1] & 0xE0) == 0xA0))
+ goto replacement;
+ c = (*s++ & 0x0F) << 12;
+ goto char2;
+ } else if ((unsigned char) *s <= 0xF4) { /* 4 bytes: 0x010000-0x10FFFF */
+ if ((s[1] & 0xC0) != 0x80 /* bad encoding */
+ || (s[2] & 0xC0) != 0x80 /* bad encoding */
+ || (s[3] & 0xC0) != 0x80 /* bad encoding */
+ || ((unsigned char) *s == 0xF0 /* overlong encoding */
+ && (s[1] & 0xF0) == 0x80)
+ || ((unsigned char) *s == 0xF4 /* encoded value > 0x10FFFF */
+ && (unsigned char) s[1] >= 0x90))
+ goto replacement;
+ c = (*s++ & 0x07) << 18;
+ c += (*s++ & 0x3F) << 12;
+ char2:
+ c += (*s++ & 0x3F) << 6;
+ char1:
+ c += (*s++ & 0x3F);
+ } else {
+ replacement:
+ c = U_REPLACEMENT;
+ for (s++; (*s & 0xC0) == 0x80; s++)
+ /* nothing */;
+ }
+ if (cp)
+ *cp = s;
+ return c;
+}
+
+static int
+utf8_charlen(const char *s)
+{
+ const char *sout;
+ (void) decode_utf8(s, &sout);
+ return sout - s;
+}
+
+static int
+clp_utf8_charlen(const Clp_Internal *cli, const char *s)
+{
+ return (cli->utf8 ? utf8_charlen(s) : 1);
+}
+
+
+/*******
+ * Clp_NewParser, etc.
+ **/
+
+static int
+min_different_chars(const char *s, const char *t)
+ /* Returns the minimum number of bytes required to distinguish
+ s from t.
+ If s is shorter than t, returns strlen(s). */
+{
+ const char *sfirst = s;
+ while (*s && *t && *s == *t)
+ s++, t++;
+ if (!*s)
+ return s - sfirst;
+ else
+ return s - sfirst + 1;
+}
+
+static int
+long_as_short(const Clp_Internal *cli, const Clp_Option *o,
+ Clp_InternOption *io, int failure)
+{
+ if ((cli->long1pos || cli->long1neg) && io->ilong) {
+ const char *name = o->long_name + io->ilongoff;
+ if (cli->utf8) {
+ int c = decode_utf8(name, &name);
+ if (!*name && c && c != U_REPLACEMENT)
+ return c;
+ } else if (name[0] && !name[1])
+ return (unsigned char) name[0];
+ }
+ return failure;
+}
+
+static void
+compare_options(Clp_Parser *clp, const Clp_Option *o1, Clp_InternOption *io1,
+ const Clp_Option *o2, Clp_InternOption *io2)
+{
+ Clp_Internal *cli = clp->internal;
+ int short1, shortx1;
+
+ /* ignore meaningless combinations */
+ if ((!io1->ishort && !io1->ilong) || (!io2->ishort && !io2->ilong)
+ || !((io1->ipos && io2->ipos) || (io1->ineg && io2->ineg))
+ || o1->option_id == o2->option_id)
+ return;
+
+ /* look for duplication of short options */
+ short1 = (io1->ishort ? o1->short_name : -1);
+ shortx1 = long_as_short(cli, o1, io1, -2);
+ if (short1 >= 0 || shortx1 >= 0) {
+ int short2 = (io2->ishort ? o2->short_name : -3);
+ int shortx2 = long_as_short(cli, o2, io2, -4);
+ if (short1 == short2)
+ Clp_OptionError(clp, "CLP internal error: more than 1 option has short name %<%c%>", short1);
+ else if ((short1 == shortx2 || shortx1 == short2 || shortx1 == shortx2)
+ && ((io1->ipos && io2->ipos && cli->long1pos)
+ || (io1->ineg && io2->ineg && cli->long1neg)))
+ Clp_OptionError(clp, "CLP internal error: 1-char long name conflicts with short name %<%c%>", (short1 == shortx2 ? shortx2 : shortx1));
+ }
+
+ /* analyze longest minimum match */
+ if (io1->ilong) {
+ const char *name1 = o1->long_name + io1->ilongoff;
+
+ /* long name's first character matches short name */
+ if (io2->ishort && !io1->iprefmatch) {
+ int name1char = (cli->utf8 ? decode_utf8(name1, 0) : (unsigned char) *name1);
+ if (name1char == o2->short_name) {
+ if (io1->ipos && io2->ipos)
+ io1->lmmpos_short = 1;
+ if (io1->ineg && io2->ineg)
+ io1->lmmneg_short = 1;
+ }
+ }
+
+ /* match long name to long name */
+ if (io2->ilong) {
+ const char *name2 = o2->long_name + io2->ilongoff;
+ if (strcmp(name1, name2) == 0)
+ Clp_OptionError(clp, "CLP internal error: duplicate long name %<%s%>", name1);
+ if (io1->ipos && io2->ipos && !strncmp(name1, name2, io1->lmmpos)
+ && (!io1->iprefmatch || strncmp(name1, name2, strlen(name1))))
+ io1->lmmpos = min_different_chars(name1, name2);
+ if (io1->ineg && io2->ineg && !strncmp(name1, name2, io1->lmmneg)
+ && (!io1->iprefmatch || strncmp(name1, name2, strlen(name1))))
+ io1->lmmneg = min_different_chars(name1, name2);
+ }
+ }
+}
+
+static void
+calculate_lmm(Clp_Parser *clp, const Clp_Option *opt, Clp_InternOption *iopt, int nopt)
+{
+ int i, j;
+ for (i = 0; i < nopt; ++i) {
+ iopt[i].lmmpos = iopt[i].lmmneg = 1;
+ iopt[i].lmmpos_short = iopt[i].lmmneg_short = 0;
+ for (j = 0; j < nopt; ++j)
+ compare_options(clp, &opt[i], &iopt[i], &opt[j], &iopt[j]);
+ }
+}
+
+/** @param argc number of arguments
+ * @param argv argument array
+ * @param nopt number of option definitions
+ * @param opt option definition array
+ * @return the parser
+ *
+ * The new Clp_Parser that will parse the arguments in @a argv according to
+ * the option definitions in @a opt.
+ *
+ * The Clp_Parser is created with the following characteristics:
+ *
+ * <ul>
+ * <li>The "-" character introduces short options (<tt>Clp_SetOptionChar(clp,
+ * '-', Clp_Short)</tt>).</li>
+ * <li>Clp_ProgramName is set from the first argument in @a argv, if any. The
+ * first argument returned by Clp_Next() will be the second argument in @a
+ * argv. Note that this behavior differs from Clp_SetArguments.</li>
+ * <li>UTF-8 support is on iff the <tt>LANG</tt> environment variable contains
+ * one of the substrings "UTF-8", "UTF8", or "utf8". Override this with
+ * Clp_SetUTF8().</li>
+ * <li>The Clp_ValString, Clp_ValStringNotOption, Clp_ValInt, Clp_ValUnsigned,
+ * Clp_ValLong, Clp_ValUnsignedLong, Clp_ValBool, and Clp_ValDouble types are
+ * installed.</li>
+ * <li>Errors are reported to standard error.</li>
+ * </ul>
+ *
+ * You may also create a Clp_Parser with no arguments or options
+ * (<tt>Clp_NewParser(0, 0, 0, 0)</tt>) and set the arguments and options
+ * later.
+ *
+ * Returns NULL if there isn't enough memory to construct the parser.
+ *
+ * @note The CLP library will not modify the contents of @a argv or @a opt.
+ * The calling program must not modify @a opt. It may modify @a argv in
+ * limited cases.
+ */
+Clp_Parser *
+Clp_NewParser(int argc, const char * const *argv, int nopt, const Clp_Option *opt)
+{
+ Clp_Parser *clp = (Clp_Parser *)malloc(sizeof(Clp_Parser));
+ Clp_Internal *cli = (Clp_Internal *)malloc(sizeof(Clp_Internal));
+ Clp_InternOption *iopt = (Clp_InternOption *)malloc(sizeof(Clp_InternOption) * nopt);
+ if (cli)
+ cli->valtype = (Clp_ValType *)malloc(sizeof(Clp_ValType) * Clp_InitialValType);
+ if (!clp || !cli || !iopt || !cli->valtype)
+ goto failed;
+
+ clp->option = &clp_option_sentinel[-Clp_Done];
+ clp->negated = 0;
+ clp->have_val = 0;
+ clp->vstr = 0;
+ clp->user_data = 0;
+ clp->internal = cli;
+
+ cli->opt = opt;
+ cli->nopt = nopt;
+ cli->iopt = iopt;
+ cli->opt_generation = 0;
+ cli->error_handler = 0;
+
+ /* Assign program name (now so we can call Clp_OptionError) */
+ if (argc > 0) {
+ const char *slash = strrchr(argv[0], '/');
+ cli->program_name = slash ? slash + 1 : argv[0];
+ } else
+ cli->program_name = 0;
+
+ /* Assign arguments, skipping program name */
+ Clp_SetArguments(clp, argc - 1, argv + 1);
+
+ /* Initialize UTF-8 status and option classes */
+ {
+ char *s = getenv("LANG");
+ cli->utf8 = (s && (strstr(s, "UTF-8") != 0 || strstr(s, "UTF8") != 0
+ || strstr(s, "utf8") != 0));
+ }
+ cli->oclass[0].c = '-';
+ cli->oclass[0].type = Clp_Short;
+ cli->noclass = 1;
+ cli->long1pos = cli->long1neg = 0;
+
+ /* Add default type parsers */
+ cli->nvaltype = 0;
+ Clp_AddType(clp, Clp_ValString, 0, parse_string, 0);
+ Clp_AddType(clp, Clp_ValStringNotOption, Clp_DisallowOptions, parse_string, 0);
+ Clp_AddType(clp, Clp_ValInt, 0, parse_int, (void*) (uintptr_t) 0);
+ Clp_AddType(clp, Clp_ValUnsigned, 0, parse_int, (void*) (uintptr_t) 1);
+ Clp_AddType(clp, Clp_ValLong, 0, parse_int, (void*) (uintptr_t) 2);
+ Clp_AddType(clp, Clp_ValUnsignedLong, 0, parse_int, (void*) (uintptr_t) 3);
+ Clp_AddType(clp, Clp_ValBool, 0, parse_bool, 0);
+ Clp_AddType(clp, Clp_ValDouble, 0, parse_double, 0);
+
+ /* Set options */
+ Clp_SetOptions(clp, nopt, opt);
+
+ return clp;
+
+ failed:
+ if (cli && cli->valtype)
+ free(cli->valtype);
+ if (cli)
+ free(cli);
+ if (clp)
+ free(clp);
+ if (iopt)
+ free(iopt);
+ return 0;
+}
+
+/** @param clp the parser
+ *
+ * All memory associated with @a clp is freed. */
+void
+Clp_DeleteParser(Clp_Parser *clp)
+{
+ int i;
+ Clp_Internal *cli;
+ if (!clp)
+ return;
+
+ cli = clp->internal;
+
+ /* get rid of any string list types */
+ for (i = 0; i < cli->nvaltype; i++)
+ if (cli->valtype[i].func == parse_string_list) {
+ Clp_StringList *clsl = (Clp_StringList *)cli->valtype[i].user_data;
+ free(clsl->items);
+ free(clsl->iopt);
+ free(clsl);
+ }
+
+ free(cli->valtype);
+ free(cli->iopt);
+ free(cli);
+ free(clp);
+}
+
+
+/** @param clp the parser
+ * @param errh error handler function
+ * @return previous error handler function
+ *
+ * The error handler function is called when CLP encounters an error while
+ * parsing the command line. It is called with the arguments "<tt>(*errh)(@a
+ * clp, s)</tt>", where <tt>s</tt> is a description of the error terminated by
+ * a newline. The <tt>s</tt> descriptions produced by CLP itself are prefixed
+ * by the program name, if any. */
+Clp_ErrorHandler
+Clp_SetErrorHandler(Clp_Parser *clp, void (*errh)(Clp_Parser *, const char *))
+{
+ Clp_Internal *cli = clp->internal;
+ Clp_ErrorHandler old = cli->error_handler;
+ cli->error_handler = errh;
+ return old;
+}
+
+/** @param clp the parser
+ * @param utf8 does the parser support UTF-8?
+ * @return previous UTF-8 mode
+ *
+ * In UTF-8 mode, all input strings (arguments and long names for options) are
+ * assumed to be encoded via UTF-8, and all character names
+ * (Clp_SetOptionChar() and short names for options) may cover the whole
+ * Unicode range. Out of UTF-8 mode, all input strings are treated as binary,
+ * and all character names must be unsigned char values.
+ *
+ * Furthermore, error messages in UTF-8 mode may contain Unicode quote
+ * characters. */
+int
+Clp_SetUTF8(Clp_Parser *clp, int utf8)
+{
+ Clp_Internal *cli = clp->internal;
+ int old_utf8 = cli->utf8;
+ cli->utf8 = utf8;
+ calculate_lmm(clp, cli->opt, cli->iopt, cli->nopt);
+ return old_utf8;
+}
+
+/** @param clp the parser
+ * @param c character
+ * @return option character treatment
+ *
+ * Returns an integer specifying how CLP treats arguments that begin
+ * with character @a c. See Clp_SetOptionChar for possibilities.
+ */
+int
+Clp_OptionChar(Clp_Parser *clp, int c)
+{
+ Clp_Internal *cli = clp->internal;
+ int i, oclass = 0;
+ if (cli->noclass > 0 && cli->oclass[0].c == 0)
+ oclass = cli->oclass[0].type;
+ for (i = 0; i < cli->noclass; ++i)
+ if (cli->oclass[i].c == c)
+ oclass = cli->oclass[i].type;
+ return oclass;
+}
+
+/** @param clp the parser
+ * @param c character
+ * @param type option character treatment
+ * @return previous option character treatment, or -1 on error
+ *
+ * @a type specifies how CLP treats arguments that begin with character @a c.
+ * Possibilities are:
+ *
+ * <dl>
+ * <dt>Clp_NotOption (or 0)</dt>
+ * <dd>The argument cannot be an option.</dd>
+ * <dt>Clp_Long</dt>
+ * <dd>The argument is a long option.</dd>
+ * <dt>Clp_Short</dt>
+ * <dd>The argument is a set of short options.</dd>
+ * <dt>Clp_Short|Clp_Long</dt>
+ * <dd>The argument is either a long option or, if no matching long option is
+ * found, a set of short options.</dd>
+ * <dt>Clp_LongNegated</dt>
+ * <dd>The argument is a negated long option. For example, after
+ * Clp_SetOptionChar(@a clp, '^', Clp_LongNegated), the argument "^foo" is
+ * equivalent to "--no-foo".</dd>
+ * <dt>Clp_ShortNegated</dt>
+ * <dd>The argument is a set of negated short options.</dd>
+ * <dt>Clp_ShortNegated|Clp_LongNegated</dt>
+ * <dd>The argument is either a negated long option or, if no matching long
+ * option is found, a set of negated short options.</dd>
+ * <dt>Clp_LongImplicit</dt>
+ * <dd>The argument may be a long option, where the character @a c is actually
+ * part of the long option name. For example, after Clp_SetOptionChar(@a clp,
+ * 'f', Clp_LongImplicit), the argument "foo" may be equivalent to
+ * "--foo".</dd>
+ * </dl>
+ *
+ * In UTF-8 mode, @a c may be any Unicode character. Otherwise, @a c must be
+ * an unsigned char value. The special character 0 assigns @a type to @em
+ * every character.
+ *
+ * It is an error if @a c is out of range, @a type is illegal, or there are
+ * too many character definitions stored in @a clp already. The function
+ * returns -1 on error.
+ *
+ * A double hyphen "--" always introduces a long option. This behavior cannot
+ * currently be changed with Clp_SetOptionChar().
+ */
+int
+Clp_SetOptionChar(Clp_Parser *clp, int c, int type)
+{
+ int i, long1pos, long1neg;
+ int old = Clp_OptionChar(clp, c);
+ Clp_Internal *cli = clp->internal;
+
+ if (type != Clp_NotOption && type != Clp_Short && type != Clp_Long
+ && type != Clp_ShortNegated && type != Clp_LongNegated
+ && type != Clp_LongImplicit && type != (Clp_Short | Clp_Long)
+ && type != (Clp_ShortNegated | Clp_LongNegated))
+ return -1;
+ if (c < 0 || c >= (cli->utf8 ? 0x110000 : 256))
+ return -1;
+
+ if (c == 0)
+ cli->noclass = 0;
+ for (i = 0; i < cli->noclass; ++i)
+ if (cli->oclass[i].c == c)
+ break;
+ if (i == Clp_OclassSize)
+ return -1;
+
+ cli->oclass[i].c = c;
+ cli->oclass[i].type = type;
+ if (cli->noclass == i)
+ cli->noclass = i + 1;
+
+ long1pos = long1neg = 0;
+ for (i = 0; i < cli->noclass; ++i) {
+ if ((cli->oclass[i].type & Clp_Short)
+ && (cli->oclass[i].type & Clp_Long))
+ long1pos = 1;
+ if ((cli->oclass[i].type & Clp_ShortNegated)
+ && (cli->oclass[i].type & Clp_LongNegated))
+ long1neg = 1;
+ }
+
+ if (long1pos != cli->long1pos || long1neg != cli->long1neg) {
+ /* Must recheck option set */
+ cli->long1pos = long1pos;
+ cli->long1neg = long1neg;
+ calculate_lmm(clp, cli->opt, cli->iopt, cli->nopt);
+ }
+
+ return old;
+}
+
+/** @param clp the parser
+ * @param nopt number of option definitions
+ * @param opt option definition array
+ * @return 0 on success, -1 on failure
+ *
+ * Installs the option definitions in @a opt. Future option parsing will
+ * use @a opt to search for options.
+ *
+ * Also checks @a opt's option definitions for validity. "CLP internal
+ * errors" are reported via Clp_OptionError() if:
+ *
+ * <ul>
+ * <li>An option has a negative ID.</li>
+ * <li>Two different short options have the same name.</li>
+ * <li>Two different long options have the same name.</li>
+ * <li>A short and a long option are ambiguous, in that some option character
+ * might introduce either a short or a long option (e.g., Clp_SetOptionChar(@a
+ * clp, '-', Clp_Long|Clp_Short)), and a short name equals a long name.</li>
+ * </ul>
+ *
+ * If necessary memory cannot be allocated, this function returns -1 without
+ * modifying the parser.
+ *
+ * @note The CLP library will not modify the contents of @a argv or @a opt.
+ * The calling program must not modify @a opt either until another call to
+ * Clp_SetOptions() or the parser is destroyed.
+ */
+int
+Clp_SetOptions(Clp_Parser *clp, int nopt, const Clp_Option *opt)
+{
+ Clp_Internal *cli = clp->internal;
+ Clp_InternOption *iopt;
+ int i;
+ static unsigned opt_generation = 0;
+
+ if (nopt > cli->nopt) {
+ iopt = (Clp_InternOption *)malloc(sizeof(Clp_InternOption) * nopt);
+ if (!iopt)
+ return -1;
+ free(cli->iopt);
+ cli->iopt = iopt;
+ }
+
+ cli->opt = opt;
+ cli->nopt = nopt;
+ cli->opt_generation = ++opt_generation;
+ iopt = cli->iopt;
+ cli->current_option = -1;
+
+ /* Massage the options to make them usable */
+ for (i = 0; i < nopt; ++i) {
+ memset(&iopt[i], 0, sizeof(iopt[i]));
+
+ /* Ignore negative option_ids, which are internal to CLP */
+ if (opt[i].option_id < 0) {
+ Clp_OptionError(clp, "CLP internal error: option %d has negative option_id", i);
+ iopt[i].ilong = iopt[i].ishort = iopt[i].ipos = iopt[i].ineg = 0;
+ continue;
+ }
+
+ /* Set flags based on input flags */
+ iopt[i].ilong = (opt[i].long_name != 0 && opt[i].long_name[0] != 0);
+ iopt[i].ishort = (opt[i].short_name > 0
+ && opt[i].short_name < (cli->utf8 ? 0x110000 : 256));
+ iopt[i].ipos = 1;
+ iopt[i].ineg = (opt[i].flags & Clp_Negate) != 0;
+ iopt[i].imandatory = (opt[i].flags & Clp_Mandatory) != 0;
+ iopt[i].ioptional = (opt[i].flags & Clp_Optional) != 0;
+ iopt[i].iprefmatch = (opt[i].flags & Clp_PreferredMatch) != 0;
+ iopt[i].ilongoff = 0;
+
+ /* Enforce invariants */
+ if (opt[i].val_type <= 0)
+ iopt[i].imandatory = iopt[i].ioptional = 0;
+ if (opt[i].val_type > 0 && !iopt[i].ioptional)
+ iopt[i].imandatory = 1;
+
+ /* Options that start with 'no-' should be changed to OnlyNegated */
+ if (iopt[i].ilong && strncmp(opt[i].long_name, "no-", 3) == 0) {
+ iopt[i].ipos = 0;
+ iopt[i].ineg = 1;
+ iopt[i].ilongoff = 3;
+ if (strncmp(opt[i].long_name + 3, "no-", 3) == 0)
+ Clp_OptionError(clp, "CLP internal error: option %d begins with \"no-no-\"", i);
+ } else if (opt[i].flags & Clp_OnlyNegated) {
+ iopt[i].ipos = 0;
+ iopt[i].ineg = 1;
+ }
+ }
+
+ /* Check option set */
+ calculate_lmm(clp, opt, iopt, nopt);
+
+ return 0;
+}
+
+/** @param clp the parser
+ * @param argc number of arguments
+ * @param argv argument array
+ *
+ * Installs the arguments in @a argv for parsing. Future option parsing will
+ * analyze @a argv.
+ *
+ * Unlike Clp_NewParser(), this function does not treat @a argv[0] specially.
+ * The first subsequent call to Clp_Next() will analyze @a argv[0].
+ *
+ * This function also sets option processing to on, as by
+ * Clp_SetOptionProcessing(@a clp, 1).
+ *
+ * @note The CLP library will not modify the contents of @a argv. The calling
+ * program should not generally modify the element of @a argv that CLP is
+ * currently analyzing.
+ */
+void
+Clp_SetArguments(Clp_Parser *clp, int argc, const char * const *argv)
+{
+ Clp_Internal *cli = clp->internal;
+
+ cli->argc = argc + 1;
+ cli->argv = argv - 1;
+
+ cli->is_short = 0;
+ cli->whole_negated = 0;
+ cli->option_processing = 1;
+ cli->current_option = -1;
+}
+
+
+/** @param clp the parser
+ * @param on whether to search for options
+ * @return previous option processing setting
+ *
+ * When option processing is off, every call to Clp_Next() returns
+ * Clp_NotOption. By default the option <tt>"--"</tt> turns off option
+ * processing and is otherwise ignored.
+ */
+int
+Clp_SetOptionProcessing(Clp_Parser *clp, int on)
+{
+ Clp_Internal *cli = clp->internal;
+ int old = cli->option_processing;
+ cli->option_processing = on;
+ return old;
+}
+
+
+/*******
+ * functions for Clp_Option lists
+ **/
+
+/* the ever-glorious argcmp */
+
+static int
+argcmp(const char *ref, const char *arg, int min_match, int fewer_dashes)
+ /* Returns 0 if ref and arg don't match.
+ Returns -1 if ref and arg match, but fewer than min_match characters.
+ Returns len if ref and arg match min_match or more characters;
+ len is the number of characters that matched in arg.
+ Allows arg to contain fewer dashes than ref iff fewer_dashes != 0.
+
+ Examples:
+ argcmp("x", "y", 1, 0) --> 0 / just plain wrong
+ argcmp("a", "ax", 1, 0) --> 0 / ...even though min_match == 1
+ and the 1st chars match
+ argcmp("box", "bo", 3, 0) --> -1 / ambiguous
+ argcmp("cat", "c=3", 1, 0) --> 1 / handles = arguments
+ */
+{
+ const char *refstart = ref;
+ const char *argstart = arg;
+ assert(min_match > 0);
+
+ compare:
+ while (*ref && *arg && *arg != '=' && *ref == *arg)
+ ref++, arg++;
+
+ /* Allow arg to contain fewer dashes than ref */
+ if (fewer_dashes && *ref == '-' && ref[1] && ref[1] == *arg) {
+ ref++;
+ goto compare;
+ }
+
+ if (*arg && *arg != '=')
+ return 0;
+ else if (ref - refstart < min_match)
+ return -1;
+ else
+ return arg - argstart;
+}
+
+static int
+find_prefix_opt(Clp_Parser *clp, const char *arg,
+ int nopt, const Clp_Option *opt,
+ const Clp_InternOption *iopt,
+ int *ambiguous, int *ambiguous_values)
+ /* Looks for an unambiguous match of 'arg' against one of the long
+ options in 'opt'. Returns positive if it finds one; otherwise, returns
+ -1 and possibly changes 'ambiguous' and 'ambiguous_values' to keep
+ track of at most MAX_AMBIGUOUS_VALUES possibilities. */
+{
+ int i, fewer_dashes = 0, first_ambiguous = *ambiguous;
+ int negated = clp && clp->negated;
+ int first_charlen = (clp ? clp_utf8_charlen(clp->internal, arg) : 1);
+
+ retry:
+ for (i = 0; i < nopt; i++) {
+ int len, lmm;
+ if (!iopt[i].ilong || (negated ? !iopt[i].ineg : !iopt[i].ipos))
+ continue;
+
+ lmm = (negated ? iopt[i].lmmneg : iopt[i].lmmpos);
+ if (clp && clp->internal->could_be_short
+ && (negated ? iopt[i].lmmneg_short : iopt[i].lmmpos_short))
+ lmm = (first_charlen >= lmm ? first_charlen + 1 : lmm);
+ len = argcmp(opt[i].long_name + iopt[i].ilongoff, arg, lmm, fewer_dashes);
+ if (len > 0)
+ return i;
+ else if (len < 0) {
+ if (*ambiguous < MAX_AMBIGUOUS_VALUES)
+ ambiguous_values[*ambiguous] = i;
+ (*ambiguous)++;
+ }
+ }
+
+ /* If there were no partial matches, try again with fewer_dashes true */
+ if (*ambiguous == first_ambiguous && !fewer_dashes) {
+ fewer_dashes = 1;
+ goto retry;
+ }
+
+ return -1;
+}
+
+
+/*****
+ * Argument parsing
+ **/
+
+static int
+val_type_binsearch(Clp_Internal *cli, int val_type)
+{
+ unsigned l = 0, r = cli->nvaltype;
+ while (l < r) {
+ unsigned m = l + (r - l) / 2;
+ if (cli->valtype[m].val_type == val_type)
+ return m;
+ else if (cli->valtype[m].val_type < val_type)
+ l = m + 1;
+ else
+ r = m;
+ }
+ return l;
+}
+
+/** @param clp the parser
+ * @param val_type value type ID
+ * @param flags value type flags
+ * @param parser parser function
+ * @param user_data user data for @a parser function
+ * @return 0 on success, -1 on failure
+ *
+ * Defines argument type @a val_type in parser @a clp. The parsing function
+ * @a parser will be passed argument values for type @a val_type. It should
+ * parse the argument into values (usually in @a clp->val, but sometimes
+ * elsewhere), report errors if necessary, and return whether the parse was
+ * successful.
+ *
+ * Any prior argument parser match @a val_type is removed. @a val_type must
+ * be greater than zero.
+ *
+ * @a flags specifies additional parsing flags. At the moment the only
+ * relevant flag is Clp_DisallowOptions, which means that separated values
+ * must not look like options. For example, assume argument
+ * <tt>--a</tt>/<tt>-a</tt> has mandatory value type Clp_ValStringNotOption
+ * (which has Clp_DisallowOptions). Then:
+ *
+ * <ul>
+ * <li><tt>--a=--b</tt> will parse with value <tt>--b</tt>.</li>
+ * <li><tt>-a--b</tt> will parse with value <tt>--b</tt>.</li>
+ * <li><tt>--a --b</tt> will not parse, since the mandatory value looks like
+ * an option.</li>
+ * <li><tt>-a --b</tt> will not parse, since the mandatory value looks like
+ * an option.</li>
+ * </ul>
+ */
+int
+Clp_AddType(Clp_Parser *clp, int val_type, int flags,
+ Clp_ValParseFunc parser, void *user_data)
+{
+ Clp_Internal *cli = clp->internal;
+ int vtpos;
+
+ if (val_type <= 0 || !parser)
+ return -1;
+
+ vtpos = val_type_binsearch(cli, val_type);
+
+ if (vtpos == cli->nvaltype || cli->valtype[vtpos].val_type != val_type) {
+ if (cli->nvaltype != 0 && (cli->nvaltype % Clp_InitialValType) == 0) {
+ Clp_ValType *new_valtype =
+ (Clp_ValType *) realloc(cli->valtype, sizeof(Clp_ValType) * (cli->nvaltype + Clp_InitialValType));
+ if (!new_valtype)
+ return -1;
+ cli->valtype = new_valtype;
+ }
+ memmove(&cli->valtype[vtpos + 1], &cli->valtype[vtpos],
+ sizeof(Clp_ValType) * (cli->nvaltype - vtpos));
+ cli->nvaltype++;
+ cli->valtype[vtpos].func = 0;
+ }
+
+ if (cli->valtype[vtpos].func == parse_string_list) {
+ Clp_StringList *clsl = (Clp_StringList *) cli->valtype[vtpos].user_data;
+ free(clsl->items);
+ free(clsl->iopt);
+ free(clsl);
+ }
+
+ cli->valtype[vtpos].val_type = val_type;
+ cli->valtype[vtpos].func = parser;
+ cli->valtype[vtpos].flags = flags;
+ cli->valtype[vtpos].user_data = user_data;
+ return 0;
+}
+
+
+/*******
+ * Default argument parsers
+ **/
+
+static int
+parse_string(Clp_Parser *clp, const char *arg, int complain, void *user_data)
+{
+ (void)complain, (void)user_data;
+ clp->val.s = arg;
+ return 1;
+}
+
+static int
+parse_int(Clp_Parser* clp, const char* arg, int complain, void* user_data)
+{
+ const char *val;
+ char *temp;
+ uintptr_t type = (uintptr_t) user_data;
+ if (*arg == 0 || isspace((unsigned char) *arg)
+ || ((type & 1) && *arg == '-'))
+ val = arg;
+ else if (type & 1) { /* unsigned */
+#if HAVE_STRTOUL
+ clp->val.ul = strtoul(arg, &temp, 0);
+ val = temp;
+#else
+ /* don't bother really trying to do it right */
+ if (arg[0] == '-')
+ val = arg;
+ else {
+ clp->val.l = strtol(arg, &temp, 0);
+ val = temp;
+ }
+#endif
+ } else {
+ clp->val.l = strtol(arg, &temp, 0);
+ val = temp;
+ }
+ if (type <= 1)
+ clp->val.u = (unsigned) clp->val.ul;
+ if (*arg != 0 && *val == 0)
+ return 1;
+ else {
+ if (complain) {
+ const char *message = type & 1
+ ? "%<%O%> expects a nonnegative integer, not %<%s%>"
+ : "%<%O%> expects an integer, not %<%s%>";
+ Clp_OptionError(clp, message, arg);
+ }
+ return 0;
+ }
+}
+
+static int
+parse_double(Clp_Parser *clp, const char *arg, int complain, void *user_data)
+{
+ const char *val;
+ char *temp;
+ (void)user_data;
+ if (*arg == 0 || isspace((unsigned char) *arg))
+ val = arg;
+ else {
+ clp->val.d = strtod(arg, &temp);
+ val = temp;
+ }
+ if (*arg != 0 && *val == 0)
+ return 1;
+ else {
+ if (complain)
+ Clp_OptionError(clp, "%<%O%> expects a real number, not %<%s%>", arg);
+ return 0;
+ }
+}
+
+static int
+parse_bool(Clp_Parser *clp, const char *arg, int complain, void *user_data)
+{
+ int i;
+ char lcarg[6];
+ (void)user_data;
+ if (strlen(arg) > 5 || strchr(arg, '=') != 0)
+ goto error;
+
+ for (i = 0; arg[i] != 0; i++)
+ lcarg[i] = tolower((unsigned char) arg[i]);
+ lcarg[i] = 0;
+
+ if (argcmp("yes", lcarg, 1, 0) > 0
+ || argcmp("true", lcarg, 1, 0) > 0
+ || argcmp("1", lcarg, 1, 0) > 0) {
+ clp->val.i = 1;
+ return 1;
+ } else if (argcmp("no", lcarg, 1, 0) > 0
+ || argcmp("false", lcarg, 1, 0) > 0
+ || argcmp("1", lcarg, 1, 0) > 0) {
+ clp->val.i = 0;
+ return 1;
+ }
+
+ error:
+ if (complain)
+ Clp_OptionError(clp, "%<%O%> expects a true-or-false value, not %<%s%>", arg);
+ return 0;
+}
+
+
+/*****
+ * Clp_AddStringListType
+ **/
+
+static int
+parse_string_list(Clp_Parser *clp, const char *arg, int complain, void *user_data)
+{
+ Clp_StringList *sl = (Clp_StringList *)user_data;
+ int idx, ambiguous = 0;
+ int ambiguous_values[MAX_AMBIGUOUS_VALUES + 1];
+
+ /* actually look for a string value */
+ idx = find_prefix_opt
+ (0, arg, sl->nitems, sl->items, sl->iopt,
+ &ambiguous, ambiguous_values);
+ if (idx >= 0) {
+ clp->val.i = sl->items[idx].option_id;
+ if (sl->val_long)
+ clp->val.l = clp->val.i;
+ return 1;
+ }
+
+ if (sl->allow_int) {
+ if (parse_int(clp, arg, 0, (void*) (uintptr_t) (sl->val_long ? 2 : 0)))
+ return 1;
+ }
+
+ if (complain) {
+ const char *complaint = (ambiguous ? "ambiguous" : "invalid");
+ if (!ambiguous) {
+ ambiguous = sl->nitems_invalid_report;
+ for (idx = 0; idx < ambiguous; idx++)
+ ambiguous_values[idx] = idx;
+ }
+ return ambiguity_error
+ (clp, ambiguous, ambiguous_values, sl->items, sl->iopt,
+ "", "option %<%V%> is %s", complaint);
+ } else
+ return 0;
+}
+
+
+static int
+finish_string_list(Clp_Parser *clp, int val_type, int flags,
+ Clp_Option *items, int nitems, int itemscap)
+{
+ int i;
+ Clp_StringList *clsl = (Clp_StringList *)malloc(sizeof(Clp_StringList));
+ Clp_InternOption *iopt = (Clp_InternOption *)malloc(sizeof(Clp_InternOption) * nitems);
+ if (!clsl || !iopt)
+ goto error;
+
+ clsl->items = items;
+ clsl->iopt = iopt;
+ clsl->nitems = nitems;
+ clsl->allow_int = (flags & Clp_AllowNumbers) != 0;
+ clsl->val_long = (flags & Clp_StringListLong) != 0;
+
+ if (nitems < MAX_AMBIGUOUS_VALUES && nitems < itemscap && clsl->allow_int) {
+ items[nitems].long_name = "any integer";
+ clsl->nitems_invalid_report = nitems + 1;
+ } else if (nitems > MAX_AMBIGUOUS_VALUES + 1)
+ clsl->nitems_invalid_report = MAX_AMBIGUOUS_VALUES + 1;
+ else
+ clsl->nitems_invalid_report = nitems;
+
+ for (i = 0; i < nitems; i++) {
+ iopt[i].ilong = iopt[i].ipos = 1;
+ iopt[i].ishort = iopt[i].ineg = iopt[i].ilongoff = iopt[i].iprefmatch = 0;
+ }
+ calculate_lmm(clp, items, iopt, nitems);
+
+ if (Clp_AddType(clp, val_type, 0, parse_string_list, clsl) >= 0)
+ return 0;
+
+ error:
+ if (clsl)
+ free(clsl);
+ if (iopt)
+ free(iopt);
+ return -1;
+}
+
+/** @param clp the parser
+ * @param val_type value type ID
+ * @param flags string list flags
+ * @return 0 on success, -1 on failure
+ *
+ * Defines argument type @a val_type in parser @a clp. The parsing function
+ * sets @a clp->val.i to an integer. The value string is matched against
+ * strings provided in the ellipsis arguments. For example, the
+ * Clp_AddStringListType() call below has the same effect as the
+ * Clp_AddStringListTypeVec() call:
+ *
+ * For example:
+ * @code
+ * Clp_AddStringListType(clp, 100, Clp_AllowNumbers, "cat", 1,
+ * "cattle", 2, "dog", 3, (const char *) NULL);
+ *
+ * const char * const strs[] = { "cat", "cattle", "dog" };
+ * const int vals[] = { 1, 2, 3 };
+ * Clp_AddStringListTypeVec(clp, 100, Clp_AllowNumbers, 3, strs, vals);
+ * @endcode
+ *
+ * @note The CLP library will not modify any of the passed-in strings. The
+ * calling program must not modify or free them either until the parser is
+ * destroyed.
+ */
+int
+Clp_AddStringListType(Clp_Parser *clp, int val_type, int flags, ...)
+{
+ int nitems = 0;
+ int itemscap = 5;
+ Clp_Option *items = (Clp_Option *)malloc(sizeof(Clp_Option) * itemscap);
+
+ va_list val;
+ va_start(val, flags);
+
+ if (!items)
+ goto error;
+
+ /* slurp up the arguments */
+ while (1) {
+ int value;
+ char *name = va_arg(val, char *);
+ if (!name)
+ break;
+ if (flags & Clp_StringListLong) {
+ long lvalue = va_arg(val, long);
+ value = (int) lvalue;
+ assert(value == lvalue);
+ } else
+ value = va_arg(val, int);
+
+ if (nitems >= itemscap) {
+ Clp_Option *new_items;
+ itemscap *= 2;
+ new_items = (Clp_Option *)realloc(items, sizeof(Clp_Option) * itemscap);
+ if (!new_items)
+ goto error;
+ items = new_items;
+ }
+
+ items[nitems].long_name = name;
+ items[nitems].option_id = value;
+ items[nitems].flags = 0;
+ nitems++;
+ }
+
+ va_end(val);
+ if (finish_string_list(clp, val_type, flags, items, nitems, itemscap) >= 0)
+ return 0;
+
+ error:
+ va_end(val);
+ if (items)
+ free(items);
+ return -1;
+}
+
+/** @param clp the parser
+ * @param val_type value type ID
+ * @param flags string list flags
+ * @param nstrs number of strings in list
+ * @param strs array of strings
+ * @param vals array of values
+ * @return 0 on success, -1 on failure
+ *
+ * Defines argument type @a val_type in parser @a clp. The parsing function
+ * sets @a clp->val.i to an integer. The value string is matched against the
+ * @a strs. If there's a unique match, the corresponding entry from @a vals
+ * is returned. Unique prefix matches also work. Finally, if @a flags
+ * contains the Clp_AllowNumbers flag, then integers are also accepted.
+ *
+ * For example:
+ * @code
+ * const char * const strs[] = { "cat", "cattle", "dog" };
+ * const int vals[] = { 1, 2, 3 };
+ * Clp_AddStringListTypeVec(clp, 100, Clp_AllowNumbers, 3, strs, vals);
+ * @endcode
+ *
+ * Say that option <tt>--animal</tt> takes value type 100. Then:
+ *
+ * <ul>
+ * <li><tt>--animal=cat</tt> will succeed and set @a clp->val.i = 1.</li>
+ * <li><tt>--animal=cattle</tt> will succeed and set @a clp->val.i = 2.</li>
+ * <li><tt>--animal=dog</tt> will succeed and set @a clp->val.i = 3.</li>
+ * <li><tt>--animal=d</tt> will succeed and set @a clp->val.i = 3.</li>
+ * <li><tt>--animal=c</tt> will fail, since <tt>c</tt> is ambiguous.</li>
+ * <li><tt>--animal=4</tt> will succeed and set @a clp->val.i = 4.</li>
+ * </ul>
+ *
+ * @note The CLP library will not modify the contents of @a strs or @a vals.
+ * The calling program can modify the @a strs array, but the actual strings
+ * (for instance, @a strs[0] and @a strs[1]) must not be modified or freed
+ * until the parser is destroyed.
+ */
+int
+Clp_AddStringListTypeVec(Clp_Parser *clp, int val_type, int flags,
+ int nstrs, const char * const *strs,
+ const int *vals)
+ /* An alternate way to make a string list type. See Clp_AddStringListType
+ for the basics; this coalesces the strings and values into two arrays,
+ rather than spreading them out into a variable argument list. */
+{
+ int i;
+ int itemscap = (nstrs < 5 ? 5 : nstrs);
+ Clp_Option *items = (Clp_Option *)malloc(sizeof(Clp_Option) * itemscap);
+ if (!items)
+ return -1;
+
+ /* copy over items */
+ for (i = 0; i < nstrs; i++) {
+ items[i].long_name = strs[i];
+ items[i].option_id = vals[i];
+ items[i].flags = 0;
+ }
+
+ if (finish_string_list(clp, val_type, flags, items, nstrs, itemscap) >= 0)
+ return 0;
+ else {
+ free(items);
+ return -1;
+ }
+}
+
+
+/*******
+ * Returning information
+ **/
+
+const char *
+Clp_ProgramName(Clp_Parser *clp)
+{
+ return clp->internal->program_name;
+}
+
+/** @param clp the parser
+ * @param name new program name
+ * @return previous program name
+ *
+ * The calling program should not modify or free @a name until @a clp itself
+ * is destroyed. */
+const char *
+Clp_SetProgramName(Clp_Parser *clp, const char *name)
+{
+ const char *old = clp->internal->program_name;
+ clp->internal->program_name = name;
+ return old;
+}
+
+
+/******
+ * Clp_ParserStates
+ **/
+
+/** @return the parser state
+ *
+ * A Clp_ParserState object can store a parsing state of a Clp_Parser object.
+ * This state specifies exactly how far the Clp_Parser has gotten in parsing
+ * an argument list. The Clp_SaveParser() and Clp_RestoreParser() functions
+ * can be used to save this state and then restore it later, allowing a
+ * Clp_Parser to switch among argument lists.
+ *
+ * The initial state is empty, in that after Clp_RestoreParser(clp, state),
+ * Clp_Next(clp) would return Clp_Done.
+ *
+ * Parser states can be saved and restored among different parser objects.
+ *
+ * @sa Clp_DeleteParserState, Clp_SaveParser, Clp_RestoreParser
+ */
+Clp_ParserState *
+Clp_NewParserState(void)
+{
+ Clp_ParserState *state = (Clp_ParserState *)malloc(sizeof(Clp_ParserState));
+ if (state) {
+ state->argv = 0;
+ state->argc = 0;
+ state->option_chars[0] = 0;
+ state->xtext = 0;
+ state->option_processing = 0;
+ state->opt_generation = 0;
+ state->current_option = -1;
+ state->is_short = 0;
+ state->whole_negated = 0;
+ state->current_short = 0;
+ state->negated_by_no = 0;
+ }
+ return state;
+}
+
+/** @param state parser state
+ *
+ * The memory associated with @a state is freed.
+ */
+void
+Clp_DeleteParserState(Clp_ParserState *state)
+{
+ free(state);
+}
+
+/** @param clp the parser
+ * @param state parser state
+ * @sa Clp_NewParserState, Clp_RestoreParser
+ */
+void
+Clp_SaveParser(const Clp_Parser *clp, Clp_ParserState *state)
+{
+ Clp_Internal *cli = clp->internal;
+ state->argv = cli->argv;
+ state->argc = cli->argc;
+ memcpy(state->option_chars, cli->option_chars, Clp_OptionCharsSize);
+ state->xtext = cli->xtext;
+
+ state->option_processing = cli->option_processing;
+ state->opt_generation = cli->opt_generation;
+ state->current_option = cli->current_option;
+ state->is_short = cli->is_short;
+ state->whole_negated = cli->whole_negated;
+ state->current_short = cli->current_short;
+ state->negated_by_no = cli->negated_by_no;
+}
+
+
+/** @param clp the parser
+ * @param state parser state
+ *
+ * The parser state in @a state is restored into @a clp. The next call to
+ * Clp_Next() will return the same result as it would have at the time @a
+ * state was saved (probably by Clp_SaveParser(@a clp, @a state)).
+ *
+ * A parser state contains information about arguments (argc and argv; see
+ * Clp_SetArguments()) and option processing (Clp_SetOptionProcessing()), but
+ * not about options (Clp_SetOptions()). Changes to options and value types
+ * are preserved across Clp_RestoreParser().
+ *
+ * @sa Clp_NewParserState, Clp_SaveParser
+ */
+void
+Clp_RestoreParser(Clp_Parser *clp, const Clp_ParserState *state)
+{
+ Clp_Internal *cli = clp->internal;
+ cli->argv = state->argv;
+ cli->argc = state->argc;
+ memcpy(cli->option_chars, state->option_chars, Clp_OptionCharsSize);
+ cli->xtext = state->xtext;
+ cli->option_processing = state->option_processing;
+ cli->is_short = state->is_short;
+ cli->whole_negated = state->whole_negated;
+ cli->current_short = state->current_short;
+ cli->negated_by_no = state->negated_by_no;
+ if (cli->opt_generation == state->opt_generation)
+ cli->current_option = state->current_option;
+ else
+ cli->current_option = -1;
+}
+
+
+/*******
+ * Clp_Next and its helpers
+ **/
+
+static void
+set_option_text(Clp_Internal *cli, const char *text, int n_option_chars)
+{
+ assert(n_option_chars < Clp_OptionCharsSize);
+ memcpy(cli->option_chars, text, n_option_chars);
+ cli->option_chars[n_option_chars] = 0;
+ cli->xtext = text + n_option_chars;
+}
+
+static int
+get_oclass(Clp_Parser *clp, const char *text, int *ocharskip)
+{
+ int c;
+ if (clp->internal->utf8) {
+ const char *s;
+ c = decode_utf8(text, &s);
+ *ocharskip = s - text;
+ } else {
+ c = (unsigned char) text[0];
+ *ocharskip = 1;
+ }
+ return Clp_OptionChar(clp, c);
+}
+
+static int
+next_argument(Clp_Parser *clp, int want_argument)
+ /* Moves clp to the next argument.
+ Returns 1 if it finds another option.
+ Returns 0 if there aren't any more arguments.
+ Returns 0, sets clp->have_val = 1, and sets clp->vstr to the argument
+ if the next argument isn't an option.
+ If want_argument > 0, it'll look for an argument.
+ want_argument == 1: Accept arguments that start with Clp_NotOption
+ or Clp_LongImplicit.
+ want_argument == 2: Accept ALL arguments.
+
+ Where is the option stored when this returns?
+ Well, cli->argv[0] holds the whole of the next command line argument.
+ cli->option_chars holds a string: what characters began the option?
+ It is generally "-" or "--".
+ cli->text holds the text of the option:
+ for short options, cli->text[0] is the relevant character;
+ for long options, cli->text holds the rest of the option. */
+{
+ Clp_Internal *cli = clp->internal;
+ const char *text;
+ int oclass, ocharskip;
+
+ /* clear relevant flags */
+ clp->have_val = 0;
+ clp->vstr = 0;
+ cli->could_be_short = 0;
+
+ /* if we're in a string of short options, move up one char in the string */
+ if (cli->is_short) {
+ cli->xtext += clp_utf8_charlen(cli, cli->xtext);
+ if (cli->xtext[0] == 0)
+ cli->is_short = 0;
+ else if (want_argument > 0) {
+ /* handle -O[=]argument case */
+ clp->have_val = 1;
+ if (cli->xtext[0] == '=')
+ clp->vstr = cli->xtext + 1;
+ else
+ clp->vstr = cli->xtext;
+ cli->is_short = 0;
+ return 0;
+ }
+ }
+
+ /* if in short options, we're all set */
+ if (cli->is_short)
+ return 1;
+
+ /** if not in short options, move to the next argument **/
+ cli->whole_negated = 0;
+ cli->xtext = 0;
+
+ if (cli->argc <= 1)
+ return 0;
+
+ cli->argc--;
+ cli->argv++;
+ text = cli->argv[0];
+
+ if (want_argument > 1)
+ goto not_option;
+
+ if (text[0] == '-' && text[1] == '-') {
+ oclass = Clp_DoubledLong;
+ ocharskip = 2;
+ } else
+ oclass = get_oclass(clp, text, &ocharskip);
+
+ /* If this character could introduce either a short or a long option,
+ try a long option first, but remember that short's a possibility for
+ later. */
+ if ((oclass & (Clp_Short | Clp_ShortNegated))
+ && (oclass & (Clp_Long | Clp_LongNegated))) {
+ oclass &= ~(Clp_Short | Clp_ShortNegated);
+ if (text[ocharskip])
+ cli->could_be_short = 1;
+ }
+
+ switch (oclass) {
+
+ case Clp_Short:
+ cli->is_short = 1;
+ goto check_singleton;
+
+ case Clp_ShortNegated:
+ cli->is_short = 1;
+ cli->whole_negated = 1;
+ goto check_singleton;
+
+ case Clp_Long:
+ goto check_singleton;
+
+ case Clp_LongNegated:
+ cli->whole_negated = 1;
+ goto check_singleton;
+
+ check_singleton:
+ /* For options introduced with one character, option-char,
+ '[option-char]' alone is NOT an option. */
+ if (!text[ocharskip])
+ goto not_option;
+ set_option_text(cli, text, ocharskip);
+ break;
+
+ case Clp_LongImplicit:
+ /* LongImplict: option_chars == "" (since all chars are part of the
+ option); restore head -> text of option */
+ if (want_argument > 0)
+ goto not_option;
+ set_option_text(cli, text, 0);
+ break;
+
+ case Clp_DoubledLong:
+ set_option_text(cli, text, ocharskip);
+ break;
+
+ not_option:
+ case Clp_NotOption:
+ cli->is_short = 0;
+ clp->have_val = 1;
+ clp->vstr = text;
+ return 0;
+
+ default:
+ assert(0 /* CLP misconfiguration: bad option type */);
+
+ }
+
+ return 1;
+}
+
+
+static void
+switch_to_short_argument(Clp_Parser *clp)
+{
+ Clp_Internal *cli = clp->internal;
+ const char *text = cli->argv[0];
+ int ocharskip, oclass = get_oclass(clp, text, &ocharskip);
+ assert(cli->could_be_short);
+ cli->is_short = 1;
+ cli->whole_negated = (oclass & Clp_ShortNegated ? 1 : 0);
+ set_option_text(cli, cli->argv[0], ocharskip);
+}
+
+
+static int
+find_long(Clp_Parser *clp, const char *arg)
+ /* If arg corresponds to one of clp's options, finds that option &
+ returns it. If any argument is given after an = sign in arg, sets
+ clp->have_val = 1 and clp->vstr to that argument. Sets cli->ambiguous
+ to 1 iff there was no match because the argument was ambiguous. */
+{
+ Clp_Internal *cli = clp->internal;
+ int optno, len, lmm;
+ const Clp_Option *opt = cli->opt;
+ const Clp_InternOption *iopt;
+ int first_negative_ambiguous;
+
+ /* Look for a normal option. */
+ optno = find_prefix_opt
+ (clp, arg, cli->nopt, opt, cli->iopt,
+ &cli->ambiguous, cli->ambiguous_values);
+ if (optno >= 0)
+ goto worked;
+
+ /* If we can't find it, look for a negated option. */
+ /* I know this is silly, but it makes me happy to accept
+ --no-no-option as a double negative synonym for --option. :) */
+ first_negative_ambiguous = cli->ambiguous;
+ while (arg[0] == 'n' && arg[1] == 'o' && arg[2] == '-') {
+ arg += 3;
+ clp->negated = !clp->negated;
+ optno = find_prefix_opt
+ (clp, arg, cli->nopt, opt, cli->iopt,
+ &cli->ambiguous, cli->ambiguous_values);
+ if (optno >= 0)
+ goto worked;
+ }
+
+ /* No valid option was found; return 0. Mark the ambiguous values found
+ through '--no' by making them negative. */
+ {
+ int i, max = cli->ambiguous;
+ if (max > MAX_AMBIGUOUS_VALUES) max = MAX_AMBIGUOUS_VALUES;
+ for (i = first_negative_ambiguous; i < max; i++)
+ cli->ambiguous_values[i] = -cli->ambiguous_values[i] - 1;
+ }
+ return -1;
+
+ worked:
+ iopt = &cli->iopt[optno];
+ lmm = (clp->negated ? iopt->lmmneg : iopt->lmmpos);
+ if (cli->could_be_short
+ && (clp->negated ? iopt->lmmneg_short : iopt->lmmpos_short)) {
+ int first_charlen = clp_utf8_charlen(cli, arg);
+ lmm = (first_charlen >= lmm ? first_charlen + 1 : lmm);
+ }
+ len = argcmp(opt[optno].long_name + iopt->ilongoff, arg, lmm, 1);
+ assert(len > 0);
+ if (arg[len] == '=') {
+ clp->have_val = 1;
+ clp->vstr = arg + len + 1;
+ }
+ return optno;
+}
+
+
+static int
+find_short(Clp_Parser *clp, const char *text)
+ /* If short_name corresponds to one of clp's options, returns it. */
+{
+ Clp_Internal *cli = clp->internal;
+ const Clp_Option *opt = cli->opt;
+ const Clp_InternOption *iopt = cli->iopt;
+ int i, c;
+ if (clp->internal->utf8)
+ c = decode_utf8(text, 0);
+ else
+ c = (unsigned char) *text;
+
+ for (i = 0; i < cli->nopt; i++)
+ if (iopt[i].ishort && opt[i].short_name == c
+ && (!clp->negated || iopt[i].ineg)) {
+ clp->negated = clp->negated || !iopt[i].ipos;
+ return i;
+ }
+
+ return -1;
+}
+
+
+/** @param clp the parser
+ * @return option ID of next option
+ *
+ * Parse the next argument from the argument list, store information about
+ * that argument in the fields of @a clp, and return the option's ID.
+ *
+ * If an argument was successfully parsed, that option's ID is returned.
+ * Other possible return values are:
+ *
+ * <dl>
+ * <dt>Clp_Done</dt>
+ * <dd>There are no more arguments.</dd>
+ * <dt>Clp_NotOption</dt>
+ * <dd>The next argument was not an option. The argument's text is @a
+ * clp->vstr (and @a clp->val.s).</dd>
+ * <dt>Clp_BadOption</dt>
+ * <dd>The next argument was a bad option: either an option that wasn't
+ * understood, or an option lacking a required value, or an option whose value
+ * couldn't be parsed. The option has been skipped.</dd>
+ * <dt>Clp_Error</dt>
+ * <dd>There was an internal error. This should never occur unless a user
+ * messes with, for example, a Clp_Option array.</dd>
+ * </dl>
+ *
+ * The fields of @a clp are set as follows.
+ *
+ * <dl>
+ * <dt><tt>negated</tt></dt>
+ * <dd>1 if the option was negated, 0 if it wasn't.</dd>
+ * <dt><tt>have_val</tt></dt>
+ * <dd>1 if the option had a value, 0 if it didn't. Note that negated options
+ * are not allowed to have values.</dd>
+ * <dt><tt>vstr</tt></dt>
+ * <dd>The value string, if any. NULL if there was no value.</dd>
+ * <dt><tt>val</tt></dt>
+ * <dd>An option's value type will parse the value string into this
+ * union.</dd>
+ * </dl>
+ *
+ * The parsed argument is shifted off the argument list, so that sequential
+ * calls to Clp_Next() step through the argument list.
+ */
+int
+Clp_Next(Clp_Parser *clp)
+{
+ Clp_Internal *cli = clp->internal;
+ int optno;
+ const Clp_Option *opt;
+ Clp_ParserState clpsave;
+ int vtpos, complain;
+
+ /* Set up clp */
+ cli->current_option = -1;
+ cli->ambiguous = 0;
+
+ /* Get the next argument or option */
+ if (!next_argument(clp, cli->option_processing ? 0 : 2)) {
+ clp->val.s = clp->vstr;
+ optno = clp->have_val ? Clp_NotOption : Clp_Done;
+ clp->option = &clp_option_sentinel[-optno];
+ return optno;
+ }
+
+ clp->negated = cli->whole_negated;
+ if (cli->is_short)
+ optno = find_short(clp, cli->xtext);
+ else
+ optno = find_long(clp, cli->xtext);
+
+ /* If there's ambiguity between long & short options, and we couldn't
+ find a long option, look for a short option */
+ if (optno < 0 && cli->could_be_short) {
+ switch_to_short_argument(clp);
+ optno = find_short(clp, cli->xtext);
+ }
+
+ /* If we didn't find an option... */
+ if (optno < 0 || (clp->negated && !cli->iopt[optno].ineg)) {
+ /* default processing for the "--" option: turn off option processing
+ and return the next argument */
+ if (strcmp(cli->argv[0], "--") == 0) {
+ Clp_SetOptionProcessing(clp, 0);
+ return Clp_Next(clp);
+ }
+
+ /* otherwise, report some error or other */
+ if (cli->ambiguous)
+ ambiguity_error(clp, cli->ambiguous, cli->ambiguous_values,
+ cli->opt, cli->iopt, cli->option_chars,
+ "option %<%s%s%> is ambiguous",
+ cli->option_chars, cli->xtext);
+ else if (cli->is_short && !cli->could_be_short)
+ Clp_OptionError(clp, "unrecognized option %<%s%C%>",
+ cli->option_chars, cli->xtext);
+ else
+ Clp_OptionError(clp, "unrecognized option %<%s%s%>",
+ cli->option_chars, cli->xtext);
+
+ clp->option = &clp_option_sentinel[-Clp_BadOption];
+ return Clp_BadOption;
+ }
+
+ /* Set the current option */
+ cli->current_option = optno;
+ cli->current_short = cli->is_short;
+ cli->negated_by_no = clp->negated && !cli->whole_negated;
+
+ /* The no-argument (or should-have-no-argument) case */
+ if (clp->negated
+ || (!cli->iopt[optno].imandatory && !cli->iopt[optno].ioptional)) {
+ if (clp->have_val) {
+ Clp_OptionError(clp, "%<%O%> can%,t take an argument");
+ clp->option = &clp_option_sentinel[-Clp_BadOption];
+ return Clp_BadOption;
+ } else {
+ clp->option = &cli->opt[optno];
+ return cli->opt[optno].option_id;
+ }
+ }
+
+ /* Get an argument if we need one, or if it's optional */
+ /* Sanity-check the argument type. */
+ opt = &cli->opt[optno];
+ if (opt->val_type <= 0) {
+ clp->option = &clp_option_sentinel[-Clp_Error];
+ return Clp_Error;
+ }
+ vtpos = val_type_binsearch(cli, opt->val_type);
+ if (vtpos == cli->nvaltype
+ || cli->valtype[vtpos].val_type != opt->val_type) {
+ clp->option = &clp_option_sentinel[-Clp_Error];
+ return Clp_Error;
+ }
+
+ /* complain == 1 only if the argument was explicitly given,
+ or it is mandatory. */
+ complain = (clp->have_val != 0) || cli->iopt[optno].imandatory;
+ Clp_SaveParser(clp, &clpsave);
+
+ if (cli->iopt[optno].imandatory && !clp->have_val) {
+ /* Mandatory argument case */
+ /* Allow arguments to options to start with a dash, but only if the
+ argument type allows it by not setting Clp_DisallowOptions */
+ int disallow = (cli->valtype[vtpos].flags & Clp_DisallowOptions) != 0;
+ next_argument(clp, disallow ? 1 : 2);
+ if (!clp->have_val) {
+ int got_option = cli->xtext != 0;
+ Clp_RestoreParser(clp, &clpsave);
+ if (got_option)
+ Clp_OptionError(clp, "%<%O%> requires a non-option argument");
+ else
+ Clp_OptionError(clp, "%<%O%> requires an argument");
+ clp->option = &clp_option_sentinel[-Clp_BadOption];
+ return Clp_BadOption;
+ }
+
+ } else if (cli->is_short && !clp->have_val
+ && cli->xtext[clp_utf8_charlen(cli, cli->xtext)])
+ /* The -[option]argument case:
+ Assume that the rest of the current string is the argument. */
+ next_argument(clp, 1);
+
+ /* Parse the argument */
+ clp->option = opt;
+ if (clp->have_val) {
+ Clp_ValType *atr = &cli->valtype[vtpos];
+ if (atr->func(clp, clp->vstr, complain, atr->user_data) <= 0) {
+ /* parser failed */
+ clp->have_val = 0;
+ if (complain) {
+ clp->option = &clp_option_sentinel[-Clp_BadOption];
+ return Clp_BadOption;
+ } else {
+ Clp_RestoreParser(clp, &clpsave);
+ clp->option = opt;
+ }
+ }
+ }
+
+ return opt->option_id;
+}
+
+
+/** @param clp the parser
+ * @param allow_options whether options will be allowed
+ *
+ * Remove and return the next argument from @a clp's argument array. If there
+ * are no arguments left, or if the next argument is an option and @a
+ * allow_options != 0, then returns null.
+ */
+const char *
+Clp_Shift(Clp_Parser *clp, int allow_options)
+ /* Returns the next argument from the argument list without parsing it.
+ If there are no more arguments, returns 0. */
+{
+ Clp_ParserState clpsave;
+ Clp_SaveParser(clp, &clpsave);
+ next_argument(clp, allow_options ? 2 : 1);
+ if (!clp->have_val)
+ Clp_RestoreParser(clp, &clpsave);
+ return clp->vstr;
+}
+
+
+/*******
+ * Clp_OptionError
+ **/
+
+typedef struct Clp_BuildString {
+ char* data;
+ char* pos;
+ char* end_data;
+ char buf[256];
+} Clp_BuildString;
+
+static void build_string_program_prefix(Clp_BuildString* bs,
+ const Clp_Parser* clp);
+
+static void build_string_init(Clp_BuildString* bs, Clp_Parser* clp) {
+ bs->data = bs->pos = bs->buf;
+ bs->end_data = &bs->buf[sizeof(bs->buf)];
+ if (clp)
+ build_string_program_prefix(bs, clp);
+}
+
+static void build_string_cleanup(Clp_BuildString* bs) {
+ if (bs->data != bs->buf)
+ free(bs->data);
+}
+
+static int build_string_grow(Clp_BuildString* bs, size_t want) {
+ size_t ipos = bs->pos - bs->data, ncap;
+ if (!bs->pos)
+ return 0;
+ for (ncap = (bs->end_data - bs->data) << 1; ncap < want; ncap *= 2)
+ /* nada */;
+ if (bs->data == bs->buf) {
+ if ((bs->data = (char*) malloc(ncap)))
+ memcpy(bs->data, bs->buf, bs->pos - bs->buf);
+ } else
+ bs->data = (char*) realloc(bs->data, ncap);
+ if (!bs->data) {
+ bs->pos = bs->end_data = bs->data;
+ return 0;
+ } else {
+ bs->pos = bs->data + ipos;
+ bs->end_data = bs->data + ncap;
+ return 1;
+ }
+}
+
+#define ENSURE_BUILD_STRING(bs, space) \
+ ((((bs)->end_data - (bs)->pos) >= (space)) \
+ || build_string_grow((bs), (bs)->pos - (bs)->data + (space)))
+
+static void
+append_build_string(Clp_BuildString *bs, const char *s, int l)
+{
+ if (l < 0)
+ l = strlen(s);
+ if (ENSURE_BUILD_STRING(bs, l)) {
+ memcpy(bs->pos, s, l);
+ bs->pos += l;
+ }
+}
+
+static void
+build_string_program_prefix(Clp_BuildString* bs, const Clp_Parser* clp)
+{
+ const Clp_Internal* cli = clp->internal;
+ if (cli->program_name && cli->program_name[0]) {
+ append_build_string(bs, cli->program_name, -1);
+ append_build_string(bs, ": ", 2);
+ }
+}
+
+
+static void
+Clp_vbsprintf(Clp_Parser *clp, Clp_BuildString *bs,
+ const char *fmt, va_list val)
+{
+ Clp_Internal *cli = clp->internal;
+ const char *percent;
+ int c;
+
+ for (percent = strchr(fmt, '%'); percent; percent = strchr(fmt, '%')) {
+ append_build_string(bs, fmt, percent - fmt);
+ switch (*++percent) {
+
+ case 's': {
+ const char *s = va_arg(val, const char *);
+ append_build_string(bs, s ? s : "(null)", -1);
+ break;
+ }
+
+ case 'C': {
+ const char *s = va_arg(val, const char *);
+ if (cli->utf8)
+ c = decode_utf8(s, 0);
+ else
+ c = (unsigned char) *s;
+ goto char_c;
+ }
+
+ case 'c':
+ c = va_arg(val, int);
+ goto char_c;
+
+ char_c:
+ if (ENSURE_BUILD_STRING(bs, 4)) {
+ if (c >= 32 && c <= 126)
+ *bs->pos++ = c;
+ else if (c < 32) {
+ *bs->pos++ = '^';
+ *bs->pos++ = c + 64;
+ } else if (cli->utf8 && c >= 127 && c < 0x110000) {
+ bs->pos = encode_utf8(bs->pos, 4, c);
+ } else if (c >= 127 && c <= 255) {
+ sprintf(bs->pos, "\\%03o", c & 0xFF);
+ bs->pos += 4;
+ } else {
+ *bs->pos++ = '\\';
+ *bs->pos++ = '?';
+ }
+ }
+ break;
+
+ case 'd': {
+ int d = va_arg(val, int);
+ if (ENSURE_BUILD_STRING(bs, 32)) {
+ sprintf(bs->pos, "%d", d);
+ bs->pos = strchr(bs->pos, 0);
+ }
+ break;
+ }
+
+ case 'O':
+ case 'V': {
+ int optno = cli->current_option;
+ const Clp_Option *opt = &cli->opt[optno];
+ if (optno < 0)
+ append_build_string(bs, "(no current option!)", -1);
+ else if (cli->current_short) {
+ append_build_string(bs, cli->option_chars, -1);
+ if (ENSURE_BUILD_STRING(bs, 5)) {
+ if (cli->utf8)
+ bs->pos = encode_utf8(bs->pos, 5, opt->short_name);
+ else
+ *bs->pos++ = opt->short_name;
+ }
+ } else if (cli->negated_by_no) {
+ append_build_string(bs, cli->option_chars, -1);
+ append_build_string(bs, "no-", 3);
+ append_build_string(bs, opt->long_name + cli->iopt[optno].ilongoff, -1);
+ } else {
+ append_build_string(bs, cli->option_chars, -1);
+ append_build_string(bs, opt->long_name + cli->iopt[optno].ilongoff, -1);
+ }
+ if (optno >= 0 && clp->have_val && *percent == 'V') {
+ if (cli->current_short && !cli->iopt[optno].ioptional)
+ append_build_string(bs, " ", 1);
+ else if (!cli->current_short)
+ append_build_string(bs, "=", 1);
+ append_build_string(bs, clp->vstr, -1);
+ }
+ break;
+ }
+
+ case '%':
+ if (ENSURE_BUILD_STRING(bs, 1))
+ *bs->pos++ = '%';
+ break;
+
+ case '`': /* backwards compatibility */
+ case '<':
+ append_build_string(bs, (cli->utf8 ? "\342\200\230" : "'"), -1);
+ break;
+
+ case '\'': /* backwards compatibility */
+ case ',':
+ case '>':
+ append_build_string(bs, (cli->utf8 ? "\342\200\231" : "'"), -1);
+ break;
+
+ case 0:
+ append_build_string(bs, "%", 1);
+ goto done;
+
+ default:
+ if (ENSURE_BUILD_STRING(bs, 2)) {
+ *bs->pos++ = '%';
+ *bs->pos++ = *percent;
+ }
+ break;
+
+ }
+ fmt = ++percent;
+ }
+
+ done:
+ append_build_string(bs, fmt, -1);
+}
+
+static const char* build_string_text(Clp_BuildString* bs, int report_oom) {
+ if (bs->pos) {
+ *bs->pos = 0;
+ return bs->data;
+ } else if (report_oom)
+ return "out of memory\n";
+ else
+ return NULL;
+}
+
+static void
+do_error(Clp_Parser *clp, Clp_BuildString *bs)
+{
+ const char *text = build_string_text(bs, 1);
+ if (clp->internal->error_handler != 0)
+ (*clp->internal->error_handler)(clp, text);
+ else
+ fputs(text, stderr);
+}
+
+/** @param clp the parser
+ * @param format error format
+ *
+ * Format an error message from @a format and any additional arguments in
+ * the ellipsis. The resulting error string is then printed to standard
+ * error (or passed to the error handler specified by Clp_SetErrorHandler).
+ * Returns the number of characters printed.
+ *
+ * The following format characters are accepted:
+ *
+ * <dl>
+ * <dt><tt>%</tt><tt>c</tt></dt>
+ * <dd>A character (type <tt>int</tt>). Control characters are printed in
+ * caret notation. If the parser is in UTF-8 mode, the character is formatted
+ * in UTF-8. Otherwise, special characters are printed with backslashes and
+ * octal notation.</dd>
+ * <dt><tt>%</tt><tt>s</tt></dt>
+ * <dd>A string (type <tt>const char *</tt>).</dd>
+ * <dt><tt>%</tt><tt>C</tt></dt>
+ * <dd>The argument is a string (type <tt>const char *</tt>). The first
+ * character in this string is printed. If the parser is in UTF-8 mode, this
+ * may involve multiple bytes.</dd>
+ * <dt><tt>%</tt><tt>d</tt></dt>
+ * <dd>An integer (type <tt>int</tt>). Printed in decimal.</dd>
+ * <dt><tt>%</tt><tt>O</tt></dt>
+ * <dd>The current option. No values are read from the argument list; the
+ * current option is defined in the Clp_Parser object itself.</dd>
+ * <dt><tt>%</tt><tt>V</tt></dt>
+ * <dd>Like <tt>%</tt><tt>O</tt>, but also includes the current value,
+ * if any.</dd>
+ * <dt><tt>%%</tt></dt>
+ * <dd>Prints a percent character.</dd>
+ * <dt><tt>%</tt><tt>&lt;</tt></dt>
+ * <dd>Prints an open quote string. In UTF-8 mode, prints a left single
+ * quote. Otherwise prints a single quote.</dd>
+ * <dt><tt>%</tt><tt>&gt;</tt></dt>
+ * <dd>Prints a closing quote string. In UTF-8 mode, prints a right single
+ * quote. Otherwise prints a single quote.</dd>
+ * <dt><tt>%</tt><tt>,</tt></dt>
+ * <dd>Prints an apostrophe. In UTF-8 mode, prints a right single quote.
+ * Otherwise prints a single quote.</dd>
+ * </dl>
+ *
+ * Note that no flag characters, precision, or field width characters are
+ * currently supported.
+ *
+ * @sa Clp_SetErrorHandler
+ */
+int
+Clp_OptionError(Clp_Parser *clp, const char *format, ...)
+{
+ Clp_BuildString bs;
+ va_list val;
+ va_start(val, format);
+ build_string_init(&bs, clp);
+ Clp_vbsprintf(clp, &bs, format, val);
+ append_build_string(&bs, "\n", 1);
+ va_end(val);
+ do_error(clp, &bs);
+ build_string_cleanup(&bs);
+ return bs.pos - bs.data;
+}
+
+/** @param clp the parser
+ * @param f output file
+ * @param format error format
+ *
+ * Format an error message using @a format and additional arguments in the
+ * ellipsis, according to the Clp_OptionError formatting conventions. The
+ * resulting message is written to @a f.
+ *
+ * @sa Clp_OptionError */
+int
+Clp_fprintf(Clp_Parser* clp, FILE* f, const char* format, ...)
+{
+ Clp_BuildString bs;
+ va_list val;
+ va_start(val, format);
+ build_string_init(&bs, NULL);
+ Clp_vbsprintf(clp, &bs, format, val);
+ va_end(val);
+ if (bs.pos != bs.data)
+ fwrite(bs.data, 1, bs.pos - bs.data, f);
+ build_string_cleanup(&bs);
+ return bs.pos - bs.data;
+}
+
+/** @param clp the parser
+ * @param f output file
+ * @param format error format
+ * @param val arguments
+ *
+ * Format an error message using @a format and @a val, according to the
+ * Clp_OptionError formatting conventions. The resulting message is written
+ * to @a f.
+ *
+ * @sa Clp_OptionError */
+int
+Clp_vfprintf(Clp_Parser* clp, FILE* f, const char* format, va_list val)
+{
+ Clp_BuildString bs;
+ build_string_init(&bs, NULL);
+ Clp_vbsprintf(clp, &bs, format, val);
+ if (bs.pos != bs.data)
+ fwrite(bs.data, 1, bs.pos - bs.data, f);
+ build_string_cleanup(&bs);
+ return bs.pos - bs.data;
+}
+
+/** @param clp the parser
+ * @param str output string
+ * @param size size of output string
+ * @param format error format
+ *
+ * Format an error message from @a format and any additional arguments in
+ * the ellipsis, according to the Clp_OptionError formatting conventions.
+ * The resulting string is written to @a str. At most @a size characters are
+ * written to @a str, including a terminating null byte. The return value is
+ * the number of characters that would have been written (excluding the
+ * terminating null byte) if @a size were large enough to contain the entire
+ * string.
+ *
+ * @sa Clp_OptionError */
+int
+Clp_vsnprintf(Clp_Parser* clp, char* str, size_t size,
+ const char* format, va_list val)
+{
+ Clp_BuildString bs;
+ build_string_init(&bs, NULL);
+ Clp_vbsprintf(clp, &bs, format, val);
+ if ((size_t) (bs.pos - bs.data) < size) {
+ memcpy(str, bs.data, bs.pos - bs.data);
+ str[bs.pos - bs.data] = 0;
+ } else {
+ memcpy(str, bs.data, size - 1);
+ str[size - 1] = 0;
+ }
+ build_string_cleanup(&bs);
+ return bs.pos - bs.data;
+}
+
+static int
+ambiguity_error(Clp_Parser *clp, int ambiguous, int *ambiguous_values,
+ const Clp_Option *opt, const Clp_InternOption *iopt,
+ const char *prefix, const char *fmt, ...)
+{
+ Clp_Internal *cli = clp->internal;
+ Clp_BuildString bs;
+ int i;
+ va_list val;
+
+ va_start(val, fmt);
+ build_string_init(&bs, clp);
+ Clp_vbsprintf(clp, &bs, fmt, val);
+ append_build_string(&bs, "\n", 1);
+
+ build_string_program_prefix(&bs, clp);
+ append_build_string(&bs, "(Possibilities are", -1);
+
+ for (i = 0; i < ambiguous && i < MAX_AMBIGUOUS_VALUES; i++) {
+ int value = ambiguous_values[i];
+ const char *no_dash = "";
+ if (value < 0)
+ value = -(value + 1), no_dash = "no-";
+ if (i == 0)
+ append_build_string(&bs, " ", 1);
+ else if (i == ambiguous - 1)
+ append_build_string(&bs, (i == 1 ? " and " : ", and "), -1);
+ else
+ append_build_string(&bs, ", ", 2);
+ append_build_string(&bs, (cli->utf8 ? "\342\200\230" : "'"), -1);
+ append_build_string(&bs, prefix, -1);
+ append_build_string(&bs, no_dash, -1);
+ append_build_string(&bs, opt[value].long_name + iopt[value].ilongoff, -1);
+ append_build_string(&bs, (cli->utf8 ? "\342\200\231" : "'"), -1);
+ }
+
+ if (ambiguous > MAX_AMBIGUOUS_VALUES)
+ append_build_string(&bs, ", and others", -1);
+ append_build_string(&bs, ".)\n", -1);
+ va_end(val);
+
+ do_error(clp, &bs);
+ build_string_cleanup(&bs);
+ return 0;
+}
+
+static int
+copy_string(char *buf, int buflen, int bufpos, const char *what)
+{
+ int l = strlen(what);
+ if (l > buflen - bufpos - 1)
+ l = buflen - bufpos - 1;
+ memcpy(buf + bufpos, what, l);
+ return l;
+}
+
+/** @param clp the parser
+ * @param buf output buffer
+ * @param len length of output buffer
+ * @return number of characters written to the buffer, not including the terminating NUL
+ *
+ * A string that looks like the last option parsed by @a clp is extracted into
+ * @a buf. The correct option characters are put into the string first,
+ * followed by the option text. The output buffer is null-terminated unless
+ * @a len == 0.
+ *
+ * @sa Clp_CurOptionName
+ */
+int
+Clp_CurOptionNameBuf(Clp_Parser *clp, char *buf, int len)
+{
+ Clp_Internal *cli = clp->internal;
+ int optno = cli->current_option;
+ int pos = 0;
+ if (optno < 0)
+ pos += copy_string(buf, len, pos, "(no current option!)");
+ else if (cli->current_short) {
+ pos += copy_string(buf, len, pos, cli->option_chars);
+ if (cli->utf8)
+ pos = (encode_utf8(buf + pos, len - pos - 1, cli->opt[optno].short_name) - buf);
+ else if (pos < len - 1)
+ buf[pos++] = cli->opt[optno].short_name;
+ } else if (cli->negated_by_no) {
+ pos += copy_string(buf, len, pos, cli->option_chars);
+ pos += copy_string(buf, len, pos, "no-");
+ pos += copy_string(buf, len, pos, cli->opt[optno].long_name + cli->iopt[optno].ilongoff);
+ } else {
+ pos += copy_string(buf, len, pos, cli->option_chars);
+ pos += copy_string(buf, len, pos, cli->opt[optno].long_name + cli->iopt[optno].ilongoff);
+ }
+ if (pos < len)
+ buf[pos] = 0;
+ return pos;
+}
+
+/** @param clp the parser
+ * @return string describing the current option
+ *
+ * This function acts like Clp_CurOptionNameBuf(), but returns a pointer into
+ * a static buffer that will be rewritten on the next call to
+ * Clp_CurOptionName().
+ *
+ * @note This function is not thread safe.
+ *
+ * @sa Clp_CurOptionName
+ */
+const char *
+Clp_CurOptionName(Clp_Parser *clp)
+{
+ static char buf[256];
+ Clp_CurOptionNameBuf(clp, buf, 256);
+ return buf;
+}
+
+int
+Clp_IsLong(Clp_Parser *clp, const char *long_name)
+{
+ Clp_Internal *cli = clp->internal;
+ int optno = cli->current_option;
+ return optno >= 0 && strcmp(cli->opt[optno].long_name, long_name) == 0;
+}
+
+int
+Clp_IsShort(Clp_Parser *clp, int short_name)
+{
+ Clp_Internal *cli = clp->internal;
+ int optno = cli->current_option;
+ return optno >= 0 && cli->opt[optno].short_name == short_name;
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/config.h.in b/Build/source/utils/t1utils/t1utils-src/config.h.in
new file mode 100644
index 00000000000..e3686d8e044
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/config.h.in
@@ -0,0 +1,114 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+#ifndef T1UTILS_CONFIG_H
+#define T1UTILS_CONFIG_H
+
+/* Define to 1 if you have the declaration of `memmem', and to 0 if you don't.
+ */
+#undef HAVE_DECL_MEMMEM
+
+/* Define if intXX_t types are not available. */
+#undef HAVE_FAKE_INT_TYPES
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `memmem' function. */
+#undef HAVE_MEMMEM
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#undef HAVE_UINTPTR_T
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define if you have u_intXX_t types but not uintXX_t types. */
+#undef HAVE_U_INT_TYPES
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+#include <lcdf/inttypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Prototype strerror if we don't have it. */
+#if !HAVE_STRERROR
+char* strerror(int errno);
+#endif
+
+/* Prototype memmem if we don't have it. */
+#if !HAVE_MEMMEM || !HAVE_DECL_MEMMEM
+void* memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len);
+#endif
+
+#ifdef __cplusplus
+}
+/* Get rid of a possible inline macro under C++. */
+# define inline inline
+#endif
+
+#endif /* T1UTILS_CONFIG_H */
diff --git a/Build/source/utils/t1utils/t1utils-src/configure.ac b/Build/source/utils/t1utils/t1utils-src/configure.ac
new file mode 100644
index 00000000000..d5619c5a1d0
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/configure.ac
@@ -0,0 +1,125 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT([t1utils], [1.42])
+AC_CONFIG_SRCDIR([t1ascii.c])
+AM_INIT_AUTOMAKE
+AC_CONFIG_HEADERS([config.h])
+
+AC_PROG_CC
+AC_C_CONST
+
+AC_ARG_ENABLE([warnings],
+ [AS_HELP_STRING([--enable-warnings], [compile with -W -Wall])],
+ [if test "$enableval" = yes; then
+ CFLAGS="$CFLAGS -W -Wall"
+ fi])
+
+
+dnl
+dnl strerror()?
+dnl
+
+AC_REPLACE_FUNCS([strerror memmem])
+AC_CHECK_DECLS([memmem])
+
+
+dnl
+dnl integer types
+dnl
+
+AC_CHECK_HEADERS(inttypes.h, have_inttypes_h=yes, have_inttypes_h=no)
+AC_CHECK_HEADERS(sys/types.h, have_sys_types_h=yes, have_sys_types_h=no)
+
+if test $have_inttypes_h = no -a $have_sys_types_h = yes; then
+ AC_CACHE_CHECK([for uintXX_t typedefs], ac_cv_uint_t,
+ [AC_EGREP_HEADER(dnl
+changequote(<<,>>)<<(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]>>changequote([,]),
+ sys/types.h, ac_cv_uint_t=yes, ac_cv_uint_t=no)])
+fi
+if test $have_inttypes_h = no -a $have_sys_types_h = yes -a "$ac_cv_uint_t" = no; then
+ AC_CACHE_CHECK([for u_intXX_t typedefs], ac_cv_u_int_t,
+ [AC_EGREP_HEADER(dnl
+changequote(<<,>>)<<(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]>>changequote([,]),
+ sys/types.h, ac_cv_u_int_t=yes, ac_cv_u_int_t=no)])
+fi
+if test $have_inttypes_h = yes -o "$ac_cv_uint_t" = yes; then
+ :
+elif test "$ac_cv_u_int_t" = yes; then
+ AC_DEFINE(HAVE_U_INT_TYPES, 1, [Define if you have u_intXX_t types but not uintXX_t types.])
+else
+ AC_MSG_WARN([
+=========================================
+
+Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
+Assuming "short" has 16 bits and "int" has 32 bits.
+
+=========================================])
+ AC_DEFINE(HAVE_FAKE_INT_TYPES, 1, [Define if intXX_t types are not available.])
+fi
+
+AC_CHECK_TYPES(uintptr_t, [], [],
+[#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+])
+
+AC_CHECK_SIZEOF(void *)
+AC_CHECK_SIZEOF(unsigned long)
+AC_CHECK_SIZEOF(unsigned int)
+
+
+dnl
+dnl verbatim portions of the header
+dnl
+
+AH_TOP([#ifndef T1UTILS_CONFIG_H
+#define T1UTILS_CONFIG_H])
+
+AH_BOTTOM([#include <lcdf/inttypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Prototype strerror if we don't have it. */
+#if !HAVE_STRERROR
+char* strerror(int errno);
+#endif
+
+/* Prototype memmem if we don't have it. */
+#if !HAVE_MEMMEM || !HAVE_DECL_MEMMEM
+void* memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len);
+#endif
+
+#ifdef __cplusplus
+}
+/* Get rid of a possible inline macro under C++. */
+# define inline inline
+#endif
+
+#endif /* T1UTILS_CONFIG_H */])
+
+
+dnl
+dnl Multiplatform output directories (for teTeX and TeX Live)
+dnl
+
+AC_CANONICAL_HOST
+AC_ARG_ENABLE([multiplatform],
+ [AS_HELP_STRING([--enable-multiplatform],
+ [put executables into bin/PLATFORM and libraries into lib/PLATFORM])])
+if test "x$enable_multiplatform" = xyes; then
+ test "x$bindir" = 'x${exec_prefix}/bin' && bindir="$bindir/$host"
+ test "x$libdir" = 'x${exec_prefix}/lib' && libdir="$libdir/$host"
+fi
+
+
+dnl
+dnl Output
+dnl
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/Build/source/utils/t1utils/t1utils-src/include/lcdf/clp.h b/Build/source/utils/t1utils/t1utils-src/include/lcdf/clp.h
new file mode 100644
index 00000000000..37b75194ac0
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/include/lcdf/clp.h
@@ -0,0 +1,334 @@
+/* -*- related-file-name: "../../liblcdf/clp.c" -*- */
+#ifndef LCDF_CLP_H
+#define LCDF_CLP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* clp.h - Public interface to CLP.
+ * This file is part of CLP, the command line parser package.
+ *
+ * Copyright (c) 1997-2014 Eddie Kohler, ekohler@gmail.com
+ *
+ * CLP is free software. It is distributed under the GNU General Public
+ * License, Version 2, or, alternatively and at your discretion, under the
+ * more permissive (BSD-like) Click LICENSE file as described below.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding. */
+
+#include <stdio.h>
+#include <stdarg.h>
+
+typedef struct Clp_Option Clp_Option;
+typedef struct Clp_Parser Clp_Parser;
+typedef struct Clp_ParserState Clp_ParserState;
+
+
+/** @brief Option description.
+ *
+ * CLP users declare arrays of Clp_Option structures to specify what options
+ * should be parsed.
+ * @sa Clp_NewParser, Clp_SetOptions */
+struct Clp_Option {
+ const char *long_name; /**< Name of long option, or NULL if the option
+ has no long name. */
+ int short_name; /**< Character defining short option, or 0 if
+ the option has no short name. */
+ int option_id; /**< User-specified ID defining option,
+ returned by Clp_Next. */
+ int val_type; /**< ID of option's value type, or 0 if option
+ takes no value. */
+ int flags; /**< Option parsing flags. */
+};
+
+/** @name Value types
+ * These values describe the type of an option's argument and are used in
+ * the Clp_Option val_type field. For example, if an option took integers, its
+ * Clp_Option structure would have val_type set to Clp_ValInt. */
+/**@{*/
+#define Clp_NoVal 0 /**< @brief Option takes no value. */
+#define Clp_ValString 1 /**< @brief Option value is an
+ arbitrary string. */
+#define Clp_ValStringNotOption 2 /**< @brief Option value is a
+ non-option string.
+
+ See Clp_DisallowOptions. */
+#define Clp_ValBool 3 /**< @brief Option value is a
+ boolean.
+
+ Accepts "true", "false", "yes", "no", "1", and "0", or any
+ prefixes thereof. The match is case-insensitive. */
+#define Clp_ValInt 4 /**< @brief Option value is a
+ signed int.
+
+ Accepts an optional "+" or "-" sign, followed by one or more
+ digits. The digits may be include a "0x" or "0X" prefix, for
+ a hexadecimal number, or a "0" prefix, for an octal number;
+ otherwise it is decimal. */
+#define Clp_ValUnsigned 5 /**< @brief Option value is an
+ unsigned int.
+
+ Accepts an optional "+" sign, followed by one or more
+ digits. The digits may be include a "0x" or "0X" prefix, for
+ a hexadecimal number, or a "0" prefix, for an octal number;
+ otherwise it is decimal. */
+#define Clp_ValLong 6 /**< @brief Option value is a
+ signed long. */
+#define Clp_ValUnsignedLong 7 /**< @brief Option value is an
+ unsigned long. */
+#define Clp_ValDouble 8 /**< @brief Option value is a
+ double.
+ Accepts a real number as defined by strtod(). */
+#define Clp_ValFirstUser 10 /**< @brief Value types >=
+ Clp_ValFirstUser are available
+ for user types. */
+/**@}*/
+
+/** @name Option flags
+ * These flags are used in the Clp_Option flags field. */
+/**@{*/
+#define Clp_Mandatory (1<<0) /**< @brief Option flag: value
+ is mandatory.
+
+ It is an error if the option has no value. This is the
+ default if an option has arg_type != 0 and the Clp_Optional
+ flag is not provided. */
+#define Clp_Optional (1<<1) /**< @brief Option flag: value
+ is optional. */
+#define Clp_Negate (1<<2) /**< @brief Option flag: option
+ may be negated.
+
+ --no-[long_name] will be accepted in argument lists. */
+#define Clp_OnlyNegated (1<<3) /**< @brief Option flag: option
+ <em>must</em> be negated.
+
+ --no-[long_name] will be accepted in argument lists, but
+ --[long_name] will not. This is the default if long_name
+ begins with "no-". */
+#define Clp_PreferredMatch (1<<4) /**< @brief Option flag: prefer this
+ option when matching.
+
+ Prefixes of --[long_name] should map to this option, even if
+ other options begin with --[long_name]. */
+/**@}*/
+
+/** @name Option character types
+ * These flags are used in to define character types in Clp_SetOptionChar(). */
+/**@{*/
+/* Clp_NotOption 0 */
+#define Clp_Short (1<<0) /**< @brief Option character begins
+ a set of short options. */
+#define Clp_Long (1<<1) /**< @brief Option character begins
+ a long option. */
+#define Clp_ShortNegated (1<<2) /**< @brief Option character begins
+ a set of negated short options. */
+#define Clp_LongNegated (1<<3) /**< @brief Option character begins
+ a negated long option. */
+#define Clp_LongImplicit (1<<4) /**< @brief Option character can begin
+ a long option, and is part of that
+ long option. */
+/**@}*/
+
+#define Clp_NotOption 0 /**< @brief Clp_Next value: argument
+ was not an option. */
+#define Clp_Done -1 /**< @brief Clp_Next value: there are
+ no more arguments. */
+#define Clp_BadOption -2 /**< @brief Clp_Next value: argument
+ was an erroneous option. */
+#define Clp_Error -3 /**< @brief Clp_Next value: internal
+ CLP error. */
+
+#define Clp_ValSize 40 /**< @brief Minimum size of the
+ Clp_Parser val.cs field. */
+#define Clp_ValIntSize 10 /**< @brief Minimum size of the
+ Clp_Parser val.is field. */
+
+
+/** @brief A value parsing function.
+ * @param clp the parser
+ * @param vstr the value to be parsed
+ * @param complain if nonzero, report error messages via Clp_OptionError
+ * @param user_data user data passed to Clp_AddType()
+ * @return 1 if parsing succeeded, 0 otherwise
+ */
+typedef int (*Clp_ValParseFunc)(Clp_Parser *clp, const char *vstr,
+ int complain, void *user_data);
+
+/** @brief A function for reporting option errors.
+ * @param clp the parser
+ * @param message error message
+ */
+typedef void (*Clp_ErrorHandler)(Clp_Parser *clp, const char *message);
+
+
+/** @brief Command line parser.
+ *
+ * A Clp_Parser object defines an instance of CLP, including allowed options,
+ * value types, and current arguments.
+ * @sa Clp_NewParser, Clp_SetOptions, Clp_SetArguments */
+struct Clp_Parser {
+ const Clp_Option *option; /**< The last option. */
+
+ int negated; /**< Whether the last option was negated. */
+
+ int have_val; /**< Whether the last option had a value. */
+ const char *vstr; /**< The string value provided with the last
+ option. */
+
+ union {
+ int i;
+ unsigned u;
+ long l;
+ unsigned long ul;
+ double d;
+ const char *s;
+ void *pv;
+#ifdef HAVE_INT64_TYPES
+ int64_t i64;
+ uint64_t u64;
+#endif
+ char cs[Clp_ValSize];
+ unsigned char ucs[Clp_ValSize];
+ int is[Clp_ValIntSize];
+ unsigned us[Clp_ValIntSize];
+ } val; /**< The parsed value provided with the last
+ option. */
+
+ void *user_data; /**< Uninterpreted by CLP; users can set
+ arbitrarily. */
+
+ struct Clp_Internal *internal;
+};
+
+/** @cond never */
+#if __GNUC__ >= 4
+# define CLP_SENTINEL __attribute__((sentinel))
+#else
+# define CLP_SENTINEL /* nothing */
+#endif
+/** @endcond never */
+
+
+/** @brief Create a new Clp_Parser. */
+Clp_Parser *Clp_NewParser(int argc, const char * const *argv,
+ int nopt, const Clp_Option *opt);
+
+/** @brief Destroy a Clp_Parser object. */
+void Clp_DeleteParser(Clp_Parser *clp);
+
+
+/** @brief Return @a clp's program name. */
+const char *Clp_ProgramName(Clp_Parser *clp);
+
+/** @brief Set @a clp's program name. */
+const char *Clp_SetProgramName(Clp_Parser *clp, const char *name);
+
+
+/** @brief Set @a clp's error handler function. */
+Clp_ErrorHandler Clp_SetErrorHandler(Clp_Parser *clp, Clp_ErrorHandler errh);
+
+/** @brief Set @a clp's UTF-8 mode. */
+int Clp_SetUTF8(Clp_Parser *clp, int utf8);
+
+/** @brief Return @a clp's treatment of character @a c. */
+int Clp_OptionChar(Clp_Parser *clp, int c);
+
+/** @brief Set @a clp's treatment of character @a c. */
+int Clp_SetOptionChar(Clp_Parser *clp, int c, int type);
+
+/** @brief Set @a clp's option definitions. */
+int Clp_SetOptions(Clp_Parser *clp, int nopt, const Clp_Option *opt);
+
+/** @brief Set @a clp's arguments. */
+void Clp_SetArguments(Clp_Parser *clp, int argc, const char * const *argv);
+
+/** @brief Set whether @a clp is searching for options. */
+int Clp_SetOptionProcessing(Clp_Parser *clp, int on);
+
+
+#define Clp_DisallowOptions (1<<0) /**< @brief Value type flag: value
+ can't be an option string.
+
+ See Clp_AddType(). */
+
+/** @brief Define a new value type for @a clp. */
+int Clp_AddType(Clp_Parser *clp, int val_type, int flags,
+ Clp_ValParseFunc parser, void *user_data);
+
+
+#define Clp_AllowNumbers (1<<0) /**< @brief String list flag: allow
+ explicit numbers.
+
+ See Clp_AddStringListType() and Clp_AddStringListTypeVec(). */
+#define Clp_StringListLong (1<<1) /**< @brief String list flag: values
+ have long type. */
+
+/** @brief Define a new string list value type for @a clp. */
+int Clp_AddStringListTypeVec(Clp_Parser *clp, int val_type, int flags,
+ int nstrs, const char * const *strs,
+ const int *vals);
+
+/** @brief Define a new string list value type for @a clp. */
+int Clp_AddStringListType(Clp_Parser *clp, int val_type, int flags, ...)
+ CLP_SENTINEL;
+
+
+/** @brief Parse and return the next argument from @a clp. */
+int Clp_Next(Clp_Parser *clp);
+
+/** @brief Return the next argument from @a clp without option parsing. */
+const char *Clp_Shift(Clp_Parser *clp, int allow_options);
+
+
+/** @brief Create a new Clp_ParserState. */
+Clp_ParserState *Clp_NewParserState(void);
+
+/** @brief Destroy a Clp_ParserState object. */
+void Clp_DeleteParserState(Clp_ParserState *state);
+
+/** @brief Save @a clp's current state in @a state. */
+void Clp_SaveParser(const Clp_Parser *clp, Clp_ParserState *state);
+
+/** @brief Restore parser state from @a state into @a clp. */
+void Clp_RestoreParser(Clp_Parser *clp, const Clp_ParserState *state);
+
+
+/** @brief Report a parser error. */
+int Clp_OptionError(Clp_Parser *clp, const char *format, ...);
+
+/** @brief Format a message. */
+int Clp_vsnprintf(Clp_Parser* clp, char* str, size_t size,
+ const char* format, va_list val);
+
+/** @brief Print a message. */
+int Clp_fprintf(Clp_Parser* clp, FILE* f, const char* format, ...);
+
+/** @brief Print a message. */
+int Clp_vfprintf(Clp_Parser* clp, FILE* f, const char* format, va_list val);
+
+/** @brief Extract the current option as a string. */
+int Clp_CurOptionNameBuf(Clp_Parser *clp, char *buf, int len);
+
+/** @brief Extract the current option as a string. */
+const char *Clp_CurOptionName(Clp_Parser *clp);
+
+/** @brief Test if the current option had long name @a name. */
+int Clp_IsLong(Clp_Parser *clp, const char *long_name);
+
+/** @brief Test if the current option had short name @a name. */
+int Clp_IsShort(Clp_Parser *clp, int short_name);
+
+#undef CLP_SENTINEL
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/include/lcdf/inttypes.h b/Build/source/utils/t1utils/t1utils-src/include/lcdf/inttypes.h
new file mode 100644
index 00000000000..b8bcedd120e
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/include/lcdf/inttypes.h
@@ -0,0 +1,36 @@
+#ifndef LCDF_INTTYPES_H
+#define LCDF_INTTYPES_H
+/* Define known-width integer types. */
+
+#include <stddef.h>
+
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#elif defined(HAVE_SYS_TYPES_H)
+# include <sys/types.h>
+# ifdef HAVE_U_INT_TYPES
+typedef u_int8_t uint8_t;
+typedef u_int16_t uint16_t;
+typedef u_int32_t uint32_t;
+# endif
+#endif
+
+#ifdef HAVE_FAKE_INT_TYPES
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed short int16_t;
+typedef unsigned short uint16_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+#endif
+
+#ifndef HAVE_UINTPTR_T
+# if SIZEOF_VOID_P == SIZEOF_UNSIGNED_INT
+typedef unsigned int uintptr_t;
+# elif SIZEOF_VOID_P == SIZEOF_UNSIGNED_LONG
+typedef unsigned long uintptr_t;
+# endif
+#endif
+
+/* Note: Windows compilers call these types '[un]signed __int8', etc. */
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/memmem.c b/Build/source/utils/t1utils/t1utils-src/memmem.c
new file mode 100644
index 00000000000..a724dc6f517
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/memmem.c
@@ -0,0 +1,34 @@
+/* Some operating systems might not have memmem. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <stddef.h>
+#include <string.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define memmem my_memmem
+
+void*
+memmem(const void* haystack, size_t haystack_len,
+ const void* needle, size_t needle_len)
+{
+ const unsigned char* s = (const unsigned char*) haystack;
+ const unsigned char* ends = s + haystack_len - needle_len;
+ const unsigned char* p = (const unsigned char*) needle;
+ void* try;
+ if (needle_len == 0)
+ return (void*) haystack;
+ while (s <= ends && (try = memchr(s, *p, ends - s + 1)))
+ if (memcmp(try, p, needle_len) == 0)
+ return (void*) try;
+ else
+ s = (const unsigned char*) try + 1;
+ return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/t1ascii.1 b/Build/source/utils/t1utils/t1utils-src/t1ascii.1
new file mode 100644
index 00000000000..e8fa1e11a80
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1ascii.1
@@ -0,0 +1,51 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1ASCII 1 "" "Version \*V"
+.SH NAME
+t1ascii \- convert PostScript Type 1 font from binary to ASCII
+.SH SYNOPSIS
+.B t1ascii
+\%[\fB\-l\fR \fIlength\fR]
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.BR t1ascii
+converts Adobe Type 1 font programs in PFB (binary) format to PFA
+(hexadecimal) format. If the file
+.I output
+is not specified output goes to the standard output.
+If the file
+.I input
+is not specified input comes from the standard input.
+'
+.SH OPTIONS
+.TP 5
+.BI \-\-line\-length= "num\fR, " \-l " num"
+Set the maximum length of encrypted lines in the output to
+.I num.
+(These are the lines consisting wholly of hexadecimal digits.) The default
+is 64.
+'
+.TP 5
+.BR \-\-warnings ", " \-w
+Warn when the input font contains lines longer than 255 characters.
+Long lines don't strictly conform to Adobe's Document Structuring
+Conventions, and may cause problems with older software.
+'
+.SH "SEE ALSO"
+.LP
+.M t1binary 1 ,
+.M t1unmac 1 ,
+.M t1mac 1 ,
+.M t1asm 1 ,
+.M t1disasm 1
+.LP
+.I "Adobe Type 1 Font Format"
+.SH AUTHORS
+Lee Hetherington (ilh@lcs.mit.edu)
+.br
+Eddie Kohler (ekohler@gmail.com)
+.PP
+Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+Kai-Uwe Herbing (herbing@netmbx.netmbx.de).
diff --git a/Build/source/utils/t1utils/t1utils-src/t1ascii.c b/Build/source/utils/t1utils/t1utils-src/t1ascii.c
new file mode 100644
index 00000000000..3e7d2abeb10
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1ascii.c
@@ -0,0 +1,312 @@
+/* t1ascii
+ *
+ * This program takes an Adobe Type-1 font program in binary (PFB) format and
+ * converts it to ASCII (PFA) format.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ *
+ * New change log in `NEWS'. Old change log:
+ *
+ * Revision 1.2 92/06/23 10:58:43 ilh
+ * MSDOS porting by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)
+ * incoporated.
+ *
+ * Revision 1.1 92/05/22 11:47:24 ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ *
+ */
+
+/* Note: this is ANSI C. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static FILE *ofp;
+static int line_length = 64;
+
+
+/*****
+ * Command line
+ **/
+
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+#define LINE_LEN_OPT 304
+#define WARNINGS_OPT 305
+
+static Clp_Option options[] = {
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "line-length", 'l', LINE_LEN_OPT, Clp_ValInt, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+ { "warnings", 'w', WARNINGS_OPT, 0, Clp_Negate }
+};
+static const char *program_name;
+static const char *ifp_filename = "<stdin>";
+static int line_length_warning = -1;
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+}
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+static void
+usage(void)
+{
+ printf("\
+`T1ascii' translates a PostScript Type 1 font from compact binary (PFB) to\n\
+ASCII (PFA) format. The result is written to the standard output unless an\n\
+OUTPUT file is given.\n\
+\n\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+\n\
+Options:\n\
+ -l, --line-length=NUM Set max encrypted line length (default 64).\n\
+ -o, --output=FILE Write output to FILE.\n\
+ -w, --warnings Warn on too-long lines.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+
+/*****
+ * PFA font_reader functions
+ **/
+
+static int hexcol = 0;
+
+static void
+pfa_output_ascii(char *data, int len)
+{
+ if (hexcol) {
+ putc('\n', ofp);
+ hexcol = 0;
+ }
+ if (line_length_warning == 0 && len > 256) {
+ line_length_warning = 1;
+ fprintf(stderr, "%s: warning: %s has lines longer than 255 characters\n%s: (This may cause problems with older printers.)\n", program_name, ifp_filename, program_name);
+ }
+ fputs(data, ofp);
+ if (len && data[len - 1] != '\n') {
+ int p = len - 2;
+ while (p > 0 && data[p] != '\n')
+ p--;
+ hexcol = (p ? len - p - 1 : hexcol + len);
+ }
+}
+
+static void
+pfa_output_binary(unsigned char *data, int len)
+{
+ static const char *hexchar = "0123456789abcdef";
+ for (; len > 0; len--, data++) {
+ /* trim hexadecimal lines to line_length columns */
+ if (hexcol >= line_length) {
+ putc('\n', ofp);
+ hexcol = 0;
+ }
+ putc(hexchar[(*data >> 4) & 0xf], ofp);
+ putc(hexchar[*data & 0xf], ofp);
+ hexcol += 2;
+ }
+}
+
+static void
+pfa_output_end(void)
+{
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/*****
+ * main()
+ **/
+
+int
+main(int argc, char *argv[])
+{
+ struct font_reader fr;
+ int c;
+ FILE *ifp = 0;
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ case LINE_LEN_OPT:
+ line_length = clp->val.i;
+ if (line_length < 8) {
+ line_length = 8;
+ error("warning: line length raised to %d", line_length);
+ } else if (line_length > 1024) {
+ line_length = 1024;
+ error("warning: line length lowered to %d", line_length);
+ }
+ break;
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else {
+ ofp = fopen(clp->vstr, "w");
+ if (!ofp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case WARNINGS_OPT:
+ line_length_warning = (clp->negated ? -1 : 0);
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1ascii (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 1992-2017 I. Lee Hetherington, Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0) {
+ ifp_filename = "<stdin>";
+ ifp = stdin;
+ } else {
+ ifp_filename = clp->vstr;
+ ifp = fopen(clp->vstr, "rb");
+ if (!ifp)
+ fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!ifp)
+ ifp = stdin;
+ if (!ofp)
+ ofp = stdout;
+ if (line_length > 255 && line_length_warning == 0)
+ fprintf(stderr, "%s: warning: selected --line-length is greater than 255\n", program_name);
+
+#if defined(_MSDOS) || defined(_WIN32)
+ /* As we are processing a PFB (binary) input */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ifp), _O_BINARY);
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ /* prepare font reader */
+ fr.output_ascii = pfa_output_ascii;
+ fr.output_binary = pfa_output_binary;
+ fr.output_end = pfa_output_end;
+
+ /* peek at first byte to see if it is the PFB marker 0x80 */
+ c = getc(ifp);
+ ungetc(c, ifp);
+
+ /* do the file */
+ if (c == PFB_MARKER)
+ process_pfb(ifp, ifp_filename, &fr);
+ else if (c == '%')
+ process_pfa(ifp, ifp_filename, &fr);
+ else
+ fatal_error("%s does not start with font marker (`%%' or 0x80)", ifp_filename);
+
+ fclose(ifp);
+ fclose(ofp);
+ return 0;
+}
diff --git a/Build/source/utils/t1utils/t1utils-src/t1asm.1 b/Build/source/utils/t1utils/t1utils-src/t1asm.1
new file mode 100644
index 00000000000..a346be75532
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1asm.1
@@ -0,0 +1,96 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1ASM 1 "" "Version \*V"
+.SH NAME
+t1asm \- assemble PostScript Type 1 font
+.SH SYNOPSIS
+.B t1asm
+\%[\fB\-a\fR|\fB\-b\fR]
+\%[\fB\-l\fR \fIlength\fR]
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.B t1asm
+assembles Adobe Type 1 font programs into either PFA (hexadecimal) or PFB
+(binary) formats from a human-readable form. If the file
+.I output
+is not specified output goes to the standard output. If the file
+.I input
+is not specified input comes from the standard input.
+
+.B t1asm
+tokenizes the charstring data and performs eexec and charstring encryption
+as specified in the ``black book,''
+.I "Adobe Type 1 Font Format."
+
+The input must have a line of the form
+.RS
+.nf
+.ft B
+/-|{string currentfile exch readstring pop}executeonly def
+.ft R
+.fi
+.RE
+which defines the command, in this case `\-|', that is to start charstring
+data. It is an error not to define such a command. Another common name for
+this command is `RD'.
+
+After the start of the
+.B Subrs
+array in the input, all open braces `{' not in a comment begin a
+charstring. Such a charstring is terminated by the next non-comment close
+brace `}'. Within such a charstring, only comments, integers, and valid
+charstring commands are allowed. Valid charstring command names can be
+found in
+.I "Adobe Type 1 Font Format"
+and other documents describing the newer Type 2 opcodes. The format within
+a charstring is unimportant as long as integers and commands are separated
+by at least a one whitespace (space, tab, newline) character. Note that
+within charstrings, comments are discarded because they cannot be encoded.
+.SH OPTIONS
+.TP 5
+.BR \-\-pfa ", " \-a
+Output in PFA (ASCII) format.
+.TP 5
+.BR \-\-pfb ", " \-b
+Output in PFB (binary) format. This is the default.
+.TP
+.BI \-\-block\-length= "num\fR, " \-l " num"
+PFB only: Set the maximum output block length to
+.I num.
+The default length is as large as memory allows.
+.TP
+.BI \-\-line\-length= "num\fR, " \-l " num"
+PFA only: Set the maximum length of encrypted lines in the output to
+.I num.
+(These are the lines consisting wholly of hexadecimal digits.) The default
+is 64.
+.SH EXAMPLES
+.LP
+.nf
+% t1asm Utopia-Regular.raw > Utopia-Regular.pfb
+% t1asm -a Utopia-Regular.raw > Utopia-Regular.pfa
+.fi
+.SH "SEE ALSO"
+.LP
+.M t1disasm 1 ,
+.M t1ascii 1 ,
+.M t1binary 1 ,
+.M t1unmac 1 ,
+.M t1mac 1
+.LP
+.I "Adobe Type 1 Font Format"
+is available free from Adobe as a PDF file.
+http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF
+.LP
+.I "The Type 2 Charstring Format,"
+also available from Adobe as a PDF file, describes the newer Type 2
+operators, which are also used in some multiple-master Type 1 fonts like
+Adobe Jenson and Kepler.
+http://partners.adobe.com/asn/developer/PDFS/TN/5177.Type2.pdf
+'
+.SH AUTHORS
+Lee Hetherington (ilh@lcs.mit.edu)
+.br
+Eddie Kohler (ekohler@gmail.com)
diff --git a/Build/source/utils/t1utils/t1utils-src/t1asm.c b/Build/source/utils/t1utils/t1utils-src/t1asm.c
new file mode 100644
index 00000000000..67a6ced2234
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1asm.c
@@ -0,0 +1,810 @@
+/* t1asm -*- c-basic-offset: 2 -*-
+ *
+ * This program `assembles' Adobe Type-1 font programs in pseudo-PostScript
+ * form into either PFB or PFA format. The human readable/editable input is
+ * charstring- and eexec-encrypted as specified in the `Adobe Type 1 Font
+ * Format' version 1.1 (the `black book'). There is a companion program,
+ * t1disasm, which `disassembles' PFB and PFA files into a pseudo-PostScript
+ * file.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ *
+ * New change log in `NEWS'. Old change log:
+ *
+ * Revision 1.4 92/07/10 10:53:09 ilh
+ * Added support for additional PostScript after the closefile command
+ * (ie., some fonts have {restore}if after the cleartomark).
+ *
+ * Revision 1.3 92/06/23 10:58:25 ilh
+ * MSDOS porting by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)
+ * incoporated.
+ *
+ * Revision 1.2 92/05/22 11:54:45 ilh
+ * Fixed bug where integers larger than 32000 could not be encoded in
+ * charstrings. Now integer range is correct for four-byte
+ * twos-complement integers: -(1<<31) <= i <= (1<<31)-1. Bug detected by
+ * Piet Tutelaers (rcpt@urc.tue.nl).
+ *
+ * Revision 1.1 92/05/22 11:48:46 ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ *
+ */
+
+/* Note: this is ANSI C. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+#include "t1asmhelp.h"
+
+#define LINESIZE 512
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char byte;
+
+static FILE *ifp;
+static FILE *ofp;
+static struct pfb_writer w;
+static int blocklen = -1;
+
+/* flags */
+static int pfb = 1;
+static int active = 0;
+static int ever_active = 0;
+static int start_charstring = 0;
+static int in_eexec = 0;
+
+/* need to add 1 as space for \0 */
+static char line[LINESIZE + 1];
+
+/* for charstring buffering */
+static byte *charstring_buf, *charstring_bp;
+static int charstring_bufsiz;
+
+/* decryption stuff */
+static uint16_t er, cr;
+static const uint32_t c1 = 52845;
+static const uint32_t c2 = 22719;
+
+/* table of charstring commands */
+static struct command {
+ const char *name;
+ int one, two;
+} command_table[] = {
+ { "abs", 12, 9 }, /* Type 2 */
+ { "add", 12, 10 }, /* Type 2 */
+ { "and", 12, 3 }, /* Type 2 */
+ { "blend", 16, -1 }, /* Type 2 */
+ { "callgsubr", 29, -1 }, /* Type 2 */
+ { "callother", 12, 16 }, /* Type 1 ONLY */
+ { "callothersubr", 12, 16 }, /* Type 1 ONLY */
+ { "callsubr", 10, -1 },
+ { "closepath", 9, -1 }, /* Type 1 ONLY */
+ { "cntrmask", 20, -1 }, /* Type 2 */
+ { "div", 12, 12 },
+ { "dotsection", 12, 0 }, /* Type 1 ONLY */
+ { "drop", 12, 18 }, /* Type 2 */
+ { "dup", 12, 27 }, /* Type 2 */
+ { "endchar", 14, -1 },
+ { "eq", 12, 15 }, /* Type 2 */
+ { "error", 0, -1 }, /* special */
+ { "escape", 12, -1 }, /* special */
+ { "exch", 12, 28 }, /* Type 2 */
+ { "flex", 12, 35 }, /* Type 2 */
+ { "flex1", 12, 37 }, /* Type 2 */
+ { "get", 12, 21 }, /* Type 2 */
+ { "hflex", 12, 34 }, /* Type 2 */
+ { "hflex1", 12, 36 }, /* Type 2 */
+ { "hhcurveto", 27, -1 }, /* Type 2 */
+ { "hintmask", 19, -1 }, /* Type 2 */
+ { "hlineto", 6, -1 },
+ { "hmoveto", 22, -1 },
+ { "hsbw", 13, -1 }, /* Type 1 ONLY */
+ { "hstem", 1, -1 },
+ { "hstem3", 12, 2 }, /* Type 1 ONLY */
+ { "hstemhm", 18, -1 }, /* Type 2 */
+ { "hvcurveto", 31, -1 },
+ { "ifelse", 12, 22 }, /* Type 2 */
+ { "index", 12, 29 }, /* Type 2 */
+ { "load", 12, 13 }, /* Type 2 */
+ { "mul", 12, 24 }, /* Type 2 */
+ { "neg", 12, 14 }, /* Type 2 */
+ { "not", 12, 5 }, /* Type 2 */
+ { "or", 12, 4 }, /* Type 2 */
+ { "pop", 12, 17 }, /* Type 1 ONLY */
+ { "put", 12, 20 }, /* Type 2 */
+ { "random", 12, 23 }, /* Type 2 */
+ { "rcurveline", 24, -1 }, /* Type 2 */
+ { "return", 11, -1 },
+ { "rlinecurve", 25, -1 }, /* Type 2 */
+ { "rlineto", 5, -1 },
+ { "rmoveto", 21, -1 },
+ { "roll", 12, 30 }, /* Type 2 */
+ { "rrcurveto", 8, -1 },
+ { "sbw", 12, 7 }, /* Type 1 ONLY */
+ { "seac", 12, 6 }, /* Type 1 ONLY */
+ { "setcurrentpoint", 12, 33 }, /* Type 1 ONLY */
+ { "sqrt", 12, 26 }, /* Type 2 */
+ { "store", 12, 8 }, /* Type 2 */
+ { "sub", 12, 11 }, /* Type 2 */
+ { "vhcurveto", 30, -1 },
+ { "vlineto", 7, -1 },
+ { "vmoveto", 4, -1 },
+ { "vstem", 3, -1 },
+ { "vstem3", 12, 1 }, /* Type 1 ONLY */
+ { "vstemhm", 23, -1 }, /* Type 2 */
+ { "vvcurveto", 26, -1 }, /* Type 2 */
+}; /* alphabetical */
+
+/* Two separate encryption functions because eexec and charstring encryption
+ must proceed in parallel. */
+
+static byte eencrypt(byte plain)
+{
+ byte cipher;
+
+ cipher = (byte)(plain ^ (er >> 8));
+ er = (uint16_t)((cipher + er) * c1 + c2);
+ return cipher;
+}
+
+static byte cencrypt(byte plain)
+{
+ byte cipher;
+
+ /* Thanks to Tom Kacvinsky <tjk@ams.org> who reported that lenIV == -1 means
+ unencrypted charstrings. */
+ if (lenIV < 0) return plain;
+
+ cipher = (byte)(plain ^ (cr >> 8));
+ cr = (uint16_t)((cipher + cr) * c1 + c2);
+ return cipher;
+}
+
+/* This function outputs a single byte. If output is in PFB format then output
+ is buffered through blockbuf[]. If output is in PFA format, then output
+ will be hexadecimal if in_eexec is set, ASCII otherwise. */
+
+static void output_byte(byte b)
+{
+ static const char *hexchar = "0123456789abcdef";
+ static int hexcol = 0;
+
+ if (pfb) {
+ /* PFB */
+ PFB_OUTPUT_BYTE(&w, b);
+ } else {
+ /* PFA */
+ if (in_eexec) {
+ /* trim hexadecimal lines to `blocklen' columns */
+ if (hexcol >= blocklen) {
+ putc('\n', ofp);
+ hexcol = 0;
+ }
+ putc(hexchar[(b >> 4) & 0xf], ofp);
+ putc(hexchar[b & 0xf], ofp);
+ hexcol += 2;
+ } else {
+ putc(b, ofp);
+ }
+ }
+}
+
+/* This function outputs a byte through possible eexec encryption. */
+
+static void eexec_byte(byte b)
+{
+ if (in_eexec)
+ output_byte(eencrypt(b));
+ else
+ output_byte(b);
+}
+
+/* This function outputs a null-terminated string through possible eexec
+ encryption. */
+
+static void eexec_string(const char *string)
+{
+ while (*string)
+ eexec_byte(*string++);
+}
+
+/* This function gets ready for the eexec-encrypted data. If output is in
+ PFB format then flush current ASCII block and get ready for binary block.
+ We start encryption with four random (zero) bytes. */
+
+static void eexec_start(char *string)
+{
+ eexec_string("currentfile eexec\n");
+ if (pfb && w.blocktyp != PFB_BINARY) {
+ pfb_writer_output_block(&w);
+ w.blocktyp = PFB_BINARY;
+ }
+
+ in_eexec = 1;
+ er = 55665;
+ eexec_byte(0);
+ eexec_byte(0);
+ eexec_byte(0);
+ eexec_byte(0);
+ eexec_string(string);
+}
+
+/* 25.Aug.1999 -- Return 1 if this line actually looks like the start of a
+ charstring. We use the heuristic that it should start with `/' (a name) or
+ `dup' (a subroutine). Previous heuristic caused killa bad output. */
+
+static int check_line_charstring(void)
+{
+ char *p = line;
+ while (isspace((unsigned char) *p))
+ p++;
+ return (*p == '/' || (p[0] == 'd' && p[1] == 'u' && p[2] == 'p'));
+}
+
+/* This function returns an input line of characters. A line is terminated by
+ length (including terminating null) greater than LINESIZE, \r, \n, \r\n, or
+ when active (looking for charstrings) by '{'. When terminated by a newline
+ the newline is put into line[]. When terminated by '{', the '{' is not put
+ into line[], and the flag start_charstring is set to 1. */
+
+static void t1utils_getline(void)
+{
+ int c;
+ char *p = line;
+ int comment = 0;
+ start_charstring = 0;
+
+ while (p < line + LINESIZE) {
+ c = getc(ifp);
+
+ if (c == EOF)
+ break;
+ else if (c == '%')
+ comment = 1;
+ else if (active && !comment && c == '{') {
+ /* 25.Aug.1999 -- new check for whether we should stop be active */
+ if (check_line_charstring()) {
+ start_charstring = 1;
+ break;
+ } else
+ active = 0;
+ }
+
+ *p++ = (char) c;
+
+ /* end of line processing: change CR or CRLF into LF, and exit */
+ if (c == '\r') {
+ c = getc(ifp);
+ if (c != '\n')
+ ungetc(c, ifp);
+ p[-1] = '\n';
+ break;
+ } else if (c == '\n')
+ break;
+ }
+
+ *p = '\0';
+}
+
+/* This function wraps-up the eexec-encrypted data and writes ASCII trailer.
+ If output is in PFB format then this entails flushing binary block and
+ starting an ASCII block. */
+
+static void eexec_end(void)
+{
+ int i, j;
+
+ if (!pfb)
+ putc('\n', ofp);
+ else if (w.blocktyp != PFB_ASCII) {
+ pfb_writer_output_block(&w);
+ w.blocktyp = PFB_ASCII;
+ }
+
+ in_eexec = active = 0;
+
+ for (i = 0; i < 8; i++) {
+ for (j = 0; j < 64; j++)
+ eexec_byte('0');
+ eexec_byte('\n');
+ }
+}
+
+/* This function is used by the binary search, bsearch(), for command names in
+ the command table. */
+
+static int CDECL command_compare(const void *key, const void *item)
+{
+ return strcmp((const char *) key, ((const struct command *) item)->name);
+}
+
+/* This function returns 1 if the string is an integer and 0 otherwise. */
+
+static int is_integer(char *string)
+{
+ if (isdigit((unsigned char) string[0]) || string[0] == '-' || string[0] == '+') {
+ while (*++string && isdigit((unsigned char) *string))
+ ; /* deliberately empty */
+ if (!*string)
+ return 1;
+ }
+ return 0;
+}
+
+/* This function initializes charstring encryption. Note that this is called
+ at the beginning of every charstring. */
+
+static void charstring_start(void)
+{
+ int i;
+
+ if (!charstring_buf) {
+ charstring_bufsiz = 65536;
+ if (!(charstring_buf = (byte *) malloc(charstring_bufsiz)))
+ fatal_error("out of memory");
+ }
+
+ charstring_bp = charstring_buf;
+ cr = 4330;
+ for (i = 0; i < lenIV; i++)
+ *charstring_bp++ = cencrypt((byte) 0);
+}
+
+/* This function encrypts and buffers a single byte of charstring data. */
+
+static void charstring_byte(int v)
+{
+ byte b = (byte)(v & 0xff);
+ if (charstring_bp - charstring_buf == charstring_bufsiz) {
+ charstring_bufsiz *= 2;
+ if (!(charstring_buf = (byte *) realloc(charstring_buf, charstring_bufsiz)))
+ fatal_error("out of memory");
+ charstring_bp = charstring_buf + charstring_bufsiz / 2;
+ }
+ *charstring_bp++ = cencrypt(b);
+}
+
+/* This function outputs buffered, encrypted charstring data through possible
+ eexec encryption. */
+
+static void charstring_end(void)
+{
+ byte *bp;
+
+ sprintf(line, "%d ", (int) (charstring_bp - charstring_buf));
+ eexec_string(line);
+ sprintf(line, "%s ", cs_start);
+ eexec_string(line);
+ for (bp = charstring_buf; bp < charstring_bp; bp++)
+ eexec_byte(*bp);
+}
+
+/* This function generates the charstring representation of an integer. */
+
+static void charstring_int(int num)
+{
+ int x;
+
+ if (num >= -107 && num <= 107) {
+ charstring_byte(num + 139);
+ } else if (num >= 108 && num <= 1131) {
+ x = num - 108;
+ charstring_byte(x / 256 + 247);
+ charstring_byte(x % 256);
+ } else if (num >= -1131 && num <= -108) {
+ x = abs(num) - 108;
+ charstring_byte(x / 256 + 251);
+ charstring_byte(x % 256);
+ } else if (num >= (-2147483647-1) && num <= 2147483647) {
+ charstring_byte(255);
+ charstring_byte(num >> 24);
+ charstring_byte(num >> 16);
+ charstring_byte(num >> 8);
+ charstring_byte(num);
+ } else {
+ error("can't format huge number `%d'", num);
+ /* output 0 instead */
+ charstring_byte(139);
+ }
+}
+
+/* This function returns one charstring token. It ignores comments. */
+
+static void get_charstring_token(void)
+{
+ int c = getc(ifp);
+ while (isspace(c))
+ c = getc(ifp);
+
+ if (c == '%') {
+ while (c != EOF && c != '\r' && c != '\n')
+ c = getc(ifp);
+ get_charstring_token();
+
+ } else if (c == '}') {
+ line[0] = '}';
+ line[1] = 0;
+
+ } else {
+ char *p = line;
+ while (p < line + LINESIZE) {
+ *p++ = c;
+ c = getc(ifp);
+ if (c == EOF || isspace(c) || c == '%' || c == '}') {
+ ungetc(c, ifp);
+ break;
+ }
+ }
+ *p = 0;
+ }
+}
+
+
+/* This function parses an entire charstring into integers and commands,
+ outputting bytes through the charstring buffer. */
+
+static void parse_charstring(void)
+{
+ struct command *cp;
+
+ charstring_start();
+ while (!feof(ifp)) {
+ get_charstring_token();
+ if (line[0] == '}')
+ break;
+ if (is_integer(line)) {
+ charstring_int(atoi(line));
+ } else {
+ int one;
+ int two;
+ int ok = 0;
+
+ cp = (struct command *)
+ bsearch((void *) line, (void *) command_table,
+ sizeof(command_table) / sizeof(struct command),
+ sizeof(struct command),
+ command_compare);
+
+ if (cp) {
+ one = cp->one;
+ two = cp->two;
+ ok = 1;
+
+ } else if (strncmp(line, "escape_", 7) == 0) {
+ /* Parse the `escape' keyword requested by Lee Chun-Yu and Werner
+ Lemberg */
+ one = 12;
+ if (sscanf(line + 7, "%d", &two) == 1)
+ ok = 1;
+
+ } else if (strncmp(line, "UNKNOWN_", 8) == 0) {
+ /* Allow unanticipated UNKNOWN commands. */
+ one = 12;
+ if (sscanf(line + 8, "12_%d", &two) == 1)
+ ok = 1;
+ else if (sscanf(line + 8, "%d", &one) == 1) {
+ two = -1;
+ ok = 1;
+ }
+ }
+
+ if (!ok)
+ error("unknown charstring command `%s'", line);
+ else if (one < 0 || one > 255)
+ error("bad charstring command number `%d'", one);
+ else if (two > 255)
+ error("bad charstring command number `%d'", two);
+ else if (two < 0)
+ charstring_byte(one);
+ else {
+ charstring_byte(one);
+ charstring_byte(two);
+ }
+ }
+ }
+ charstring_end();
+}
+
+
+/*****
+ * Command line
+ **/
+
+#define BLOCK_LEN_OPT 300
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+#define PFB_OPT 304
+#define PFA_OPT 305
+
+static Clp_Option options[] = {
+ { "block-length", 'l', BLOCK_LEN_OPT, Clp_ValInt, 0 },
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "line-length", 0, BLOCK_LEN_OPT, Clp_ValInt, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "pfa", 'a', PFA_OPT, 0, 0 },
+ { "pfb", 'b', PFB_OPT, 0, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+};
+static const char *program_name;
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+}
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+static void
+usage(void)
+{
+ printf("\
+`T1asm' translates a human-readable version of a PostScript Type 1 font into\n\
+standard PFB or PFA format. The result is written to the standard output\n\
+unless an OUTPUT file is given.\n\
+\n\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+\n\
+Options:\n\
+ -a, --pfa Output font in ASCII (PFA) format.\n\
+ -b, --pfb Output font in binary (PFB) format. This is\n\
+ the default.\n\
+ -l, --block-length NUM Set max block length for PFB output.\n\
+ -l, --line-length NUM Set max encrypted line length for PFA output.\n\
+ -o, --output=FILE Write output to FILE.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+int main(int argc, char *argv[])
+{
+ char *p, *q;
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ case BLOCK_LEN_OPT:
+ blocklen = clp->val.i;
+ break;
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else if (!(ofp = fopen(clp->vstr, "w")))
+ fatal_error("%s: %s", clp->vstr, strerror(errno));
+ break;
+
+ case PFB_OPT:
+ pfb = 1;
+ break;
+
+ case PFA_OPT:
+ pfb = 0;
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1asm (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 1992-2017 I. Lee Hetherington, Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0)
+ ifp = stdin;
+ else if (!(ifp = fopen(clp->vstr, "r")))
+ fatal_error("%s: %s", clp->vstr, strerror(errno));
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!pfb) {
+ if (blocklen == -1)
+ blocklen = 64;
+ else if (blocklen < 8) {
+ blocklen = 8;
+ error("warning: line length raised to %d", blocklen);
+ } else if (blocklen > 1024) {
+ blocklen = 1024;
+ error("warning: line length lowered to %d", blocklen);
+ }
+ }
+
+ if (!ifp) ifp = stdin;
+ if (!ofp) ofp = stdout;
+
+ if (pfb)
+ init_pfb_writer(&w, blocklen, ofp);
+
+#if defined(_MSDOS) || defined(_WIN32)
+ /* If we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ /* Finally, we loop until no more input. Some special things to look for are
+ the `currentfile eexec' line, the beginning of the `/Subrs' or
+ `/CharStrings' definition, the definition of `/lenIV', and the definition
+ of the charstring start command which has `...string currentfile...' in
+ it.
+
+ Being careful: Check with `/Subrs' and `/CharStrings' to see that a
+ number follows the token -- otherwise, the token is probably nested in a
+ subroutine a la Adobe Jenson, and we shouldn't pay attention to it.
+
+ Bugs: Occurrence of `/Subrs 9' in a comment will fool t1asm.
+
+ Thanks to Tom Kacvinsky <tjk@ams.org> who reported that some fonts come
+ without /Subrs sections and provided a patch. */
+
+ while (!feof(ifp) && !ferror(ifp)) {
+ t1utils_getline();
+
+ if (!ever_active) {
+ if (strncmp(line, "currentfile eexec", 17) == 0 && isspace((unsigned char) line[17])) {
+ /* Allow arbitrary whitespace after "currentfile eexec".
+ Thanks to Tom Kacvinsky <tjk@ams.org> for reporting this.
+ Note: strlen("currentfile eexec") == 17. */
+ for (p = line + 18; isspace((unsigned char) *p); p++)
+ ;
+ eexec_start(p);
+ continue;
+ } else if (strncmp(line, "/lenIV", 6) == 0) {
+ set_lenIV(line, strlen(line));
+ } else if ((p = strstr(line, "string currentfile"))) {
+ set_cs_start(line, strlen(line));
+ }
+ }
+
+ if (!active) {
+ if ((p = strstr(line, "/Subrs")) && isdigit((unsigned char) p[7]))
+ ever_active = active = 1;
+ else if ((p = strstr(line, "/CharStrings")) && isdigit((unsigned char) p[13]))
+ ever_active = active = 1;
+ }
+ if ((p = strstr(line, "currentfile closefile"))) {
+ /* 2/14/99 -- happy Valentine's day! -- don't look for `mark
+ currentfile closefile'; the `mark' might be on a different line */
+ /* 1/3/2002 -- happy new year! -- Luc Devroye reports a failure with
+ some printers when `currentfile closefile' is followed by space */
+ p += sizeof("currentfile closefile") - 1;
+ for (q = p; isspace((unsigned char) *q) && *q != '\n'; q++)
+ /* nada */;
+ if (q == p && !*q)
+ error("warning: `currentfile closefile' line too long");
+ else if (q != p) {
+ if (*q != '\n')
+ error("text after `currentfile closefile' ignored");
+ *p++ = '\n';
+ *p++ = '\0';
+ }
+ eexec_string(line);
+ break;
+ }
+
+ eexec_string(line);
+
+ /* output line data */
+ if (start_charstring) {
+ if (!cs_start[0])
+ fatal_error("couldn't find charstring start command");
+ parse_charstring();
+ }
+ }
+
+ /* Handle remaining PostScript after the eexec section */
+ if (in_eexec)
+ eexec_end();
+
+ /* There may be additional code. */
+ while (!feof(ifp) && !ferror(ifp)) {
+ t1utils_getline();
+ eexec_string(line);
+ }
+
+ if (pfb)
+ pfb_writer_end(&w);
+
+ /* the end! */
+ if (!ever_active)
+ error("warning: no charstrings found in input file");
+ fclose(ifp);
+ fclose(ofp);
+ return 0;
+}
diff --git a/Build/source/utils/t1utils/t1utils-src/t1asmhelp.h b/Build/source/utils/t1utils/t1utils-src/t1asmhelp.h
new file mode 100644
index 00000000000..1cb5b09b180
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1asmhelp.h
@@ -0,0 +1,58 @@
+#ifndef T1ASMHELP_H
+#define T1ASMHELP_H
+
+static int lenIV = 4;
+
+/* If the line contains an entry of the form `/lenIV <num>' then set the global
+ lenIV to <num>. This indicates the number of random bytes at the beginning
+ of each charstring. */
+
+#define memmem my_memmem
+
+static void
+set_lenIV(const char* line, size_t line_len)
+{
+ char* p = memmem(line, line_len, "/lenIV ", 7);
+
+ /* Allow lenIV to be negative. Thanks to Tom Kacvinsky <tjk@ams.org> */
+ if (p && p + 7 < line + line_len) {
+ const char* x = p + 7 + (p[7] == '+' || p[7] == '-');
+ if (x < line + line_len && isdigit((unsigned char) *x)) {
+ lenIV = (unsigned char) *x - '0';
+ for (++x; x < line + line_len && isdigit((unsigned char) *x); ++x)
+ lenIV = 10 * lenIV + (unsigned char) *x - '0';
+ if (p[7] == '-')
+ lenIV = -lenIV;
+ }
+ }
+}
+
+
+static char cs_start_init[] = "";
+static char *cs_start = cs_start_init;
+
+static void
+set_cs_start(const char* line, size_t line_len)
+{
+ static int cs_start_set = 0;
+ char *p, *q, *r;
+
+ if ((p = memmem(line, line_len, "string currentfile", 18))
+ && memmem(line, line_len, "readstring", 10)) {
+ /* locate the name of the charstring start command */
+ for (q = p; q != line && *(q-1) != '/'; --q)
+ /* nada */;
+ if (q != line) {
+ for (r = q; r != p && !isspace((unsigned char) *r) && *r != '{'; ++r)
+ /* nada */;
+ if (cs_start_set)
+ free(cs_start);
+ cs_start = p = malloc(r - q + 1);
+ memcpy(p, q, r - q);
+ p[r - q] = 0;
+ cs_start_set = 1;
+ }
+ }
+}
+
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/t1binary.1 b/Build/source/utils/t1utils/t1utils-src/t1binary.1
new file mode 100644
index 00000000000..9a1e8f02bed
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1binary.1
@@ -0,0 +1,42 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1BINARY 1 "" "Version \*V"
+.SH NAME
+t1binary \- convert PostScript Type 1 font from ASCII to binary
+.SH SYNOPSIS
+.B t1binary
+\%[\fB\-l\fR \fIlength\fR]
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.B t1binary
+converts Adobe Type 1 font programs in PFA (hexadecimal) format to PFB
+(binary) format. If the file
+.I output
+is not specified output goes to the standard output.
+If the file
+.I input
+is not specified input comes from the standard input.
+.SH OPTIONS
+.TP 5
+.BI \-\-block\-length= "length\fR, " \-l " length"
+Set the maximum length of sections in PFB output to
+.I length.
+The default length is as large as memory allows.
+.SH "SEE ALSO"
+.LP
+.M t1ascii 1 ,
+.M t1unmac 1 ,
+.M t1mac 1 ,
+.M t1disasm 1 ,
+.M t1asm 1
+.LP
+.I "Adobe Type 1 Font Format"
+.SH AUTHORS
+Lee Hetherington (ilh@lcs.mit.edu)
+.br
+Eddie Kohler (ekohler@gmail.com)
+.PP
+Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+Kai-Uwe Herbing (herbing@netmbx.netmbx.de).
diff --git a/Build/source/utils/t1utils/t1utils-src/t1binary.c b/Build/source/utils/t1utils/t1utils-src/t1binary.c
new file mode 100644
index 00000000000..240617ada0b
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1binary.c
@@ -0,0 +1,285 @@
+/* t1binary
+ *
+ * This program takes an Adobe Type-1 font program in ASCII (PFA) format and
+ * converts it to binary (PFB) format.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ *
+ * New change log in `NEWS'. Old change log:
+ *
+ * Revision 1.2 92/06/23 10:58:08 ilh
+ * MSDOS porting by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)
+ * incoporated.
+ *
+ * Revision 1.1 92/05/22 11:58:17 ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ *
+ */
+
+/* Note: this is ANSI C. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char byte;
+
+/* for PFB block buffering */
+static struct pfb_writer w;
+
+
+/* PFB font_reader functions */
+
+static void
+pfb_output_ascii(char *s, int len)
+{
+ if (w.blocktyp == PFB_BINARY) {
+ pfb_writer_output_block(&w);
+ w.blocktyp = PFB_ASCII;
+ }
+ for (; len > 0; len--, s++)
+ PFB_OUTPUT_BYTE(&w, (byte)*s);
+}
+
+static void
+pfb_output_binary(unsigned char *s, int len)
+{
+ if (w.blocktyp == PFB_ASCII) {
+ pfb_writer_output_block(&w);
+ w.blocktyp = PFB_BINARY;
+ }
+ for (; len > 0; len--, s++)
+ PFB_OUTPUT_BYTE(&w, *s);
+}
+
+static void
+pfb_output_end(void)
+{
+ pfb_writer_end(&w);
+}
+
+
+/*****
+ * Command line
+ **/
+
+#define BLOCK_LEN_OPT 300
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+
+static Clp_Option options[] = {
+ { "block-length", 'l', BLOCK_LEN_OPT, Clp_ValInt, 0 },
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "length", 0, BLOCK_LEN_OPT, Clp_ValInt, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+};
+static const char *program_name;
+
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+}
+
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+
+static void
+usage(void)
+{
+ printf("\
+`T1binary' translates a PostScript Type 1 font from ASCII (PFA) to compact\n\
+binary (PFB) format. The result is written to the standard output unless an\n\
+OUTPUT file is given.\n\
+\n\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+\n\
+Options:\n\
+ -l, --block-length=NUM Set max output block length.\n\
+ -o, --output=FILE Write output to FILE.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+int
+main(int argc, char *argv[])
+{
+ int c;
+ FILE *ifp = 0, *ofp = 0;
+ const char *ifp_filename = "<stdin>";
+ struct font_reader fr;
+ int max_blocklen = -1;
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ case BLOCK_LEN_OPT:
+ max_blocklen = clp->val.i;
+ if (max_blocklen <= 0) {
+ max_blocklen = 1;
+ error("warning: block length raised to %d", max_blocklen);
+ }
+ break;
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else {
+ ofp = fopen(clp->vstr, "wb");
+ if (!ofp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1binary (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 1992-2017 I. Lee Hetherington, Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0)
+ ifp = stdin;
+ else {
+ ifp_filename = clp->vstr;
+ ifp = fopen(clp->vstr, "r");
+ if (!ifp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!ifp) ifp = stdin;
+ if (!ofp) ofp = stdout;
+
+#if defined(_MSDOS) || defined(_WIN32)
+ /* As we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ /* prepare font reader and pfb writer */
+ fr.output_ascii = pfb_output_ascii;
+ fr.output_binary = pfb_output_binary;
+ fr.output_end = pfb_output_end;
+ init_pfb_writer(&w, max_blocklen, ofp);
+
+ /* peek at first byte to see if it is the PFB marker 0x80 */
+ c = getc(ifp);
+ ungetc(c, ifp);
+
+ /* do the file */
+ if (c == PFB_MARKER)
+ process_pfb(ifp, ifp_filename, &fr);
+ else if (c == '%')
+ process_pfa(ifp, ifp_filename, &fr);
+ else
+ fatal_error("%s does not start with font marker (`%%' or 0x80)", ifp_filename);
+
+ fclose(ifp);
+ fclose(ofp);
+
+ if (!w.binary_blocks_written)
+ fatal_error("no binary blocks written! Are you sure this was a font?");
+
+ return 0;
+}
diff --git a/Build/source/utils/t1utils/t1utils-src/t1disasm.1 b/Build/source/utils/t1utils/t1utils-src/t1disasm.1
new file mode 100644
index 00000000000..60940523142
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1disasm.1
@@ -0,0 +1,96 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1DISASM 1 "" "Version \*V"
+.SH NAME
+t1disasm \- disassemble PostScript Type 1 font
+.SH SYNOPSIS
+.B t1disasm
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.B t1disasm
+disassembles Adobe Type 1 font programs in either PFA (hexadecimal) or PFB
+(binary) formats into human-readable form. If the file
+.I output
+is not specified output goes to the standard output.
+If the file
+.I input
+is not specified input comes from the standard input.
+
+.B t1disasm
+performs eexec and charstring decryption as specified in the ``black
+book'',
+.I "Adobe Type 1 Font Format."
+Additionally, the charstring binary tokens are expanded into human-readable
+text form, using the names given in the black book and later documents
+describing Type 2 opcodes.
+.SH EXAMPLES
+.LP
+.nf
+% t1disasm Utopia-Regular.pfb Utopia-Regular.raw
+% t1disasm Utopia-Regular.pfa Utopia-Regular.raw
+.fi
+
+In
+.B Subrs
+entries in Utopia-Regular.raw will look like
+.RS
+.nf
+.ft B
+dup 5 {
+ 8 111 vstem
+ \-12 128 hstem
+ 707 \-20 hstem
+ return
+ } |
+.ft R
+.fi
+.RE
+and the
+.B CharStrings
+entries like
+.RS
+.nf
+.ft B
+/exclam {
+ 58 242 hsbw
+ 6 callsubr
+ 5 4 callsubr
+ 63 707 rmoveto
+ \-54 0 \-5 \-22 4 \-45 rrcurveto
+ 40 \-431 rlineto
+ 29 hlineto
+ 42 431 rlineto
+ 4 45 \-5 22 \-55 0 rrcurveto
+ closepath
+ 6 4 callsubr
+ \-719 vmoveto
+ 243 callsubr
+ endchar
+ } |\-
+.ft R
+.fi
+.RE
+.SH "SEE ALSO"
+.LP
+.M t1asm 1 ,
+.M t1ascii 1 ,
+.M t1binary 1 ,
+.M t1unmac 1 ,
+.M t1mac 1
+.LP
+.I "Adobe Type 1 Font Format"
+is available free from Adobe as a PDF file:
+http://partners.adobe.com/asn/developer/PDFS/TN/T1_SPEC.PDF
+.LP
+.I "The Type 2 Charstring Format,"
+also available from Adobe as a PDF file, describes the newer Type 2
+operators, which are also used in some multiple-master Type 1 fonts like
+Adobe Jenson and Kepler:
+http://partners.adobe.com/asn/developer/PDFS/TN/5177.Type2.pdf
+'
+.SH AUTHORS
+Lee Hetherington (ilh@lcs.mit.edu)
+.br
+Eddie Kohler (ekohler@gmail.com)
diff --git a/Build/source/utils/t1utils/t1utils-src/t1disasm.c b/Build/source/utils/t1utils/t1utils-src/t1disasm.c
new file mode 100644
index 00000000000..4382f6839b7
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1disasm.c
@@ -0,0 +1,760 @@
+/* t1disasm
+ *
+ * This program `disassembles' Adobe Type-1 font programs in either PFB or PFA
+ * format. It produces a human readable/editable pseudo-PostScript file by
+ * performing eexec and charstring decryption as specified in the `Adobe Type 1
+ * Font Format' version 1.1 (the `black book'). There is a companion program,
+ * t1asm, which `assembles' such a pseudo-PostScript file into either PFB or
+ * PFA format.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ *
+ * New change log in `NEWS'. Old change log:
+ *
+ * Revision 1.4 92/07/10 10:55:08 ilh
+ * Added support for additional PostScript after the closefile command
+ * (ie., some fonts have {restore}if' after the cleartomark). Also,
+ * removed hardwired charstring start command (-| or RD) in favor of
+ * automatically determining it.
+ *
+ * Revision 1.3 92/06/23 10:57:53 ilh
+ * MSDOS porting by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)
+ * incoporated.
+ *
+ * Revision 1.2 92/05/22 12:05:33 ilh
+ * Fixed bug where we were counting on sprintf to return its first
+ * argument---not true in ANSI C. This bug was detected by Piet
+ * Tutelaers (rcpt@urc.tue.nl). Also, fixed (signed) integer overflow
+ * error when testing high-order bit of integer for possible
+ * sign-extension by making comparison between unsigned integers.
+ *
+ * Revision 1.1 92/05/22 12:04:07 ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ *
+ */
+
+/* Note: this is ANSI C. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <assert.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+#include "t1asmhelp.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char byte;
+
+static FILE *ofp;
+static int unknown = 0;
+
+/* decryption stuff */
+static const uint32_t c1 = 52845;
+static const uint32_t c2 = 22719;
+static uint16_t cr_default = 4330;
+static uint16_t er_default = 55665;
+
+static int error_count = 0;
+
+
+/* Subroutine to output strings. */
+
+static void
+output(const char *string)
+{
+ fprintf(ofp, "%s", string);
+}
+
+/* Subroutine to neatly format output of charstring tokens. If token = "\n",
+ then a newline is output. If at start of line (start == 1), prefix token
+ with tab, otherwise a space. */
+
+static void
+output_token(const char *token)
+{
+ static int start = 1;
+ if (strcmp(token, "\n") == 0) {
+ fprintf(ofp, "\n");
+ start = 1;
+ } else {
+ fprintf(ofp, "%s%s", start ? "\t" : " ", token);
+ start = 0;
+ }
+}
+
+/* Subroutine to decrypt and ASCII-ify tokens in charstring data. The
+ charstring decryption machinery is fired up, skipping the first lenIV
+ bytes, and the decrypted tokens are expanded into human-readable form. */
+
+static void
+decrypt_charstring(unsigned char *line, int len)
+{
+ int i;
+ int32_t val;
+ char buf[20];
+
+ /* decrypt charstring */
+ if (lenIV >= 0) {
+ /* only decrypt if lenIV >= 0 -- negative lenIV means unencrypted
+ charstring. Thanks to Tom Kacvinsky <tjk@ams.org> */
+ uint16_t cr = cr_default;
+ byte plain;
+ for (i = 0; i < len; i++) {
+ byte cipher = line[i];
+ plain = (byte)(cipher ^ (cr >> 8));
+ cr = (uint16_t)((cipher + cr) * c1 + c2);
+ line[i] = plain;
+ }
+ line += lenIV;
+ len -= lenIV;
+ }
+
+ /* handle each charstring command */
+ for (i = 0; i < len; i++) {
+ byte b = line[i];
+
+ if (b >= 32) {
+ if (b >= 32 && b <= 246)
+ val = b - 139;
+ else if (b >= 247 && b <= 250) {
+ i++;
+ val = (b - 247)*256 + 108 + line[i];
+ } else if (b >= 251 && b <= 254) {
+ i++;
+ val = -(b - 251)*256 - 108 - line[i];
+ } else {
+ uint32_t uval;
+ uval = (uint32_t) line[i+1] << 24;
+ uval |= (uint32_t) line[i+2] << 16;
+ uval |= (uint32_t) line[i+3] << 8;
+ uval |= (uint32_t) line[i+4] << 0;
+ /* in case an int32 is larger than four bytes---sign extend */
+#if INT_MAX > 0x7FFFFFFFUL
+ if (uval & 0x80000000U)
+ uval |= ~0x7FFFFFFFU;
+#endif
+ val = (int32_t) uval;
+ i += 4;
+ }
+ sprintf(buf, "%d", val);
+ output_token(buf);
+
+ } else {
+ switch (b) {
+ case 0: output_token("error"); break; /* special */
+ case 1: output_token("hstem"); break;
+ case 3: output_token("vstem"); break;
+ case 4: output_token("vmoveto"); break;
+ case 5: output_token("rlineto"); break;
+ case 6: output_token("hlineto"); break;
+ case 7: output_token("vlineto"); break;
+ case 8: output_token("rrcurveto"); break;
+ case 9: output_token("closepath"); break; /* Type 1 ONLY */
+ case 10: output_token("callsubr"); break;
+ case 11: output_token("return"); break;
+ case 13: output_token("hsbw"); break; /* Type 1 ONLY */
+ case 14: output_token("endchar"); break;
+ case 16: output_token("blend"); break; /* Type 2 */
+ case 18: output_token("hstemhm"); break; /* Type 2 */
+ case 19: output_token("hintmask"); break; /* Type 2 */
+ case 20: output_token("cntrmask"); break; /* Type 2 */
+ case 21: output_token("rmoveto"); break;
+ case 22: output_token("hmoveto"); break;
+ case 23: output_token("vstemhm"); break; /* Type 2 */
+ case 24: output_token("rcurveline"); break; /* Type 2 */
+ case 25: output_token("rlinecurve"); break; /* Type 2 */
+ case 26: output_token("vvcurveto"); break; /* Type 2 */
+ case 27: output_token("hhcurveto"); break; /* Type 2 */
+ case 28: { /* Type 2 */
+ /* short integer */
+ val = (line[i+1] & 0xff) << 8;
+ val |= (line[i+2] & 0xff);
+ i += 2;
+ if (val & 0x8000)
+ val |= ~0x7FFF;
+ sprintf(buf, "%d", val);
+ output_token(buf);
+ }
+ case 29: output_token("callgsubr"); break; /* Type 2 */
+ case 30: output_token("vhcurveto"); break;
+ case 31: output_token("hvcurveto"); break;
+ case 12:
+ i++;
+ b = line[i];
+ switch (b) {
+ case 0: output_token("dotsection"); break; /* Type 1 ONLY */
+ case 1: output_token("vstem3"); break; /* Type 1 ONLY */
+ case 2: output_token("hstem3"); break; /* Type 1 ONLY */
+ case 3: output_token("and"); break; /* Type 2 */
+ case 4: output_token("or"); break; /* Type 2 */
+ case 5: output_token("not"); break; /* Type 2 */
+ case 6: output_token("seac"); break; /* Type 1 ONLY */
+ case 7: output_token("sbw"); break; /* Type 1 ONLY */
+ case 8: output_token("store"); break; /* Type 2 */
+ case 9: output_token("abs"); break; /* Type 2 */
+ case 10: output_token("add"); break; /* Type 2 */
+ case 11: output_token("sub"); break; /* Type 2 */
+ case 12: output_token("div"); break;
+ case 13: output_token("load"); break; /* Type 2 */
+ case 14: output_token("neg"); break; /* Type 2 */
+ case 15: output_token("eq"); break; /* Type 2 */
+ case 16: output_token("callothersubr"); break; /* Type 1 ONLY */
+ case 17: output_token("pop"); break; /* Type 1 ONLY */
+ case 18: output_token("drop"); break; /* Type 2 */
+ case 20: output_token("put"); break; /* Type 2 */
+ case 21: output_token("get"); break; /* Type 2 */
+ case 22: output_token("ifelse"); break; /* Type 2 */
+ case 23: output_token("random"); break; /* Type 2 */
+ case 24: output_token("mul"); break; /* Type 2 */
+ case 26: output_token("sqrt"); break; /* Type 2 */
+ case 27: output_token("dup"); break; /* Type 2 */
+ case 28: output_token("exch"); break; /* Type 2 */
+ case 29: output_token("index"); break; /* Type 2 */
+ case 30: output_token("roll"); break; /* Type 2 */
+ case 33: output_token("setcurrentpoint"); break;/* Type 1 ONLY */
+ case 34: output_token("hflex"); break; /* Type 2 */
+ case 35: output_token("flex"); break; /* Type 2 */
+ case 36: output_token("hflex1"); break; /* Type 2 */
+ case 37: output_token("flex1"); break; /* Type 2 */
+ default:
+ sprintf(buf, "escape_%d", b);
+ unknown++;
+ output_token(buf);
+ break;
+ }
+ break;
+ default:
+ sprintf(buf, "UNKNOWN_%d", b);
+ unknown++;
+ output_token(buf);
+ break;
+ }
+ output_token("\n");
+ }
+ }
+ if (i > len) {
+ output("\terror\n");
+ error("disassembly error: charstring too short");
+ }
+}
+
+
+/* Disassembly font_reader functions */
+
+static int in_eexec = 0;
+static unsigned char *save = 0;
+static int save_len = 0;
+static int save_cap = 0;
+
+static void
+append_save(const unsigned char *line, int len)
+{
+ if (line == save) {
+ assert(len <= save_cap);
+ save_len = len;
+ return;
+ }
+ if (save_len + len >= save_cap) {
+ unsigned char *new_save;
+ if (!save_cap) save_cap = 1024;
+ while (save_len + len >= save_cap) save_cap *= 2;
+ new_save = (unsigned char *)malloc(save_cap);
+ if (!new_save)
+ fatal_error("out of memory");
+ memcpy(new_save, save, save_len);
+ free(save);
+ save = new_save;
+ }
+ memcpy(save + save_len, line, len);
+ save_len += len;
+}
+
+
+static unsigned char*
+check_eexec_charstrings_begin(unsigned char* line, int line_len)
+{
+ unsigned char* line_end = line + line_len;
+ line = memmem(line, line_len, "/CharStrings ", 13);
+ if (!line)
+ return 0;
+ line += 13;
+ while (line < line_end && isspace(*line))
+ ++line;
+ if (line == line_end || !isdigit(*line))
+ return 0;
+ while (line < line_end && isdigit(*line))
+ ++line;
+ if (line == line_end || !isspace(*line))
+ return 0;
+ while (line < line_end && isspace(*line))
+ ++line;
+ if (line_end - line < 14 || memcmp(line, "dict dup begin", 14) != 0)
+ return 0;
+ line += 14;
+ while (line < line_end && isspace(*line))
+ ++line;
+ if (line == line_end || *line != '/')
+ return 0;
+ return line;
+}
+
+
+/* returns 1 if next \n should be deleted */
+
+static int
+eexec_line(unsigned char *line, int line_len)
+{
+ int cs_start_len = strlen(cs_start);
+ int pos;
+ int first_space;
+ int digits;
+ int cut_newline = 0;
+
+ /* append this data to the end of `save' if necessary */
+ if (save_len) {
+ append_save(line, line_len);
+ line = save;
+ line_len = save_len;
+ save_len = 0;
+ }
+
+ if (!line_len)
+ return 0;
+
+ /* Look for charstring start */
+
+ /* skip first word */
+ for (pos = 0; pos < line_len && isspace(line[pos]); pos++)
+ ;
+ while (pos < line_len && !isspace(line[pos]))
+ pos++;
+ if (pos >= line_len)
+ goto not_charstring;
+
+ /* skip spaces */
+ first_space = pos;
+ while (pos < line_len && isspace(line[pos]))
+ pos++;
+ if (pos >= line_len || !isdigit(line[pos]))
+ goto not_charstring;
+
+ /* skip number */
+ digits = pos;
+ while (pos < line_len && isdigit(line[pos]))
+ pos++;
+
+ /* check for subr (another number) */
+ if (pos < line_len - 1 && isspace(line[pos]) && isdigit(line[pos+1])) {
+ first_space = pos;
+ digits = pos + 1;
+ for (pos = digits; pos < line_len && isdigit(line[pos]); pos++)
+ ;
+ }
+
+ /* check for charstring start */
+ if (pos + 2 + cs_start_len < line_len
+ && pos > digits
+ && line[pos] == ' '
+ && strncmp((const char *)(line + pos + 1), cs_start, cs_start_len) == 0
+ && line[pos + 1 + cs_start_len] == ' ') {
+ /* check if charstring is long enough */
+ int cs_len = atoi((const char *)(line + digits));
+ if (pos + 2 + cs_start_len + cs_len < line_len) {
+ /* long enough! */
+ if (line[line_len - 1] == '\r') {
+ line[line_len - 1] = '\n';
+ cut_newline = 1;
+ }
+ fprintf(ofp, "%.*s {\n", first_space, line);
+ decrypt_charstring(line + pos + 2 + cs_start_len, cs_len);
+ pos += 2 + cs_start_len + cs_len;
+ fprintf(ofp, "\t}%.*s", line_len - pos, line + pos);
+ return cut_newline;
+ } else {
+ /* not long enough! */
+ append_save(line, line_len);
+ return 0;
+ }
+ }
+
+ /* otherwise, just output the line */
+ not_charstring:
+ /* 6.Oct.2003 - Werner Lemberg reports a stupid Omega font that behaves
+ badly: a charstring definition follows "/Charstrings ... begin", ON THE
+ SAME LINE. */
+ {
+ unsigned char* csbegin = check_eexec_charstrings_begin(line, line_len);
+ if (csbegin) {
+ int len = csbegin - line;
+ fprintf(ofp, "%.*s\n", len, line);
+ return eexec_line(csbegin, line_len - len);
+ }
+ }
+
+ if (line[line_len - 1] == '\r') {
+ line[line_len - 1] = '\n';
+ cut_newline = 1;
+ }
+ set_lenIV((char*) line, line_len);
+ set_cs_start((char*) line, line_len);
+ fprintf(ofp, "%.*s", line_len, line);
+
+ /* look for `currentfile closefile' to see if we should stop decrypting */
+ if (memmem(line, line_len, "currentfile closefile", 21) != 0)
+ in_eexec = -1;
+
+ return cut_newline;
+}
+
+static int
+all_zeroes(const char *string)
+{
+ if (*string != '0')
+ return 0;
+ while (*string == '0')
+ string++;
+ return *string == '\0' || *string == '\n';
+}
+
+static void
+disasm_output_ascii(char *line, int len)
+{
+ int was_in_eexec = in_eexec;
+ (void) len; /* avoid warning */
+ in_eexec = 0;
+
+ /* if we came from a binary section, we need to process that too */
+ if (was_in_eexec > 0) {
+ unsigned char zero = 0;
+ eexec_line(&zero, 0);
+ }
+
+ /* if we just came from the "ASCII part" of an eexec section, we need to
+ process the saved lines */
+ if (was_in_eexec < 0) {
+ int i = 0;
+ int save_char = 0; /* note: save[] is unsigned char * */
+
+ while (i < save_len) {
+ /* grab a line */
+ int start = i;
+ while (i < save_len && save[i] != '\r' && save[i] != '\n')
+ i++;
+ if (i < save_len) {
+ if (i < save_len - 1 && save[i] == '\r' && save[i+1] == '\n')
+ save_char = -1;
+ else
+ save_char = save[i+1];
+ save[i] = '\n';
+ save[i+1] = 0;
+ } else
+ save[i] = 0;
+
+ /* output it */
+ disasm_output_ascii((char *)(save + start), -1);
+
+ /* repair damage */
+ if (i < save_len) {
+ if (save_char >= 0) {
+ save[i+1] = save_char;
+ i++;
+ } else
+ i += 2;
+ }
+ }
+ save_len = 0;
+ }
+
+ if (!all_zeroes(line))
+ output(line);
+}
+
+/* collect until '\n' or end of binary section */
+
+static void
+disasm_output_binary(unsigned char *data, int len)
+{
+ static int ignore_newline;
+ static uint16_t er;
+
+ byte plain;
+ int i;
+
+ /* in the ASCII portion of a binary section, just save this data */
+ if (in_eexec < 0) {
+ append_save(data, len);
+ return;
+ }
+
+ /* eexec initialization */
+ if (in_eexec == 0) {
+ er = er_default;
+ ignore_newline = 0;
+ in_eexec = 0;
+ }
+ if (in_eexec < 4) {
+ for (i = 0; i < len && in_eexec < 4; i++, in_eexec++) {
+ byte cipher = data[i];
+ plain = (byte)(cipher ^ (er >> 8));
+ er = (uint16_t)((cipher + er) * c1 + c2);
+ data[i] = plain;
+ }
+ data += i;
+ len -= i;
+ }
+
+ /* now make lines: collect until '\n' or '\r' and pass them off to
+ eexec_line. */
+ i = 0;
+ while (in_eexec > 0) {
+ int start = i;
+
+ for (; i < len; i++) {
+ byte cipher = data[i];
+ plain = (byte)(cipher ^ (er >> 8));
+ er = (uint16_t)((cipher + er) * c1 + c2);
+ data[i] = plain;
+ if (plain == '\r' || plain == '\n')
+ break;
+ }
+
+ if (ignore_newline && start < i && data[start] == '\n') {
+ ignore_newline = 0;
+ continue;
+ }
+
+ if (i >= len) {
+ if (start < len)
+ append_save(data + start, i - start);
+ break;
+ }
+
+ i++;
+ ignore_newline = eexec_line(data + start, i - start);
+ }
+
+ /* if in_eexec < 0, we have some plaintext lines sitting around in a binary
+ section of the PFB. save them for later */
+ if (in_eexec < 0 && i < len)
+ append_save(data + i, len - i);
+}
+
+static void
+disasm_output_end(void)
+{
+ /* take care of leftover saved data */
+ static char crap[1] = "";
+ disasm_output_ascii(crap, 0);
+}
+
+
+/*****
+ * Command line
+ **/
+
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+
+static Clp_Option options[] = {
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+};
+static const char *program_name;
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ fputc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ fputc('\n', stderr);
+ error_count++;
+ va_end(val);
+}
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [INPUT [OUTPUT]]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+static void
+usage(void)
+{
+ printf("\
+`T1disasm' translates a PostScript Type 1 font in PFB or PFA format into a\n\
+human-readable, human-editable form. The result is written to the standard\n\
+output unless an OUTPUT file is given.\n\
+\n\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+\n\
+Options:\n\
+ -o, --output=FILE Write output to FILE.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+int
+main(int argc, char *argv[])
+{
+ struct font_reader fr;
+ int c;
+ FILE *ifp = 0;
+ const char *ifp_filename = "<stdin>";
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else {
+ ofp = fopen(clp->vstr, "w");
+ if (!ofp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1disasm (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 1992-2017 I. Lee Hetherington, Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0)
+ ifp = stdin;
+ else {
+ ifp_filename = clp->vstr;
+ ifp = fopen(clp->vstr, "rb");
+ if (!ifp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!ifp) ifp = stdin;
+ if (!ofp) ofp = stdout;
+
+#if defined(_MSDOS) || defined(_WIN32)
+ /* As we might be processing a PFB (binary) input file, we must set its file
+ mode to binary. */
+ _setmode(_fileno(ifp), _O_BINARY);
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ /* prepare font reader */
+ fr.output_ascii = disasm_output_ascii;
+ fr.output_binary = disasm_output_binary;
+ fr.output_end = disasm_output_end;
+
+ /* peek at first byte to see if it is the PFB marker 0x80 */
+ c = getc(ifp);
+ ungetc(c, ifp);
+
+ /* do the file */
+ if (c == PFB_MARKER)
+ process_pfb(ifp, ifp_filename, &fr);
+ else if (c == '%')
+ process_pfa(ifp, ifp_filename, &fr);
+ else
+ fatal_error("%s does not start with font marker (`%%' or 0x80)", ifp_filename);
+
+ fclose(ifp);
+ fclose(ofp);
+
+ if (unknown)
+ error((unknown > 1
+ ? "encountered %d unknown charstring commands"
+ : "encountered %d unknown charstring command"),
+ unknown);
+
+ return (error_count ? 1 : 0);
+}
diff --git a/Build/source/utils/t1utils/t1utils-src/t1lib.c b/Build/source/utils/t1utils/t1utils-src/t1lib.c
new file mode 100644
index 00000000000..80af787dc06
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1lib.c
@@ -0,0 +1,449 @@
+/* t1lib
+ *
+ * This file contains functions for reading PFA and PFB files.
+ *
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include "t1lib.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PFA_ASCII 1
+#define PFA_EEXEC_TEST 2
+#define PFA_HEX 3
+#define PFA_BINARY 4
+
+/* This function returns the value (0-15) of a single hex digit. It returns
+ 0 for an invalid hex digit. */
+
+static int
+hexval(char c)
+{
+ if (c >= 'A' && c <= 'F')
+ return c - 'A' + 10;
+ else if (c >= 'a' && c <= 'f')
+ return c - 'a' + 10;
+ else if (c >= '0' && c <= '9')
+ return c - '0';
+ else
+ return 0;
+}
+
+/* This function translates a string of hexadecimal digits into binary data.
+ We allow an odd number of digits. Returns length of binary data. */
+
+static int
+translate_hex_string(char *s, char *saved_orphan)
+{
+ int c1 = *saved_orphan;
+ char *start = s;
+ char *t = s;
+ for (; *s; s++) {
+ if (isspace((unsigned char) *s))
+ continue;
+ if (c1) {
+ *t++ = (hexval(c1) << 4) + hexval(*s);
+ c1 = 0;
+ } else
+ c1 = *s;
+ }
+ *saved_orphan = c1;
+ return t - start;
+}
+
+/* This function returns 1 if the string contains all '0's. */
+
+static int
+all_zeroes(char *s)
+{
+ if (*s == '\0' || *s == '\n')
+ return 0;
+ while (*s == '0')
+ s++;
+ return *s == '\0' || *s == '\n';
+}
+
+/* This function handles the entire file. */
+
+#define LINESIZE 1024
+
+void
+process_pfa(FILE *ifp, const char *ifp_filename, struct font_reader *fr)
+{
+ /* Loop until no more input. We need to look for `currentfile eexec' to
+ start eexec section (hex to binary conversion) and line of all zeros to
+ switch back to ASCII. */
+
+ /* Don't use fgets() in case line-endings are indicated by bare \r's, as
+ occurs in Macintosh fonts. */
+
+ /* 2.Aug.1999 - At the behest of Tom Kacvinsky <tjk@ams.org>, support
+ binary PFA fonts. */
+
+ char buffer[LINESIZE];
+ int c = 0;
+ int blocktyp = PFA_ASCII;
+ char saved_orphan = 0;
+ (void)ifp_filename;
+
+ while (c != EOF) {
+ char *line = buffer, *last = buffer;
+ int crlf = 0;
+ c = getc(ifp);
+ while (c != EOF && c != '\r' && c != '\n' && last < buffer + LINESIZE - 1) {
+ *last++ = c;
+ c = getc(ifp);
+ }
+
+ /* handle the end of the line */
+ if (last == buffer + LINESIZE - 1)
+ /* buffer overrun: don't append newline even if we have it */
+ ungetc(c, ifp);
+ else if (c == '\r' && blocktyp != PFA_BINARY) {
+ /* change CR or CR/LF into LF, unless reading binary data! (This
+ condition was wrong before, caused Thanh problems -
+ 6.Mar.2001) */
+ c = getc(ifp);
+ if (c != '\n')
+ ungetc(c, ifp), crlf = 1;
+ else
+ crlf = 2;
+ *last++ = '\n';
+ } else if (c != EOF)
+ *last++ = c;
+
+ *last = 0;
+
+ /* now that we have the line, handle it */
+ if (blocktyp == PFA_ASCII) {
+ if (strncmp(line, "currentfile eexec", 17) == 0 && isspace((unsigned char) line[17])) {
+ char saved_p;
+ /* assert(line == buffer); */
+ for (line += 18; isspace((unsigned char) *line); line++)
+ /* nada */;
+ saved_p = *line;
+ *line = 0;
+ fr->output_ascii(buffer, line - buffer);
+ *line = saved_p;
+ blocktyp = PFA_EEXEC_TEST;
+ if (!*line)
+ continue;
+ } else {
+ fr->output_ascii(line, last - line);
+ continue;
+ }
+ }
+
+ /* check immediately after "currentfile eexec" for ASCII or binary */
+ if (blocktyp == PFA_EEXEC_TEST) {
+ /* 8.Feb.2004: fix bug if first character in a binary eexec block
+ is 0, reported by Werner Lemberg */
+ for (; line < last && isspace((unsigned char) *line); line++)
+ /* nada */;
+ if (line == last)
+ continue;
+ else if (last >= line + 4 && isxdigit((unsigned char) line[0])
+ && isxdigit((unsigned char) line[1])
+ && isxdigit((unsigned char) line[2])
+ && isxdigit((unsigned char) line[3]))
+ blocktyp = PFA_HEX;
+ else
+ blocktyp = PFA_BINARY;
+ memmove(buffer, line, last - line + 1);
+ last = buffer + (last - line);
+ line = buffer;
+ /* patch up crlf fix */
+ if (blocktyp == PFA_BINARY && crlf) {
+ last[-1] = '\r';
+ if (crlf == 2)
+ *last++ = '\n';
+ }
+ }
+
+ /* blocktyp == PFA_HEX || blocktyp == PFA_BINARY */
+ if (all_zeroes(line)) { /* XXX not safe */
+ fr->output_ascii(line, last - line);
+ blocktyp = PFA_ASCII;
+ } else if (blocktyp == PFA_HEX) {
+ int len = translate_hex_string(line, &saved_orphan);
+ if (len)
+ fr->output_binary((unsigned char *)line, len);
+ } else
+ fr->output_binary((unsigned char *)line, last - line);
+ }
+
+ fr->output_end();
+}
+
+/* Process a PFB file. */
+
+/* XXX Doesn't handle "currentfile eexec" as intelligently as process_pfa
+ does. */
+
+static int
+handle_pfb_ascii(struct font_reader *fr, char *line, int len)
+{
+ /* Divide PFB_ASCII blocks into lines */
+ int start = 0;
+
+ while (1) {
+ int pos = start;
+
+ while (pos < len && line[pos] != '\n' && line[pos] != '\r')
+ pos++;
+
+ if (pos >= len) {
+ if (pos == start)
+ return 0;
+ else if (start == 0 && pos == LINESIZE - 1) {
+ line[pos] = 0;
+ fr->output_ascii(line, pos);
+ return 0;
+ } else {
+ memmove(line, line + start, pos - start);
+ return pos - start;
+ }
+
+ } else if (pos < len - 1 && line[pos] == '\r' && line[pos+1] == '\n') {
+ line[pos] = '\n';
+ line[pos+1] = 0;
+ fr->output_ascii(line + start, pos + 1 - start);
+ start = pos + 2;
+
+ } else {
+ char save = line[pos+1];
+ line[pos] = '\n';
+ line[pos+1] = 0;
+ fr->output_ascii(line + start, pos + 1 - start);
+ line[pos+1] = save;
+ start = pos + 1;
+ }
+ }
+}
+
+
+void
+process_pfb(FILE *ifp, const char *ifp_filename, struct font_reader *fr)
+{
+ int blocktyp = 0;
+ unsigned block_len = 0;
+ int c = 0;
+ unsigned filepos = 0;
+ int linepos = 0;
+ char line[LINESIZE];
+
+ while (1) {
+ while (block_len == 0) {
+ c = getc(ifp);
+ blocktyp = getc(ifp);
+ if (c != PFB_MARKER
+ || (blocktyp != PFB_ASCII && blocktyp != PFB_BINARY
+ && blocktyp != PFB_DONE)) {
+ if (c == EOF || blocktyp == EOF)
+ error("%s corrupted: no end-of-file marker", ifp_filename);
+ else
+ error("%s corrupted: bad block marker at position %u",
+ ifp_filename, filepos);
+ blocktyp = PFB_DONE;
+ }
+ if (blocktyp == PFB_DONE)
+ goto done;
+
+ block_len = getc(ifp) & 0xFF;
+ block_len |= (getc(ifp) & 0xFF) << 8;
+ block_len |= (getc(ifp) & 0xFF) << 16;
+ block_len |= (unsigned) (getc(ifp) & 0xFF) << 24;
+ if (feof(ifp)) {
+ error("%s corrupted: bad block length at position %u",
+ ifp_filename, filepos);
+ blocktyp = PFB_DONE;
+ goto done;
+ }
+ filepos += 6;
+ }
+
+ /* read the block in its entirety, in LINESIZE chunks */
+ while (block_len > 0) {
+ unsigned rest = LINESIZE - 1 - linepos; /* leave space for '\0' */
+ unsigned n = (block_len > rest ? rest : block_len);
+ int actual = fread(line + linepos, 1, n, ifp);
+ if (actual != (int) n) {
+ error("%s corrupted: block short by %u bytes at position %u",
+ ifp_filename, block_len - actual, filepos);
+ block_len = actual;
+ }
+
+ if (blocktyp == PFB_BINARY)
+ fr->output_binary((unsigned char *)line, actual);
+ else
+ linepos = handle_pfb_ascii(fr, line, linepos + actual);
+
+ block_len -= actual;
+ filepos += actual;
+ }
+
+ /* handle any leftover line */
+ if (linepos > 0) {
+ line[linepos] = 0;
+ fr->output_ascii(line, linepos);
+ linepos = 0;
+ }
+ }
+
+ done:
+ c = getc(ifp);
+ if (c != EOF)
+ error("%s corrupted: data after PFB end marker at position %u",
+ ifp_filename, filepos - 2);
+ fr->output_end();
+}
+
+
+#define DEFAULT_BLOCKLEN (1L<<12)
+
+void
+init_pfb_writer(struct pfb_writer *w, int blocklen, FILE *f)
+{
+ w->len = DEFAULT_BLOCKLEN;
+ w->buf = (unsigned char *)malloc(w->len);
+ if (!w->buf)
+ fatal_error("out of memory");
+ w->max_len = (blocklen <= 0 ? 0xFFFFFFFFU : (unsigned)blocklen);
+ w->pos = 0;
+ w->blocktyp = PFB_ASCII;
+ w->binary_blocks_written = 0;
+ w->f = f;
+}
+
+void
+pfb_writer_output_block(struct pfb_writer *w)
+{
+ /* do nothing if nothing in block */
+ if (w->pos == 0)
+ return;
+
+ /* output four-byte block length */
+ putc(PFB_MARKER, w->f);
+ putc(w->blocktyp, w->f);
+ putc((int)(w->pos & 0xff), w->f);
+ putc((int)((w->pos >> 8) & 0xff), w->f);
+ putc((int)((w->pos >> 16) & 0xff), w->f);
+ putc((int)((w->pos >> 24) & 0xff), w->f);
+
+ /* output block data */
+ fwrite(w->buf, 1, w->pos, w->f);
+
+ /* mark block buffer empty and uninitialized */
+ w->pos = 0;
+ if (w->blocktyp == PFB_BINARY)
+ w->binary_blocks_written++;
+}
+
+void
+pfb_writer_grow_buf(struct pfb_writer *w)
+{
+ if (w->len < w->max_len) {
+ /* grow w->buf */
+ unsigned new_len = w->len * 2;
+ unsigned char *new_buf;
+ if (new_len > w->max_len)
+ new_len = w->max_len;
+ new_buf = (unsigned char *)malloc(new_len);
+ if (!new_buf) {
+ error("out of memory; continuing with a smaller block size");
+ w->max_len = w->len;
+ pfb_writer_output_block(w);
+ } else {
+ memcpy(new_buf, w->buf, w->len);
+ free(w->buf);
+ w->buf = new_buf;
+ w->len = new_len;
+ }
+
+ } else
+ /* buf already the right size, just output the block */
+ pfb_writer_output_block(w);
+}
+
+void
+pfb_writer_end(struct pfb_writer *w)
+{
+ if (w->pos)
+ pfb_writer_output_block(w);
+ putc(PFB_MARKER, w->f);
+ putc(PFB_DONE, w->f);
+}
+
+/* This CRC table and routine were borrowed from macutils-2.0b3 */
+
+static unsigned short crctab[256] = {
+ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
+ 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
+ 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
+ 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
+ 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
+ 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
+ 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
+ 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
+ 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
+ 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
+ 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
+ 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
+ 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
+ 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
+ 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
+ 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
+ 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
+ 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
+ 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
+ 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
+ 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
+ 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+ 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
+ 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
+ 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
+ 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
+ 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
+ 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
+ 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
+ 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
+ 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
+ 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0,
+};
+
+/*
+ * Update a CRC check on the given buffer.
+ */
+
+int
+crcbuf(int crc, unsigned int len, const char *buf)
+{
+ const unsigned char *ubuf = (const unsigned char *)buf;
+ while (len--)
+ crc = ((crc << 8) & 0xFF00) ^ crctab[((crc >> 8) & 0xFF) ^ *ubuf++];
+ return crc;
+}
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/t1lib.h b/Build/source/utils/t1utils/t1utils-src/t1lib.h
new file mode 100644
index 00000000000..93859fea731
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1lib.h
@@ -0,0 +1,56 @@
+#ifndef T1LIB_H
+#define T1LIB_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef WIN32
+# pragma warning (disable: 4007 4096)
+# define CDECL __cdecl
+#else
+# define CDECL
+#endif
+
+#define PFB_MARKER 128
+#define PFB_ASCII 1
+#define PFB_BINARY 2
+#define PFB_DONE 3
+
+struct font_reader {
+ void (*output_ascii)(char *, int);
+ void (*output_binary)(unsigned char *, int);
+ void (*output_end)();
+};
+
+void process_pfa(FILE *, const char *filename, struct font_reader *);
+void process_pfb(FILE *, const char *filename, struct font_reader *);
+
+struct pfb_writer {
+ unsigned char *buf;
+ unsigned len;
+ unsigned max_len;
+ unsigned pos;
+ int blocktyp;
+ int binary_blocks_written;
+ FILE *f;
+};
+
+void init_pfb_writer(struct pfb_writer *, int, FILE *);
+void pfb_writer_output_block(struct pfb_writer *);
+void pfb_writer_grow_buf(struct pfb_writer *);
+void pfb_writer_end(struct pfb_writer *);
+#define PFB_OUTPUT_BYTE(w, b) do { \
+ if ((w)->pos >= (w)->len) pfb_writer_grow_buf(w); \
+ (w)->buf[(w)->pos++] = (b); \
+ } while (0)
+
+int crcbuf(int crc, unsigned int len, const char *buf);
+
+/* whoever uses this code must provide a definition for these functions */
+extern void error(const char *, ...);
+extern void fatal_error(const char *, ...);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/Build/source/utils/t1utils/t1utils-src/t1mac.1 b/Build/source/utils/t1utils/t1utils-src/t1mac.1
new file mode 100644
index 00000000000..d19c96f3d41
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1mac.1
@@ -0,0 +1,62 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1MAC 1 "" "Version \*V"
+.SH NAME
+t1mac \- translate a PFA or PFB PostScript Type 1 font into Macintosh format
+.SH SYNOPSIS
+.B t1mac
+\%[\fB\-\-macbinary\fR | \fB\-\-applesingle\fR |
+\fB\-\-appledouble\fR | \fB\-\-binhex\fR | \fB\-\-raw\fR]
+\%[\fB\-\-filename\fR \fIname\fR]
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.B t1mac
+reads a PFA (hexadecimal) or PFB (binary) PostScript Type 1 font file and
+generates an equivalent Macintosh Type 1 font file. The output file can be
+in MacBinary II, AppleSingle, AppleDouble, or BinHex format, or it can be a
+raw resource fork. The default is MacBinary II; use an option to choose a
+different format. If the
+.I output
+file is not specified output goes to the standard output.
+.PP
+WARNING: The output of
+.B t1mac
+is not sufficient to use the font, since Macintoshes can't read raw Type 1
+fonts. You will need to create a font suitcase containing bitmap fonts if
+you do not have such a suitcase for the font already.
+.B t1mac
+cannot help you do this.
+.SH OPTIONS
+.TP 5
+.BR \-\-raw ", " \-r
+Indicates that output should be a raw resource fork.
+.TP 5
+.BR \-\-macbinary
+Indicates that output should be in MacBinary I or II format. This is the
+default.
+.TP 5
+.BR \-\-applesingle
+Indicates that output should be in AppleSingle format.
+.TP 5
+.BR \-\-appledouble
+Indicates that output should be in AppleDouble format.
+.TP 5
+.BR \-\-binhex
+Indicates that output should be in BinHex 4.0 format.
+.TP 5
+.BR \-\-filename "=\fIname\fR, " \-n " \fIname\fR"
+Sets the Macintosh filename of the output font to \fIname\fR. The default
+is to construct the filename from the font's name using established
+Macintosh conventions. This option is not useful when output is a raw
+resource fork.
+.SH "SEE ALSO"
+.LP
+.M t1unmac 1 ,
+.M t1ascii 1 ,
+.M t1binary 1 ,
+.M t1asm 1 ,
+.M t1disasm 1
+.SH AUTHORS
+Eddie Kohler (ekohler@gmail.com)
diff --git a/Build/source/utils/t1utils/t1utils-src/t1mac.c b/Build/source/utils/t1utils/t1utils-src/t1mac.c
new file mode 100644
index 00000000000..3b5657e1075
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1mac.c
@@ -0,0 +1,1028 @@
+/* t1mac
+ *
+ * This program converts Type 1 fonts in PFA or PFB format into Macintosh Type
+ * 1 fonts stored in MacBinary (I or II), AppleSingle, AppleDouble, BinHex, or
+ * raw resource fork format.
+ *
+ * Copyright (c) 2000-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <errno.h>
+#include <time.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char byte;
+
+/* resource fork layout */
+#define RFORK_HEADERLEN 256
+#define RFORK_MAP_RESERVEDLEN 22
+#define RFORK_MAP_HEADERLEN 28
+#define RFORK_RTYPE_LEN 8
+#define RFORK_RSRC_LEN 12
+
+/* Macintosh times are # seconds since 1/1/1904, not 1/1/1970 */
+#define MAC_TIME_DELTA 2082844800
+
+/* POST resource information */
+#define POST_ASCII 1
+#define POST_BINARY 2
+#define POST_END 5
+
+/* Adobe font file information */
+#define T1_FILETYPE 0x4C57464E /* LWFN */
+#define T1_FILECREATOR 0x54315554 /* T1UT */
+#define T1_FINDERFLAGS 33 /* Bundle + Inited */
+
+#define MAX_RSRC_LEN 2048
+static byte rbuf[MAX_RSRC_LEN];
+static int rbufpos;
+static int blocktyp;
+
+static char *font_name;
+
+/* information about the resources being built */
+typedef struct Rsrc {
+ int32_t type;
+ int id;
+ int attrs;
+ int data_offset;
+ uint32_t data_len;
+ int next_in_type;
+ int next_type;
+} Rsrc;
+static Rsrc *rsrc = 0;
+static int nrsrc = 0;
+static int rsrc_cap = 0;
+static int cur_post_id = 0;
+
+/* output resource fork */
+static FILE *rfork_f = 0;
+
+/* ICN# data */
+static const unsigned char icon_bw_data[] = {
+0,0,0,0,255,255,255,255,128,0,0,1,128,0,0,1,128,0,0,1,
+128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128,0,0,33,
+128,0,0,97,128,0,0,225,128,0,1,225,128,0,3,225,128,0,7,225,
+128,0,15,225,128,0,31,225,128,0,55,225,159,128,103,249,144,128,199,9,
+240,129,135,15,0,131,7,0,0,134,7,0,15,140,7,240,8,31,255,240,
+8,63,255,240,8,96,7,240,8,192,7,240,9,192,15,240,11,224,31,240,
+15,240,63,240,15,255,255,240,0,0,0,0,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,240,255,255,15,240,255,255,15,0,255,255,0,0,255,255,0,
+15,255,255,240,15,255,255,240,15,255,255,240,15,255,255,240,15,255,255,240,
+15,255,255,240,15,255,255,240,15,255,255,240,15,255,255,240,};
+
+static const unsigned char small_icon_bw_data[] = {
+255,255,128,1,128,1,128,1,128,5,128,13,128,29,128,61,128,125,184,253,
+201,179,59,60,39,252,44,60,60,124,63,252,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,255,255,255,207,243,63,252,63,252,63,252,
+63,252,63,252,};
+
+static const unsigned char icon_8_data[] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,105,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,105,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,105,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,105,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,5,92,92,92,92,105,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,5,5,92,92,92,92,105,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,5,5,5,92,
+92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,5,5,5,5,92,92,92,92,105,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,5,5,
+5,5,5,92,92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,5,5,5,5,5,5,92,92,92,92,105,
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+5,5,5,5,5,5,5,92,92,92,92,105,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,5,5,5,5,5,5,5,5,92,
+92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,5,5,92,5,5,5,5,5,5,92,92,92,92,105,92,92,92,105,
+105,105,105,105,92,92,92,92,92,92,92,92,92,5,5,92,92,5,5,105,
+105,105,105,105,92,92,92,105,92,92,92,105,0,0,0,0,92,92,92,92,
+92,92,92,92,5,5,92,92,92,5,5,105,0,0,0,0,92,92,92,105,
+105,105,105,105,0,0,0,0,92,92,92,92,92,92,92,5,5,92,92,92,
+92,5,5,105,0,0,0,0,105,105,105,105,0,0,0,0,0,0,0,0,
+92,92,92,92,92,92,5,5,92,92,92,92,92,5,5,105,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,92,92,92,92,92,5,5,92,
+92,92,92,92,92,5,5,105,0,0,0,0,0,0,0,0,0,0,0,0,
+92,92,92,92,92,92,92,92,5,5,92,92,92,92,92,92,92,5,5,5,
+5,5,5,92,0,0,0,0,0,0,0,0,92,92,92,92,92,92,92,5,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,105,0,0,0,0,
+0,0,0,0,92,92,92,92,92,92,5,5,5,5,5,5,5,5,5,5,
+5,5,5,5,5,5,5,105,0,0,0,0,0,0,0,0,92,92,92,92,
+92,5,5,92,92,92,92,92,92,92,92,92,92,5,5,5,5,5,5,105,
+0,0,0,0,0,0,0,0,92,92,92,92,5,5,92,92,92,92,92,92,
+92,92,92,92,92,5,5,5,5,5,5,105,0,0,0,0,0,0,0,0,
+92,92,92,5,5,5,92,92,92,92,92,92,92,92,92,92,5,5,5,5,
+5,5,5,105,0,0,0,0,0,0,0,0,92,92,5,5,5,5,5,92,
+92,92,92,92,92,92,92,5,5,5,5,5,5,5,5,105,0,0,0,0,
+0,0,0,0,92,5,5,5,5,5,5,5,92,92,92,92,92,92,5,5,
+5,5,5,5,5,5,5,105,0,0,0,0,0,0,0,0,92,105,105,105,
+105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,
+0,0,0,0,};
+
+static const unsigned char small_icon_8_data[] = {
+92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,92,92,92,92,105,92,92,92,92,92,92,92,92,
+92,92,92,92,92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,
+92,92,92,105,92,92,92,92,92,92,92,92,92,92,92,92,92,5,92,105,
+92,92,92,92,92,92,92,92,92,92,92,92,5,5,92,105,92,92,92,92,
+92,92,92,92,92,92,92,5,5,5,92,105,92,92,92,92,92,92,92,92,
+92,92,5,5,5,5,92,105,92,92,92,92,92,92,92,92,92,5,92,5,
+5,5,92,105,92,105,105,105,92,92,92,92,5,92,92,5,105,105,92,105,
+92,105,0,0,92,92,92,5,92,92,92,5,0,0,105,105,0,0,92,92,
+92,92,5,92,92,92,92,5,5,5,0,0,0,0,92,92,92,5,5,5,
+5,5,5,5,5,5,0,0,0,0,92,92,5,92,92,92,92,92,92,5,
+5,5,0,0,0,0,92,5,5,92,92,92,92,92,5,5,5,5,0,0,
+0,0,5,5,5,5,105,105,105,5,5,5,5,5,0,0,};
+
+static const unsigned char icon_4_data[] = {
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,69,69,69,
+69,69,69,69,69,69,69,69,69,69,69,69,84,84,84,84,84,84,84,84,
+84,84,84,84,84,84,84,85,69,69,69,69,69,69,69,69,69,69,69,69,
+69,69,69,69,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,85,
+69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,84,84,84,84,
+84,84,84,84,84,84,84,84,84,84,84,85,69,69,69,69,69,69,69,69,
+69,69,69,69,69,69,69,69,84,84,84,84,84,84,84,84,84,84,84,84,
+84,84,84,85,69,69,69,69,69,69,69,69,69,69,69,69,69,21,69,69,
+84,84,84,84,84,84,84,84,84,84,84,84,81,20,84,85,69,69,69,69,
+69,69,69,69,69,69,69,69,17,21,69,69,84,84,84,84,84,84,84,84,
+84,84,84,81,17,20,84,85,69,69,69,69,69,69,69,69,69,69,69,17,
+17,21,69,69,84,84,84,84,84,84,84,84,84,84,81,17,17,20,84,85,
+69,69,69,69,69,69,69,69,69,69,17,17,17,21,69,69,84,84,84,84,
+84,84,84,84,84,81,17,17,17,20,84,85,69,69,69,69,69,69,69,69,
+69,17,65,17,17,21,69,69,84,85,85,85,84,84,84,84,81,20,81,21,
+85,85,84,85,69,69,0,0,69,69,69,69,17,69,65,21,0,0,69,69,
+85,85,0,0,84,84,84,81,20,84,81,21,0,0,85,85,0,0,0,0,
+69,69,69,17,69,69,65,21,0,0,0,0,0,0,0,0,84,84,81,20,
+84,84,81,21,0,0,0,0,0,0,69,69,69,69,17,69,69,69,65,17,
+17,30,0,0,0,0,84,84,84,81,17,17,17,17,17,17,17,21,0,0,
+0,0,69,69,69,17,17,17,17,17,17,17,17,21,0,0,0,0,84,84,
+81,20,84,84,84,84,81,17,17,21,0,0,0,0,69,69,17,69,69,69,
+69,69,65,17,17,21,0,0,0,0,84,81,17,84,84,84,84,84,17,17,
+17,21,0,0,0,0,69,17,17,21,69,69,69,65,17,17,17,21,0,0,
+0,0,81,17,17,17,84,84,84,17,17,17,17,21,0,0,0,0,229,85,
+85,85,85,85,85,85,85,85,85,85,0,0,};
+
+static const unsigned char small_icon_4_data[] = {
+84,84,84,84,84,84,84,85,69,69,69,69,69,69,69,69,84,84,84,84,
+84,84,84,85,69,69,69,69,69,69,69,69,84,84,84,84,84,84,81,85,
+69,69,69,69,69,69,17,69,84,84,84,84,84,81,17,85,69,69,69,69,
+69,17,17,69,84,84,84,84,81,81,17,85,69,85,69,69,21,65,85,69,
+85,0,84,81,84,81,0,85,0,69,69,21,69,65,17,0,0,84,81,17,
+17,17,17,0,0,69,21,69,69,65,17,0,0,81,20,84,84,17,17,0,
+0,17,17,85,81,17,17,0,};
+
+
+/* fseek with fatal_error */
+
+static void
+reposition(FILE *fi, int32_t absolute)
+{
+ if (fseek(fi, absolute, 0) == -1)
+ fatal_error("can't seek to position %d", absolute);
+}
+
+/* Some functions to write one, two, three, and four byte integers in 68000
+ byte order (most significant byte first). */
+
+static void
+write_one(int c, FILE *f)
+{
+ putc(c, f);
+}
+
+static void
+write_two(int c, FILE *f)
+{
+ putc((c >> 8) & 255, f);
+ putc(c & 255, f);
+}
+
+static void
+write_three(int32_t c, FILE *f)
+{
+ putc((c >> 16) & 255, f);
+ putc((c >> 8) & 255, f);
+ putc(c & 255, f);
+}
+
+static void
+write_four(int32_t c, FILE *f)
+{
+ putc((c >> 24) & 255, f);
+ putc((c >> 16) & 255, f);
+ putc((c >> 8) & 255, f);
+ putc(c & 255, f);
+}
+
+/* Some functions to store one, two, three, and four byte integers in 68000
+ byte order (most significant byte first). */
+
+static void
+store_one(int c, char *s)
+{
+ s[0] = (char)(c & 255);
+}
+
+static void
+store_two(int c, char *s)
+{
+ s[0] = (char)((c >> 8) & 255);
+ s[1] = (char)(c & 255);
+}
+
+static void
+store_four(int32_t c, char *s)
+{
+ s[0] = (char)((c >> 24) & 255);
+ s[1] = (char)((c >> 16) & 255);
+ s[2] = (char)((c >> 8) & 255);
+ s[3] = (char)(c & 255);
+}
+
+static void
+output_new_rsrc(const char *rtype, int rid, int attrs,
+ const char *data, uint32_t len)
+{
+ Rsrc *r;
+ if (nrsrc >= rsrc_cap) {
+ rsrc_cap = (rsrc_cap ? rsrc_cap * 2 : 256);
+ r = (Rsrc *)malloc(sizeof(Rsrc) * rsrc_cap);
+ if (!r)
+ fatal_error("out of memory");
+ memcpy(r, rsrc, sizeof(Rsrc) * nrsrc);
+ free(rsrc);
+ rsrc = r;
+ }
+ r = &rsrc[nrsrc];
+ nrsrc++;
+
+ /* prepare resource record */
+ {
+ const unsigned char *b = (const unsigned char *)rtype;
+ r->type = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
+ }
+ r->id = rid;
+ r->attrs = attrs;
+ if (nrsrc == 1)
+ r->data_offset = 0;
+ else
+ r->data_offset = rsrc[nrsrc-2].data_offset + rsrc[nrsrc-2].data_len + 4;
+ r->data_len = len;
+ r->next_in_type = r->next_type = -2;
+
+ /* resource consists of length, then data */
+ write_four(r->data_len, rfork_f);
+ fwrite(data, 1, len, rfork_f);
+}
+
+static void
+init_current_post(void)
+{
+ rbufpos = 2;
+ cur_post_id = 501;
+ blocktyp = POST_ASCII;
+}
+
+static void
+output_current_post(void)
+{
+ if (blocktyp != POST_END && rbufpos <= 2)
+ return;
+ rbuf[0] = blocktyp;
+ rbuf[1] = 0;
+ output_new_rsrc("POST", cur_post_id, 0, (char *)rbuf, rbufpos);
+ rbufpos = 2;
+ cur_post_id++;
+}
+
+/* font_reader functions */
+
+static void
+t1mac_output_data(byte *s, int len)
+{
+ while (len > 0) {
+ int n;
+ /* In some Mac fonts, the ASCII sections terminate with a line-end */
+ if (rbufpos >= MAX_RSRC_LEN
+ || (blocktyp == POST_ASCII && len + rbufpos > MAX_RSRC_LEN && rbufpos))
+ output_current_post();
+ n = (len + rbufpos <= MAX_RSRC_LEN ? len : MAX_RSRC_LEN - rbufpos);
+ memcpy(rbuf + rbufpos, s, n);
+ rbufpos += n;
+ s += n;
+ len -= n;
+ }
+}
+
+static void
+t1mac_output_ascii(char *s, int len)
+{
+ if (blocktyp == POST_BINARY) {
+ output_current_post();
+ blocktyp = POST_ASCII;
+ }
+ /* Mac line endings */
+ if (len > 0 && s[len-1] == '\n')
+ s[len-1] = '\r';
+ t1mac_output_data((byte *)s, len);
+ if (strncmp(s, "/FontName", 9) == 0) {
+ for (s += 9; isspace((unsigned char) *s); s++)
+ /* skip */;
+ if (*s == '/') {
+ const char *t = ++s;
+ while (*t && !isspace((unsigned char) *t)) t++;
+ free(font_name);
+ font_name = (char *)malloc(t - s + 1);
+ memcpy(font_name, s, t - s);
+ font_name[t - s] = 0;
+ }
+ }
+}
+
+static void
+t1mac_output_binary(unsigned char *s, int len)
+{
+ if (blocktyp == POST_ASCII) {
+ output_current_post();
+ blocktyp = POST_BINARY;
+ }
+ t1mac_output_data(s, len);
+}
+
+static void
+t1mac_output_end(void)
+{
+ output_current_post();
+ blocktyp = POST_END;
+ output_current_post();
+}
+
+
+/* finish off the resource fork */
+
+static uint32_t
+complete_rfork(void)
+{
+ uint32_t reflist_offset, total_data_len;
+ uint32_t typelist_len;
+ int i, j, ntypes;
+
+ /* analyze resources */
+ {
+ int last_type = -1;
+ ntypes = 0;
+ for (i = 0; i < nrsrc; i++)
+ if (rsrc[i].next_in_type == -2) {
+ int last = -1;
+ if (last_type >= 0)
+ rsrc[last_type].next_type = i;
+ for (j = i; j < nrsrc; j++)
+ if (rsrc[j].type == rsrc[i].type) {
+ if (last >= 0)
+ rsrc[last].next_in_type = j;
+ last = j;
+ }
+ rsrc[last].next_in_type = -1;
+ last_type = i;
+ ntypes++;
+ }
+ }
+
+ /* have just finished writing data */
+ /* now write resource map */
+ for (i = 0; i < RFORK_MAP_RESERVEDLEN; i++)
+ putc(0, rfork_f); /* reserved */
+ write_two(0, rfork_f); /* resource fork attributes */
+ typelist_len = ntypes * RFORK_RTYPE_LEN + 2;
+ write_two(RFORK_MAP_HEADERLEN, rfork_f); /* offset from start of map to typelist */
+ write_two(RFORK_MAP_HEADERLEN + typelist_len + nrsrc * RFORK_RSRC_LEN, rfork_f); /* offset from start of map to namelist */
+
+ /* output type map */
+ write_two(ntypes - 1, rfork_f);/* number of types - 1 */
+ reflist_offset = typelist_len;
+ for (i = 0; i >= 0; i = rsrc[i].next_type) {
+ int n_in_type = 0;
+ for (j = i; j >= 0; j = rsrc[j].next_in_type)
+ n_in_type++;
+ write_four(rsrc[i].type, rfork_f); /* resource type */
+ write_two(n_in_type - 1, rfork_f); /* number in type - 1 */
+ write_two(reflist_offset, rfork_f); /* offset to reflist from start of typelist */
+ reflist_offset += n_in_type * RFORK_RSRC_LEN;
+ }
+
+ /* output reference list */
+ for (i = 0; i >= 0; i = rsrc[i].next_type)
+ for (j = i; j >= 0; j = rsrc[j].next_in_type) {
+ write_two(rsrc[j].id, rfork_f); /* ID */
+ write_two(-1, rfork_f); /* offset to name */
+ write_one(rsrc[j].attrs, rfork_f); /* attributes */
+ write_three(rsrc[j].data_offset, rfork_f); /* offset to data from start of data */
+ write_four(0, rfork_f); /* reserved */
+ }
+
+ /* finally, patch up resource fork header */
+ {
+ total_data_len = rsrc[nrsrc-1].data_offset + rsrc[nrsrc-1].data_len + 4;
+ reposition(rfork_f, 0);
+ write_four(RFORK_HEADERLEN, rfork_f); /* offset from rfork to data */
+ write_four(RFORK_HEADERLEN + total_data_len, rfork_f); /* offset from rfork to map */
+ write_four(total_data_len, rfork_f); /* length of data */
+ write_four(RFORK_MAP_HEADERLEN + reflist_offset, rfork_f); /* length of map */
+ }
+
+ return RFORK_HEADERLEN + total_data_len + RFORK_MAP_HEADERLEN + reflist_offset;
+}
+
+
+/* write a MacBinary II file */
+
+static void
+output_raw(FILE *rf, int32_t len, FILE *f)
+{
+ char buf[2048];
+ reposition(rf, 0);
+ while (len > 0) {
+ int n = (len < 2048 ? len : 2048);
+ fread(buf, 1, n, rf);
+ fwrite(buf, 1, n, f);
+ len -= n;
+ }
+}
+
+static void
+output_macbinary(FILE *rf, int32_t rf_len, const char *filename, FILE *f)
+{
+ int i, len = strlen(filename);
+ char buf[128];
+ if (len < 1 || len > 63)
+ fatal_error("filename length must be between 1 and 63");
+ store_one(0, buf+0); /* old version number */
+ store_one(len, buf+1); /* filename length */
+ memset(buf+2, 0, 63); /* filename padding */
+ memcpy(buf+2, filename, len); /* filename */
+ store_four(T1_FILETYPE, buf+65); /* file type */
+ store_four(T1_FILECREATOR, buf+69); /* file creator */
+ store_one(T1_FINDERFLAGS, buf+73); /* finder flags */
+ store_one(0, buf+74); /* zero byte */
+ store_two(0, buf+75); /* vertical position in window */
+ store_two(0, buf+77); /* horizontal position in window */
+ store_two(0, buf+79); /* window or folder ID */
+ store_one(0, buf+81); /* protected flag */
+ store_one(0, buf+82); /* zero byte */
+ store_four(0, buf+83); /* data fork length */
+ store_four(rf_len, buf+87); /* resource fork length */
+ {
+ time_t t = time(0) + MAC_TIME_DELTA;
+ store_four(t, buf+91); /* creation date */
+ store_four(t, buf+95); /* modification date */
+ }
+ store_two(0, buf+99); /* GetInfo comment length */
+ store_one(0, buf+101); /* finder flags part 2 */
+ memset(buf+102, 0, 116 - 102); /* padding */
+ store_four(0, buf+116); /* total length when unpacked */
+ store_two(0, buf+120); /* length of secondary header */
+ store_one(129, buf+122); /* version number */
+ store_one(129, buf+123); /* minimum acceptable version number */
+ store_two(crcbuf(0, 124, buf), buf+124); /* CRC */
+ store_two(0, buf+126); /* padding to 128 bytes */
+
+ /* write out the header */
+ fwrite(buf, 1, 128, f);
+
+ /* now write resource fork */
+ output_raw(rf, rf_len, f);
+ for (i = rf_len % 128; i && i < 128; i++)
+ putc(0, f);
+}
+
+
+/* write an AppleSingle file */
+
+#define APPLESINGLE_MAGIC 0x00051600
+#define APPLEDOUBLE_MAGIC 0x00051607
+#define APPLESINGLE_VERSION 0x00020000
+#define APPLESINGLE_TIME_DELTA 883612800
+#define APPLESINGLE_HEADERLEN 26
+#define APPLESINGLE_ENTRYLEN 12
+#define APPLESINGLE_DFORK_ENTRY 1
+#define APPLESINGLE_RFORK_ENTRY 2
+#define APPLESINGLE_DATES_ENTRY 8
+#define APPLESINGLE_DATES_LEN 16
+#define APPLESINGLE_FINDERINFO_ENTRY 9
+#define APPLESINGLE_FINDERINFO_LEN 32
+#define APPLESINGLE_REALNAME_ENTRY 3
+
+static void
+output_applesingle(FILE *rf, int32_t rf_len, const char *filename, FILE *f,
+ int appledouble)
+{
+ uint32_t offset;
+ int i, nentries, len = strlen(filename);
+ if (appledouble) /* magic number */
+ write_four(APPLEDOUBLE_MAGIC, f);
+ else
+ write_four(APPLESINGLE_MAGIC, f);
+ write_four(APPLESINGLE_VERSION, f); /* version number */
+ for (i = 0; i < 4; i++)
+ write_four(0, f); /* filler */
+ nentries = (appledouble ? 4 : 5);
+ write_two(nentries, f); /* number of entries */
+
+ /* real name entry */
+ offset = APPLESINGLE_HEADERLEN + nentries * APPLESINGLE_ENTRYLEN;
+ write_four(APPLESINGLE_REALNAME_ENTRY, f);
+ write_four(offset, f);
+ write_four(len, f);
+ offset += len;
+
+ /* time entry */
+ write_four(APPLESINGLE_DATES_ENTRY, f);
+ write_four(offset, f);
+ write_four(APPLESINGLE_DATES_LEN, f);
+ offset += APPLESINGLE_DATES_LEN;
+
+ /* finder info entry */
+ write_four(APPLESINGLE_FINDERINFO_ENTRY, f);
+ write_four(offset, f);
+ write_four(APPLESINGLE_FINDERINFO_LEN, f);
+ offset += APPLESINGLE_FINDERINFO_LEN;
+
+ /* resource fork entry */
+ write_four(APPLESINGLE_RFORK_ENTRY, f);
+ write_four(offset, f);
+ write_four(rf_len, f);
+ offset += rf_len;
+
+ /* data fork entry */
+ if (!appledouble) {
+ write_four(APPLESINGLE_DFORK_ENTRY, f);
+ write_four(offset, f);
+ write_four(0, f);
+ }
+
+ /* real name data */
+ fwrite(filename, 1, len, f);
+
+ /* time data */
+ i = time(0) - APPLESINGLE_TIME_DELTA;
+ write_four(i, f); /* creation date */
+ write_four(i, f); /* modification date */
+ write_four(0x80000000, f); /* backup date */
+ write_four(0, f); /* access date */
+
+ /* finder info data */
+ write_four(T1_FILETYPE, f); /* file type */
+ write_four(T1_FILECREATOR, f); /* file creator */
+ write_one(T1_FINDERFLAGS, f); /* finder flags */
+ write_one(0, f); /* extended finder flags */
+ write_two(0, f); /* vertical position in window */
+ write_two(0, f); /* horizontal position in window */
+ write_two(0, f); /* window or folder ID */
+ write_four(0, f); /* icon ID and reserved */
+ write_four(0, f); /* reserved */
+ write_one(0, f); /* script flag */
+ write_one(0, f); /* reserved */
+ write_two(0, f); /* comment ID */
+ write_four(0, f); /* put away */
+
+ /* resource fork data */
+ output_raw(rf, rf_len, f);
+}
+
+
+/* write a BinHex file */
+
+static void
+binhex_buffer(const byte *s, int len, FILE *f)
+{
+ static int col = 1;
+ static int bits = 0;
+ static int bitspos = 2;
+ static const char *table = "!\"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr";
+ byte buf[5];
+ int c, i, left;
+
+ if (!s && bitspos > 2) { /* output the remaining bits */
+ s = (const byte *)"\0";
+ len = 1;
+ }
+
+ for (left = len; left > 0; left--, s++) {
+ int pos;
+ if (s[0] == 0x90) {
+ buf[0] = 0x90;
+ buf[1] = 0x00;
+ pos = 2;
+ } else {
+ buf[0] = s[0];
+ pos = 1;
+ }
+
+ /* find a run */
+ if (left > 2 && s[0] == s[1] && s[0] == s[2]) {
+ for (i = 3; i < left && i < 255; i++)
+ if (s[i] != s[0])
+ break;
+ buf[pos] = 0x90;
+ buf[pos+1] = i;
+ pos += 2;
+ s += i - 1;
+ left -= i - 1;
+ }
+
+ /* store those characters */
+ for (i = 0; i < pos; i++) {
+ bits |= buf[i];
+ while (bitspos >= 0) {
+ c = (bits >> bitspos) & 0x3F;
+ putc(table[c], f);
+ if (++col == 63) {
+ putc('\n', f);
+ col = 0;
+ }
+ bitspos -= 6;
+ }
+ bits <<= 8;
+ bitspos += 8;
+ }
+ }
+}
+
+static void
+output_binhex(FILE *rf, int32_t rf_len, const char *filename, FILE *f)
+{
+ int crc, len = strlen(filename);
+ char buf[2048];
+
+ if (len < 1 || len > 63)
+ fatal_error("filename length must be between 1 and 63");
+ store_one(len, buf+0); /* filename length */
+ memcpy(buf+1, filename, len); /* filename */
+ store_one(0, buf+1+len); /* version */
+ store_four(T1_FILETYPE, buf+2+len); /* file type */
+ store_four(T1_FILECREATOR, buf+6+len); /* file creator */
+ store_one(T1_FINDERFLAGS, buf+10+len); /* finder flags */
+ store_one(0, buf+11+len); /* extended finder flags */
+ store_four(0, buf+12+len); /* length of data fork */
+ store_four(rf_len, buf+16+len); /* length of resource fork */
+ store_two(crcbuf(0, 20+len, buf), buf+20+len); /* CRC */
+ store_two(0, buf+22+len); /* data fork CRC */
+
+ /* output BinHex comment */
+ fputs("(This file must be converted with BinHex 4.0)\n:", f);
+
+ /* BinHex the header */
+ binhex_buffer((const byte *)buf, 24+len, f);
+
+ /* resource fork data */
+ reposition(rf, 0);
+ crc = 0;
+ while (rf_len > 0) {
+ int n = (rf_len < 2048 ? rf_len : 2048);
+ fread(buf, 1, n, rf);
+ crc = crcbuf(crc, n, buf); /* update CRC */
+ binhex_buffer((const byte *)buf, n, f);
+ rf_len -= n;
+ }
+ store_two(crc, buf); /* resource fork CRC */
+ binhex_buffer((const byte *)buf, 2, f);
+ binhex_buffer(0, 0, f); /* get rid of any remaining bits */
+ fputs(":\n", f); /* trailer */
+}
+
+
+/*****
+ * command line
+ **/
+
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+#define MACBINARY_OPT 304
+#define RAW_OPT 305
+#define APPLESINGLE_OPT 306
+#define APPLEDOUBLE_OPT 307
+#define BINHEX_OPT 308
+#define FILENAME_OPT 309
+
+static Clp_Option options[] = {
+ { "appledouble", 0, APPLEDOUBLE_OPT, 0, 0 },
+ { "applesingle", 0, APPLESINGLE_OPT, 0, 0 },
+ { "binhex", 0, BINHEX_OPT, 0, 0 },
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "macbinary", 0, MACBINARY_OPT, 0, 0 },
+ { "filename", 'n', FILENAME_OPT, Clp_ValString, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "raw", 'r', RAW_OPT, 0, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+};
+static const char *program_name;
+
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+}
+
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+
+static void
+usage(void)
+{
+ printf("\
+`T1mac' translates a PostScript Type 1 font from PFA or PFB format into\n\
+Macintosh Type 1 format. The result can be written in MacBinary II format (the\n\
+default), AppleSingle format, AppleDouble format, or BinHex format, or as a\n\
+raw resource fork. It is sent to the standard output unless an OUTPUT file is\n\
+given.\n\
+\n\
+Usage: %s [OPTION]... [INPUT [OUTPUT]]\n\
+\n\
+Options:\n\
+ -r, --raw Output is a raw Macintosh resource fork.\n\
+ --macbinary Output is in MacBinary format (default).\n\
+ --applesingle Output is in AppleSingle format.\n\
+ --appledouble Output is in AppleDouble format.\n\
+ --binhex Output is in BinHex format.\n\
+ -n, --filename NAME Macintosh font filename will be NAME.\n\
+ -o, --output FILE Write output to FILE.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+int
+main(int argc, char *argv[])
+{
+ int i, c;
+ FILE *ifp = 0, *ofp = 0;
+ const char *ifp_filename = "<stdin>";
+ const char *ofp_filename = "<stdout>";
+ const char *set_font_name = 0;
+ struct font_reader fr;
+ uint32_t rfork_len;
+ int raw = 0, macbinary = 1, applesingle = 0, appledouble = 0, binhex = 0;
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ case RAW_OPT:
+ raw = 1;
+ macbinary = applesingle = appledouble = binhex = 0;
+ break;
+
+ case MACBINARY_OPT:
+ macbinary = 1;
+ raw = applesingle = appledouble = binhex = 0;
+ break;
+
+ case APPLESINGLE_OPT:
+ applesingle = 1;
+ raw = macbinary = appledouble = binhex = 0;
+ break;
+
+ case APPLEDOUBLE_OPT:
+ appledouble = 1;
+ raw = macbinary = applesingle = binhex = 0;
+ break;
+
+ case BINHEX_OPT:
+ binhex = 1;
+ raw = macbinary = applesingle = appledouble = 0;
+ break;
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else {
+ ofp_filename = clp->vstr;
+ ofp = fopen(ofp_filename, "wb");
+ if (!ofp) fatal_error("%s: %s", ofp_filename, strerror(errno));
+ }
+ break;
+
+ case FILENAME_OPT:
+ if (set_font_name)
+ fatal_error("Macintosh font filename already specified");
+ set_font_name = clp->vstr;
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1mac (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 2000-2017 Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0)
+ ifp = stdin;
+ else {
+ ifp_filename = clp->vstr;
+ ifp = fopen(clp->vstr, "r");
+ if (!ifp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!ifp) ifp = stdin;
+ if (!ofp) ofp = stdout;
+
+#if defined(_MSDOS) || defined(_WIN32)
+ /* As we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ /* prepare font reader */
+ fr.output_ascii = t1mac_output_ascii;
+ fr.output_binary = t1mac_output_binary;
+ fr.output_end = t1mac_output_end;
+
+ /* prepare resource fork file */
+ rfork_f = tmpfile();
+ if (!rfork_f)
+ fatal_error("cannot open temporary file: %s", strerror(errno));
+ for (i = 0; i < RFORK_HEADERLEN; i++)
+ putc(0, rfork_f);
+ init_current_post();
+
+ /* peek at first byte to see if it is the PFB marker 0x80 */
+ c = getc(ifp);
+ ungetc(c, ifp);
+
+ /* do the file */
+ if (c == PFB_MARKER)
+ process_pfb(ifp, ifp_filename, &fr);
+ else if (c == '%')
+ process_pfa(ifp, ifp_filename, &fr);
+ else
+ fatal_error("%s does not start with font marker (`%%' or 0x80)", ifp_filename);
+ if (ifp != stdin)
+ fclose(ifp);
+
+ /* check if anything was read */
+ if (nrsrc == 0)
+ error("no POST resources written -- are you sure this was a font?");
+
+ /* output large B/W icon */
+ output_new_rsrc("ICN#", 256, 32, (const char *)icon_bw_data, 256);
+ /* output FREF */
+ output_new_rsrc("FREF", 256, 32, "LWFN\0\0\0", 7);
+ /* output BNDL */
+ output_new_rsrc("BNDL", 256, 32, "T1UT\0\0\0\1FREF\0\0\0\0\1\0ICN#\0\0\0\0\1\0", 28);
+ /* output other icons */
+ output_new_rsrc("icl8", 256, 32, (const char *)icon_8_data, 1024);
+ output_new_rsrc("icl4", 256, 32, (const char *)icon_4_data, 512);
+ output_new_rsrc("ics#", 256, 32, (const char *)small_icon_bw_data, 64);
+ output_new_rsrc("ics8", 256, 32, (const char *)small_icon_8_data, 256);
+ output_new_rsrc("ics4", 256, 32, (const char *)small_icon_4_data, 128);
+ /* output T1UT (signature) */
+ output_new_rsrc("T1UT", 0, 0, "DConverted by t1mac (t1utils) \251Eddie Kohler http://www.lcdf.org/type/", 69);
+
+ /* finish off resource file */
+ rfork_len = complete_rfork();
+
+ /* prepare font name */
+ if (!set_font_name && font_name) {
+ int part = 0, len = 0;
+ char *x, *s;
+ for (x = s = font_name; *s; s++)
+ if (isupper((unsigned char) *s) || isdigit((unsigned char) *s)) {
+ *x++ = *s;
+ part++;
+ len = 1;
+ } else if (islower((unsigned char) *s)) {
+ if (len < (part <= 1 ? 5 : 3))
+ *x++ = *s;
+ len++;
+ }
+ *x++ = 0;
+ set_font_name = font_name;
+ } else if (!set_font_name)
+ set_font_name = "Unknown Font";
+
+ /* now, output the file */
+ if (macbinary)
+ output_macbinary(rfork_f, rfork_len, set_font_name, ofp);
+ else if (raw)
+ output_raw(rfork_f, rfork_len, ofp);
+ else if (applesingle || appledouble)
+ output_applesingle(rfork_f, rfork_len, set_font_name, ofp, appledouble);
+ else if (binhex)
+ output_binhex(rfork_f, rfork_len, set_font_name, ofp);
+ else
+ fatal_error("strange output format");
+ fclose(rfork_f);
+
+ if (ofp != stdout)
+ fclose(ofp);
+ return 0;
+}
diff --git a/Build/source/utils/t1utils/t1utils-src/t1unmac.1 b/Build/source/utils/t1utils/t1utils-src/t1unmac.1
new file mode 100644
index 00000000000..2e121d10be8
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1unmac.1
@@ -0,0 +1,79 @@
+.ds V 1.42
+.de M
+.BR "\\$1" "(\\$2)\\$3"
+..
+.TH T1UNMAC 1 "" "Version \*V"
+.SH NAME
+t1unmac \- translate a Mac PostScript Type 1 font into PFA or PFB format
+.SH SYNOPSIS
+.B t1unmac
+\%[\fB\-a\fR|\fB\-b\fR]
+\%[\fB\-r\fR]
+\%[\fIinput\fR [\fIoutput\fR]]
+.SH DESCRIPTION
+.B t1unmac
+extracts POST resources from a Macintosh PostScript font file and creates a
+PFA (hexadecimal) or PFB (binary) font file. The file
+.I input
+should be in MacBinary I or II, AppleSingle, AppleDouble, or BinHex format,
+or it can be a raw resource fork. If the file is a raw resource fork, you
+need to give the `\-\-raw' option; otherwise
+.B t1unmac
+should automatically figure out what kind of file you have. If the file
+.I output
+is not specified output goes to the standard output.
+.SH OPTIONS
+.TP 5
+.BR \-\-pfa ", " \-a
+Output in PFA (ASCII) format.
+.TP 5
+.BR \-\-pfb ", " \-b
+Output in PFB (binary) format. This is the default.
+.TP 5
+.BR \-\-raw ", " \-r
+Indicates that the input is a raw resource fork.
+.TP 5
+.BR \-\-macbinary
+Indicates that the input is in MacBinary I or II format.
+.TP 5
+.BR \-\-applesingle
+Indicates that the input is in AppleSingle format.
+.TP 5
+.BR \-\-appledouble
+Indicates that the input is in AppleDouble format.
+.TP 5
+.BR \-\-binhex
+Indicates that the input is in BinHex 4.0 format.
+.TP
+.BI \-\-block\-length= "num\fR, " \-l " num"
+PFB only: Set the maximum output block length to
+.I num.
+The default length is as large as memory allows.
+.TP
+.BI \-\-line\-length= "num\fR, " \-l " num"
+PFA only: Set the maximum length of encrypted lines in the output to
+.I num.
+(These are the lines consisting wholly of hexadecimal digits.) The default
+is 64.
+.SH EXAMPLES
+.LP
+On Mac OS X, you can use
+.B t1unmac
+to translate a font into PFA or PFB format as follows:
+.nf
+% \fBt1unmac\fR \-\-raw FONTFILENAME/..namedfork/rsrc > OUTPUT
+.fi
+.SH "SEE ALSO"
+.LP
+.M t1mac 1 ,
+.M t1ascii 1 ,
+.M t1binary 1 ,
+.M t1asm 1 ,
+.M t1disasm 1
+.SH AUTHORS
+Lee Hetherington (ilh@lcs.mit.edu)
+.br
+Eddie Kohler (ekohler@gmail.com)
+.PP
+Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+Kai-Uwe Herbing (herbing@netmbx.netmbx.de).
diff --git a/Build/source/utils/t1utils/t1utils-src/t1unmac.c b/Build/source/utils/t1utils/t1utils-src/t1unmac.c
new file mode 100644
index 00000000000..b4ffed3921b
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils-src/t1unmac.c
@@ -0,0 +1,921 @@
+/* t1unmac/unpost
+ *
+ * This program converts Macintosh Type 1 fonts stored in MacBinary (I or II),
+ * AppleSingle, AppleDouble, BinHex, or raw resource fork format to PFA and
+ * PFB formats.
+ *
+ * Copyright (c) 1992 by I. Lee Hetherington, all rights reserved.
+ * Copyright (c) 1998-2017 Eddie Kohler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, subject to the
+ * conditions listed in the Click LICENSE file, which is available in full at
+ * http://github.com/kohler/click/blob/master/LICENSE. The conditions
+ * include: you must preserve this copyright notice, and you cannot mention
+ * the copyright holders in advertising related to the Software without
+ * their permission. The Software is provided WITHOUT ANY WARRANTY, EXPRESS
+ * OR IMPLIED. This notice is a summary of the Click LICENSE file; the
+ * license in that file is binding.
+ *
+ * New change log in `NEWS'. Old change log:
+ *
+ * Revision 1.2 92/06/23 10:57:33 ilh
+ * MSDOS porting by Kai-Uwe Herbing (herbing@netmbx.netmbx.de)
+ * incoporated.
+ *
+ * Revision 1.1 92/05/22 12:07:49 ilh
+ * initial version
+ *
+ * Ported to Microsoft C/C++ Compiler and MS-DOS operating system by
+ * Kai-Uwe Herbing (herbing@netmbx.netmbx.de) on June 12, 1992. Code
+ * specific to the MS-DOS version is encapsulated with #ifdef _MSDOS
+ * ... #endif, where _MSDOS is an identifier, which is automatically
+ * defined, if you compile with the Microsoft C/C++ Compiler.
+ * */
+
+/* Note: this is ANSI C. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+#if defined(_MSDOS) || defined(_WIN32)
+# include <fcntl.h>
+# include <io.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+#include <ctype.h>
+#include <lcdf/clp.h>
+#include "t1lib.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Some functions to read one, two, three, and four byte integers in 68000
+ byte order (most significant byte first). */
+
+static int
+read_one(FILE *fi)
+{
+ return getc(fi);
+}
+
+static int
+read_two(FILE *fi)
+{
+ int val;
+
+ val = getc(fi);
+ val = (val << 8) | getc(fi);
+
+ return val;
+}
+
+static int32_t
+read_three(FILE *fi)
+{
+ int32_t val;
+
+ val = getc(fi);
+ val = (val << 8) | getc(fi);
+ val = (val << 8) | getc(fi);
+
+ return val;
+}
+
+static int32_t
+read_four(FILE *fi)
+{
+ int32_t val;
+
+ val = getc(fi);
+ val = (val << 8) | getc(fi);
+ val = (val << 8) | getc(fi);
+ val = (val << 8) | getc(fi);
+
+ return val;
+}
+
+/* reposition a file with error messages */
+
+static void
+reposition(FILE *fi, int32_t absolute)
+{
+ if (fseek(fi, absolute, 0) == -1)
+ fatal_error("can't seek to position %d\n\
+ (The Mac file may be corrupted, or you may need the `-r' option.)",
+ absolute);
+}
+
+static int blocklen = -1;
+
+static int hex_column = 0; /* current column of hex ASCII output */
+
+static void
+output_hex_byte(FILE *fo, int b)
+{
+ static const char *hex = "0123456789abcdef";
+
+ if (hex_column >= blocklen) {
+ putc('\n', fo);
+ hex_column = 0;
+ }
+ putc(hex[b >> 4], fo);
+ putc(hex[b & 0xf], fo);
+ hex_column += 2;
+}
+
+/* Function to extract a particular POST resource. Offset points to the four
+ byte length which is followed by the data. The first byte of the POST data
+ specifies resource type: 1 for ASCII, 2 for binary, and 5 for end. The
+ second byte is always zero. */
+
+
+/* Function to write four byte length to PFB file: least significant byte
+ first. */
+
+static int
+extract_data(FILE *fi, FILE *fo, struct pfb_writer *w, int32_t offset, int pfb)
+{
+ enum PS_type { PS_ascii = 1, PS_binary = 2, PS_end = 5 };
+ static int last_type = -1;
+ static int skip_newline = 0;
+ int32_t len;
+ int more = 1;
+ int i, c;
+
+ reposition(fi, offset);
+ len = read_four(fi) - 2; /* subtract type field */
+
+ switch ((enum PS_type)read_one(fi)) {
+
+ case PS_ascii: {
+ (void) read_one(fi);
+ if (last_type != PFB_ASCII && pfb) {
+ pfb_writer_output_block(w);
+ w->blocktyp = PFB_ASCII;
+ }
+ for (i = 0; i < len; i++) {
+ c = read_one(fi);
+ if (c == '\n' && skip_newline) {
+ skip_newline = 0;
+ continue;
+ }
+ if (c == '\r') {
+ c = '\n';
+ skip_newline = 1;
+ } else
+ skip_newline = 0;
+ if (pfb)
+ PFB_OUTPUT_BYTE(w, c);
+ else
+ putc(c, fo);
+ }
+ last_type = PFB_ASCII;
+ break;
+ }
+
+ case PS_binary: {
+ (void) read_one(fi);
+ if (last_type != PFB_BINARY && pfb) {
+ pfb_writer_output_block(w);
+ w->blocktyp = PFB_BINARY;
+ } else if (last_type != PFB_BINARY)
+ hex_column = 0;
+ if (pfb) {
+ while (len--)
+ PFB_OUTPUT_BYTE(w, read_one(fi));
+ } else {
+ while (len--)
+ output_hex_byte(fo, read_one(fi));
+ }
+ last_type = PFB_BINARY;
+ break;
+ }
+
+ case PS_end:
+ more = 0;
+ break;
+
+ }
+
+ return more;
+}
+
+
+/*****
+ * Command line
+ **/
+
+#define OUTPUT_OPT 301
+#define VERSION_OPT 302
+#define HELP_OPT 303
+#define PFB_OPT 304
+#define PFA_OPT 305
+#define MACBINARY_OPT 306
+#define RAW_OPT 307
+#define LINE_LEN_OPT 308
+#define APPLEDOUBLE_OPT 309
+#define BINHEX_OPT 310
+
+static Clp_Option options[] = {
+ { "applesingle", 0, APPLEDOUBLE_OPT, 0, 0 },
+ { "appledouble", 0, APPLEDOUBLE_OPT, 0, 0 },
+ { "binhex", 0, BINHEX_OPT, 0, 0 },
+ { "block-length", 0, LINE_LEN_OPT, Clp_ValUnsigned, 0 },
+ { "help", 0, HELP_OPT, 0, 0 },
+ { "line-length", 'l', LINE_LEN_OPT, Clp_ValUnsigned, 0 },
+ { "macbinary", 0, MACBINARY_OPT, 0, 0 },
+ { "output", 'o', OUTPUT_OPT, Clp_ValString, 0 },
+ { "pfa", 'a', PFA_OPT, 0, 0 },
+ { "pfb", 'b', PFB_OPT, 0, 0 },
+ { "raw", 'r', RAW_OPT, 0, 0 },
+ { "version", 0, VERSION_OPT, 0, 0 },
+};
+static const char *program_name;
+
+void
+fatal_error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+ exit(1);
+}
+
+void
+error(const char *message, ...)
+{
+ va_list val;
+ va_start(val, message);
+ fprintf(stderr, "%s: ", program_name);
+ vfprintf(stderr, message, val);
+ putc('\n', stderr);
+ va_end(val);
+}
+
+static void
+short_usage(void)
+{
+ fprintf(stderr, "Usage: %s [OPTION]... INPUT [OUTPUT]\n\
+Try `%s --help' for more information.\n",
+ program_name, program_name);
+}
+
+static void
+usage(void)
+{
+ printf("\
+`T1unmac' extracts a PostScript Type 1 font from a Macintosh font file. It can\n\
+read MacBinary, AppleSingle, AppleDouble, or BinHex files, or raw Macintosh\n\
+resource forks. The result is written to the standard output unless an OUTPUT\n\
+file is given.\n\
+\n\
+Usage: %s [OPTION]... INPUT [OUTPUT]\n\
+\n\
+Options:\n\
+ -r, --raw Input is a raw Macintosh resource fork.\n\
+ --macbinary Input is in MacBinary format.\n\
+ --applesingle Input is in AppleSingle format.\n\
+ --appledouble Input is in AppleDouble format.\n\
+ --binhex Input is in BinHex format.\n\
+ -a, --pfa Output font in ASCII (PFA) format.\n\
+ -b, --pfb Output font in binary (PFB) format. This is\n\
+ the default.\n\
+ -l, --block-length NUM Set max block length for PFB output.\n\
+ -l, --line-length NUM Set max encrypted line length for PFA output.\n\
+ -o, --output FILE Write output to FILE.\n\
+ -h, --help Print this message and exit.\n\
+ --version Print version number and warranty and exit.\n\
+\n\
+Report bugs to <ekohler@gmail.com>.\n", program_name);
+}
+
+
+static const char *
+check_macbinary(FILE *ifp)
+{
+ int i, j;
+ char buf[124];
+
+ /* check "version" bytes at offsets 0 and 74 */
+ reposition(ifp, 0);
+ if (read_one(ifp) != 0)
+ return "bad version byte";
+ reposition(ifp, 74);
+ if (read_one(ifp) != 0)
+ return "bad version byte";
+
+#if 0
+ /* write out bullshit */
+ {int t;
+ reposition(ifp, 65);
+ t = read_four(ifp);
+ fprintf(stderr, "Type %c%c%c%c\n", (t>>24)&255, (t>>16)&255, (t>>8)&255, t&255);
+ t = read_four(ifp);
+ fprintf(stderr, "Creator %c%c%c%c\n", (t>>24)&255, (t>>16)&255, (t>>8)&255, t&255);
+ t = read_one(ifp);
+ fprintf(stderr, "Finder flags 1 %02x\n", t);
+ read_one(ifp);
+ t = read_two(ifp);
+ fprintf(stderr, "horizpos %04x\n", t);
+ t = read_two(ifp);
+ fprintf(stderr, "vertpos %04x\n", t);
+ t = read_two(ifp);
+ fprintf(stderr, "folder id %d\n", t);
+ t = read_one(ifp);
+ fprintf(stderr, "protected? %x\n", t);
+ t = read_one(ifp);
+ t = read_four(ifp);
+ fprintf(stderr, "data len %d\n", t);
+ t = read_four(ifp);
+ fprintf(stderr, "rsrc len %d\n", t);
+ t = read_four(ifp);
+ {
+ struct tm *crap;
+ fprintf(stderr, "creation date %x\n", t);
+ t -= 2082844800;
+ fprintf(stderr, " %s\n", ctime(&t));
+ t = read_four(ifp);
+ fprintf(stderr, "modification date %x\n", t);
+ t -= 2082844800;
+ fprintf(stderr, " %s\n", ctime(&t));
+ t = read_two(ifp);
+ }
+ fprintf(stderr, "getinfo len %d\n", t);
+ t = read_one(ifp);
+ fprintf(stderr, "finderflags 2 %02x\n", t);
+ reposition(ifp, 116);
+ t = read_four(ifp);
+ fprintf(stderr, "total len %d\n", t);
+ t = read_two(ifp);
+ fprintf(stderr, "secondary header len %d\n", t);
+ t = read_one(ifp);
+ fprintf(stderr, "version %d\n", t);
+ t = read_one(ifp);
+ fprintf(stderr, "version %d\n", t);
+ }
+#endif
+
+ /* check file length */
+ reposition(ifp, 1);
+ i = read_one(ifp);
+ if (i > 63)
+ return "bad length";
+ reposition(ifp, 83);
+ i = read_four(ifp);
+ j = read_four(ifp);
+ if (i < 0 || j < 0 || i >= 0x800000 || j >= 0x800000)
+ return "bad length";
+
+ /* check CRC */
+ reposition(ifp, 0);
+ fread(buf, 1, 124, ifp);
+ if (crcbuf(0, 124, buf) != read_two(ifp)) {
+ reposition(ifp, 82);
+ if (read_one(ifp) != 0)
+ return "bad checksum";
+ }
+
+ return 0;
+}
+
+#define APPLESINGLE_MAGIC 0x00051600
+#define APPLEDOUBLE_MAGIC 0x00051607
+
+static const char *
+check_appledouble(FILE *ifp)
+{
+ int i;
+ reposition(ifp, 0);
+ i = read_four(ifp);
+ if (i != APPLEDOUBLE_MAGIC && i != APPLESINGLE_MAGIC)
+ return "bad magic number";
+
+ return 0;
+}
+
+static const char *
+translate_binhex(FILE *f, FILE *tmpf)
+{
+ int i, c = 0, last_char, after_x90, bits, bitpos;
+ unsigned char value_table[256];
+
+ /* prepare value table */
+ {
+ const char *table = "!\"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr";
+ for (i = 0; i < 256; i++)
+ value_table[i] = 255;
+ for (i = 0; *table; i++, table++)
+ value_table[(unsigned char)*table] = i;
+ }
+
+ /* skip to comment */
+ {
+ const char *comment = "(This file must be converted with BinHex";
+ while (!feof(f)) {
+ const char *s;
+ for (s = comment; *s; s++) {
+ c = getc(f);
+ if (c != *s)
+ break;
+ }
+ /* skip to end of line */
+ while (c >= 0 && c != '\n' && c != '\r')
+ c = getc(f);
+ /* stop if read comment */
+ if (!*s)
+ goto found_comment;
+ }
+ /* failed */
+ return "no comment";
+ }
+
+ found_comment:
+ /* skip spaces, look for ':' */
+ for (c = ' '; isspace(c); c = getc(f)) ;
+ if (c != ':')
+ return "no file-start character";
+
+ /* found ':', process until you find another ':' */
+ last_char = -1;
+ after_x90 = bits = 0;
+ bitpos = 10;
+ for (c = getc(f); c >= 0; c = getc(f))
+ if (!isspace(c)) {
+ /* add 6 bits to bits */
+ if (value_table[c] == 255)
+ break;
+ bits |= (value_table[c] << bitpos);
+ bitpos -= 6;
+
+ /* output character(s) */
+ if (bitpos <= 2) {
+ int d = bits >> 8;
+ bits = (bits << 8) & 0xFF00;
+ bitpos += 8;
+ if (after_x90) {
+ /* handle compression */
+ if (d == 0) {
+ last_char = 0x90;
+ putc(0x90, tmpf);
+ } else
+ for (i = 1; i < d; i++)
+ putc(last_char, tmpf);
+ after_x90 = 0;
+ } else if (d == 0x90)
+ after_x90 = 1;
+ else {
+ last_char = d;
+ putc(d, tmpf);
+ }
+ }
+ }
+
+ if (c < 0)
+ return "unexpected EOF";
+ else if (c != ':')
+ return "bad character";
+
+ fflush(tmpf);
+ return 0;
+}
+
+static int
+check_binhex_crc(FILE *f, int offset, int length)
+{
+ int crc = 0;
+ char buf[2048];
+ reposition(f, offset);
+ while (length > 0) {
+ int n = (length < 2048 ? length : 2048);
+ fread(buf, 1, n, f);
+ crc = crcbuf(crc, n, buf);
+ length -= n;
+ }
+ return crc == 0;
+}
+
+static const char *
+check_binhex(FILE *f)
+{
+ int fname_len, data_len, rsrc_len, off;
+
+ /* check lengths */
+ reposition(f, 0);
+ fname_len = read_one(f);
+ if (fname_len < 1 || fname_len > 63)
+ return "bad length";
+ reposition(f, 1 + fname_len + 11);
+ data_len = read_four(f);
+ rsrc_len = read_four(f);
+ if (data_len < 0 || rsrc_len < 0 || data_len >= 0x800000 || rsrc_len >= 0x800000)
+ return "bad length";
+
+ /* check version */
+ reposition(f, 1 + fname_len);
+ if (read_one(f) != 0)
+ return "bad version";
+
+ /* check CRC */
+ off = 1 + fname_len + 21;
+ if (!check_binhex_crc(f, 0, off))
+ return "bad header CRC";
+ if (!check_binhex_crc(f, off, data_len + 2))
+ return "bad data CRC";
+ if (!check_binhex_crc(f, off + data_len + 2, rsrc_len + 2))
+ return "bad resource fork CRC";
+
+ return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+
+int
+main(int argc, char *argv[])
+{
+ FILE *ifp = 0;
+ FILE *ofp = 0;
+ struct pfb_writer w;
+ const char *ifp_name = "<stdin>";
+ int32_t res_offset, res_data_offset, res_map_offset, type_list_offset;
+ int32_t post_type;
+ int num_types, num_extracted = 0, pfb = 1;
+ int raw = 0, appledouble = 0, binhex = 0, macbinary = 0;
+
+ Clp_Parser *clp =
+ Clp_NewParser(argc, (const char * const *)argv, sizeof(options) / sizeof(options[0]), options);
+ program_name = Clp_ProgramName(clp);
+
+ /* interpret command line arguments using CLP */
+ while (1) {
+ int opt = Clp_Next(clp);
+ switch (opt) {
+
+ case RAW_OPT:
+ raw = 1;
+ appledouble = binhex = macbinary = 0;
+ break;
+
+ case MACBINARY_OPT:
+ macbinary = 1;
+ raw = appledouble = binhex = 0;
+ break;
+
+ case APPLEDOUBLE_OPT:
+ appledouble = 1;
+ raw = binhex = macbinary = 0;
+ break;
+
+ case BINHEX_OPT:
+ binhex = 1;
+ raw = appledouble = macbinary = 0;
+ break;
+
+ output_file:
+ case OUTPUT_OPT:
+ if (ofp)
+ fatal_error("output file already specified");
+ if (strcmp(clp->vstr, "-") == 0)
+ ofp = stdout;
+ else {
+ ofp = fopen(clp->vstr, "w");
+ if (!ofp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case PFB_OPT:
+ pfb = 1;
+ break;
+
+ case PFA_OPT:
+ pfb = 0;
+ break;
+
+ case LINE_LEN_OPT:
+ blocklen = clp->val.i;
+ break;
+
+ case HELP_OPT:
+ usage();
+ exit(0);
+ break;
+
+ case VERSION_OPT:
+ printf("t1unmac (LCDF t1utils) %s\n", VERSION);
+ printf("Copyright (C) 1992-2017 I. Lee Hetherington, Eddie Kohler et al.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty, not even for merchantability or fitness for a\n\
+particular purpose.\n");
+ exit(0);
+ break;
+
+ case Clp_NotOption:
+ if (ifp && ofp)
+ fatal_error("too many arguments");
+ else if (ifp)
+ goto output_file;
+ if (strcmp(clp->vstr, "-") == 0)
+ ifp = stdin;
+ else {
+ ifp_name = clp->vstr;
+ ifp = fopen(clp->vstr, "rb");
+ if (!ifp) fatal_error("%s: %s", clp->vstr, strerror(errno));
+ }
+ break;
+
+ case Clp_Done:
+ goto done;
+
+ case Clp_BadOption:
+ short_usage();
+ exit(1);
+ break;
+
+ }
+ }
+
+ done:
+ if (!ifp) ifp = stdin;
+ if (!ofp) ofp = stdout;
+
+#if defined(_MSDOS) || defined(_WIN32)
+ _setmode(_fileno(ifp), _O_BINARY);
+ /* If we are processing a PFB (binary) output */
+ /* file, we must set its file mode to binary. */
+ _setmode(_fileno(ofp), _O_BINARY);
+#endif
+
+ if (pfb)
+ init_pfb_writer(&w, blocklen, ofp);
+ else {
+ if (blocklen == -1)
+ blocklen = 64;
+ else if (blocklen < 8) {
+ blocklen = 8;
+ error("warning: line length raised to %d", blocklen);
+ } else if (blocklen > 1024) {
+ blocklen = 1024;
+ error("warning: line length lowered to %d", blocklen);
+ }
+ }
+
+ /* check for non-seekable input */
+ if (fseek(ifp, 0, 0)) {
+ char buf[2048];
+ FILE *tmp = tmpfile();
+ if (!tmp)
+ fatal_error("cannot open temporary file: %s", strerror(errno));
+ while (!feof(ifp)) {
+ int i = fread(buf, 1, 2048, ifp);
+ if (i > 0)
+ fwrite(buf, 1, i, tmp);
+ }
+ if (ferror(ifp))
+ fatal_error("%s: %s", ifp_name, strerror(errno));
+ reposition(tmp, 0);
+ fflush(tmp);
+ if (ifp != stdin)
+ fclose(ifp);
+ ifp = tmp;
+ }
+
+ /* check for empty file */
+ fseek(ifp, 0, 2);
+ if (ftell(ifp) == 0)
+ fatal_error("%s: empty file\n\
+ (Try re-transferring the files using MacBinary format.)",
+ ifp_name);
+
+ reposition(ifp, 0);
+ if (!raw && !appledouble && !binhex && !macbinary) {
+ /* check magic number, try to figure out what it is */
+ int i, magic;
+ magic = read_four(ifp);
+ reposition(ifp, 0);
+
+ if (magic == APPLESINGLE_MAGIC || magic == APPLEDOUBLE_MAGIC)
+ appledouble = 1;
+ else if ((magic & 0xFF000000) == 0)
+ macbinary = 1;
+ else {
+ binhex = 1;
+ for (i = 0; i < 4; i++, magic >>= 8)
+ if (!isprint(magic & 0xFF) && !isspace(magic & 0xFF))
+ /* not an ASCII character, assume not BinHex */
+ binhex = 0;
+ }
+
+ if (!appledouble && !macbinary && !binhex)
+ fatal_error("%s: unknown file type", ifp_name);
+ }
+
+ if (raw) {
+ /* raw resource file */
+ res_offset = 0;
+
+ } else if (macbinary) { /* MacBinary (I or II) file */
+ const char *check;
+ int32_t data_fork_size;
+
+ /* check integrity of file */
+ check = check_macbinary(ifp);
+ if (check)
+ fatal_error("%s: not a MacBinary file (%s)", ifp_name, check);
+
+ /* read data and resource fork sizes in MacBinary header */
+ reposition(ifp, 83);
+ data_fork_size = read_four(ifp);
+ (void) read_four(ifp);
+
+ /* round data_fork_size up to multiple of 128 */
+ if (data_fork_size % 128)
+ data_fork_size += 128 - data_fork_size % 128;
+
+ res_offset = 128 + data_fork_size;
+
+ } else if (appledouble) { /* AppleDouble file */
+ const char *check;
+ const char *applewhat;
+ int i, n;
+
+ /* check integrity */
+ check = check_appledouble(ifp);
+ if (check)
+ fatal_error("%s: not an AppleDouble file (%s)", ifp_name, check);
+ reposition(ifp, 0);
+ if (read_four(ifp) == APPLESINGLE_MAGIC)
+ applewhat = "AppleSingle";
+ else
+ applewhat = "AppleDouble";
+
+ /* find offset to resource and/or data fork */
+ reposition(ifp, 24);
+ n = read_two(ifp);
+ res_offset = -1;
+ for (i = 0; i < n; i++) {
+ int type = read_four(ifp);
+ if (type == 0)
+ fatal_error("%s: bad %s file (bad entry descriptor)", ifp_name, applewhat);
+ if (type == 2) /* resource fork entry */
+ res_offset = read_four(ifp);
+ else
+ (void) read_four(ifp);
+ (void) read_four(ifp);
+ }
+ if (res_offset < 0)
+ fatal_error("%s: bad %s file (no resource fork)", ifp_name, applewhat);
+
+ } else if (binhex) { /* BinHex file */
+ const char *check;
+ FILE *tmpf = tmpfile();
+ if (!tmpf)
+ fatal_error("cannot open temporary file: %s", strerror(errno));
+
+ /* check integrity */
+ check = translate_binhex(ifp, tmpf);
+ if (check)
+ fatal_error("%s: not a BinHex file (%s)", ifp_name, check);
+ check = check_binhex(tmpf);
+ if (check)
+ fatal_error("%s: bad BinHex file (%s)", ifp_name, check);
+
+ /* find resource offset */
+ reposition(tmpf, 0);
+ res_offset = read_one(tmpf);
+ reposition(tmpf, 1 + res_offset + 11);
+ res_offset += 22 + read_four(tmpf) + 2;
+ if (ifp != stdin)
+ fclose(ifp);
+ ifp = tmpf;
+
+ } else {
+ fatal_error("%s: strange format", ifp_name);
+ exit(1);
+ }
+
+ /* read offsets from resource fork header */
+ reposition(ifp, res_offset);
+ res_data_offset = res_offset + read_four(ifp);
+ res_map_offset = res_offset + read_four(ifp);
+
+ /* read type list offset from resource map header */
+ reposition(ifp, res_map_offset + 24);
+ type_list_offset = res_map_offset + read_two(ifp);
+
+ /* read type list */
+ reposition(ifp, type_list_offset);
+ num_types = read_two(ifp) + 1;
+
+ /* find POST type */
+ post_type = (int32_t)('P' & 0xff) << 24;
+ post_type |= (int32_t)('O' & 0xff) << 16;
+ post_type |= (int32_t)('S' & 0xff) << 8;
+ post_type |= (int32_t)('T' & 0xff);
+
+ while (num_types--) {
+ if (read_four(ifp) == post_type) {
+ int nrsrc = 1 + read_two(ifp);
+ int list_offset = type_list_offset + read_two(ifp);
+ int rsrc_pos = 0;
+ int want_id = 501;
+ int second_time = 1;
+ reposition(ifp, list_offset);
+ /* read resources sequentially, starting with ID 501, until we encounter
+ an "end" resource or we can't find the next resource */
+ while (rsrc_pos < nrsrc) {
+ int offset = ftell(ifp);
+ int id = read_two(ifp);
+ if (id == want_id) {
+ (void) read_two(ifp);
+ (void) read_one(ifp);
+ num_extracted++;
+ if (!extract_data(ifp, ofp, &w, res_data_offset + read_three(ifp), pfb))
+ break;
+ second_time = 0;
+ want_id++;
+ }
+ reposition(ifp, offset + 12);
+ rsrc_pos++;
+ if (rsrc_pos >= nrsrc && !second_time) {
+ reposition(ifp, list_offset);
+ rsrc_pos = 0;
+ }
+ }
+ break;
+ } else {
+ (void) read_two(ifp);
+ (void) read_two(ifp);
+ }
+ }
+
+#if 0
+ system("/bin/rm -f /tmp/x.*");
+ {
+ FILE *f;
+ int i;
+ reposition(ifp, res_offset + 16);
+ if ((f = fopen("/tmp/x.systemarea", "wb"))) {
+ for (i = res_offset + 16; i < res_data_offset; i++) {
+ putc(getc(ifp), f);
+ }
+ fclose(f);
+ }
+ }
+ reposition(ifp, type_list_offset);
+ num_types = read_two(ifp) + 1;
+ while (num_types--) {
+ int t = read_four(ifp);
+ int num_of_type = 1 + read_two(ifp);
+ int32_t save_offset = ftell(ifp) + 2;
+ reposition(ifp, type_list_offset + read_two(ifp));
+ while (num_of_type--) {
+ FILE *f;
+ char buf[2048];
+ int x, i, attrs;
+ x = ftell(ifp);
+ i = read_two(ifp); /* ID */
+ read_two(ifp);
+ attrs = read_one(ifp);
+ sprintf(buf, "/tmp/x.%c%c%c%c.%d", (t>>24)&255, (t>>16)&255, (t>>8)&255, t&255, i);
+ fprintf(stderr, "%c%c%c%c.%d %d", (t>>24)&255, (t>>16)&255, (t>>8)&255, t&255, i, attrs);
+ if ((f = fopen(buf, "wb"))) {
+ int l;
+ reposition(ifp, res_data_offset + read_three(ifp));
+ l = read_four(ifp);
+ fprintf(stderr, " %d\n", l);
+ while (l > 0) {
+ int n = (l < 2048 ? l : 2048);
+ fread(buf, 1, n, ifp);
+ fwrite(buf, 1, n, f);
+ l -= n;
+ }
+ fclose(f);
+ }
+ reposition(ifp, x + 12);
+ }
+ reposition(ifp, save_offset);
+ }
+#endif
+
+ if (pfb)
+ pfb_writer_end(&w);
+ if (num_extracted == 0)
+ error("%s: not a Type 1 font (no POST resources)", ifp_name);
+
+ fclose(ifp);
+ fclose(ofp);
+ return 0;
+}
diff --git a/Build/source/utils/t1utils/t1utils.test b/Build/source/utils/t1utils/t1utils.test
new file mode 100755
index 00000000000..b9d62aba08d
--- /dev/null
+++ b/Build/source/utils/t1utils/t1utils.test
@@ -0,0 +1,35 @@
+#! /bin/sh -vx
+# Copyright 2017 Karl Berry <tex-live@tug.org>
+# Copyright 2011 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+failed=
+
+rm -rf Symbol.*
+./t1binary $srcdir/tests/Symbol.pfa Symbol.pfb \
+ && ./t1ascii Symbol.pfb Symbol.pfa \
+ && diff Symbol.pfa $srcdir/tests/Symbol.pfa \
+ && echo "t1ascii/t1binary tests OK" \
+ || failed="$failed t1ascii/t1binary"
+
+rm -rf Symbol.*
+./t1disasm $srcdir/tests/Symbol.pfa Symbol.raw \
+ && ./t1asm -a Symbol.raw Symbol.pfa \
+ && diff Symbol.raw $srcdir/tests/Symbol.raw \
+ && diff Symbol.pfa $srcdir/tests/Symbol.pfa \
+ && echo "t1asm/t1disasm-ascii tests OK" \
+ || failed="$failed t1asm/t1disasm-ascii"
+
+rm -rf Symbol.*
+./t1disasm $srcdir/tests/Symbol.pfb Symbol.raw \
+ && ./t1asm -b Symbol.raw Symbol.pfb \
+ && ./t1ascii Symbol.pfb Symbol.pfa \
+ && diff Symbol.raw $srcdir/tests/Symbol.raw \
+ && diff Symbol.pfa $srcdir/tests/Symbol.pfa \
+ && echo "t1asm/t1disasm-binary tests OK" \
+ || failed="$failed t1asm/t1disasm-binary"
+
+test -z "$failed" && exit 0
+echo "failed tests:$failed"
+exit 1
+
diff --git a/Build/source/utils/t1utils/tests/Symbol.pfa b/Build/source/utils/t1utils/tests/Symbol.pfa
new file mode 100644
index 00000000000..deb28490b15
--- /dev/null
+++ b/Build/source/utils/t1utils/tests/Symbol.pfa
@@ -0,0 +1,1044 @@
+%!PS-AdobeFont-1.0: Symbol 001.007
+%%CreationDate: Wed Jan 17 21:48:17 1990
+%%VMusage: 28489 37622
+11 dict begin
+/FontInfo 10 dict dup begin
+/version (001.007) readonly def
+/Notice (Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.) readonly def
+/FullName (Symbol) readonly def
+/FamilyName (Symbol) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -98 def
+/UnderlineThickness 54 def
+end readonly def
+/FontName /Symbol def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 32 /space put
+dup 33 /exclam put
+dup 34 /universal put
+dup 35 /numbersign put
+dup 36 /existential put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /suchthat put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asteriskmath put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /minus put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /congruent put
+dup 65 /Alpha put
+dup 66 /Beta put
+dup 67 /Chi put
+dup 68 /Delta put
+dup 69 /Epsilon put
+dup 70 /Phi put
+dup 71 /Gamma put
+dup 72 /Eta put
+dup 73 /Iota put
+dup 74 /theta1 put
+dup 75 /Kappa put
+dup 76 /Lambda put
+dup 77 /Mu put
+dup 78 /Nu put
+dup 79 /Omicron put
+dup 80 /Pi put
+dup 81 /Theta put
+dup 82 /Rho put
+dup 83 /Sigma put
+dup 84 /Tau put
+dup 85 /Upsilon put
+dup 86 /sigma1 put
+dup 87 /Omega put
+dup 88 /Xi put
+dup 89 /Psi put
+dup 90 /Zeta put
+dup 91 /bracketleft put
+dup 92 /therefore put
+dup 93 /bracketright put
+dup 94 /perpendicular put
+dup 95 /underscore put
+dup 96 /radicalex put
+dup 97 /alpha put
+dup 98 /beta put
+dup 99 /chi put
+dup 100 /delta put
+dup 101 /epsilon put
+dup 102 /phi put
+dup 103 /gamma put
+dup 104 /eta put
+dup 105 /iota put
+dup 106 /phi1 put
+dup 107 /kappa put
+dup 108 /lambda put
+dup 109 /mu put
+dup 110 /nu put
+dup 111 /omicron put
+dup 112 /pi put
+dup 113 /theta put
+dup 114 /rho put
+dup 115 /sigma put
+dup 116 /tau put
+dup 117 /upsilon put
+dup 118 /omega1 put
+dup 119 /omega put
+dup 120 /xi put
+dup 121 /psi put
+dup 122 /zeta put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /similar put
+dup 161 /Upsilon1 put
+dup 162 /minute put
+dup 163 /lessequal put
+dup 164 /fraction put
+dup 165 /infinity put
+dup 166 /florin put
+dup 167 /club put
+dup 168 /diamond put
+dup 169 /heart put
+dup 170 /spade put
+dup 171 /arrowboth put
+dup 172 /arrowleft put
+dup 173 /arrowup put
+dup 174 /arrowright put
+dup 175 /arrowdown put
+dup 176 /degree put
+dup 177 /plusminus put
+dup 178 /second put
+dup 179 /greaterequal put
+dup 180 /multiply put
+dup 181 /proportional put
+dup 182 /partialdiff put
+dup 183 /bullet put
+dup 184 /divide put
+dup 185 /notequal put
+dup 186 /equivalence put
+dup 187 /approxequal put
+dup 188 /ellipsis put
+dup 189 /arrowvertex put
+dup 190 /arrowhorizex put
+dup 191 /carriagereturn put
+dup 192 /aleph put
+dup 193 /Ifraktur put
+dup 194 /Rfraktur put
+dup 195 /weierstrass put
+dup 196 /circlemultiply put
+dup 197 /circleplus put
+dup 198 /emptyset put
+dup 199 /intersection put
+dup 200 /union put
+dup 201 /propersuperset put
+dup 202 /reflexsuperset put
+dup 203 /notsubset put
+dup 204 /propersubset put
+dup 205 /reflexsubset put
+dup 206 /element put
+dup 207 /notelement put
+dup 208 /angle put
+dup 209 /gradient put
+dup 210 /registerserif put
+dup 211 /copyrightserif put
+dup 212 /trademarkserif put
+dup 213 /product put
+dup 214 /radical put
+dup 215 /dotmath put
+dup 216 /logicalnot put
+dup 217 /logicaland put
+dup 218 /logicalor put
+dup 219 /arrowdblboth put
+dup 220 /arrowdblleft put
+dup 221 /arrowdblup put
+dup 222 /arrowdblright put
+dup 223 /arrowdbldown put
+dup 224 /lozenge put
+dup 225 /angleleft put
+dup 226 /registersans put
+dup 227 /copyrightsans put
+dup 228 /trademarksans put
+dup 229 /summation put
+dup 230 /parenlefttp put
+dup 231 /parenleftex put
+dup 232 /parenleftbt put
+dup 233 /bracketlefttp put
+dup 234 /bracketleftex put
+dup 235 /bracketleftbt put
+dup 236 /bracelefttp put
+dup 237 /braceleftmid put
+dup 238 /braceleftbt put
+dup 239 /braceex put
+dup 241 /angleright put
+dup 242 /integral put
+dup 243 /integraltp put
+dup 244 /integralex put
+dup 245 /integralbt put
+dup 246 /parenrighttp put
+dup 247 /parenrightex put
+dup 248 /parenrightbt put
+dup 249 /bracketrighttp put
+dup 250 /bracketrightex put
+dup 251 /bracketrightbt put
+dup 252 /bracerighttp put
+dup 253 /bracerightmid put
+dup 254 /bracerightbt put
+readonly def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/UniqueID 27004 def
+/FontBBox{-180 -293 1090 1010}readonly def
+currentdict end
+currentfile eexec
+d9d66f633b846a989b9974b0179fc6cc445bc45dd269e6abbcd967f64d2bf7e5
+66a857248b46d33099bca44f9258838bca3e54b1daf651f8b8ab64cde263f99f
+b136cb4cd994b408d5c09c12aec2bf2684034bbeca83ff59aa138170727f0de9
+960d6098bc8547dba2d84365b678b67a709b60e70b3bc529a59fe33c1c8b4fde
+d9b0bef3da9a2de7fc137edcced3b30a3c128a36449a89a89674813e9e668968
+7343fc54cd8d25e04e75ea3049f9be1f1c0dea4e5a5a1bbbcc8817a303a4a59d
+e0627d697d00a701af2ec68ca1d08423cd5f6f0fe83eb1674c4078793a2defd9
+b2f377c963f556b43edb3a282bcdfea84efdc1f611550fc4baf1eee69625f0fd
+c05696abcd03da2e37e4c751df7b5b1749e6ad1d64eb9d81af66218f846b6a0f
+e4766c3da76197f3fd263dbcda8b800b451b2a76adc036837c2c279e0c50ed68
+1b9e57d2d461fcfabe5ad5282b579b3898f5c39b5ed116a248fc640e674dd7c0
+cafc1db729745224e9482c77e978d2c3f94c987e9770ac01ca751d99af4259da
+653ffe49c944116a3304add9bd9528f3d8e510d9b8cd36c06e5c4bee140ccfce
+492e726ad40d239f2a2a980ff121d99fa25fca160622c7dae960fa3901da1b28
+c8eb2f131f4f77b625834dc19a3a646489c00470e47f877e763e076695edece5
+a860c7608d33962c1d7290ee65003d2250dc7e87e1d8273192eb30e4d4ce5231
+08980baa513ea364c84cb4d05295ce4dc7ab78ccfbabdfe5695d589c1d6afd32
+52a06b2d08333e981607befb837d738431c37b9aa2cf899ff2a5a04e2a457920
+50537d4a503a766928557628c2257abd64fcba91ea0165b2c1aae2c32e12f8d2
+c9804b015dcfab37318596d80d261b55ddb3f08a84fa5b6daad517a13e685a27
+b6f8497bf5abdf0e0bbafb18db72f4079f430b3fc0f8d929be3bbe629dc383a1
+87c00e95820f40c60c09cb5fa0b49f79f936abe1a484af4f2e4129f5afb70808
+fafde3f3ba3b1d6e1d380dcfa993a67cbd0b555a29c1a4f5433714f90ca582da
+a0ae14ca5b018222f2c49ffe0adabd3382cc3c07493467d81fc6efb9015a6817
+a5765a12be200f1d616cc0875beefedb8548e1be9f377be69917057aa72a6f6a
+007ad617b27254c693723d66ae11070637f864f6543004acdcb3abb028ccaa91
+fea4e9935f4fdeabe6aca29adb69e7d90a582fa26fead49aef747afb35100bc4
+d4317ad81f8450770ba66d1daccc557e1b9ee6f33eba890a635833688a115ede
+725db7723a49b384006f783a51d0ee9fff6cc7078948d992fce55c9b5ad924f8
+7f8cf0099b039558da33c6c18a737a223d60bff389cc77fb46836bacfb886155
+01db1133ed6e441bdc95a092ed646f369586f794af45f910c9f3049961382f7c
+726f6deb68750e08f405afa64d6061950d1b9db3c1d1afc1ffe2f984a34c4d3c
+7a7cc3be69c9afb8fb7cd62cc34586822376f47f44ddc635b5bec247df3e7e36
+31228391a01fcf298ec3cb70707f4f7ddff026b1d6c3a4741a68097b60e1b566
+4777c0b0be3d56d1d072173c9727d25074d36b89dbef53e9614c558a8efa9dfa
+b0b1bdfec05cf95504c55b79c2ea1f26c8eb2ffa87ce806475c91e5d83a58ade
+c1ebc91d6b2cee1f9a2301871427156206c4c2316aeda07cc237aa7dad2dc345
+7961340e3905bf77a9a27a0fadfac8d2c0732a013ed4c11b2163eec280bb4a46
+413d9d7fa20b6a8f305717c3647ff4fea9d490254d08663a410892ea0ca12895
+b658807f988544196b00f0bcfcb72fae9a94801481cdf494c2b0f588c9f25b5d
+c57cf9024f394f73702ed9cae49430a103e3c82a8bb7d5ed559ec533265d335f
+a53819c87812cab867d73de757e5eac2cbda950d485f880314ec95bd2ac10d84
+fc2a86c70cc82b42c1d212bf7ba02c839ab44cdbd63f4a1401adb37828c6a967
+db480914b681cfc5d66550da172834f9569c883103bd3930ce5eb379a72abc27
+7896399cc2a56b6a105bbc886d3423b445abc63c268f14842d160624e1a8844a
+56ad3bca093b867023409678e33525c8db5ce6eaa480f411aa4b897fecfc504f
+f0ae7d565be5180052177e51819e067c07146a45621e1298a8094764a75e140a
+c1c7ca426c3c6bd7709a05bc52805b43e6201dec8136302b627f5bc99aaf49b0
+5e8ada83bd4f0f81061d0e0981c671d7605f9d205a16ff097d9f32321d1bdeb7
+19d0cbf9b018b86354f21b4228292a422264b5f7bf6e838552a1ddf11dc57af4
+ca7eb974856705294fa43c426cb8f854729e34a4578e432ef6ec7952dd5f1381
+fb9d22e87f44368d806bdbce2dd08fa2e522bd079923b1ef0142e86ec2d57278
+42b430f3c21d3fcd93fcbc24c0033ae84d5b6459de06bb23b32617fefaa54146
+4f1befae96e72fd4653f41fcc00c0f744e6eeff59ed005ae852e0e580d44d3d0
+8642fa598f92f6d95553e22c121885aa8f5bc0210ead6b2caf4eeb0dcb9bf4f4
+24354dbe184e2b3eb75f1a1228afb450baaf7ce1d9a30d33a7a48349bfe8467b
+0c8e92e1812a806438b333ef11ad61393844c330b781fe42db18e734ca311bd0
+4055e4a76d16591a363ace298c012a4233ae9217cff8988e7555b34912830059
+b91f02042060e1f47f0b760818a97514d8e04e5b2c56a6ada17195d5a65d5210
+8cb54eb6d9bd1d20bc9850c0e5b007b5e74c2e4b5bc226a5c2c59d887b808503
+4e31fe6ac5d2f55e5e0e069804971a03327f1fe3e23dbd11d2f3fb138ab7a052
+d65f10b5ff1ae2bc754b5cbfbf6275bec8f6ddacb6a2f4a472c593adfce88948
+56d69d69d341bbe8e5ad20dc5af8a1ff55db8cebd587106aa3cfcdef9bdd1727
+2c52ab892db3015076b09b4a387e259c3ba73a8a776fd4b7b8a7cbb496643a18
+3ddfffc288a3880e78453e7ea1a96a67e7c04cc414cbb1a8b97726953e4153c5
+a340c84feaf0e0622b7c21f5f8bca8559c75c56f859236b6cd719d95ceffdcaa
+f3087b4ef52147208d9edf090d6bf565a5cdfc2f1e54f2ca05028112a9540734
+1d1ab898d099228a3075f2a4c5a3974a727de41a1500e4b31f5f160530d18df0
+8eec560fba38680ca399b83d84972d06c65a47a53b46226ba6ac65defbcbc78f
+3f0025846007094bc15e9cfc449f9f3cc52db8585d701e7994b671f1cac02e6e
+28e9a4656d474f2dcf39f81d41a147004d807f7de678cdcbc5c675a965ab01a1
+10e1b9d0956b7a37edc521e7f3e66e25bc597417d8056d2a4217d08d25560c89
+aeb4331c7fdcbb5ff6a84b4db3c6d0ee5b2d4002e06f11ed1fbd89bfec1ede83
+41ef2d86b71d1b804615bc475166c03300455db6610b00ba5a3f493eedb80140
+1e1d2d8fde328c611e78fe5f9262b4621a876f7c7656e6c1ee34f30e8b0decba
+7ab9df4443098a2c223d737832cd79e49e9e9747c110b8df4f978b7850e08218
+d95ab24798078e1c61bc88cfbd6fe74eeb86b6ebb033bb8e284ebc1bca5c14d2
+e242e887772b8ef445b34e8b825f59875605cc9db849cb9eb615b9b7424e75d6
+6d17f25a1c427d2a1e970dbb81a704546a63a15496e42772ae324f42b1c14695
+1d3fb6800d5d97af5ceb3e799bb1451521a57755555b0fd2c414b033a411a379
+8a46e6f4dcb97770505e00ee5e6c32a713ecdd642c9d3a0a42350492352f6689
+65a371dce22c1378b73290cc59cf47f6f6ab66fc801e85135d6878c08f66b0dc
+b91f972643d80f8651e3c41e52e728d9798a83e2d2b2476a88a88388719fed37
+0d6e5e219dc8ee7c88c5d649278222b6f45fe06ddeecdd43f909ca6d611704bc
+0aa1d0a5d5c914b0df591a174bd260d2c589f0fa335bcd5a25e0281035242608
+be24fdbf0c96b9f1604d6c345a705bdaaffd83652167adf0d194a3a44d6c7640
+c26f0a5df57cef0af74c4c1f8efc7b1f9e2579678b7fd187a64e50ea9c5a8dba
+3e3acbe92a5f1eb0abcc4408c85a76fedc952c1a80c013d5f8aa2481cd3468aa
+ca89b74f5233cc25dd8168bd5f27c1aeb5192267a93ab4de76caafa6c83ff602
+670fa7a7a7849ab04ecc661fd65edc16b35ecff76060e385e527b758bae3a344
+bcc92b0f925b3a02b4062b5c0a94003a75e26cc89e88f3b4eb5fcaf690e2fc62
+8b5ceb275df9f31233b576d22e16d2623a2d819b5d6d7891908cd32164062b62
+20eb1cadc9c6524d9749854d4372137c2a878e5fb7aca4c9e44ddc667683ddfd
+251119c4edb7590fe3487c9041b26f0a7400c9a2ea4f990890cabbbfa9487616
+505cb9bbf818224c295b27e7b86e10af35ba9aa1317f148b6c6dc015c459ad9e
+ca35be60975b5ad4c46cf2ebf610b81e8edb34e681d67d69eb26a85d1fa942ca
+3bd0486058ed1f8229907d6b7e56fd2558a5ab178cec1c66bc690900696b7e92
+554c96acf24fa650b1ad5308084317fdccd21680be2eab1591de9df8fbc05d85
+b21de6f7cf4a01f9be8b86c51e2e7cb1467b867b4da3ce8ea22542d5f9882c8b
+a74f80702adb06d3a22adf87b5abd1b9c06a2bd7ff0cf4fea74a85add4f18fbe
+7f27851edee5e23c2b9096b9e8882db0b80bd07f6036d98508fe36189e3504c8
+dd3dedcb7aa65c8141edf3fa815413173f2af32e49229523482c4b5b02badcab
+74c11882b5d0966c5450b53745892c0bfef3c54bc4cd4699fb39da26e691cd66
+67680ac9baef5dc6d608f4a3e4cf2591612ac744263eb593e91221ba7391ec15
+895b314d3d39a344bb9f6afedc4b77f3b680defc04c648f18931d178333a4a53
+07268566873ddfab45cb06bc1006a4edba8beefe8d419068843a44c4daa9a6b2
+40df5e4121ea3641a02f557b277af89b5b12e7700cfa177fe3cfe6aff222d51a
+9d1f06b46e517490a6617b8fc33ced47e7ec14ead23e11d939f74e971b6bcfb7
+09eab9985d0006254f75162d04386cc5843edd11362b7dd0eca2c15d404305ca
+d67ec6af91a59bc575f972dfea458836946ef65a09211dfc2f5e2b2a8192b3c4
+76cb981249642034b2aba3088186ed0f2fc0129b0c5e8ff37cabecccf62a4258
+7c645972c0e8d075703974d424ca490c5e4786828706213421799dbedcfcea9a
+40f5fe83062a7e58a7933ed521c78887a7387c74e03ad97dfce88cc13527cbd0
+964a76cc7891f67f194c0ff47b8bdd7333f724a5cef4b67f6c5acdc294f2f876
+8ab9001a4f3aaf146dca64f9c1e9f15db44fe4c344fa8fb138af69eb5f35b271
+41eef19286928fcefef6e2fd1c3a790983ff7ab52b21ba5a7c3533004eed62ec
+db7c8ccc9a825b0f943acac8c8fcdf219f058a195ce2b31a1f22ab5c255580ee
+74e7f26dd60ad9d6d118462fef7e2ce6a1c5c6d87d0e5d48429dd15368d0abee
+e82d3dd7d6c0ae2e3a85f9842a5c87b30f8bea32eeb41ca283b5de6b5e0fbdfe
+e79df38c95ddfe2531ff04b0835e1e532d1e73b551bbf7a50d891153edfd67f4
+73d5819f81ac6354e8ebb8be6c429cea90e78ccd679431a07d20cc6902f21793
+4b478605633d9aa41ccb2b4e94476d47959d2f8538b94c0a776afbce4b100d1f
+1e7253208109b83ffc894adcb2501bffbd07256811ea22afcdf09ccecd79a6e6
+000ffe40d6eaa52213058e2b8b86a325e655a6cd9ceed54d8a6367039b689e69
+f6134c8128aaf6d7a5e239ad5f1cb59143072ebd3fee80768be998ae1cff7f1f
+404173dc1c5f7875ce6436935229a89e16de5bb329cfd80c1055fb29f5acbbae
+81eb67472a3d7c338643acb41dd6660074428573590c7f5d4d7973347f44a8af
+14295b95a97c770326389535ec138b0badc1e0e27b4f373dd15d7a7a53864c5f
+af26988682c9e6cfbe7ce93354a5faa09aa2e20d7474b0be90bb6ca204753b70
+b1a41224e9420adae4535ba901ec41690e6ce67e8b694d9438eb791e4d4e68b2
+558064ed91042d960f47363846e5c43f20ef5dd68023284b0365b8d1eba042b3
+feaff13a77bee8b7414ced092ccb2ba7109db8f4bc9800b67ba3a8a1c61b9068
+3254f904296873b9a94cd27f65b91e5aba024c39187161892a1b7a004aa2544a
+5dafd763da82aee07e43a3da1b367856472ec988b41817d066b4f643ac202f34
+230cbf28e5ba8697372a33c82670cddfb7dd0a762945d63a2ab3b0c982c627f9
+c8cf861c401f093fcf2d596875d81722fa3001083ae8dce7c8258155a80aa387
+d8fd0f042aeedf015c4ea4d55f11a32c3fc704fd8332587051078a754569018a
+537020c63db4029661dec368e9d402a268bab2b1b4099b59a7118fad8bea8957
+a31389441e55cda47f0d846e8ff7e30154bec80d687d7ebd368d1a9b4e514e70
+2d4facb416876c126b5333b4473f20344530e9f8d9b96f95739fd3f697eebf96
+9200fda7d1c54f7c1e63c2b03df12ea69dc1587cb74c66b49dd54353f90dc015
+293fbf8b186005e9d5d2c5fdf969b9f672bdf105cb0aa61dc22b516d3710f0fb
+7c33e81bdc633fcf231300cffdd49b782cbbe9b79eea278021ab6fe4f4fa343c
+695e5c621b1d077df71fc58f7328ee520d937311e76d9f80f45eaa7790c285cf
+3c996ba2131993d98dd3102c67a395ee4b7e6bbbe5859caa44ece83a0c33cf02
+ef01e4f23b00dfd63e09796172a75be36bcf9fa6bd0c93e5bc322e18a06c9c35
+1b99b5d7f290388c57c76cd63355d6395ea2cc176300fb8ff146cb63f5e63ebe
+d44e7a3e0fc91d9b6fe3734960ad59668aa1e84a3e01f9b9c79f711b13e7f784
+4bb563d09631454bddee0dec931b83a4541784a462716798e48657c6e9b7d40f
+3c49b7108b443e6544cb1c56980d54a422b07af394c1f235cfa52a627bb6dadc
+21d7cdc394277515d3d3061c044f93a9345c54680285b3e905a71839ac03c8df
+4d6da861605ba94196aa470fc85a395dbaa69ad2724ac7a9c7bb99702c908030
+155307c18b8bbd5806df1018707f3d33dd181eb8a9f4b1100ab0983f86dbc832
+d7949e6e023bbb1d129ebc920d22450101cb78fc8707f5cdffdf48d7389820b2
+c38c0ff5317bf63abfa37e906ab27639a385c420ee43e426afe8982244663812
+a113a2c8d96338db0c75647162efafdd1ac7d7ac039044e9e4f6f548c0a57a15
+c364ccff818863b504ef53f08d4c76fed3a6113a03d21e978db16c619306c9d0
+708fb479239eb8adee34933b6325cf96a80f50e77a5492036ea66e7bf5845c3a
+867031e5b8cc105f862ddcb931fbd7e3502db45607f020fe8f2ff41cf3adc6a6
+9a8e87e1c50491a0cc5600a4f4625e30e6abf307e7bd63455356aadd7bc3e81c
+1546281f36918f59b88d4c6d0585f35cbf76e99e548c99afc1b93f9372792328
+658b280d5356eb8d1df2fa2129f4a7f319872ea4a2359517adfb9cd18f36dab2
+74519f18deec1fa06699fb62091042aa2aa0e0ca0efe9feb95ffebe594b82296
+c5cf578e91e3da6ebfa6f73a32b2ca33e0a6fee3c7f1e4d153bf0c07f94a3cf6
+d9897449d9a644961c26612ea5ff7f45098c619beebd99843ec09d34847adcc5
+188f0b9e252b69c4d4301209c716c6a5965357dd99d5ccebce79373161e80824
+fb05a2573bb809649219d69d8d5972167ffcb337b479527e94085d06e1d35015
+f173381047cae7ea8b5dc7b7eda2639da14b3138ef646665fa7c386db825b5f2
+d3f48927d98a7c96b7e10be4f4821a1c65816f3b8cd8feb3830de1c5a7bf54c1
+a37b9514e7bc6cefa7d1dd5c353e3226e1d23fd79179fdee95a51fd2923d1449
+2280a6b99aee29e89f57c60bd30a19f2b9784cb665a46e4f2c5c14353a2dac04
+c15f858bdce218c4e84401056dbab167d36cec62c88245f27bc29676c2b41cbe
+04d87ffc83b728daecc20f861ad2a53f4644d69c2b03146db4240da002bc02fa
+5651f3570272f31d5f2f91e9729a4bc78fc7200a617695109e08abad2a176bb7
+70687440b77cdb356b54ca9eeeee7f8c64f7a0240844d31444af92c90ab2884f
+6ec02314cb9f77d7629e510a3963cb97766bc1dff389cab79bfae09022107373
+51d7b3ee987887d78bc5ec8c18f6bdf1b521b1b69430ba0766492a694138a500
+ccb536a6d0a7936fbc2c5d6824f0515d45ddfc11925edf2287bd862ea8cfc437
+063cd38862cc9dbd815c55c221e4b567d2d80e870bf343e573105617d5c879be
+f98c2491e9758bd84390ff3bd8aaa6428715d6b45ed1c3dedd06f1ddb996ad06
+36739bf74ae0310ebb1a593dc6d76bbaf852e4d9228bcdee83517d18a89ee59a
+9761c6a7af6cbf477c7634b451e4e25d80b48662551d6e1d48995b88b77b1320
+752be9fe33211e264f8bd0625cd1b53e075110b0b55c802c68c119252012cce1
+4d20a798e1aaf0ede1987d27a1eb805e645bb249935107885907b603ae3ec4dc
+06b39d130f667db07523189e5efc00dfb52419848a1ffbe1cedb11ab17056639
+c3686d856ef20182830ef3d5d27be752a7d87a9735e5df22d0d4db1299437689
+202f85d3649ef7b4cb2fbd88df9be2eb8a38920c2cb9020136d701238c479e73
+1b17c23ab400380e28fa12f6be35e12a9aaf540551064af639c8fcb78b3c73a6
+b72aac7f952ea2978a2c632284e5ffde69886643ba86f5e6684efd176c960f90
+750c0f8506fbc1eb151309ca6c5cce1fc0dae1fe55d7bf9cc8c154492f23c01d
+6aac7853914d5cd4a3e3b2435c59d8c6feb13bb18a010b01bc7ab19a80e659c0
+9f17bdcc509fc9fd5c01c56a3fbcdbfa6a8a39bb4f6e0d1fde1b8eb5d6edcbaa
+03e65a521812a5ab61c5f0cbbe6d241ce0e0f05aa31f9c7776558542e140ffe0
+a713c7b4787e45e875ab46f69cdd3fc6bb2ca99c5f079a1dff058951cda04fd2
+5f285081072ffd798639db5df757417910af02a974ad193885712db36e5ee373
+ab840582bc47c69b57fda15a8f874df6273c33dbd8ce5cd5a65a446a503b5c8f
+fe788ce0cfaed99e27d0c393677139e07f32b9b27d6ef7cc02a69c01bedc7607
+f80cb48fb1f897838f840924195286281e186bb0ff11854317032c7d264e48e6
+388ea407e9ea52847c0eac9b8caa09de2e1f04df3ca31a4a60177e6ce7254ae9
+26b65edbe30b1d6f2d1a250a482b1bffaba7523ef088a3ca327a7595235a8846
+7d18e5eb7757d9b7e6f9a3ea260b5cbfd824b5f813a37eb8ec9d9cf7c91e1266
+18891433ead4c3cbe9a6820a7c7f7371bbb9f0ac8af1b320e4a38e5778803281
+1164d81f3d471978d7a2a850d06cc69bc010bdbb4e975d4e8ee9be1d1b8981f5
+41f648066dd946b4be16c549d0007db7e221cf80b65810548171f3889b328c03
+304d114354bc114488d4c24b1c48665f00c2cf1ea5cd709572b5ddfeea4453d2
+4a6fda06b72e3194d6888a7db8c5c923d681b2b954a1b45065c70938056e89f8
+a9fd9d42922e1fc40afaf61a5fda2fc4fc8437b99551b1f9086dbc5310891c6a
+d9295e9d8f2164eb4a79c2d5e39a40553c01b34007548fbfc68bff2c8610ae94
+de0114836fafbf164433fdaf39d5e8d18a56d809828480da5b5a15321c66ef73
+d2cbc0810523901d5c7429e50fadbd415d23fb81d1a51f9b837fea7cf33db1f1
+851e449bc550bc2cc0a2d064ee67dc7de3a4b41cec2b9555119af85fc412b0e5
+e3c20efc41a18b11f5a87e51b0714ad353c47fa77f11e87e81b1c7030a9600b9
+cd64bde0bff05a514ed956d1f7de59c38cb8c3d007e0eb323e0040153423ac2f
+25b46b4eb23d5625519d6cf4d0a42262dfb98a8fa2554fa680b88baa4dacd035
+f619b5b1c2f1165be60e3cacba08156eb8cc31cbbb87d317609459191d38b21d
+eaac8d4f2b6ce16e59b3581fc183abb50369c20f6300aca0b400896f0f6a67c0
+5a1a30d619af7715d9847af95b3c90e10a62e18cb518cb63753a139fb138b1f5
+d4db5d1fda32bf3ba11cdd5e1730a59682e5926c2e8a264c880b23e7a01f11ba
+c3168a658327e5f56c764feef6b5f637d47c6428bce481917f371ec6121f9376
+47cd9ccd6885b5a296b954f1c40da578e3584a10a3b6a58d86f8c15229e38341
+faee17d7eb1ebdc5179d4bbcc14a5bfcab36fe63afc7a44e77d9de914cf47c58
+070fd7a35002c0e254f20b2a06a900c0a8e90d5af0d30f09d94c0a0d4818e338
+c5f1caf8a80d5b72ef4e9dea9a5516c7f9a992884a2e332a4a458cbb9ea8d501
+303c5e64df97551f5d3380c83c7606e65d56b59450eb3ee550cf1930dfe8a53b
+c9ea2672e3dca10a918c8a68dcac7950a20d501d89ef60b2577529f9e42ece5c
+e15702d5bf0133b88cf7d62f9edfa8d593b8df3c9b3f0defae746237411848f8
+f71e8722a2b90f43be264e5d546f6e78c6a4253a5bf89ba1451fb0c0a23dd589
+221e6a3f4f8246f80bfdc28f4b3b12b417f135a9dd86a482be194b33946eb066
+d64234ed6ace979d4de2cf98842121d25a1a4bf456d628d2f04d0e1b271889b5
+b8a155cdeaafc514ffdeb89e0b7c639a76ed360c9cbc628990f5889be78f3e2b
+b915107f2d17553cc47dbbc40a81d49aeccb178e273f224318e8a0fe81253200
+28b78e77397dbc001c1c565a154375b5edbf4ca71b79f606a59a72b8176e5a74
+5b53e1d2f3856d1e1e69306b909ea46ddb902941ec786ba8238dd6b3e603a6b6
+ca8c707bc4fab9d3e0538446cbda498a7faeb35d91421bf330e87ee17f2640f7
+8aaeee8ea16e596cb02ece05a79ab5ad5e3bbafd9fe9704bbbd14dfc2d423000
+35a3d3ce39d6973b0b8536ba4e8dcf43167b08c555a746b167a50006fb3794a2
+0e159b9302e68257a60c3058dfcd42e902910d37558827244f09d102e389fb58
+90e8b1a3e4510e15cb15cde1354a0cf31fa57f505db5a15b70602f8b40138117
+c87619a5c7309d5d7589ac5b4361edbe4367aa5d5928aa0fa4f4dbea824687e8
+0372e091fb9015ee31c548705adc14f914ed7afc449934101b4f18c58bcc8104
+db06a6ee446802adc6f99ea6dd57d5b61f48c61767e00d1d511cb8c79f273c31
+f997d4472613275c6403fa5775e4f177552f71bfc587f4bdd8c5481fc5e530fb
+cb3e8ec4c1ddf7fca02e305423b970cb0c7540c3814ee0553bb9ed45c8cc27f7
+e189deffeadc562559c61d1456055253e306cd6bead71e367eb49706dccbb001
+45502163d67f89e41c99d3d7d57fc343bab5cfc552c582a339766306b835d3f1
+c1f9d01ca1b9b03249c6dc18df9b3e91134f31ca34ef9185f6c60832904f7fb0
+d3cd243e539c4d5f4920d6332e3670872795081b4019e2abbb8e8283871999b6
+eb81652b1ec6321be256eb25a983e45e68c1b772fbd98b0058ed98082dd403a0
+a1314a6bfb12e9a24591c847b874197602c7a3c0163ca9502bc88debc0f5ee1b
+b01c60a8e3abbce021eb7b3a4a9f9f19d23ec118dab982bd4ef2229ccca033a3
+ece9e4b210de56c6ae7b0db359127031101e4de1aa6275470603defa2d970cbd
+cb0719dd3c44d1c524b2c30a14374a4c93418d39140b6338730bb43eda03fe8e
+f16d102bb81360246e02367bb0fcd4af097ff13521dafe95b03772ed86a99d91
+b6b62216dbe0b78a0bd8b943a0d811adb9e9195aad1485208c2d5685913b5231
+2d6fbfa0d2ec2682898a5e9abec40719237d17f9ada33077cd33eb931e2b5334
+e4c82de4160901377e8312ae4e18a7b91f83c9528bffb5c3c49d1b5d440f90ce
+bc816533304f88f614ef1f144fd153e21a327e7977b60d7c32b732e4e0324af1
+f75e6afba2c314d4141cd2fdb5a1c3185a7db7178f91d11291813be07ad37c0b
+b7400147ac20fd56722ff319569e897f5696c18264aa5d1e8c4e18ae51780ddf
+b4b9c5c01436db2c06c10e52fd92899afbeca1837b86ffebea7ce87fac980fa9
+78acb93bc4f77310db0a6c8221fb8f6fc82333b0905df69ce33fb41639ec1850
+1c1c35b68ed041e7856f1763e2a10697a6a5f2c87d7d33aacf151ee197828b16
+9fc8b9e84b6ebd1f3dcf11570db6b7cc2d1f76347d2adaf3bef6592b471203c6
+55dc4a4fc19325ec7b57b14c06c972a5aa4d85633fb32afc5ceb9d4bfdfb8f72
+c0930c55db62c6734f2082b018258b9ecb8741344c0d3038012986164dda9ad3
+50f69e62abecd129d73ecd2064bab9279434b37e5e6d1659f00a4a742a1950dd
+09d41c240e5ffe0163fbe3efceffa150e1d4f66d7be02e23dc95270145b2eaca
+e1b0a472437da1a3f861310f86dddcbac7af9a34df20b0289466a49fb665d57c
+daedfdf4554de234aa8174a370b6d2784b3423b6f6a2913ca28098c15e907c11
+b97baf4642ec278aff9f17f68813fa2921cdf13d89cd1471d8151c7dd75b8839
+20b0a6ba9deb10a03b3a743776714d468e3f11ff8dfd35a98a6c5e849a1dde0b
+3aac197d72840b5b1fca3044b22c373f7f5bd2ce981716a5be9a05b49aac8675
+262722451427e747c0cc92d786aa74b4a83fe0c5f6776e0ef8245dd67c583af2
+db46070160b3943776dc9b40dd5eef6a3b883a8ceecfb6fb59c2741bd73de3fe
+01b5c3c114db29924ef1c3361ae713f897a6ee9ceb1d204277748e7746228b2a
+91e1d7bf9285b5b42e6cb6e277115498c514d8deded33f8c1de9f60f64dce47b
+31ba11a63e7f8baa90374122f0f1306aaf6f75127bbe9b6bb92f8bfaa58a4822
+5fef896850f08a94ee9f59a1302e8f792d50fed07651610a1b3067d9844eeaf6
+f2ca028f61cd7b000e664afa8c83f7e33a6055a6755f6f47ca93ff20639d8f0e
+a4a57443c9477aefb9c278dfa4f04c74072f31def188a7da71d7497c749ac1aa
+38934d94f83bbf8654d732dba6dbfcaca2e91d57114160f150aa8476f3b17372
+fbdde0714fb916aef77cb37ebd2c8b5efb4a4864159d80ce9ff80d1578eee4f4
+07e94a8bce4c081a7005c82bf173172bf47c2c7c70f1c4d289a11ed423edbefe
+c541a2d8a01129af5e5e089412f0dfc9c0dd3f4d5c5a0c911a06364ce2854c4b
+a9ce5c5f01b8fba24963a074c8ffedc18e7770243baef724b4eebf82805f032c
+1487ccf451085198fbfa337ea0bbe2ba042f55f413af08e4216358d2a4de5910
+ce05b8512506259c0c031baa0087cdf2737bdb90ab7c9a134c89910bf4ed05d3
+6cfb68d36467034e75337cd5d84e9a18412f3712c0de5fb36ee0cfeb83360a3c
+3657f81cdc3d62548d030990d40075a2df490df3649abe14504726356150acf0
+1eb3d9d1ff8b811e2e9e9bc757c95aedad4da44b8b422cbfd0a0dd75cd270c78
+8a6a85d8767a1383b6a1dc328054bfa0de744e171d5b3c19ce03c434b1ab280a
+04635bd29c8844bfd6a01da06bae673e03e3f4324d29061a807616c8770b932a
+894a905efe8deccc8a7d7e126ff0e86bc392968f8acaf52322a07c7b31e9b2f6
+532956a8643ecfa478e2530c93b7060030ff489392ada0c503a446e14c70d904
+80c4a81621aea7501191202aad1a7dc7cad048ecc6b7cd11baf9d2eb33390392
+9f516d36b44c6f6ab1d3a4eb2a8b9a555ada99d349febdc11ab4b6c06c1ca661
+f1b18bf86489198307e874572ca550c121af5085bc666eb0a79afa818a05dcb1
+ee42a97957da579b52b178461a94e1bf6b07cb6e237702b81a8e61e486ee8eb3
+c66240e76d9f4ad7519b890b04d3afb376ecf751b51bcb3c57180facd5859ad9
+afad6d4f417f24f58b50e5b3e7833c5dc77149eba469946f20b47540f9a41cd6
+ff2b329c5a36ad21d995b0687e5fad852999c29547a16ad439ce0857448aebbc
+28aa525dfcaef48e490d2288cd79c59fcc4c9f8911c981a04b2b2e70214d87b5
+fdf661891aaf5dd7de5f92c7825297407367467c93a2fcd9f5e0e3d1c5cb5af2
+c347163ae2dc40762b7e153b993f06ab451d8c0400706543ca133b40e51cf011
+8e3aeca7431f598dcb585704ec889bbebe4c89341efbab9bdb245ff59173f54b
+b7d53dbe4ac4f80c7ade06505406491835ee87f8203aa7e4ba81ae22c89bad5b
+360d6251849baad6b4423892754182d2e408de689f0f2d104650f12a54c1dd0c
+c366f3cbfd3e3861b799bc804af26182cf9c61fd62df4ec30ab83c8303977349
+d28e7995565bdfb0f2fdc11ceabc7bf34057b1720dbf90f6e3943f11957c001e
+6382b5a46d266b43c607616f3cf30860c702402425b7ac20907064dba5ca4884
+8e6a91ddd900eb9521849098b1ecdf649a4b3a11b15813d4d1ff8319c12f81c6
+350069ff4aac5db21646469e7ebba691ef7f3b27f169744a372216c648e74e56
+d322a75805323fa29099004bb61fb6b9f3703e9758facc7c4cb51bf38c3b6845
+289ff14d89605c368077c2db73867557a33dc0fddcdd14318633354fad19789d
+d1612c9352e1d2f084a267ee29887ddb7c5fd07338a3411672972e0a18764aed
+41841edcc107cc604c85bfd90f90ac71a08bc82247af360d6e334288e13b918f
+e58a5c04c3cf34fb2d0823340ce9e92d612707dffbf2201df73dfb28173ab82f
+29f46e66245d4ee43589eb251aab265a1b3a540f2551ad3a6073df6c8e7d336e
+359b063996c9d09e5eb6f64ecb02111ba7b229f0ac721b46fa91c41f282f465a
+c64e7caa32deb935e1cc04e187beef1900b703fe62da30df84a2871ac15a2ec9
+a8fb8a11da219a8563a7e592b0225e87a2dd33f56fec53b8d30487e06b844ff5
+72e6b6034c4c5496080797691bcd085c69b3828d6f9c64f3bcb04a25d1b95af4
+57bbdcb4f424ceaa3766bb9417f33b7b4146f2ba58e13c1fb8339fa930d50f4d
+6a0a38e338b01aa27c91ac9d2e34a6c68c56798d81abf2575cbec52c461b4281
+2b2b767f1421340672abd11b63a8649db90d455ea4fe8af31a2596fbd7d076c9
+2667520348bd36b28f645271b443259196c5fb1484078520630650448e21a970
+d4d3acbeaddaf5eeae7cf8c92919022575baee01e6693989d81ed26c073c5529
+3a4b09e2af3e486859eaf4b1402315bcb5e06505d1ee6ed2b7dbbedb283acab8
+d61a475b38aa32a820921bf4e91cc23981643d3f8639de985cc485ef1b8f774a
+b99501bd81cd4524e53ba6d917f9ce80713ff1368e57408a707547a79cf6f515
+f989869e405ce0e0af852daa071c01a852ff35ecc49647eff23ab395f7e3f539
+ff3de18d5cc2178c0d7855762c4cb72cf6ea77ecebcad26958b0c8ea22d91953
+8bc9cdae4fad67dbb80d6f220f2208e020713fa07fa402665afad0d95045fcb0
+5e1785a6c9cca087f32cb3f0b543133b6f6cef08abd8c194a42fed4460d51d5a
+db262bc6f186715c5e15226d34ee1a34d67ac9a75a84baea8afedb13021101c5
+79a9565321f9d27f9dce9d89d38b7591318a2b29bc2baab67809877f6f2f648b
+0cbeb450840c3c3f82b470fba4c3e9f4f036b57571d2dc32979b7d448478d25d
+62fa543fb39f274edf53d80e18894527a150f5cecaf40a5325cd3fb97c8ddd13
+f8257fbd938e17ef5d4e84fcaf8b8d77208e70f1429c5e347964d55f2905695a
+5e94b0bdd5cd249609356b9373e0eab02414b3453aac2396f3ad877c70f080af
+7a505a692f67f62404ab763705b49d30f038677754510ef8b85255dc2848ff79
+71c11667ec71895fba2c1198be6bdec57d1af1d419d41cf9fda9301af2e337bc
+dff19a824024c04aa6c643db903a1f93f6365e23056a88d88d4488f819727233
+9be16604572fa56f55392d28e94aa1a2bc9c7bb6ff0a65ba107f358a7d383d9c
+67e047434c84145f6fe5cb34a7ae26d774d4faedbcb93f0526616eb929b3dab7
+97b489d2d6d01fa66da61df17fdceedd53ba16f07590af1a11dab5244a7e4a11
+4a5797b078fd79b9596df5c37e11c73689bec9710ea9847d58b2dbd7d738e7c6
+fc61437ccd4780cb3238e6c9ef0501242f7ef89ddc695ad6001b47a05c0339b8
+9af3e009a90b363d8f0333d76d48f72c422f32d1b996de83e844f4f3e6e5f6ce
+2e873075c9d30fc06f75bab0b81a826ae224ca9ba26126f3ad2d430f66abdfcd
+4fe1d43529292667558c0ac825bbb30ebdaab1bebed8b48bc1a555e7f9e76217
+03e147e65ab6e15763fae829720b1a771d737173d67134b74d26de99e586b977
+fb4ecfc8ec71d230898e3f96c5001325906ffc40c7bbb3e3b24238cd7750d223
+1688a8ca46a6b4542ded971efbd9ee0760d80b27d71a72150b298d3e2f976295
+314a210a55e5c8528cb57ab33c17d7aa850a53b313cdf0608de2618f77a6c586
+53606bea02326b018f59c162d9143383703d73beca079c6cf0c1e0b489d60ba9
+b5a29fed22c88f5eca57f033bb1fe46c9a9b3ba3477e3444d5765ac6ad805260
+a740d2214f69fbe1696e8683777a22d2d4fbfc2e563f7566aa6e44b3aa5cbbdc
+19d9784f2d908f44fc7526dc6f2c977df445449d99a52483f7bf6dc05163a270
+8ca8b7fc924cb6b274673b12748abd23d7cd84577f383e93a51f14ca7e668b98
+9ac0802201c405b860e686dfa661f81b0e1b1760118bc8555d0dae5aa24eed2c
+db7388d9be4185e041240c13ac9cf13d4f807c1de678e131e567b7971c33c6db
+22606754d22de8218345a8df1d714375dad284ebca340f93e2a79fa8e3a0d505
+81de3f0c42f8e48bd0ebb208ba9e38230c220adde628f4e07504312780a79906
+3301664ec06d6e9cff3cbab6d0e2a1069542042421254bdb0b25fdf28a079138
+773e9e289b77cf0d9f903ad776a3f15e6053e4bdeab8f3d0dc614c2fe9574369
+a9d591a730877ad1b81be14e55dec2fbc4a41ab11b4ac3b3ba2d3ad34581bb36
+db22b8355ccf1a0e4524fa22cfcdb93d64daed8c1d9d7c189a2d6419c88a8e8a
+d8259dbf44e00d3eabaf6cd9e2b6262002c4f7ba28626fadd6a3e00d0403a54f
+e0f7f493c250eb31949051ada182d688a7b68dc8159175b2605ab71436540bb2
+de3c7b87fba0eb0f7a114929fe95c7d62d93791192fef2c26f49e6521339dbf5
+2b0d95563dcf7044597e1174d666975afa07c8550661f6f6c5973b1ef134e284
+96a41b15f27461c594291e2e1c644f3cb0665bdeff027582127ffee44785b819
+2271b4e369c3101c42690d5e64b9e8839b262c548bc4a22e0c627c68ba7881ee
+715f3477798a61a93a7f2f696ef74e31982c5463c0d67adeed2481a36d49207f
+0a96b3df51f9c7cbcd2f5861454c6a65e243fdd857f91db826d0b7cf464d7438
+2670c6c3cb308263d141a76f14d80883fb9ffed8d2d8e8a438b396e713623b23
+ea01a46ae0c11a48298d310c444dbd130f41d2e26a8740481bc87e4e9e509282
+4d331bf414817f0e504d01473eef73ad464445ec748aaa8ce5eb64b3792f2d89
+fa00056a956e17c0baa4d20e62e796c748b0fb35b2e4cd137dccd4b02ca57341
+4cfc347adc4d6f8ad39e8cc1d59dea6bccd3a12b54b94d70c94de290bc310930
+3e6d3573c2c3bf01389c9a7d187af64bc2847cf2c82ce9588249891e651f15ae
+330f72a8aef6b801d030ab5ce6a90dafd1d894b4cfe79694e6d294bac3ea12e5
+7dcc9fed7c478da8ae3a5e2f35c2fb3670f04954abbb288970b29ea454375c81
+a8eee1e742e51da5ed703e54360fe40ed0254af97748b86ffaf5e6ca4a43db1f
+05c5987edfa3632f59ace83312a121f01f02aa57f2ae8f7a1fd5b72e00d2bae4
+4dc50aa27fd34f6a37e8dc036145eb8602373c00deb74b10b2a47b6c078a886e
+13f6668b76265d67918178ffc3b50e6adc3253b0d9bdefeeee2d02275d6febb0
+9282624e91c78e1d035464d2668ac1f409879174776322f5be55cd0f452fd922
+48b471007a20ad09f10b2bf8d534701c214d0cd2b7fc1e62a8ffcb91ec07dce3
+cd89a1c2e611d775e83c93aabf255891fe76172dffb2af46630af9c03269779e
+4c5a824ed8d0b706b13999d08ab25b8d686e126afcd46aa48e12d3bd4d1f5f88
+2976f2866e447b992200879bc4afcd8c03a95dfee45be88af0774c14db90980a
+ca10717e784d91f8f6c85fce1fd19c1aed11c60332fa43bb1ff64da30742b4d7
+1210bd71eb163d89a91d586b2835e8f335542588c2b2d30ca852f95f969b066f
+51c123b7e90de962d921d007e37eaff2a6d25a9041228de658d6046475190291
+6ed6d32fa07990193e7e72f10d3b334dd61040ec1f0f608a848c2e8ecc20314f
+f0f4476dd6b63d2e4302900c8eed8d4a8e816e44f5489c9478d9b1a50a956459
+69dfa959be277a9c64264fe14aaf13a221126c48974b1b1e0f7f88dcb41ed292
+2b8931e700629a3cc09dfcefd16ad645c2abd0a183ff0a8c98c9ec5d457d0b69
+a0b5ceca47623df27275279b41e2ceb81ac9d9d94ef4d4fbd76f9fad8b1c4c5a
+e92eacd6a378887a12b8683d6fddb479e67876b38025df95c2f19d11a9d18afe
+03ded9039d577bd4b2556aff0c85b9e826975f8bd559a977a213b05baba374d8
+4a2e60df300d73ec3238c17efc0cd1247eabf627dabcaa3c013e4a5287c05a3f
+2e469af9797ead51a0c49efd48ec7b70d282cefe7aaa713c3a7f607eef6f97e9
+e51947f78526c8e96ac76e9e6ba0ef98e2a5f4156aa69cd0ee8db1fc22e125f0
+546df10630c63e5831767cb736e92af17a65979626a7eb76a4ac47284b067a9a
+75304be1d3441d0dbed2fc87da5b32667b6e191936c445790030358f081122a8
+7c214d90991162441334c21411e82d090c4c0756da00d7fff1d81d05965e26a9
+9bb50d0f5a4746cb1f819ab2c5d1146580034c72a3b1a3d78fcd315ee88794e0
+b1c0e133f65bbf0435dbce6dcb7c8e5acf26257c8080d289f5472790475ec2c6
+0b56705f723b64c48a704e5b8467b320b9784bfd6bd7395b1305d0dfd9104c40
+a567a61c5b2bc986ac202ac0c79c3cee4ad15f2a71213bdc1178d728319e871a
+78e5223ad095b3782c211efdd0c39c6d8c40083dd410ade20e6cc945e737c8ed
+d5d3ab06d9de6896fa4fe46c8c7775b941d6a4b521d22204e249e7a364765ebf
+15e7ffdf23ff843c95b7e5b31b529f18f102783359a5b501cde3cfd865e33f24
+065cecf2f920da94c1113203cee798edef434d08f5b24e3d006fd30be01a7c73
+9daefc022bd993301675f024382c725bd1d61b6a77c2f80c36e4a75e50a454a8
+f92bf684ee8bbd01c5f761eb72c7c7cbf1f68417249a7db14294c25c7c1177ad
+5fcd98d2906f0d7b7c91f2c25f0f316612dcbe1e03575ddd172f543402998d64
+bb977670b7d354c5d63843a31b4816d59610adc4dc27eb87f1200b8525e3fb8d
+ea314a3bc2b2784740917ea2b4d7d7039bb4f74eb82121dda2a5c61b3e527f96
+31e4e1f7019d762ce4110b55472c20f5ee41b5cb14907395b0f71d301c792190
+991c2275364943a8f268541080568ecacaf086f11460ef46f2eb356e3ee4f6eb
+8008003f555c8e43f14caf3de78378cff995f5a503b2c632b1284fc3d5acfef6
+b56523cd5a762598b2185277b914ed5ae45061f269401a204603a2d758dde355
+0e5f8adec0f814123b053a0266adcd87e004e6560371688b821a3e32f6e74257
+673978b8b941eb7703ed8c425e9d7c3c37ad3b76c983e3d7d35c72421568f420
+42e4c8dd657cf32a8467ef7fed72022f2b39b0ad0bc574c262f389fc778191db
+587327a710016e295085a2c28c0dd7c05eb223e707f5d68b5c73d3a17afdc138
+39d191b5da94c765e7fbead349cec8cf24b8525f387e74346ee00691c64a469e
+9ab10dc4ce31047b599b1b7c370a3dee4b63b430d9f287808c43d20d6cd6809e
+3ab6833250425f61783a76e6fd970bec3efda02721fb5e56f08f0b3bf5bd9d06
+6eb1845fb5f03acce0958ff8d46e11e545502f75a3c67ced41d74f2aa0d2faf5
+83c12c117ecc0b3b347659749c5f1981951038a2b2987a07a2f0346d59e398ac
+f7377d25257b06a5edca57e7bc4cdc36037f5ec19b2af0aac9ffaa5528bba285
+515bc7a6037664031ef4efb59f872149d4b0c3576430edbda67f58188a050220
+f02ce6236400903c112f0b0298fd47765502479b2300e4c86ff9c370ce2d40b8
+e3aba1848b8f0a69d2c6c526a4eb7b6ab0cdda2f5307413ee620f75dbe6ec442
+caca3c0d64a2d4da170554acf238ff9a7323ef8e034207342f76f49cae6b5818
+24776973045c1453848cf7ff6eeecadc4875fff0076c973497a463b82080ebec
+d714eaa7ffb5edaecebc609bc2f9abd90a4f0fe7407c2fe0f4d1db1efc11d93a
+5bada84d851bbef9011e7b650de011fe8dcf235e8e236aa9732f0071136d72a8
+e3a602c897fdb990144acd1378a245b3835a705a51ea6909a8cd6af86ae3e54f
+eff8a5f2b9ba2f507fc50d909cb3d45c8f72f9c242e47df12e984d63cf7eae3d
+7ee318a2bb2258fb3d811002f0c34b14fb3ee30b52dd212d8b9c949c965f23bc
+9e8a1d55d10906262c1f931392ad50f7c27b5eeb88babedb6e81367f5f09f5d6
+72a506843a10c929d47d34156d533039a8be3db70c143fcb931c7f5890bd9d14
+b7ef03994024a3bdc4bd44977f755b6d3e343d84d266b7c5a8424ebf483bffed
+b8da2f859b1c13a5fcf39fb695cbe63f4bd17d1f90430765b01a2a0717af6459
+07431922d25f690e16ef1c1743ae6616d2975f6b862f97cc40c1406af17d296b
+eba57373b8c49032da69607fa6b14a2945d3e0b63a946e5a4bf0b25768cd99bc
+065e42f253e637555c4559e13442f5fed1384b9ebfab40a5c3be4247ea6c3d48
+22eaafb9f74311594b4079d7d548896a10835c4e3d7c421ec27c39ab5ec2d243
+2d6f69efafd1218fe62e7036c74315292afda0b9b6e447ab8c31c8bef38d12aa
+2766faf8c92937e5d9e8b47df27dda96f68531acae48b9e0a37136fb4fdd4c97
+af792e5641efc03f6ffce2725229a7d0c468e1346613b1622b25dfedc3740891
+ef213a5c36722a740b75248a1632064f41be911079b88bc671a690079f48ba01
+8ed5b44767f7c62136e6965787c32f0062f68ffc2e8f7aec73135b8f019199ae
+4cb708e92f728c685b2d844fd98799b45ce6348de45c0fcbc7c72f262ed75bd8
+7cc11b16e93e8a4be86aedd838d293974e857c8d39f27d416f44d37b9c5ce79f
+ca761d57bf096d76a02db689572167172895eaffbf1cfbb452f71deb9be693fb
+6d4c532a677b86c24669e1e2d7a9172e65ce155bd904d8c26a5d45edfcf0aa1d
+b78cdbf079ad9a0fd994d2731467d804a372aff5dd062307b17a4b7a41a035c9
+d7d9439f166bc4b3d45fb214e7700afd7d714d2507c3a9240542c548115d7e77
+ba978519850f44a9f3e32c84d79738c704dce6415b6700b327f696acc3c2b8c1
+748aed786f7da1d9eb93289c0820559e04bf376a06b0ddb82e92036d69928408
+7d3d459e1629d7ae2b5fcb1ad554e06ea76d4992dab1c896e0da7faae47df529
+4da8caf3d7e68582d40b72b125bcda66db017eb0e7b5796c6d6cf00fb6270225
+9e06b8c3f174c2e3fc0c1393d1f57f629a48aa072532ce915cfa08d03396eb34
+109878188cac93147278c72f3450bcb6f2adc6fedb7a9cc11d3da8214f2afa14
+343f7139cefb9501cb05a0358644f16b66c05f8423232d334a61cddc5d739332
+0137c554d2a6e00345569a61d47578666248a918cdcde1840f45324f03fa9563
+6839e6a9b62c339fdcf43e40a7f057c723df17f0c15a1d4b4e7d40468c10ee82
+331605987a145e5a0b161b6b6f2a73837db193754f29364c8d6d3a1e4f1b654d
+a41089b0df52112b4d06a4d6dcf70943b8d2303eda3dc8a29071d5e8919ae9da
+b7098e963a08c25412d065b9276fe542c13c82d0eb6b72e5ecf08ee0f38ce7b3
+4879fe21e35e533849f4171cfc9c0b5cf96e72e73067882bfa0739a56a548756
+c59be8d6d9589726dfa37d6a5799dcbe6e5cff5024a446fc62f10d416e185620
+a00eda0d24aaf2b08f2daa044dca8b77f60a57938ab7641fb1b9e1b65f7e9d1c
+b957899b37c8f27b16ce15f389217220b534286cd9c8629c4a69d242b303fb7f
+2ca64a9c8cbf8cb44abe7c89cce4b68192b77be74403317bab2f3d2f641d1967
+6ab84bc9e090147aaf533eff30a37ad15078b98b396aa1b194907a15d99f724a
+5d66949c65b84c132f4a78e0102e0d5bdf0daf015bb2eabcab998c9969423846
+ab9acb2b3186d1ca328b82f91e603d7dd77bb81f3a9be62aa1778044f890afa0
+ded3a08116c00604eb1f7fc82a0ebf7c95dd13795f95db04ef42641b524958ec
+6e90788e053ef00f079658461506d38e983fe75b74afaad6ccdbee43919c4c8c
+7bd3f86281364d22028bfd18ce88e3d951a3b1c7ff5d81aff0614999800d69ed
+06c3df4be77b09ef25c1d66a3f350184006af354ef07816718007e4d6e574138
+4e33ac7c3f0cc69ff211e7ad9e472501e4b3d580d8185866b90c84bd6f578bce
+5a45d1db0c39448dc459cdf31542fa1dd8520da2b184752d6b3282b7150cbdbe
+6fd66ccf59ce42109d6793b389e5f5964415754e6607b4b8714cacb17463c101
+59f27924b5a5e00ef449d37fbd119e266e767751a230119bab27ecfe6b41e0bc
+9152d5f04a8840ebc3c2984d41a156528aa42c0ae08bb44b277c7e8848cf01f8
+daa894c345085a724d44bdb02eb234d8538e49793012963db5e538a130205ac3
+741ee88eaf6899c460a00a46b75606238caa001bf80f39ef8327d058a826c7c2
+c99edcec1246bd999acb0bb538d3d22bc0deecf439f0e1dc74fbee93f2fa2d22
+982efda39b5fbbb98fc247370adcc2b60f7a7e3f1e2d0ccff2342e5a30549c99
+957739500c33ede9b9147a7caa89d2c38d3fa9af0ca24985a7ce98a14e44e214
+b7622815700b08dcf6670eb49d55f58dc8493b0cce6f6aa3835cdeeb90a2449a
+159c571050c71b28a006eb7b260ddea1b0c14fef241f482375843273833060de
+ea6d6d215f5ff50bea6d4f186cc091f3f444c3edb462ce477a610f4975872391
+dc047d1b7cf054e5b7ae75121cd33be7a986d745c57be3a30d86073e3af91419
+443ffd81c0187afe2ac435f38f63ce6cbb9c040fcadb51cf85ad209b2f7cf049
+0839e80327bfbeff0dd8429e489e66aa8335cc1832f3ea1fbc925848163da145
+ebfdfbda9a35dfc3b8183cd5cbf2dc46dd4cdbf2899e5c95871935fdce5ba61f
+0d0ef8f83ef4cd041940a945f92e4a66cc026edc4d4389313685e040fdbe1990
+0ed56c442c5fb9b73222dc19f332548068ab6cc584b2117833c26d77cc0a5c70
+06612b5cf42944821b7bdd8e07719410562e2af1a88a9abf13b9bb3c315a4a20
+df1315c0c9fe9938988b54e3fc37f2583b669e020138ffd44d5af4126c395e42
+1425e271a7f502ef95ba039deab474c734a9f024412087e3f56e6cba3fb3a67d
+26586670223b17ee23de92dea6b6a1c807d6357071683054d95fd192099fa694
+6d3559156e70f5a763dd9d2bbe00a604f6a0ea956dc9a3fd3d664f185cbc54be
+ba04baeceacce7521ac21c1d6ad2cefae02660d53493389620b0e296447378d2
+a6904df66f2778bff30e4b8068a26cb447141cd7fa74f2ef667b05c429e3ba35
+3e36276ded0089e4d00c8b555577458f3200af28bc334a50c9a4c88834d7a255
+b8fa41cd6b59470735ee72b7e801956e94e197432f012a8aa1a0833d554bd215
+ef2ed46a7e76b206767007dac1aa1c380e00b86bb7fc887a835c8fd56604b1ac
+cd47e141c8316aa58eb7f80292258df02ad3c65758f125cc2601c4c757e7158a
+ef0b85212840b695bd8185d638cf2bbc807fa3cb00259ebc7c0436080c97032a
+c10e9ad516666ec7367750ed90ac0ef810616ead22a4d16f64ff606e11fb5726
+76383bf8bfa25f5dc30d857db690245e8144b969228b5750b87dc62ee0a0773f
+24ad15d80cbdc44e739dac12fa00b63f4b7d0eff26f322b08061dc588ce026b5
+a72bc9dd063ed2b0c6408936fcfb90e7f9cde743f96858b540c0a912c2efde01
+6efaa28cfca2a3dc5e429f46c398e475a75907bf6dcead586c2cacb6aac6ec79
+54c1069d1aea8803f8f3d64e5b50ee821c0f3830e78b7b934e2f7873fe2e8fd7
+2bc52a723f53a1a2ac5799c161d383667a50040525138b92d4100909041f7f92
+779b69e66eaeec0e5a4723f4b3d38bd801659e989818e7112d3e4ebd6254c9b8
+2709a0a461ca682d0faf4610ded59737f3fb02c4bf01b2ca262862ffbdb39bef
+e27a8c65e5a1eb8b012bd612e72f189f1d05f1bb66b88682992c46d0f8001965
+23f5b2edaf1d0a567970ce339efbcff5db5cd4ec83f3a9ab555d650ab9b9b234
+fa2813c1afe32867a13c99f144f7542ae51c77b0576896cd0cd76266b6003017
+42f38e7d5604747db541004ca2599a3e5562e1e6abf18354065f02e55ef5721c
+66f5d1b07a6c48bac2ed98d0e6f27ab962c10a87e6c407394db1891e6196abc5
+5ec07230e7aae9b59fd78439fe1f3761558fe17a306f842f274f3245b9739636
+1030597d935700af1596610fe57d0931886101792368caef80582cca031b6d6f
+bf80ea630c694edebed8775e34b8b9fb9ecb40fcd92e049e8549803cf44b0159
+5d7603961c0c9b480e40b43fd1146e83c35c2f2cbbfb729b44d90f5ece712084
+2fbfcd723b98cfaf70702c5a203a56158a189cde34788189e1310a8c08020059
+e12b1323caa0820bd6c249dfd1b9e6e984cf49e6fb2748e207e1b60b4536f9da
+288ce7ffb7eb945bc1b998883674b2f2755ec595befe40d607bc89cd224ce669
+544865bd6f569dc6d0237d61c946cd96d0feaa83486777b82bd90539bde6188c
+416673ff0858adc73ab92dee296f30a1ea38ca1d1e99373036f7804860a2349d
+281a1fa5a5fd50fd3b67a0ba901f10381fb21727d0dd430f26918c022897536a
+3cd9021db007c5002b06259f6956ba8c647fa700e243602694f511c56c164e08
+1c145de5360a3b2c8a479fedbd70e86b64a22ae0041471c0e04eaca3b6bbb970
+d5c4215b45866a6f9f22614d6f9f9e51bddfad16a2cd3272dc4827c14e609662
+48218ac447840237ca81a065dc469247372a6479dad14cdfdb9982eefb3791ba
+0882c9f77be7fb7acdcff7eb05add3f8496711d762a3e4d318c980635762df0f
+49d81d444d30eccd9a4cb7868a8a129f32feb304def7d787833f47b77ef5509e
+dac517516a367598bf6e5fc0e6e0d24bad496bad2aca0799d24fdad822178a4f
+93075f8302eacbc8b1b097c5268da0b079912cf8adf8f501e9d7f4ac4d7c312e
+ac7f6ea7a617db10d68ae06b2c23aa05d46f062bd1f32284fb679e8c4593799e
+0f639d8eb2315b1b8b9ecf8f707944a78504bb510040866250c0f22ac9e0205b
+591c86f988bdd421caf2c0435ea13dad0236939eddc6d18d2e681b8a45ad4fee
+a95103d55a074043506548d48075f04c21565624c99dc8a731f4b2b240de5069
+1f287f41acd1ed2aebb1f0c1f0519dab3b818380c17e320fb934351a61ba7bdf
+0f0c9a53231862462946ae7e2131e97464931df4fb1bdf8d49e22ca6f161d1f3
+db678067bf81fca275f2a01e470038c7edee1c31543a59aedd146f21c6119b4a
+01ba20a026418bbfd490fdffefd7d1d53e617ca86a0d731b01d4bf2435292b64
+674cf946ac88ea7b1344919da132dcb2e3d91ed8bb4988eab32f407a4d14dad6
+e0964217259e2135ed844e93be0b4ebb66ebf3947ee652572707224052f30144
+6379d9adf661c6de4f34e5157d8d9660c91fe31b6b83714761db563b68f1d4c3
+26497d910f28160aad4e5df0686042347ddb52e6115551ec5036aae849013f51
+e4fc34766639880ddf501d95e2d2bf75843eb31567f9c89a58ed6971f039d782
+960778d951d4c8b063fa2fdbc3b7aac88dfad65d7deca73b0aee8eaacadb7035
+4a68ae45c6713714c8e28ada8f15effc91855443a94628d3310418f29fa1234b
+0b225a6067f67f1b248979e4149de4aba6e6749d44a3192be18a36d430da78aa
+f4b60243f7510e6a7000d82e1dce7aa535c1fb7b589c8b7a8fe36282cba88750
+0b3f59c9579c8be9365471f0b0870544de4431ffff59cbd9e196ac0f496f6788
+608e868a6245ce12edad7e4aa310a217722c415bea7bf0786d5cddbfa7c8facc
+de47618957d683230fecf01ff816dfd2a0a8f669f6cc9d2373d8529421613484
+11e897895100fea2f6529a5d7321aa3d507b02ff5211cf33ce923ae96539889c
+93464d4c08d4ea9c7a815ff8a783c05bca3149ab74b30c4a5841a548069db837
+f688068d6beaa86a7766179c98c8afe6a122ae08a28889d4bc2ac271f116feb4
+1f9e28652922734875ed2ea337faa7a3392aaecded3e77e63c1fc3484e6217cb
+f768e76e8c736c8fa77052f2667372eae9a7235415e4c6b51b64d9ad1b581c9d
+c9772272ef4bf9dc0230f57fe49e528a9094a83744b20004aaeb8a97a20b56dc
+73d1a9bb3650a3d269d790917a42433cddc8de89bab9d6b21ca1ce857e17377d
+3340c9e6bf1c54dc9054368928fa93f6bcdfb36c460171323b8bf41eada20780
+99836abd96a05fba57b7368582cfacb3cfca6bd89727c4a2df1648551d3c96e0
+75d67efcad19cb52b732394a9e1dd2c682e00db530ac5a5cc730158ec663c6ef
+a364fd11520941aeda329164f095e51f87d9fb333b1473be63519a333da7de0f
+41aa79fd7cc747aaf7eaf4b2be3f2f7a01dbc9f2bf45f30cc1b77cdaa0479dc3
+c6440d56ab2b9b74ee4e459d767535b15854bf660d34e0a3c0a06a482e731a2e
+80e528278185559d0ebfdad35065350fae3de7b9ec8281238cc0888fd780efca
+cead6222189e8d018480c6d9f62d8f8de6b4f9091da703b39b8203dd16a851a2
+a8877b9e5a86f86371ab8b366ea236fab85b27a784de104484213a97ccec1fa4
+102dc75b2047da36bf7f264f9cd0554d3399721dc786066c36744ad2b71cef0e
+680df82b56af032b5905760b7329964741d0482c19c92a7a8f193cb066618a75
+243a15efaf66f0a875cde26be844897871c6aeb26f1a945db5b0abf3f0d570a9
+cc67dffb4780eb52c9421b278eb4ab13dc33bcf38a6ab00d448d4cc4c04be75c
+b4348ca82bbdd36fd1f83025fc8f1a864ee12da415f1481082cf8caa612b4f28
+d87cac6740ae038bb3ec7427ab3bc64d0e5e8b6e9119ec4cbfab772535aeafb5
+c7786f72e22b9e95f161cb536df2a496f5fb408fcc915ee187bb3bd789924736
+913303aafd425f2a04fccd408c883795db846bc4b151594cd67a0fe63a8fa087
+31ffb2bef5c38324f9421e3869edc01c58d576bb1f85a5b0e35c35438443d29d
+684ff4774a27d6d471ccf0741a10d1c6bf9f2f46f9224dbb5ddde2a6917b2ceb
+f6cbf266e15d07ae5c0563fa665fbb06aa663232cf0837df815ddae3c9be9771
+4a09d14bc2692ba434fe8c88c10a241067a894f7f06e9b9fa55d2413604d91bf
+023121aa332a17410b1a6099d277e0f2cefb698fca8f0e3669eaf0f9c8db409d
+07cfe149ee098628d1cc4788e2a22cbc55484100bff52b0477dda33e7add14df
+8bfd5d36f68d31f85e4c6813668c737da569350b88544b2990203ed5d48e9ea6
+5a9cf249a812f8a305157254cb126f9db2db65fb7f5c0ebf03484f9995e83b4e
+2252ee6082a7f9d974314ad3da73384826c98def9596babbeee8a80790215307
+bcc439eec0e586f3ec9dbf3b53884caaf1eeda2c88b295b61b686aa4ca48e445
+e91584672049a73151a6d06b77f7503d5f55301a9769e2095d501cd61cd6fd72
+47be7df4ce8a0957e5d170b94a0e719d7a355b4bd867ae9e8353cde0d348e5f2
+d63b08a1d3a2781ecf8de4a470a50c3a9d48b9c52d04eac25a48436d39b438e5
+e7988046c308419b7463764645d764df8cf4a73157f081281d766a6ee4f78da5
+eaca62e67a70615df906e3adfde5546db2353fe2b4b0a535057e0114482e2bbe
+02e053da7b161c39509ff148de8cf9fd11e08c7d8a1e54dd94d754184599f61c
+4bb16e360120b187aaa63b751a75ff35cb123a461f982bb4de1790623098c10b
+dd0382c1b1b0a52dff23fff42e16b5feabe741fe252eab8458933762297e4c53
+530ce3542846091aceb6416fada3cb874ec8d5505e11d46e5633ec2613b41c6b
+3c23344400dd552175cb7c3d65e7433829b6f482060915387e2799dc4ded6cbb
+eb64f31d18a5c2286a3e07b464aa9897286c565cd44134a51154714f0f630cd9
+d4e7bab71bedd24c1c6bb26d72bc30fb0573a503b6a40396183beaac0a0240bb
+4a4c9b2c40b22e69f704ffa5480a41549560cabe4de2d3535d55e81c396cf021
+96ba01b989c9e8872b32dc460ad302656a235e9f57066ac4ddd15d291a8a77bc
+a103670c603e88922535f7b36d21793d9f2be1b2b3a4310de4148ded7f293848
+3ee7894e007b39d3bfc3dbb138dbb625b5069c70fcfc0f3204a0691ca6978359
+9492e04aff4333b1eea08c86935da3b339cb29b3c3718b2a561d8914de911dc0
+ecb604da05d18a741a11c3615cf95b3dda84843c22f03685cba3ca96ad3c5eca
+9a2c7455b78b4c787d3e27dd3d674b8eee4796be01abf6b285405f4e4f127e3e
+20e709dfa2305ab7eac79ce0a40627ac794153a4a5700786fba3d61de18475c0
+16f22c258aa736134d42047f94e8153711aa5a7671026ce99414581aab3ed21a
+b305e74fcc1fbcb1bea7e93d189293f3f71c0cf78fdfa3cdbc1ed9dae2a2e4dc
+019dd699e76e1742e0b31703d16b758167ba17be2e69eb40c1552af4310f89e6
+b75911c7e81be535510857ded2b3d1b8723d5a76257503d0a44385e576481433
+593dcf7397a8e8d7ea663510ea608449ab70a2edc57a27bac85c249fcbfddf8e
+db5a26775b037b2fde07016d15af6e7dcc9b5d57263cf49dadc2ccd1d81d5a58
+afc2e06cdea20a0feb5094b4228fc4bec558d9c30265f105f9cf81242480a23d
+e6f5785f1889e2d707072f8747a74b4f5b889a823e113ab6b148e8c1e979b90b
+7ed5633f77504566371e1410f3cb34ec1c90b6cce0aec0b318a2b0a4aeed76df
+27c1dd022fa87cac3b44496d32f4eb2921fd3ee4c81d34fa704f9c425478bceb
+71c01147630d7d995ed50fe125ce3abd44ca041fb9616342f0d346add746f148
+20e8c77204c7731539c9e3f2c480faf8e8b9466a406dd2eaae7065bc1ae37d95
+2af58b6bbd2e3011124efa256638dddceafdff99ff6db928c208e8a4fa78c8e1
+2399becaf4bc8a1b250efceabe8b66d4f056f245b9bc2aeea5d077555a01c8d6
+e1d992a02df6390440c679e6f95fa6e63beeef7b0d3f0013072e8edd7028074f
+013e2f0771c39637dac1bbf8949740c54775732a33eb11a2027a2a55b3a1bca6
+1b054fd25c4193dc08a7541ec73d6ba10b7607a5cc43e1e59030a09e30647be2
+3cb6ed59535f16dd90be00e3ffc9d6f5bee869daa73ece32458d23453f791c4f
+9fbd9b8c56240c49e824afd7c034c6a2604f73170deebb0fcf5313555380b265
+5b29f243dec9553786259020f0a6bd5cb38070a904fed4d69a61a9b2cc3588b7
+7618d89244f01d40c11f90faa3595b46ef454913352858ce591dd96e5c41468a
+242bad4a7437d53b1fbf28be2dd51a7fc1b771eaed9295a100faaa4b17ed60eb
+347ee26e3a1dde1e649dad696dc42c3d7b44a39ba4dbabdea63fac72c49cbae5
+86f74c53268e8e9da276d242164ecc9db3a62fb5f291c439a7e1fbef339bd880
+98d27fc81522917ffb189b357ad1f30e08956c9523893f7230b5ba1c1ae3d8d2
+08210f0580cc31572a6e2f0bb87bec50ff36d3e2555acda87a108a5b9add5095
+f0b5b16b627d5bd55de3d28393c4885b9398acaf4ac008bf9a3228da5a838d3a
+13b94798184b3a6f8db2b8886e8b8055a0839d155404af1fbb46b2bc75171e84
+8fd3569ba613ec01c99a22a5b6d00519ed7e67839aa462dcefac23be2a858eaf
+1726ab01231b64d39bc4a6e985ec00e4818f0bda3a078de3a4b9079ca3b73d3b
+bf023fd7f6094a248fed7a10bac4af945d70ed60dbd6522965836a1d82c662ce
+e5f8034fcb824199582a79e54d5bbad488050288f34aa1d387230338df4f9467
+c34e498372543875e5aec2512ac1a2b0941467fd58f8583ff5915af471d447a1
+bacbeb778a863e285116531b018d2fd14c86820b408f3d73325c992300fe6414
+1fec6da4e178fa6a04849d256c14fdec4a29f3b100f7b8a19e7b9abf1fb763c0
+4d9492c03e223c2c3ae52fe73fa03a0f6c2487dfc97af92a58377486bc512a96
+51914904d3038a4a2abbc79c4885101b6ed7377c7af7f466a5d337065f71a6f9
+22c21d4ea223cce7f0b59528f4f56e56e799797a0bc00ae1d02c091c27f7e3b6
+1fb869e762cc8e87fa50c398529dad4e6b6944b6164d01608bfa97401e0d04f4
+f94a70e7c66d5a3d7ca061008588254bc40a48d95e740c341651199b866fb247
+e9487819b0017ebe7175910d89527a64fea38566202b98497a928799c4adf1b5
+ad76e601f3ecd1b7486b20c201474d4acc7e43cd05eadff17f24dad29d9f2957
+c1d7ee6ea44606de611dd691bd82434fbae427d21e7525b4f24d73c8ddefd73d
+f00cb1a0011abbc84d4af727d7ad6b263b526649abf598e335a94e912b5bb248
+0e6764635f2176f68e5a8f9c20334cb6949655075da5f29a2b98248aa0f069f0
+ee881289472dcc496fa1df6524e3fe5c45471f1f4a4a0cb3c811948867b36e47
+f6757d1361e1e1061898449ce4d7300f9962fbf07f1126be882acbd6bf05dcbc
+86136bad3d07a59a35dbfd77bfb3381c8bc33222c9ae643bedf1dc6197567404
+e90b0214aaeaf0b7627277edc89b5e0da0e7985b87f70acb5b59ec67d24e3617
+8dcb579df16c85c492b08dd94f73912474cff9ee36fdf22e7ecca43b0fecdb67
+6e8e12a0dd082463a5bfc08b099b0882f28858947ebcfa4c32a7add602978867
+7b094d7889340f038ceee3187501c2085fee3472d2552a9416fcda0cb1180844
+4d360d95eb0a04d75736bbceba09d021c59936f85d0e63b61e69647c9b713b6a
+30d6ab97ff24e27d96cb43bb3e106179be85ef592c36b4c9217109e1810732de
+bd6a58bd1df93f6fb1e7f8781026f6e3b59f210dfe53357fc7b8de761bfe62dd
+1dd4f3aaab63357c96a81f51d97aaa60ebd01feb9ef8487bf8adf1f31ed55900
+51b0fe8a13b8e876e633f9e12a6cad6da03d27e10b84f8f0627c5c98435f890d
+55c585af9e44e6ba99020742844794445d34d7b1d778b0cf1723487867fcd245
+0d38182523531f6a6278943006d3685d0d3b625f49bf4413ce66ce3626d7ce36
+70449e3e26973141646f459352f82904a60d5d717960089eccf295280ad7d3e3
+37bdcec5afa9282a162b6bed1d27b029de2ff39533978adfb2393bb86f807497
+a06233a007481a3f899307c901ce0131cc3fd5ab9fa262470bbc930472a460a0
+3d5b91702e64674d74f0c59839091e2aa7ab20648936521c1b5dcedc69e4af23
+1382e23faebeb6906a6ad6c53b276738dca235cb2439d2c7ff2e8926f4c88235
+36a4e3123ddff3e8a2d0f9ccea387edc7105fd79bc888a3aa4b4dcd7a17eb0a5
+639eb2b2abd8c3f4c8e6be3050398b58233eb86a1eb6bc11b66cac8330662676
+f565155879b72bcd6dbb5c8ef4691eff123936b022bcc9c36f308d9155f36d2d
+2020126d5217269871746f08fb6a66590c51e07f8af5b95f2f5ca7de7319247d
+de0712b8d6133e02e32914db9f6769b4728cd8376f407aabb498225d9f970829
+098273a97800f13823f115cc0b82aa89c02ef80d256822a8371b5da3079f5706
+d10b303a2ea333aeef17647a6dd53527d3aac60abf2a111d96e6964ad3dbb6ee
+1f1f5d41010bbebaa1b3cf0bd7fadb63961651022400c8d73db11d5c45ae851a
+db59273e70091f498ec3b5ede06449ba2e6a1a27a989d026be0520e7bd8332fb
+b7ce6fb2f337de7e804671a0de95957847f07b1336dd3629a74ce92bc3899a07
+f88bb9c6ee33b64b1ba0eb71c3c2fc437339f8fc387ee32386cc63b4fd182fd7
+fde16ca3d548ea36ef289d3824ffa0be8be2d1b0efaec38fea22d5e988a961dc
+8d584be2d882ecc90d719e1c711b72262787faf911535b0d7572689b981bfa7b
+aef83db450c1a1e005c61316b1f08e5c92276773025f496fe824d4c616f895a9
+835dfe0ef4d759dfb7d8b9434b74dc50816401fca78fd122ca46fc00da5e9d97
+e458346f142480245c7fab3abfd491eebc0b4c95ea46bfc5ba1a2ee6f584e8de
+602bcb34838dc029244331ded06c208c7fb88ac86b67f737805d7bac29e655b3
+236b803fdfe0acef2f3b6985654eb5fbc0fde1e8208d9bfa83b7181c9ed658c1
+d0d4da547e977d48aa85f91ae593242e8d44d81d3d05a56cc640dcdd7c46ebed
+546b658fcd05a9a35717bfb31383439bf8e3def09b260a2cab5536c21030710b
+506ee5d77c4e9ce51f245ed65b2d2cc59a95602748d31194a589c231836fa6cd
+9f40c7c03d967c2ddc7f8599000077320d43accdd7fa5b81cf7bb41e2209e289
+b50c61f793e35ab4d234f6087fcba08119a5e1a05065ef018081be4ceae57767
+b526df1933aba9d9ebdc2677fdca4f18308490c8fdb4fee88ad8ffd3a30ca6f1
+c31d99987f642e7d9e5c8de76a43376fa46bfd8ae035dd6058b2e09c96a09eac
+b4a4da9b141175794fdaa23af16c47194827a1e10a0264738e6050ccbbdc7b04
+7f350e27130aa40612add8e0af3b096ac54d5ddcdb70ee48700e13d1ffa2565e
+b6fe3ee4c773ae599fcf76d4f93195eb127da013a9bbe5a7605a045f5b51837b
+f81de26b96662cfcb332918786e84dd557db6e387597d09e45b4d6997c6f556d
+46d5c9bbee9882ef263551ab0c0388787690afd736ca4d003778f401373d45d0
+98da278a8710984041c8d7fb734da99d85baf4a682059960b773eec180398079
+750fe9a346553c6e137c82a13a864a26dc4f9811361fb84e0fb1c7e0d91b14a4
+19d5d1a66eb0e88ae3da3f865cde6c2b0f839cba767e2580f2a7ad0d6c63d0a2
+52ee8dbb26559a9991a2e3ee758885bc30333396754d9b9322282bd2f2b0f202
+8cff0c855678106a29cb8fe7dabcfdb7fc4a6be57aa7a117b079c88c811fb225
+b5bfe9fa31e844a6d7bc19b69d9e9d7103f2a8c73403aaf96f1fe94052896016
+48ae68e8b9ec48bcb8e0f20d0c6039987f35740ad8ba729d828cc17c65ac2f52
+cecf7fffd7884701e533f4c5e9fb3dabc5feb8cf716435805b7926982fdf2d47
+116e64037f428dcf87ec9ed16c1d82509ed7e422fca4f8458917f6f2ae510492
+2175a814b567c5beaf9b51d0ef5d0041b80c146be466d835a39294ba3daa1419
+821c3d296705550a705c90ae36da69945b9397437ceaec7eabf70262c945f283
+996bb53cf05ed72e93122e7aa03cb9af824178fdc1112529e614618e24971f89
+7304d0770175df196b5b611f65b5fb39b5c94e1e8d673f1930be8d02984e5699
+b19c2311c2112a1426f444d44eb37b4e62bb472e64ddeeac1f4b22bfc74d82d3
+48495ad2fc908f18733b51b8ee821dcc3414a95fdb33150064ffc1ce09c0a858
+ae8a3d2b4fd82b51069963737547f1775ffab856134914844f8082b67b633cfe
+296e327074561c7fda4158c34707064afb8d7649ac3ce149d334336ca4829c1f
+cba4490675532c4a54bf0b86bea1ffd2efbef2077cad2f4b6fdd242826bb049a
+d01dade8d89f39dd31a06341b444bae0a350e9a09d28cd83fc5fff1f42ef9d06
+2a761cb6d522b2851f73dac12b0c8fc970acf7d2093f8c92c7a1219936bd681e
+e908834287fc3f695072258ffca99c921d720df5594b43e4a37664970f3db116
+512492ab7fd2296ebce326ff5d81b7135d57f1c7b483b628b27e254a5da167e6
+16e33ea26f68321bc5b3c92a95b024cef37e61aef32e59ff0ca292323c271211
+257d143dd15524ed1694d8ff56ddf660236c428838a45f2a11745cd49cde0d8e
+ae98f0269ea2034c5f658e9131f5deb5780e93ae407824a2f399a49ef3e45d51
+f9d52784f82fff27c7b99633bada6eb3918e8deb3e817892530253651c5d6928
+f14e34647d21dbfd7aabe718c20c99e30594b8a10b34c75f57cb50d3d540970c
+38da0d925914ca4b36670c28f8697cce31fb4f853f8f2a0996114118893da926
+1618d2509262297ea437928e7c1eb558f8be09ce107f66416337025e67ddf589
+165d55bd64321244272d125f50b2b5518921689c9969ac0997005c3abcc066d4
+874bb962b26480787f44f9ee88e24f3b55477a91ec1ed7c0468d1e4a57c42a62
+332b4e23d9f4a1a44dcc34f9ef7324091c6f922b1ebc2abbdbd5806400d6083a
+8a92c09c8aec5f6af297567f1bfb1b8342c32a4b39b98b026e4262af6c7f7b68
+7d1c15e4cd25b30a75cde9b162f4c7b53322170b66741f11171449b2c1f61cbb
+a31dd50efb6f2c1cba49f3a6211fbbf65032ca4cb1992cf7ddc9fc39a7e9a205
+a5e9c2f267c253d597c757d790916c45f757943720a4e186cfc27dd34f795be4
+943b6f4684d6fe8e7fb799b44a14175789e191bab63d12fbc669b70251cdd034
+5a12715ad1719e350bd95460e6b852387386cb370f75f11aaea3a67fde9a475a
+a9c2456f6ab748f0135979d80968b8185db436f6b24968a6c9c736b84ac1847e
+7f12319be7ade1648c393e64ce6ca22c5ee02252ee965ba47ed2ed6673078d7c
+65fcf20f2a5f4e43d88efb20691f329039854e39b7cfab80160258cf0b6370bd
+492931bae2bdc3014aa7a86d43b1a52326610c553ac88a9477bb289078ee386d
+68ecef9c9f5e2f11754d7d335cc0eed566c8b9be50c0abb3283e207c544b94f5
+1764e482659ae0931b318e11e2f09d8915708a017c451baded6d26b5f70fce6c
+9894f02c65be8477ec75a0ad33c3350ba1c7f37fa310a286632276d487eab725
+52660411ac8ae4b7c7c138ff0df96e58076de68a1a0a4f7508362decebadaa80
+37765264ba615721a74e7f14863a1f6b376842883fce96537ca6d51df70612c2
+474e5830bcc39423be0111d0f24d8a6b1bfd9d89b91ad018c4f38b3d5e5e0b04
+9f88bbb9ba6e2c1d6f491ba2b36f4fb4f3953b5f42a1279a31d3e226953b9531
+4d4d8f834bc7e3ef7586fa222935336363a8ae5f1b466f06addd1b015503d035
+577ba91812e77dd879d00073b53654d5c8a6eb58e60009a6acbf12ea00862037
+0bfc8ebb44afd3e12a57eeaa2c53fce77d5fed8170c48c7b0fb0576a5fce31c5
+f19db0e0b9bb67d3a6d1cae6da08dd4d62eb598d8284658a5707128b603811ab
+67c6ba96c4b765fc8f8963e12c907187f09b1df9c5e60c2c295eb96748acd963
+206be3766d266e7c45ae72ca3edd711cc0ff6cfce1e6893afbbfb981fbfb3c59
+7e8b62cfbac29d1edbf30dc0a6169955f7a8c858bccba006c52334acba317d5f
+33d73ce2777b75ed244554db6c8ff4e669d30c1acff3d798c0c3730dbd4a8107
+c765ad360f12eaf52171260032afcc211b6e7ae9edd16e8c4629955701778b3c
+7b6a82eead10d1ebbba5b16cbe109c0520f7a12b4f3f47d6994fd6c02103f379
+240357c05357b5599f0a63825b11fa2d2b48a6297ebaf4fccbc3208fbf9f55ff
+2f65273a49141b44169acd6ce2f8658a052413df3994ceaa47bb9c5f49e5ec54
+1d196bb3d218b0ee89222d6822b4d6dc498f540c34a32aab7c7955cb876599d8
+ccdb8e61d669259e106f4eea1215ca25131f9a625f524a15c9767c407cf12a8f
+a9fe8372e87d5c268d61cbb5a5e96f6fbab5bf8a3b83a486459a826f5602912f
+bf2ac3492597ac6a910a6bacace1f562e369ddaef27b50a499a80bf8a1b89e41
+f9ded0b86e232e87d0a0fed8668a534f225bd5b6fcb7793dd9d25d0f171edd39
+5efd501bffdd291f7bf6412db1048b92499b033c1aebe7df9020b731cbd81a5e
+0e74f545ec08b2e6af410e6ebe575c843bd947496dd0158805952909ab9c3788
+d28b275adb2894ac26292ca917b5eaf431826844ceb5e1926a27cd185edc78c7
+10a7241abff5bf56c064e4e9551789527fab82285d869208a9a3872ca6c896a3
+1173a8b3f2815ea2352aab35147a257e6738a11a58ea7cde8e4aab794f7e1731
+8d5f0954706c43ccb330a619398ad86677d5caf13528b6ac744c55cbb464ced4
+746875293850e2c10f3f0ddc3b52a9b522b7bf6174c705c67e3062895ebabc7a
+c516c1eb2b9e93628bd20a531f728c548d87df09c583dd0554c929d0ce4d165c
+4d0b685c021238870824b9434f9adb1c658da708c6d725e00bf578526632c123
+937516961f9f3f4808f1fe102907743d382d194269109c495f535d72c53e80e1
+88784d836000af59464710ff5d6c5f5ffd53e415b47ff027ad8bc00d8929a7cd
+9e375a0d4b045ebd156fddf49461722cbe82007174e3b1b621061ec3a29d83ce
+e9a71b98c35aa06bb7c5083a5fa02c3130a7d4a7eb3eab48df763e30a3e029b5
+6165e7c6be9fa317c24cf8764130c2ef0781993aba227e07f5174c98dc368961
+8267d73eeed5704a5d48a225121ef19dd6601ddbd68b7a9fd8c7ee25f9fe8692
+6606e892b273b5aa1b0049840dddb53bd4b931234c96dfd2c1c72b543a628430
+1a0164414001f4126d422cb8f086667fe9edc57f6219acff65dfdbe38ec963d9
+7da7c4b6f6f6c2bc5c7e5717980a3be6cab23c267eff030e089982a909bb450f
+2fef22f8966086c481544e9e4bd2811e82b7c68c56cbacd9fe0bb36a7316c5cf
+50502b068353c3f3cbfbd40f62c6fc9aaa981f16293a32b2a37d2a6e536602d4
+3ef1bffc143cd510a9b77deeb63026b12fe3cf42de77953070a94594375e47e8
+613bfd925a3a4b662a1a83577023fd439b8c0a6d318a1671a37db89879f31590
+4af5c167bd9fe3400efb92fb67a4dd2a99c796482c32fea9f34ec42972d525d1
+235373f7c59680ee773ddd419f7e8c93543686ce922494c2fae131d0c922ea25
+f064f5567d30f56c7ea9cc501d6d67e4df89dfb476ea341e9dba602f4423fbcd
+89eb8bf38923de5ab6ad6e22a9933e10816705bc69fb68c850c4a4f8ec71e4fb
+952053b58ff37bc94f3b6f89715787505527e312852c66a54a66c425cc0e4418
+8fc0b01e4ba144851ba0e78c9b07704f4fcce0b253b11bb87128c4d005c26724
+1fd1bf9286b24d40dc214e6437b8c0c494e4f92b1c701e9d0d96f25a320e65b4
+23b0af988168719e02eac87f0aa2f473a52a466eeae66b5ff76c6519947783ec
+7c5330fca60163576981897ef7fd2e81bff556d8a10dc19fa3a6ec7bd099dfaa
+0b2ae3846f469af41241893b06caa235808b5203b2909ed700fa82065b48392d
+d0bb4763a379495bc87b37069036b10a34ef613abf03c40f43ef6cbe0e62f68c
+6599b1c6b3732afde34e06a28ec016f53b05cddb1d5d2b794b56ddafc652e628
+1ec16c2d862df6e94d8737840506624affd34233
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/Build/source/utils/t1utils/tests/Symbol.pfb b/Build/source/utils/t1utils/tests/Symbol.pfb
new file mode 100644
index 00000000000..ff00dde4481
--- /dev/null
+++ b/Build/source/utils/t1utils/tests/Symbol.pfb
Binary files differ
diff --git a/Build/source/utils/t1utils/tests/Symbol.raw b/Build/source/utils/t1utils/tests/Symbol.raw
new file mode 100644
index 00000000000..ef9805ff656
--- /dev/null
+++ b/Build/source/utils/t1utils/tests/Symbol.raw
@@ -0,0 +1,5226 @@
+%!PS-AdobeFont-1.0: Symbol 001.007
+%%CreationDate: Wed Jan 17 21:48:17 1990
+%%VMusage: 28489 37622
+11 dict begin
+/FontInfo 10 dict dup begin
+/version (001.007) readonly def
+/Notice (Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.) readonly def
+/FullName (Symbol) readonly def
+/FamilyName (Symbol) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -98 def
+/UnderlineThickness 54 def
+end readonly def
+/FontName /Symbol def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 32 /space put
+dup 33 /exclam put
+dup 34 /universal put
+dup 35 /numbersign put
+dup 36 /existential put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /suchthat put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asteriskmath put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /minus put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /congruent put
+dup 65 /Alpha put
+dup 66 /Beta put
+dup 67 /Chi put
+dup 68 /Delta put
+dup 69 /Epsilon put
+dup 70 /Phi put
+dup 71 /Gamma put
+dup 72 /Eta put
+dup 73 /Iota put
+dup 74 /theta1 put
+dup 75 /Kappa put
+dup 76 /Lambda put
+dup 77 /Mu put
+dup 78 /Nu put
+dup 79 /Omicron put
+dup 80 /Pi put
+dup 81 /Theta put
+dup 82 /Rho put
+dup 83 /Sigma put
+dup 84 /Tau put
+dup 85 /Upsilon put
+dup 86 /sigma1 put
+dup 87 /Omega put
+dup 88 /Xi put
+dup 89 /Psi put
+dup 90 /Zeta put
+dup 91 /bracketleft put
+dup 92 /therefore put
+dup 93 /bracketright put
+dup 94 /perpendicular put
+dup 95 /underscore put
+dup 96 /radicalex put
+dup 97 /alpha put
+dup 98 /beta put
+dup 99 /chi put
+dup 100 /delta put
+dup 101 /epsilon put
+dup 102 /phi put
+dup 103 /gamma put
+dup 104 /eta put
+dup 105 /iota put
+dup 106 /phi1 put
+dup 107 /kappa put
+dup 108 /lambda put
+dup 109 /mu put
+dup 110 /nu put
+dup 111 /omicron put
+dup 112 /pi put
+dup 113 /theta put
+dup 114 /rho put
+dup 115 /sigma put
+dup 116 /tau put
+dup 117 /upsilon put
+dup 118 /omega1 put
+dup 119 /omega put
+dup 120 /xi put
+dup 121 /psi put
+dup 122 /zeta put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /similar put
+dup 161 /Upsilon1 put
+dup 162 /minute put
+dup 163 /lessequal put
+dup 164 /fraction put
+dup 165 /infinity put
+dup 166 /florin put
+dup 167 /club put
+dup 168 /diamond put
+dup 169 /heart put
+dup 170 /spade put
+dup 171 /arrowboth put
+dup 172 /arrowleft put
+dup 173 /arrowup put
+dup 174 /arrowright put
+dup 175 /arrowdown put
+dup 176 /degree put
+dup 177 /plusminus put
+dup 178 /second put
+dup 179 /greaterequal put
+dup 180 /multiply put
+dup 181 /proportional put
+dup 182 /partialdiff put
+dup 183 /bullet put
+dup 184 /divide put
+dup 185 /notequal put
+dup 186 /equivalence put
+dup 187 /approxequal put
+dup 188 /ellipsis put
+dup 189 /arrowvertex put
+dup 190 /arrowhorizex put
+dup 191 /carriagereturn put
+dup 192 /aleph put
+dup 193 /Ifraktur put
+dup 194 /Rfraktur put
+dup 195 /weierstrass put
+dup 196 /circlemultiply put
+dup 197 /circleplus put
+dup 198 /emptyset put
+dup 199 /intersection put
+dup 200 /union put
+dup 201 /propersuperset put
+dup 202 /reflexsuperset put
+dup 203 /notsubset put
+dup 204 /propersubset put
+dup 205 /reflexsubset put
+dup 206 /element put
+dup 207 /notelement put
+dup 208 /angle put
+dup 209 /gradient put
+dup 210 /registerserif put
+dup 211 /copyrightserif put
+dup 212 /trademarkserif put
+dup 213 /product put
+dup 214 /radical put
+dup 215 /dotmath put
+dup 216 /logicalnot put
+dup 217 /logicaland put
+dup 218 /logicalor put
+dup 219 /arrowdblboth put
+dup 220 /arrowdblleft put
+dup 221 /arrowdblup put
+dup 222 /arrowdblright put
+dup 223 /arrowdbldown put
+dup 224 /lozenge put
+dup 225 /angleleft put
+dup 226 /registersans put
+dup 227 /copyrightsans put
+dup 228 /trademarksans put
+dup 229 /summation put
+dup 230 /parenlefttp put
+dup 231 /parenleftex put
+dup 232 /parenleftbt put
+dup 233 /bracketlefttp put
+dup 234 /bracketleftex put
+dup 235 /bracketleftbt put
+dup 236 /bracelefttp put
+dup 237 /braceleftmid put
+dup 238 /braceleftbt put
+dup 239 /braceex put
+dup 241 /angleright put
+dup 242 /integral put
+dup 243 /integraltp put
+dup 244 /integralex put
+dup 245 /integralbt put
+dup 246 /parenrighttp put
+dup 247 /parenrightex put
+dup 248 /parenrightbt put
+dup 249 /bracketrighttp put
+dup 250 /bracketrightex put
+dup 251 /bracketrightbt put
+dup 252 /bracerighttp put
+dup 253 /bracerightmid put
+dup 254 /bracerightbt put
+readonly def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/UniqueID 27004 def
+/FontBBox{-180 -293 1090 1010}readonly def
+currentdict end
+currentfile eexec
+dup /Private 13 dict dup begin
+/-|{string currentfile exch readstring pop}executeonly def
+/|-{noaccess def}executeonly def
+/|{noaccess put}executeonly def
+/BlueValues [ -17 0 673 685 487 500 ] |-
+/MinFeature{16 16} |-
+/StdHW [ 92 ] |-
+/StdVW [ 95 ] |-
+/ForceBold false def
+/password 5839 def
+/Erode{
+5.5 dup 3 -1 roll 0.1 mul exch 0.5 sub mul cvi sub dup mul
+85 0 dtransform dup mul exch dup mul add
+le{pop pop 1.0 1.0}{pop pop 0.0 1.5}ifelse}def
+/UniqueID 27004 def
+/OtherSubrs
+[ {} {} {}
+{
+systemdict /internaldict known not
+{pop 3}
+{1183615869 systemdict /internaldict get exec
+dup /startlock known
+{/startlock get exec}
+{dup /strtlck known
+{/strtlck get exec}
+{pop 3}
+ifelse}
+ifelse}
+ifelse
+} executeonly
+]|-
+/Subrs 66 array
+dup 0 {
+ 3 0 callothersubr
+ pop
+ pop
+ setcurrentpoint
+ return
+ } |
+dup 1 {
+ 0 1 callothersubr
+ return
+ } |
+dup 2 {
+ 0 2 callothersubr
+ return
+ } |
+dup 3 {
+ return
+ } |
+dup 4 {
+ 402 18 hstem
+ 454 211 vstem
+ return
+ } |
+dup 5 {
+ -18 55 hstem
+ 402 18 hstem
+ 625 36 hstem
+ 0 92 vstem
+ 158 80 vstem
+ 392 58 vstem
+ return
+ } |
+dup 6 {
+ -18 77 hstem
+ 402 18 hstem
+ 454 211 vstem
+ return
+ } |
+dup 7 {
+ -18 55 hstem
+ 625 36 hstem
+ 0 92 vstem
+ 158 80 vstem
+ 392 58 vstem
+ return
+ } |
+dup 8 {
+ 624 61 hstem
+ 273 81 vstem
+ return
+ } |
+dup 9 {
+ -17 42 hstem
+ 320 76 vstem
+ return
+ } |
+dup 10 {
+ -17 98 hstem
+ 320 76 vstem
+ return
+ } |
+dup 11 {
+ -18 37 hstem
+ 308 78 vstem
+ return
+ } |
+dup 12 {
+ 648 37 hstem
+ 13 70 vstem
+ 298 73 vstem
+ return
+ } |
+dup 13 {
+ -18 37 hstem
+ 0 76 vstem
+ 308 78 vstem
+ return
+ } |
+dup 14 {
+ 0 18 hstem
+ 90 104 vstem
+ return
+ } |
+dup 15 {
+ 0 42 hstem
+ 449 114 vstem
+ return
+ } |
+dup 16 {
+ 655 18 hstem
+ 90 104 vstem
+ 431 103 vstem
+ return
+ } |
+dup 17 {
+ 328 42 hstem
+ 633 40 hstem
+ 90 104 vstem
+ 431 103 vstem
+ return
+ } |
+dup 18 {
+ 0 42 hstem
+ 328 42 hstem
+ 90 104 vstem
+ 449 114 vstem
+ return
+ } |
+dup 19 {
+ 632 41 hstem
+ 90 104 vstem
+ return
+ } |
+dup 20 {
+ 57 callsubr
+ 90 104 vstem
+ return
+ } |
+dup 21 {
+ 0 18 hstem
+ 632 41 hstem
+ 90 104 vstem
+ 526 103 vstem
+ return
+ } |
+dup 22 {
+ 297 45 hstem
+ 633 40 hstem
+ 90 104 vstem
+ 426 109 vstem
+ return
+ } |
+dup 23 {
+ 461 26 hstem
+ 563 17 vstem
+ return
+ } |
+dup 24 {
+ -18 34 hstem
+ 461 37 hstem
+ 0 104 vstem
+ return
+ } |
+dup 25 {
+ -15 71 hstem
+ 461 26 hstem
+ 563 17 vstem
+ return
+ } |
+dup 26 {
+ 420 595 10 div
+ hstem
+ return
+ } |
+dup 27 {
+ -231 89 hstem
+ 420 80 hstem
+ return
+ } |
+dup 28 {
+ 494 -20 hstem
+ 174 119 vstem
+ return
+ } |
+dup 29 {
+ 421 78 hstem
+ 0 16 vstem
+ 174 119 vstem
+ return
+ } |
+dup 30 {
+ 444 70 hstem
+ 121 85 vstem
+ 65 callsubr
+ return
+ } |
+dup 31 {
+ 452 54 hstem
+ 438 89 vstem
+ return
+ } |
+dup 32 {
+ 444 70 hstem
+ 65 callsubr
+ return
+ } |
+dup 33 {
+ 21 -21 hstem
+ 452 54 hstem
+ 0 18 vstem
+ 121 85 vstem
+ return
+ } |
+dup 34 {
+ 21 -21 hstem
+ 265 3763 100 div
+ vstem
+ return
+ } |
+dup 35 {
+ 64 callsubr
+ 505 19 vstem
+ return
+ } |
+dup 36 {
+ -17 68 hstem
+ 500 -20 hstem
+ 28 86 vstem
+ 321 86 vstem
+ return
+ } |
+dup 37 {
+ 470 17 hstem
+ 313 63 vstem
+ return
+ } |
+dup 38 {
+ 488 12 hstem
+ 313 63 vstem
+ return
+ } |
+dup 39 {
+ 470 17 hstem
+ 80 133 vstem
+ 313 63 vstem
+ return
+ } |
+dup 40 {
+ 488 12 hstem
+ 80 133 vstem
+ return
+ } |
+dup 41 {
+ 4 -21 hstem
+ 470 17 hstem
+ 80 133 vstem
+ 313 63 vstem
+ return
+ } |
+dup 42 {
+ 696 55 hstem
+ 97 113 vstem
+ return
+ } |
+dup 43 {
+ -101 23 hstem
+ 728 23 hstem
+ 97 113 vstem
+ return
+ } |
+dup 44 {
+ -101 23 hstem
+ 696 55 hstem
+ 97 113 vstem
+ 568 113 vstem
+ return
+ } |
+dup 45 {
+ -55 -35 -9 -55 vhcurveto
+ -18 vlineto
+ 284 hlineto
+ 18 vlineto
+ -55 -35 9 55 hvcurveto
+ return
+ } |
+dup 46 {
+ dotsection
+ -31 25 -25 31 vhcurveto
+ 31 25 25 31 hvcurveto
+ 31 -25 25 -31 vhcurveto
+ -31 -25 -25 -31 hvcurveto
+ closepath
+ dotsection
+ return
+ } |
+dup 47 {
+ -191 154 -154 191 vhcurveto
+ 191 154 154 191 hvcurveto
+ 191 -154 154 -191 vhcurveto
+ -191 -154 -154 -191 hvcurveto
+ closepath
+ return
+ } |
+dup 48 {
+ 337 -17 rmoveto
+ 82 0 74 26 58 48 rrcurveto
+ 97 80 26 113 0 86 rrcurveto
+ 0 82 -25 114 -98 79 rrcurveto
+ -58 47 -76 27 -80 0 rrcurveto
+ -80 0 -76 -27 -58 -47 rrcurveto
+ -98 -79 -25 -114 0 -82 rrcurveto
+ 0 -86 26 -113 97 -80 rrcurveto
+ 58 -48 74 -26 82 0 rrcurveto
+ closepath
+ -168 571 rmoveto
+ 36 60 66 32 66 0 rrcurveto
+ 66 0 66 -32 36 -60 rrcurveto
+ 22 -34 8 -26 10 -42 rrcurveto
+ 20 -90 -4 -92 -16 -66 rrcurveto
+ return
+ } |
+dup 49 {
+ 190 -155 155 -190 vhcurveto
+ -191 0 -155 -155 1 -190 rrcurveto
+ -191 154 -154 191 vhcurveto
+ 190 1 155 153 0 191 rrcurveto
+ closepath
+ -40 hmoveto
+ -169 -137 -136 -168 vhcurveto
+ -169 -1 -136 137 0 168 rrcurveto
+ -1 169 137 137 168 0 rrcurveto
+ 169 137 -137 -168 hvcurveto
+ closepath
+ return
+ } |
+dup 50 {
+ 55 35 9 55 vhcurveto
+ 18 vlineto
+ -284 hlineto
+ 63 callsubr
+ return
+ } |
+dup 51 {
+ 134 51 rmoveto
+ -14 37 -56 39 -46 -38 rrcurveto
+ -27 -22 -2 -71 61 -2 rrcurveto
+ 21 -1 30 24 -7 -44 rrcurveto
+ -11 -69 -75 -26 -6 -13 rrcurveto
+ -6 -15 6 -5 18 4 rrcurveto
+ 10 2 44 32 26 31 rrcurveto
+ 38 46 6 64 -10 27 rrcurveto
+ closepath
+ return
+ } |
+dup 52 {
+ dotsection
+ 30 1 26 24 0 31 rrcurveto
+ 30 -26 26 -30 vhcurveto
+ -31 -25 -26 -31 hvcurveto
+ -30 25 -25 31 vhcurveto
+ closepath
+ dotsection
+ return
+ } |
+dup 53 {
+ dotsection
+ -36 29 -29 36 vhcurveto
+ 36 29 29 36 hvcurveto
+ 36 -29 29 -36 vhcurveto
+ -36 -29 -29 -36 hvcurveto
+ closepath
+ dotsection
+ return
+ } |
+dup 54 {
+ -12 -18 -23 -17 -16 -7 rrcurveto
+ -34 -14 -25 -1 -20 6 rrcurveto
+ -151 42 rlineto
+ -73 20 -69 -22 -53 -70 rrcurveto
+ 43 -27 rlineto
+ 13 16 34 64 95 -27 rrcurveto
+ 150 -43 rlineto
+ 58 -17 81 25 39 66 rrcurveto
+ closepath
+ return
+ } |
+dup 55 {
+ 47 callsubr
+ 40 hmoveto
+ 168 137 137 168 vhcurveto
+ 168 137 -137 -168 hvcurveto
+ -168 -137 -137 -168 vhcurveto
+ -168 -137 137 168 hvcurveto
+ closepath
+ endchar
+ return
+ } |
+dup 56 {
+ 161 131 131 161 vhcurveto
+ 161 131 -131 -161 hvcurveto
+ -161 -131 -131 -161 vhcurveto
+ -161 -131 131 161 hvcurveto
+ closepath
+ return
+ } |
+dup 57 {
+ 0 18 hstem
+ 655 18 hstem
+ return
+ } |
+dup 58 {
+ 497 -230 rlineto
+ 62 vlineto
+ -433 199 rlineto
+ 433 199 rlineto
+ 62 vlineto
+ -497 -230 rlineto
+ closepath
+ endchar
+ return
+ } |
+dup 59 {
+ -497 230 rlineto
+ -62 vlineto
+ 433 -199 rlineto
+ -433 -199 rlineto
+ -62 vlineto
+ 497 230 rlineto
+ closepath
+ endchar
+ return
+ } |
+dup 60 {
+ 524 hlineto
+ 55 vlineto
+ -524 hlineto
+ closepath
+ return
+ } |
+dup 61 {
+ -526 hlineto
+ -55 vlineto
+ 526 hlineto
+ closepath
+ return
+ } |
+dup 62 {
+ -19 -21 -35 -58 -121 38 rrcurveto
+ -47 15 -57 30 -61 -5 rrcurveto
+ -91 -7 -26 -49 -18 -22 rrcurveto
+ return
+ } |
+dup 63 {
+ -18 vlineto
+ 55 35 -9 -55 hvcurveto
+ return
+ } |
+dup 64 {
+ -17 88 hstem
+ 663 76 hstem
+ 25 19 vstem
+ 265 3763 100 div
+ vstem
+ return
+ } |
+dup 65 {
+ 4175 10 div
+ 88 vstem
+ return
+ } |
+|-
+2 index /CharStrings 190 dict dup begin
+/space {
+ 0 250 hsbw
+ endchar
+ } |-
+/exclam {
+ 128 333 hsbw
+ 654 18 hstem
+ 0 112 vstem
+ -17 112 hstem
+ 99 475 rmoveto
+ 3 25 18 73 -13 53 rrcurveto
+ -8 33 -18 13 -25 0 rrcurveto
+ -25 0 -18 -13 -8 -33 rrcurveto
+ -13 -53 18 -73 3 -25 rrcurveto
+ 33 -267 rlineto
+ 3 -24 14 0 3 24 rrcurveto
+ closepath
+ -66 -169 rmoveto
+ 46 callsubr
+ endchar
+ } |-
+/universal {
+ 31 713 hsbw
+ 296 63 vstem
+ 0 72 hstem
+ 447 55 hstem
+ 687 18 hstem
+ 705 vmoveto
+ 298 -705 rlineto
+ 59 hlineto
+ 293 705 rlineto
+ -57 hlineto
+ -84 -203 rlineto
+ -365 hlineto
+ -87 203 rlineto
+ closepath
+ 111 -258 rmoveto
+ 318 hlineto
+ -156 -377 rlineto
+ closepath
+ endchar
+ } |-
+/numbersign {
+ 20 500 hsbw
+ 655 18 hstem
+ -16 18 hstem
+ 293 47 vstem
+ 121 47 vstem
+ 192 46 hstem
+ 420 46 hstem
+ 187 466 rmoveto
+ 29 207 rlineto
+ -47 hlineto
+ -29 -207 rlineto
+ -100 hlineto
+ -6 -46 rlineto
+ 100 hlineto
+ -25 -182 rlineto
+ -103 hlineto
+ -6 -46 rlineto
+ 103 hlineto
+ -29 -208 rlineto
+ 47 hlineto
+ 29 208 rlineto
+ 124 hlineto
+ -28 -208 rlineto
+ 47 hlineto
+ 28 208 rlineto
+ 104 hlineto
+ 6 46 rlineto
+ -103 hlineto
+ 24 182 rlineto
+ 103 hlineto
+ 6 46 rlineto
+ -102 hlineto
+ 28 207 rlineto
+ -47 hlineto
+ -28 -207 rlineto
+ closepath
+ -7 -46 rmoveto
+ -24 -182 rlineto
+ -125 hlineto
+ 25 182 rlineto
+ closepath
+ endchar
+ } |-
+/existential {
+ 25 549 hsbw
+ 342 55 hstem
+ 398 55 vstem
+ 0 55 hstem
+ 652 55 hstem
+ 707 vmoveto
+ -55 vlineto
+ 398 hlineto
+ -255 vlineto
+ -354 hlineto
+ -55 vlineto
+ 354 hlineto
+ -287 vlineto
+ -398 hlineto
+ -55 vlineto
+ 453 hlineto
+ 707 vlineto
+ closepath
+ endchar
+ } |-
+/percent {
+ 63 833 hsbw
+ 675 33 vstem
+ 372 81 vstem
+ 300 31 vstem
+ 0 84 vstem
+ -36 38 hstem
+ 298 40 hstem
+ 277 44 hstem
+ 614 37 hstem
+ 539 655 rmoveto
+ -9 -25 -39 -25 -47 -12 rrcurveto
+ -87 -22 -37 38 -10 5 rrcurveto
+ -26 23 -3 9 -36 5 rrcurveto
+ -40 6 -35 -6 -36 -25 rrcurveto
+ -87 -60 -27 -62 -11 -36 rrcurveto
+ -6 -20 -19 -75 47 -57 rrcurveto
+ 41 -49 58 3 56 19 rrcurveto
+ 70 24 60 113 9 41 rrcurveto
+ 11 49 -7 32 -2 25 rrcurveto
+ 15 -5 15 -14 48 4 rrcurveto
+ 42 3 7 6 46 16 rrcurveto
+ -389 -611 rlineto
+ 55 hlineto
+ 428 683 rlineto
+ closepath
+ -300 -174 rmoveto
+ -12 -56 -51 -81 -54 -22 rrcurveto
+ -20 -9 -50 -10 -20 38 rrcurveto
+ -10 19 0 44 14 36 rrcurveto
+ 24 62 10 25 41 51 rrcurveto
+ 34 42 17 -4 16 -1 rrcurveto
+ 16 -13 26 -14 22 -9 rrcurveto
+ 3 -29 7 -10 -13 -59 rrcurveto
+ closepath
+ 228 -161 rmoveto
+ -62 -35 -68 -55 -18 -101 rrcurveto
+ -6 -35 0 -46 26 -34 rrcurveto
+ 43 -56 58 2 44 9 rrcurveto
+ 47 10 35 38 25 36 rrcurveto
+ 38 55 21 62 3 47 rrcurveto
+ 1 22 0 70 -64 22 rrcurveto
+ -21 7 -56 8 -46 -26 rrcurveto
+ closepath
+ 156 -110 rmoveto
+ 0 -11 -20 -77 -44 -58 rrcurveto
+ -24 -32 -26 -25 -31 -5 rrcurveto
+ -16 -3 -44 -7 -16 47 rrcurveto
+ -11 34 7 27 11 31 rrcurveto
+ 24 65 60 132 81 -33 rrcurveto
+ 47 -19 2 -54 0 -12 rrcurveto
+ closepath
+ endchar
+ } |-
+/ampersand {
+ 41 778 hsbw
+ 5 callsubr
+ 4 1 3 callothersubr
+ pop
+ callsubr
+ 454 420 rmoveto
+ -18 vlineto
+ 49 0 16 -18 -8 -50 rrcurveto
+ -10 -64 -66 -74 -14 -14 rrcurveto
+ -62 72 -34 64 -34 62 rrcurveto
+ 5 1 3 callothersubr
+ pop
+ callsubr
+ 75 34 43 16 30 75 rrcurveto
+ 37 92 -68 38 -15 9 rrcurveto
+ -29 17 -130 33 -59 -117 rrcurveto
+ -15 -29 -9 -57 13 -39 rrcurveto
+ 27 -78 rlineto
+ -106 -63 -28 -34 -21 -29 rrcurveto
+ -16 -22 -34 -56 21 -79 rrcurveto
+ 20 -76 56 -17 35 -9 rrcurveto
+ 123 -32 111 90 29 31 rrcurveto
+ 21 -21 52 -54 62 -17 rrcurveto
+ 47 -13 68 21 28 34 rrcurveto
+ 6 1 3 callothersubr
+ pop
+ callsubr
+ 27 33 17 21 6 18 rrcurveto
+ -16 14 rlineto
+ -71 -62 -33 -12 -74 47 rrcurveto
+ -34 25 -12 8 -23 24 rrcurveto
+ 65 76 27 67 39 61 rrcurveto
+ 23 36 15 18 50 0 rrcurveto
+ 18 vlineto
+ closepath
+ 7 1 3 callothersubr
+ pop
+ callsubr
+ -389 -9 rmoveto
+ -15 29 -10 26 -7 23 rrcurveto
+ -9 29 -3 58 29 28 rrcurveto
+ 39 38 96 -8 -4 -89 rrcurveto
+ -4 -81 -60 -23 -52 -30 rrcurveto
+ closepath
+ 81 -305 rmoveto
+ -12 -14 -137 -132 -94 143 rrcurveto
+ -39 60 23 66 11 21 rrcurveto
+ 21 42 55 38 20 10 rrcurveto
+ 47 -80 23 -48 83 -103 rrcurveto
+ closepath
+ endchar
+ } |-
+/suchthat {
+ 48 439 hsbw
+ -17 48 hstem
+ 213 55 hstem
+ 449 51 hstem
+ 272 94 vstem
+ 62 213 rmoveto
+ 208 hlineto
+ -6 -74 -33 -60 -78 -32 rrcurveto
+ -41 -17 -54 -7 -58 20 rrcurveto
+ -40 vlineto
+ 25 -8 40 -26 102 23 rrcurveto
+ 108 25 93 107 -2 137 rrcurveto
+ -2 104 -79 184 -257 -61 rrcurveto
+ -43 vlineto
+ 56 8 52 -1 52 -38 rrcurveto
+ 41 -30 39 -49 4 -67 rrcurveto
+ -210 hlineto
+ closepath
+ endchar
+ } |-
+/parenleft {
+ 53 333 hsbw
+ 0 84 vstem
+ -191 26 hstem
+ 647 26 hstem
+ 247 -174 rmoveto
+ -117 94 -10 79 -13 44 rrcurveto
+ -17 55 -6 67 0 76 rrcurveto
+ 0 76 6 67 17 55 rrcurveto
+ 13 44 10 79 117 94 rrcurveto
+ -10 17 rlineto
+ -21 2 -112 -95 -49 -94 rrcurveto
+ -36 -69 -19 -85 0 -91 rrcurveto
+ 0 -91 19 -85 36 -69 rrcurveto
+ 49 -94 112 -95 21 2 rrcurveto
+ closepath
+ endchar
+ } |-
+/parenright {
+ 30 333 hsbw
+ 163 84 vstem
+ -188 21 hstem
+ 645 27 hstem
+ 10 -191 rmoveto
+ 21 -2 112 95 49 94 rrcurveto
+ 36 69 19 85 0 91 rrcurveto
+ 0 91 -19 85 -36 69 rrcurveto
+ -49 94 -112 95 -21 -2 rrcurveto
+ -10 -17 rlineto
+ 117 -94 10 -79 13 -44 rrcurveto
+ 17 -55 6 -67 0 -76 rrcurveto
+ 0 -76 -6 -67 -17 -55 rrcurveto
+ -13 -44 -10 -79 -117 -94 rrcurveto
+ closepath
+ endchar
+ } |-
+/asteriskmath {
+ 65 500 hsbw
+ 134 417 hstem
+ 158 46 vstem
+ 181 134 rmoveto
+ 24 4 16 20 -3 28 rrcurveto
+ -4 42 -25 11 0 66 rrcurveto
+ 0 6 -2 20 17 -10 rrcurveto
+ 62 -36 18 -39 16 -14 rrcurveto
+ 18 -16 32 6 9 16 rrcurveto
+ 8 16 -6 32 -26 8 rrcurveto
+ -32 9 -32 10 -32 9 rrcurveto
+ -37 11 -10 12 23 11 rrcurveto
+ 66 31 4 -9 40 10 rrcurveto
+ 15 4 35 25 -20 34 rrcurveto
+ -9 15 -32 2 -25 -19 rrcurveto
+ -22 -17 0 -29 -58 -30 rrcurveto
+ -15 -8 -6 -2 1 22 rrcurveto
+ 3 58 5 -2 13 40 rrcurveto
+ 3 10 22 61 -54 -1 rrcurveto
+ -54 1 22 -61 3 -10 rrcurveto
+ 13 -40 5 2 3 -58 rrcurveto
+ 1 -22 -6 2 -15 8 rrcurveto
+ -58 30 0 29 -22 17 rrcurveto
+ -25 19 -32 -2 -9 -15 rrcurveto
+ -20 -34 35 -25 15 -4 rrcurveto
+ 40 -10 4 9 66 -31 rrcurveto
+ 23 -11 -10 -12 -37 -11 rrcurveto
+ -32 -9 -32 -10 -32 -9 rrcurveto
+ -26 -8 -6 -32 8 -16 rrcurveto
+ 9 -16 32 -6 18 16 rrcurveto
+ 16 14 18 39 62 36 rrcurveto
+ 17 10 -2 -20 0 -6 rrcurveto
+ 0 -66 -25 -11 -4 -42 rrcurveto
+ -3 -28 16 -20 24 -4 rrcurveto
+ closepath
+ endchar
+ } |-
+/plus {
+ 10 549 hsbw
+ 237 55 vstem
+ 243 55 hstem
+ 237 533 rmoveto
+ -235 vlineto
+ -237 hlineto
+ -55 vlineto
+ 237 hlineto
+ -243 vlineto
+ 55 hlineto
+ 243 vlineto
+ 237 hlineto
+ 55 vlineto
+ -237 hlineto
+ 235 vlineto
+ closepath
+ endchar
+ } |-
+/comma {
+ 56 250 hsbw
+ -5 109 hstem
+ 1 136 vstem
+ 51 callsubr
+ endchar
+ } |-
+/minus {
+ 11 549 hsbw
+ 233 55 hstem
+ 233 vmoveto
+ 60 callsubr
+ endchar
+ } |-
+/period {
+ 69 250 hsbw
+ 0 112 vstem
+ -17 112 hstem
+ 56 -17 rmoveto
+ 31 25 25 31 hvcurveto
+ 31 -25 25 -31 vhcurveto
+ -31 -25 -25 -31 hvcurveto
+ -31 25 -25 31 vhcurveto
+ closepath
+ endchar
+ } |-
+/slash {
+ 0 278 hsbw
+ 628 18 hstem
+ -18 18 hstem
+ 108 44 vstem
+ 44 -18 rmoveto
+ 210 664 rlineto
+ -44 hlineto
+ -210 -664 rlineto
+ closepath
+ endchar
+ } |-
+/zero {
+ 23 500 hsbw
+ -17 37 hstem
+ 648 37 hstem
+ 0 94 vstem
+ 354 94 vstem
+ 85 625 rmoveto
+ -99 -123 -24 -272 114 -168 rrcurveto
+ 38 -56 56 -23 54 0 rrcurveto
+ 54 0 56 23 38 56 rrcurveto
+ 114 168 -24 272 -98 122 rrcurveto
+ -32 38 -52 23 -56 0 rrcurveto
+ -56 0 -52 -23 -31 -37 rrcurveto
+ closepath
+ 45 -37 rmoveto
+ 28 44 36 16 30 0 rrcurveto
+ 30 0 36 -16 28 -44 rrcurveto
+ 36 -60 24 -302 -60 -134 rrcurveto
+ -20 -44 -40 -28 -34 0 rrcurveto
+ -34 0 -40 28 -20 45 rrcurveto
+ -60 133 24 302 36 60 rrcurveto
+ closepath
+ endchar
+ } |-
+/one {
+ 117 500 hsbw
+ 96 84 vstem
+ 57 callsubr
+ 180 673 rmoveto
+ -18 hlineto
+ -162 -89 rlineto
+ -18 vlineto
+ 57 21 rlineto
+ 28 10 11 -13 0 -20 rrcurveto
+ -474 vlineto
+ -71 -80 -1 -13 vhcurveto
+ -18 vlineto
+ 270 hlineto
+ 18 vlineto
+ -13 -80 1 71 hvcurveto
+ closepath
+ endchar
+ } |-
+/two {
+ 25 500 hsbw
+ 0 73 hstem
+ 604 82 hstem
+ 308 89 vstem
+ 391 hmoveto
+ 59 136 rlineto
+ -21 hlineto
+ -27 -37 -5 -26 -73 0 rrcurveto
+ -225 hlineto
+ 140 148 rlineto
+ 48 50 61 70 31 75 rrcurveto
+ 13 31 17 40 -24 86 rrcurveto
+ -28 99 -141 51 -106 -68 rrcurveto
+ -81 -52 -19 -83 -3 -41 rrcurveto
+ 21 hlineto
+ 5 14 31 131 132 -20 rrcurveto
+ 43 -7 61 -23 8 -109 rrcurveto
+ 4 -48 -25 -50 -6 -14 rrcurveto
+ -18 -45 -53 -72 -14 -15 rrcurveto
+ -194 -206 rlineto
+ -2 -15 rlineto
+ closepath
+ endchar
+ } |-
+/three {
+ 39 500 hsbw
+ -17 98 hstem
+ 624 61 hstem
+ 320 76 vstem
+ 19 524 rmoveto
+ 8 1 3 callothersubr
+ pop
+ callsubr
+ 32 49 42 62 85 -11 rrcurveto
+ 114 -15 -4 -114 -40 -47 rrcurveto
+ -55 -64 -60 -5 -15 -11 rrcurveto
+ -10 -7 -2 -8 15 -6 rrcurveto
+ 9 1 3 callothersubr
+ pop
+ callsubr
+ 22 -9 111 24 48 -119 rrcurveto
+ 25 -62 -2 -48 -23 -44 rrcurveto
+ -26 -49 -58 -26 -59 11 rrcurveto
+ -37 7 -6 24 -34 18 rrcurveto
+ 10 1 3 callothersubr
+ pop
+ callsubr
+ -31 16 -31 -15 -4 -13 rrcurveto
+ -12 -36 29 -43 66 0 rrcurveto
+ 151 0 89 56 40 86 rrcurveto
+ 36 78 -27 83 -24 43 rrcurveto
+ 8 1 3 callothersubr
+ pop
+ callsubr
+ -37 68 -38 6 -26 15 rrcurveto
+ 66 46 25 48 0 50 rrcurveto
+ 38 -29 85 -122 vhcurveto
+ -130 0 -54 -83 -19 -78 rrcurveto
+ closepath
+ endchar
+ } |-
+/four {
+ 16 500 hsbw
+ 282 84 vstem
+ 159 70 hstem
+ 0 18 hstem
+ 667 18 hstem
+ 453 229 rmoveto
+ -87 hlineto
+ 456 vlineto
+ -50 hlineto
+ -316 -455 rlineto
+ -71 vlineto
+ 282 hlineto
+ -159 vlineto
+ 84 hlineto
+ 159 vlineto
+ 87 hlineto
+ closepath
+ -171 70 rmoveto
+ -238 hlineto
+ 238 333 rlineto
+ closepath
+ endchar
+ } |-
+/five {
+ 29 500 hsbw
+ 321 75 vstem
+ -17 69 hstem
+ 583 90 hstem
+ 372 583 rmoveto
+ 42 97 rlineto
+ -12 5 rlineto
+ -12 -5 -8 -13 -35 6 rrcurveto
+ -196 hlineto
+ -121 -260 rlineto
+ 45 -5 110 -7 70 -62 rrcurveto
+ 87 -70 9 -161 -98 -65 rrcurveto
+ -38 -25 -36 -4 -52 32 rrcurveto
+ -16 10 -51 40 -36 -14 rrcurveto
+ -31 -12 4 -33 8 -15 rrcurveto
+ 15 -27 48 -13 57 1 rrcurveto
+ 207 3 56 150 6 37 rrcurveto
+ 3 16 3 58 -12 54 rrcurveto
+ -25 115 -106 58 -70 13 rrcurveto
+ -73 14 rlineto
+ 40 82 rlineto
+ closepath
+ endchar
+ } |-
+/six {
+ 36 500 hsbw
+ -17 36 hstem
+ 381 49 hstem
+ 668 17 hstem
+ 0 96 vstem
+ 339 92 vstem
+ 411 685 rmoveto
+ -190 4 -136 -126 -58 -135 rrcurveto
+ -24 -56 -24 -149 49 -108 rrcurveto
+ 91 -200 245 46 53 159 rrcurveto
+ 22 66 12 160 -120 62 rrcurveto
+ -81 49 -83 -43 -57 -22 rrcurveto
+ 16 75 70 162 214 39 rrcurveto
+ closepath
+ -307 -326 rmoveto
+ 19 18 32 13 27 5 rrcurveto
+ 57 10 33 -18 15 -13 rrcurveto
+ 68 -59 -3 -180 -37 -54 rrcurveto
+ -52 -77 -89 36 -32 42 rrcurveto
+ -68 89 29 173 1 15 rrcurveto
+ closepath
+ endchar
+ } |-
+/seven {
+ 24 500 hsbw
+ 290 59 vstem
+ -16 18 hstem
+ 583 90 hstem
+ 210 -16 rmoveto
+ 214 657 rlineto
+ 32 vlineto
+ -363 hlineto
+ -61 -160 rlineto
+ 22 -9 rlineto
+ 24 40 17 39 56 0 rrcurveto
+ 227 hlineto
+ -195 -599 rlineto
+ closepath
+ endchar
+ } |-
+/eight {
+ 54 500 hsbw
+ -18 37 hstem
+ 648 37 hstem
+ 0 76 vstem
+ 298 73 vstem
+ 126 340 rmoveto
+ -42 -30 -29 -20 -33 -62 rrcurveto
+ -20 -36 -23 -79 58 -64 rrcurveto
+ 11 1 3 callothersubr
+ pop
+ callsubr
+ 96 -107 177 34 52 86 rrcurveto
+ 34 57 10 98 -85 83 rrcurveto
+ -32 31 -29 25 -24 14 rrcurveto
+ 12 1 3 callothersubr
+ pop
+ callsubr
+ 60 34 25 26 28 39 rrcurveto
+ 14 20 25 68 -36 59 rrcurveto
+ -50 82 -180 15 -74 -85 rrcurveto
+ -75 -87 60 -113 44 -37 rrcurveto
+ closepath
+ 81 36 rmoveto
+ -42 28 -27 48 -6 27 rrcurveto
+ -10 44 21 38 33 21 rrcurveto
+ 29 19 61 2 34 -21 rrcurveto
+ 81 -50 -42 -103 -28 -32 rrcurveto
+ -16 -18 -22 -22 -21 -11 rrcurveto
+ closepath
+ 13 1 3 callothersubr
+ pop
+ callsubr
+ 38 -141 rmoveto
+ 18 -12 41 -32 8 -61 rrcurveto
+ 18 -128 -114 -16 -51 17 rrcurveto
+ -69 22 -22 89 6 48 rrcurveto
+ 5 40 31 65 50 24 rrcurveto
+ closepath
+ endchar
+ } |-
+/nine {
+ 31 500 hsbw
+ 330 99 vstem
+ 2 95 vstem
+ -18 21 hstem
+ 240 47 hstem
+ 649 36 hstem
+ 33 -18 rmoveto
+ 337 15 139 344 -126 238 rrcurveto
+ -52 99 -163 58 -102 -114 rrcurveto
+ -79 -88 -10 -150 72 -84 rrcurveto
+ 108 -126 152 109 14 8 rrcurveto
+ -3 -49 -54 -108 -68 -56 rrcurveto
+ -61 -50 -78 -20 -28 -7 rrcurveto
+ closepath
+ 78 593 rmoveto
+ 39 70 80 5 54 -66 rrcurveto
+ 35 -43 7 -78 3 -37 rrcurveto
+ 3 -37 2 -46 -4 -28 rrcurveto
+ -36 -34 -21 -6 -29 -7 rrcurveto
+ -46 -11 -34 10 -30 36 rrcurveto
+ -52 63 5 167 24 42 rrcurveto
+ closepath
+ endchar
+ } |-
+/colon {
+ 81 278 hsbw
+ 0 112 vstem
+ -17 112 hstem
+ 349 110 hstem
+ 39 vmoveto
+ 46 callsubr
+ 365 vmoveto
+ 46 callsubr
+ endchar
+ } |-
+/semicolon {
+ 83 278 hsbw
+ -151 25 hstem
+ -5 109 hstem
+ 9 112 vstem
+ 348 112 hstem
+ 51 callsubr
+ -125 353 rmoveto
+ 46 callsubr
+ endchar
+ } |-
+/less {
+ 26 549 hsbw
+ 229 64 hstem
+ 0 66 vstem
+ 230 vmoveto
+ 58 callsubr
+ } |-
+/equal {
+ 11 549 hsbw
+ 141 55 hstem
+ 335 55 hstem
+ 526 390 rmoveto
+ 61 callsubr
+ -139 vmoveto
+ 61 callsubr
+ endchar
+ } |-
+/greater {
+ 26 549 hsbw
+ 431 66 vstem
+ 228 66 hstem
+ 497 292 rmoveto
+ 59 callsubr
+ } |-
+/question {
+ 70 444 hsbw
+ 104 112 vstem
+ -17 112 hstem
+ 245 96 vstem
+ 652 34 hstem
+ 175 167 rmoveto
+ 13 92 19 35 53 61 rrcurveto
+ 21 23 28 38 21 45 rrcurveto
+ 40 88 -59 145 -166 -8 rrcurveto
+ -146 -7 -23 -159 43 -37 rrcurveto
+ 10 -8 13 -5 15 5 rrcurveto
+ 26 9 9 32 -7 15 rrcurveto
+ -10 22 -34 12 7 30 rrcurveto
+ 12 53 129 54 49 -123 rrcurveto
+ 15 -38 -4 -63 -33 -83 rrcurveto
+ -24 -61 -30 -88 -8 -79 rrcurveto
+ closepath
+ -50 -128 rmoveto
+ 46 callsubr
+ endchar
+ } |-
+/congruent {
+ 11 549 hsbw
+ 474 -48 hstem
+ 56 -56 hstem
+ 250 -56 hstem
+ 526 249 rmoveto
+ 61 callsubr
+ -139 vmoveto
+ 61 callsubr
+ -479 370 rmoveto
+ 44 49 31 31 134 -47 rrcurveto
+ 88 -31 55 -9 57 27 rrcurveto
+ 44 21 11 25 8 15 rrcurveto
+ -37 24 rlineto
+ 62 callsubr
+ closepath
+ endchar
+ } |-
+/Alpha {
+ 4 722 hsbw
+ 323 32 vstem
+ 0 18 hstem
+ 218 42 hstem
+ 655 18 hstem
+ 326 673 rmoveto
+ -249 -591 rlineto
+ -12 -28 -6 -36 -59 0 rrcurveto
+ -18 vlineto
+ 192 hlineto
+ 18 vlineto
+ -18 0 -67 -3 26 71 rrcurveto
+ 48 132 rlineto
+ 259 hlineto
+ 49 -132 rlineto
+ 26 -71 -67 3 -18 0 rrcurveto
+ -18 vlineto
+ 250 hlineto
+ 18 vlineto
+ -59 0 -6 36 -12 28 rrcurveto
+ -251 591 rlineto
+ closepath
+ -39 -145 rmoveto
+ 113 -268 rlineto
+ -226 hlineto
+ closepath
+ endchar
+ } |-
+/Beta {
+ 29 667 hsbw
+ 0 42 hstem
+ 328 42 hstem
+ 16 callsubr
+ 14 1 3 callothersubr
+ pop
+ callsubr
+ 90 82 rmoveto
+ -55 -35 -9 -55 vhcurveto
+ 15 1 3 callothersubr
+ pop
+ callsubr
+ -18 vlineto
+ 339 hlineto
+ 55 0 50 18 10 4 rrcurveto
+ 71 30 38 78 0 54 rrcurveto
+ 0 75 -46 69 -110 24 rrcurveto
+ 2 vlineto
+ 16 1 3 callothersubr
+ pop
+ callsubr
+ 88 26 39 48 0 72 rrcurveto
+ 0 112 -83 33 -36 11 rrcurveto
+ -40 12 -55 5 -43 0 rrcurveto
+ -277 hlineto
+ 63 callsubr
+ closepath
+ 17 1 3 callothersubr
+ pop
+ callsubr
+ 104 33 rmoveto
+ 0 14 71 -7 12 -1 rrcurveto
+ 120 -10 34 -63 0 -61 rrcurveto
+ -121 -118 -5 -40 vhcurveto
+ -79 hlineto
+ closepath
+ -42 vmoveto
+ 83 hlineto
+ 18 1 3 callothersubr
+ pop
+ callsubr
+ 64 0 25 -16 21 -13 rrcurveto
+ 29 -18 33 -27 0 -78 rrcurveto
+ -62 -40 -72 -112 vhcurveto
+ -60 hlineto
+ -42 -1 22 24 hvcurveto
+ closepath
+ endchar
+ } |-
+/Chi {
+ -9 722 hsbw
+ 298 120 vstem
+ 57 callsubr
+ 591 607 rmoveto
+ 37 46 33 2 35 0 rrcurveto
+ 18 vlineto
+ -232 hlineto
+ -18 vlineto
+ 95 1 -21 -36 -20 -26 rrcurveto
+ -140 -181 rlineto
+ -123 189 rlineto
+ -22 34 14 20 77 -1 rrcurveto
+ 18 vlineto
+ -300 hlineto
+ -18 vlineto
+ 61 1 20 -31 12 -16 rrcurveto
+ 197 -276 rlineto
+ -211 -267 rlineto
+ -37 -46 -33 -2 -33 0 rrcurveto
+ -18 vlineto
+ 230 hlineto
+ 18 vlineto
+ -75 0 1 35 20 26 rrcurveto
+ 165 213 rlineto
+ 141 -221 rlineto
+ 22 -34 -17 -19 -74 0 rrcurveto
+ -18 vlineto
+ 300 hlineto
+ 18 vlineto
+ -62 0 -19 30 -12 16 rrcurveto
+ -215 311 rlineto
+ closepath
+ endchar
+ } |-
+/Delta {
+ 6 612 hsbw
+ 373 105 vstem
+ 665 18 hstem
+ 0 49 hstem
+ 320 688 rmoveto
+ -320 -688 rlineto
+ 602 hlineto
+ closepath
+ -318 517 rmoveto
+ 194 -468 rlineto
+ -412 hlineto
+ closepath
+ endchar
+ } |-
+/Epsilon {
+ 32 611 hsbw
+ 0 44 hstem
+ 333 42 hstem
+ 625 48 hstem
+ 90 104 vstem
+ 452 23 vstem
+ 585 170 rmoveto
+ -31 hlineto
+ -24 -51 -27 -70 -106 -3 rrcurveto
+ -163 -4 rlineto
+ -21 -1 -19 9 0 35 rrcurveto
+ 248 vlineto
+ 156 hlineto
+ 80 22 -34 -60 hvcurveto
+ 23 hlineto
+ 230 vlineto
+ -23 hlineto
+ -60 -22 -34 -80 vhcurveto
+ -156 hlineto
+ 250 vlineto
+ 215 hlineto
+ 86 0 -4 -54 13 -46 rrcurveto
+ 27 hlineto
+ 148 vlineto
+ -531 hlineto
+ 63 callsubr
+ -509 vlineto
+ -55 -35 -9 -55 vhcurveto
+ -18 vlineto
+ 539 hlineto
+ closepath
+ endchar
+ } |-
+/Phi {
+ 26 763 hsbw
+ 596 118 vstem
+ 308 102 vstem
+ 0 120 vstem
+ 18 -18 hstem
+ 144 -36 hstem
+ 566 -32 hstem
+ 674 -18 hstem
+ 511 673 rmoveto
+ -304 hlineto
+ -18 vlineto
+ 89 12 -44 -46 hvcurveto
+ -86 0 -64 -4 -69 -50 rrcurveto
+ -68 -49 -21 -72 0 -59 rrcurveto
+ 0 -75 35 -63 68 -39 rrcurveto
+ 71 -41 62 -5 72 0 rrcurveto
+ -46 -13 -44 -89 vhcurveto
+ -18 vlineto
+ 306 hlineto
+ 18 vlineto
+ -89 -13 44 46 hvcurveto
+ 69 0 62 5 71 41 rrcurveto
+ 68 39 35 63 0 75 rrcurveto
+ 0 59 -21 72 -68 49 rrcurveto
+ -69 50 -64 4 -83 0 rrcurveto
+ 46 12 44 89 vhcurveto
+ closepath
+ -101 -121 rmoveto
+ 41 0 64 -12 48 -68 rrcurveto
+ 21 -30 16 -40 -3 -53 rrcurveto
+ -2 -32 -5 -59 -39 -43 rrcurveto
+ -49 -54 -75 0 -17 0 rrcurveto
+ closepath
+ -102 hmoveto
+ -17 0 -75 0 -49 54 rrcurveto
+ -39 43 -5 59 -2 32 rrcurveto
+ -3 53 16 40 21 30 rrcurveto
+ 48 68 64 12 41 0 rrcurveto
+ closepath
+ endchar
+ } |-
+/Gamma {
+ 24 603 hsbw
+ 0 18 hstem
+ 628 45 hstem
+ 101 104 vstem
+ 653 vmoveto
+ 20 -1 81 5 0 -104 rrcurveto
+ -471 vlineto
+ 45 callsubr
+ 546 vlineto
+ 192 hlineto
+ 56 0 29 -9 20 -11 rrcurveto
+ 50 -27 3 -31 5 -39 rrcurveto
+ 25 hlineto
+ -17 162 rlineto
+ -568 hlineto
+ closepath
+ endchar
+ } |-
+/Eta {
+ 39 722 hsbw
+ 496 104 vstem
+ 90 104 vstem
+ 0 18 hstem
+ 323 42 hstem
+ 655 18 hstem
+ 194 365 rmoveto
+ 226 vlineto
+ 50 callsubr
+ -509 vlineto
+ 45 callsubr
+ 241 vlineto
+ 302 hlineto
+ -241 vlineto
+ 45 callsubr
+ 509 vlineto
+ 50 callsubr
+ -226 vlineto
+ closepath
+ endchar
+ } |-
+/Iota {
+ 32 333 hsbw
+ 90 104 vstem
+ 57 callsubr
+ 194 591 rmoveto
+ 50 callsubr
+ -509 vlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/theta1 {
+ 18 631 hsbw
+ 454 76 vstem
+ 112 90 vstem
+ 10 -28 hstem
+ 464 -82 hstem
+ 690 -42 hstem
+ 605 326 rmoveto
+ -74 27 rlineto
+ -3 41 0 57 -19 63 rrcurveto
+ -15 51 -55 101 -81 20 rrcurveto
+ -21 5 -39 5 -34 -38 rrcurveto
+ -42 -45 0 -61 29 -53 rrcurveto
+ 40 -74 58 -35 104 -53 rrcurveto
+ 1 -65 5 -89 -39 -86 rrcurveto
+ -15 -34 -9 -17 -41 -23 rrcurveto
+ -38 -21 -50 4 -30 33 rrcurveto
+ -19 22 -25 52 11 81 rrcurveto
+ 19 155 rlineto
+ 5 43 -23 40 -19 14 rrcurveto
+ -32 26 -45 -8 -10 -4 rrcurveto
+ -37 -14 -9 -14 -10 -19 rrcurveto
+ -43 -81 rlineto
+ 16 -5 rlineto
+ 17 27 9 22 26 13 rrcurveto
+ 32 14 11 -8 11 -12 rrcurveto
+ 18 -20 -3 -15 -6 -45 rrcurveto
+ -17 -132 rlineto
+ -3 -20 4 -44 15 -37 rrcurveto
+ 14 -36 40 -33 23 -8 rrcurveto
+ 24 -9 79 -11 61 21 rrcurveto
+ 41 15 39 30 35 67 rrcurveto
+ 26 49 11 44 8 110 rrcurveto
+ 74 -36 rlineto
+ closepath
+ -153 107 rmoveto
+ -29 14 -84 33 -52 80 rrcurveto
+ -15 24 -19 37 23 47 rrcurveto
+ 25 50 50 -14 25 -21 rrcurveto
+ 46 -41 11 -51 8 -64 rrcurveto
+ closepath
+ endchar
+ } |-
+/Kappa {
+ 35 722 hsbw
+ 20 callsubr
+ 194 297 rmoveto
+ 33 30 rlineto
+ 210 -237 rlineto
+ 44 -51 -18 -21 -80 0 rrcurveto
+ -18 vlineto
+ 304 hlineto
+ 18 vlineto
+ -33 6 -24 -3 -72 81 rrcurveto
+ -257 290 rlineto
+ 74 69 70 66 64 70 rrcurveto
+ 51 53 25 5 45 0 rrcurveto
+ 18 vlineto
+ -260 hlineto
+ -18 vlineto
+ 74 0 41 -21 -54 -56 rrcurveto
+ -76 -78 -78 -72 -83 -68 rrcurveto
+ 231 vlineto
+ 50 callsubr
+ -509 vlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/Lambda {
+ 6 686 hsbw
+ 370 109 vstem
+ 0 18 hstem
+ 665 18 hstem
+ 330 688 rmoveto
+ -224 -597 rlineto
+ -21 -56 -67 -17 -18 0 rrcurveto
+ -18 vlineto
+ 215 hlineto
+ 18 vlineto
+ -39 0 -49 0 31 83 rrcurveto
+ 146 395 rlineto
+ 162 -397 rlineto
+ 31 -77 -74 -4 -21 0 rrcurveto
+ -18 vlineto
+ 272 hlineto
+ 18 vlineto
+ -11 0 -53 3 -30 72 rrcurveto
+ closepath
+ endchar
+ } |-
+/Mu {
+ 28 889 hsbw
+ 665 104 vstem
+ 93 49 vstem
+ 57 callsubr
+ 673 vmoveto
+ -18 vlineto
+ 79 -6 14 -3 0 -66 rrcurveto
+ -498 vlineto
+ -47 -39 -17 -51 vhcurveto
+ -18 vlineto
+ 229 hlineto
+ 18 vlineto
+ -51 -39 17 47 hvcurveto
+ 461 vlineto
+ 260 -543 rlineto
+ 18 hlineto
+ 245 572 rlineto
+ -490 vlineto
+ 45 callsubr
+ 515 vlineto
+ 71 59 -13 29 vhcurveto
+ 18 vlineto
+ -198 hlineto
+ -224 -510 rlineto
+ -234 510 rlineto
+ closepath
+ endchar
+ } |-
+/Nu {
+ 29 722 hsbw
+ 552 49 vstem
+ 90 49 vstem
+ 57 callsubr
+ 2 673 rmoveto
+ -18 vlineto
+ 51 6 7 -24 30 -34 rrcurveto
+ -521 vlineto
+ -47 -39 -17 -51 vhcurveto
+ -18 vlineto
+ 229 hlineto
+ 18 vlineto
+ -51 -39 17 47 hvcurveto
+ 457 vlineto
+ 440 -547 rlineto
+ 22 hlineto
+ 599 vlineto
+ 55 35 9 55 vhcurveto
+ 18 vlineto
+ -229 hlineto
+ 63 callsubr
+ -406 vlineto
+ -383 488 rlineto
+ closepath
+ endchar
+ } |-
+/Omicron {
+ 41 722 hsbw
+ 558 116 vstem
+ 0 117 vstem
+ -17 39 hstem
+ 646 39 hstem
+ 48 callsubr
+ -5 -20 -15 -54 -32 -38 rrcurveto
+ -42 -46 -58 -24 -56 0 rrcurveto
+ -56 0 -58 24 -40 46 rrcurveto
+ -34 38 -16 56 -4 18 rrcurveto
+ -14 66 -6 92 22 90 rrcurveto
+ 10 42 6 26 22 34 rrcurveto
+ closepath
+ endchar
+ } |-
+/Pi {
+ 25 768 hsbw
+ 20 callsubr
+ 526 103 vstem
+ 629 577 rmoveto
+ 73 62 5 26 vhcurveto
+ 19 1 3 callothersubr
+ pop
+ callsubr
+ 18 vlineto
+ -715 hlineto
+ 20 1 3 callothersubr
+ pop
+ callsubr
+ -18 vlineto
+ 26 62 -5 -73 hvcurveto
+ -495 vlineto
+ 45 callsubr
+ 21 1 3 callothersubr
+ pop
+ callsubr
+ -1 550 rlineto
+ 333 hlineto
+ -550 vlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/Theta {
+ 41 741 hsbw
+ -17 39 hstem
+ 304 67 hstem
+ 646 39 hstem
+ 0 116 vstem
+ 559 115 vstem
+ 467 9 vstem
+ 198 9 vstem
+ 48 callsubr
+ -5 -21 -15 -53 -32 -38 rrcurveto
+ -42 -46 -58 -24 -58 0 rrcurveto
+ -54 0 -58 24 -42 46 rrcurveto
+ -32 38 -15 53 -5 21 rrcurveto
+ -16 66 -4 92 20 90 rrcurveto
+ 10 42 8 26 22 34 rrcurveto
+ closepath
+ 105 -183 rmoveto
+ -37 0 -19 20 -11 33 rrcurveto
+ -15 -1 rlineto
+ 4 -32 2 -28 0 -25 rrcurveto
+ 0 -25 -2 -28 -4 -33 rrcurveto
+ 15 -1 rlineto
+ 11 34 19 19 37 0 rrcurveto
+ 126 hlineto
+ 37 0 19 -19 11 -34 rrcurveto
+ 15 1 rlineto
+ -4 33 -2 28 0 25 rrcurveto
+ 0 25 2 28 4 32 rrcurveto
+ -15 1 rlineto
+ -11 -33 -19 -20 -37 0 rrcurveto
+ closepath
+ endchar
+ } |-
+/Rho {
+ 28 556 hsbw
+ 0 18 hstem
+ 297 45 hstem
+ 655 18 hstem
+ 90 104 vstem
+ 426 109 vstem
+ 194 300 rmoveto
+ 87 -3 rlineto
+ 42 0 58 4 38 18 rrcurveto
+ 42 20 42 23 23 67 rrcurveto
+ 23 70 -26 67 -18 28 rrcurveto
+ -24 36 -30 15 -36 11 rrcurveto
+ -40 12 -55 5 -43 0 rrcurveto
+ -277 hlineto
+ 63 callsubr
+ -509 vlineto
+ 45 callsubr
+ closepath
+ 22 1 3 callothersubr
+ pop
+ callsubr
+ 527 vmoveto
+ 0 19 18 4 17 1 rrcurveto
+ 31 3 32 2 33 -10 rrcurveto
+ 37 -11 54 -12 10 -99 rrcurveto
+ 8 -78 -23 -65 -61 -11 rrcurveto
+ -60 -11 -72 -5 -24 17 rrcurveto
+ closepath
+ endchar
+ } |-
+/Sigma {
+ 5 592 hsbw
+ 254 116 vstem
+ 0 94 hstem
+ 627 46 hstem
+ 281 327 rmoveto
+ -281 -327 rlineto
+ 547 hlineto
+ 37 205 rlineto
+ -20 hlineto
+ -30 -97 -37 -14 -64 0 rrcurveto
+ -293 hlineto
+ 236 275 rlineto
+ -201 258 rlineto
+ 220 hlineto
+ 99 0 17 -67 10 -38 rrcurveto
+ 19 hlineto
+ -10 151 rlineto
+ -518 hlineto
+ closepath
+ endchar
+ } |-
+/Tau {
+ 33 611 hsbw
+ 235 104 vstem
+ 0 18 hstem
+ 634 39 hstem
+ 5 673 rmoveto
+ -5 -171 rlineto
+ 26 -2 rlineto
+ 0 78 43 51 100 3 rrcurveto
+ 66 2 rlineto
+ -552 vlineto
+ 45 callsubr
+ 552 vlineto
+ 66 -2 rlineto
+ 100 -3 43 -51 0 -78 rrcurveto
+ 26 2 rlineto
+ -5 171 rlineto
+ closepath
+ endchar
+ } |-
+/Upsilon {
+ -8 690 hsbw
+ 302 104 vstem
+ 0 18 hstem
+ 654 19 hstem
+ 406 313 rmoveto
+ 191 294 rlineto
+ 32 49 38 -1 35 0 rrcurveto
+ 18 vlineto
+ -232 hlineto
+ -18 vlineto
+ 88 3 -17 -36 -17 -28 rrcurveto
+ -140 -231 rlineto
+ -156 239 rlineto
+ -22 34 18 20 73 -1 rrcurveto
+ 18 vlineto
+ -297 hlineto
+ -18 vlineto
+ 53 2 25 -32 12 -16 rrcurveto
+ 212 -309 rlineto
+ -218 vlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/sigma1 {
+ 40 439 hsbw
+ -233 88 hstem
+ -18 102 hstem
+ 421 79 hstem
+ 1 37 vstem
+ 355 41 vstem
+ 307 -17 rmoveto
+ 19 0 31 -9 -2 -51 rrcurveto
+ -2 -36 -21 -25 -31 -7 rrcurveto
+ -25 -6 -9 8 -36 10 rrcurveto
+ -16 5 -35 -4 -12 -10 rrcurveto
+ -27 -22 11 -40 30 -16 rrcurveto
+ 38 -21 39 8 24 9 rrcurveto
+ 27 10 42 19 31 76 rrcurveto
+ 15 36 3 40 -10 31 rrcurveto
+ -9 26 -16 39 -30 17 rrcurveto
+ -32 18 -24 0 -33 -2 rrcurveto
+ -79 -4 rlineto
+ -74 -4 -28 44 -18 50 rrcurveto
+ -33 90 57 100 42 31 rrcurveto
+ 68 51 64 -31 54 -7 rrcurveto
+ 53 -6 17 19 3 21 rrcurveto
+ 3 23 -22 17 -28 11 rrcurveto
+ -26 10 -33 2 -45 -7 rrcurveto
+ -70 -11 -51 -51 -12 -13 rrcurveto
+ -44 -45 -56 -85 12 -119 rrcurveto
+ 6 -55 18 -59 48 -42 rrcurveto
+ 53 -46 46 12 36 0 rrcurveto
+ closepath
+ endchar
+ } |-
+/Omega {
+ 34 768 hsbw
+ 563 119 vstem
+ 20 119 vstem
+ 0 101 hstem
+ 656 32 hstem
+ 279 152 rmoveto
+ -32 14 -47 10 -39 90 rrcurveto
+ -33 76 -11 173 89 89 rrcurveto
+ 41 41 53 11 51 0 rrcurveto
+ 51 0 53 -11 41 -41 rrcurveto
+ 89 -89 -11 -173 -33 -76 rrcurveto
+ -39 -90 -47 -10 -32 -14 rrcurveto
+ -16 -152 rlineto
+ 295 hlineto
+ 162 vlineto
+ -15 hlineto
+ -12 -49 -12 -12 -42 0 rrcurveto
+ -158 hlineto
+ 2 28 rlineto
+ 77 23 49 26 41 60 rrcurveto
+ 70 103 -12 117 -42 75 rrcurveto
+ -40 73 -47 22 -27 16 rrcurveto
+ -46 27 -66 17 -71 0 rrcurveto
+ -71 0 -66 -17 -46 -27 rrcurveto
+ -27 -16 -47 -22 -40 -73 rrcurveto
+ -42 -75 -12 -117 70 -103 rrcurveto
+ 41 -60 49 -26 77 -23 rrcurveto
+ 2 -28 rlineto
+ -158 hlineto
+ -42 0 -12 12 -12 49 rrcurveto
+ -15 hlineto
+ -162 vlineto
+ 295 hlineto
+ closepath
+ endchar
+ } |-
+/Xi {
+ 40 645 hsbw
+ 106 346 vstem
+ 94 -94 hstem
+ 402 -96 hstem
+ 674 -90 hstem
+ 22 522 rmoveto
+ 16 hlineto
+ 3 18 -2 43 66 0 rrcurveto
+ 349 hlineto
+ 66 0 -2 -43 3 -18 rrcurveto
+ 16 hlineto
+ 151 vlineto
+ -515 hlineto
+ closepath
+ 85 -423 rmoveto
+ 18 hlineto
+ 3 48 14 8 35 0 rrcurveto
+ 205 hlineto
+ 35 0 14 -8 3 -48 rrcurveto
+ 18 hlineto
+ 207 vlineto
+ -18 hlineto
+ -3 -48 -14 -8 -35 0 rrcurveto
+ -205 hlineto
+ -35 0 -14 8 -3 48 rrcurveto
+ -18 hlineto
+ closepath
+ -107 -457 rmoveto
+ 559 hlineto
+ 194 vlineto
+ -18 hlineto
+ -9 -68 -6 -33 -72 0 rrcurveto
+ -349 hlineto
+ -72 0 -6 33 -9 68 rrcurveto
+ -18 hlineto
+ closepath
+ endchar
+ } |-
+/Psi {
+ 15 795 hsbw
+ 0 18 hstem
+ 300 40 hstem
+ 655 18 hstem
+ 525 10 div
+ 1145 10 div
+ 331 104 599 1145 10 div
+ vstem3
+ 435 300 rmoveto
+ 100 0 30 11 45 20 rrcurveto
+ 69 31 29 58 2 44 rrcurveto
+ 7 127 rlineto
+ 3 56 15 5 31 14 rrcurveto
+ 18 vlineto
+ -61 -4 -23 -3 -32 -31 rrcurveto
+ -24 -24 -21 -45 -2 -20 rrcurveto
+ -8 -89 rlineto
+ -11 -126 -87 -1 -62 -1 rrcurveto
+ 251 vlineto
+ 50 callsubr
+ -251 vlineto
+ -62 1 -87 1 -11 126 rrcurveto
+ -8 89 rlineto
+ -2 20 -21 45 -24 24 rrcurveto
+ -32 31 -23 3 -61 4 rrcurveto
+ -18 vlineto
+ 31 -14 15 -5 3 -56 rrcurveto
+ 7 -127 rlineto
+ 2 -44 29 -58 69 -31 rrcurveto
+ 45 -20 30 -11 100 0 rrcurveto
+ -218 vlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/Zeta {
+ 44 611 hsbw
+ 562 29 vstem
+ 24 26 vstem
+ 0 42 hstem
+ 631 42 hstem
+ 39 673 rmoveto
+ -15 -175 rlineto
+ 25 hlineto
+ 20 70 5 63 126 0 rrcurveto
+ 229 hlineto
+ -429 -612 rlineto
+ -19 vlineto
+ 567 hlineto
+ 25 181 rlineto
+ -29 hlineto
+ -14 -47 -9 -92 -139 0 rrcurveto
+ -253 hlineto
+ 413 604 rlineto
+ 27 vlineto
+ closepath
+ endchar
+ } |-
+/bracketleft {
+ 86 333 hsbw
+ 0 77 vstem
+ -155 25 hstem
+ 649 25 hstem
+ 213 674 rmoveto
+ -213 hlineto
+ -829 vlineto
+ 213 hlineto
+ 25 vlineto
+ -79 hlineto
+ -39 -18 14 37 hvcurveto
+ 677 vlineto
+ 37 18 14 39 vhcurveto
+ 79 hlineto
+ closepath
+ endchar
+ } |-
+/therefore {
+ 163 863 hsbw
+ 408 130 vstem
+ 204 130 vstem
+ 0 130 vstem
+ 348 130 hstem
+ 0 130 hstem
+ 65 vmoveto
+ 53 callsubr
+ 408 hmoveto
+ 53 callsubr
+ -204 348 rmoveto
+ 53 callsubr
+ endchar
+ } |-
+/bracketright {
+ 33 333 hsbw
+ 136 77 vstem
+ -155 25 hstem
+ 649 25 hstem
+ 649 vmoveto
+ 79 hlineto
+ 39 18 -14 -37 hvcurveto
+ -677 vlineto
+ -37 -18 -14 -39 vhcurveto
+ -79 hlineto
+ -25 vlineto
+ 213 hlineto
+ 829 vlineto
+ -213 hlineto
+ closepath
+ endchar
+ } |-
+/perpendicular {
+ 15 658 hsbw
+ 0 55 hstem
+ 291 55 vstem
+ 637 55 rmoveto
+ -291 hlineto
+ 619 vlineto
+ -55 hlineto
+ -619 vlineto
+ -291 hlineto
+ -55 vlineto
+ 637 hlineto
+ closepath
+ endchar
+ } |-
+/underscore {
+ -2 500 hsbw
+ -252 46 hstem
+ 504 -252 rmoveto
+ 46 vlineto
+ -504 hlineto
+ -46 vlineto
+ closepath
+ endchar
+ } |-
+/radicalex {
+ 480 500 hsbw
+ 917 -36 hstem
+ 917 vmoveto
+ -36 vlineto
+ 610 hlineto
+ 36 vlineto
+ closepath
+ endchar
+ } |-
+/alpha {
+ 41 631 hsbw
+ 24 callsubr
+ 563 17 vstem
+ 23 1 3 callothersubr
+ pop
+ callsubr
+ 458 487 rmoveto
+ -64 -178 rlineto
+ -2 hlineto
+ 24 1 3 callothersubr
+ pop
+ callsubr
+ -5 39 -14 40 -19 32 rrcurveto
+ -23 38 -38 32 -47 8 rrcurveto
+ -42 7 -59 -11 -31 -21 rrcurveto
+ -72 -49 -27 -52 -10 -73 rrcurveto
+ -15 -112 20 -67 26 -45 rrcurveto
+ 20 -34 28 -24 37 -17 rrcurveto
+ 66 -29 49 11 46 15 rrcurveto
+ 89 29 22 69 17 29 rrcurveto
+ 25 1 3 callothersubr
+ pop
+ callsubr
+ 24 -65 16 -35 24 -23 rrcurveto
+ 18 -17 22 -8 27 22 rrcurveto
+ 27 22 10 39 1 19 rrcurveto
+ 2 59 rlineto
+ -18 hlineto
+ -2 -13 -1 -32 -21 -21 rrcurveto
+ -31 -31 -26 26 -10 9 rrcurveto
+ -19 19 -14 28 -8 48 rrcurveto
+ 115 317 rlineto
+ closepath
+ -210 -346 rmoveto
+ 24 1 3 callothersubr
+ pop
+ callsubr
+ -12 -32 -27 -49 -20 -17 rrcurveto
+ -22 -19 -23 -9 -17 1 rrcurveto
+ -27 2 -13 6 -22 22 rrcurveto
+ -24 24 -10 32 -5 29 rrcurveto
+ -10 56 -4 56 7 55 rrcurveto
+ 7 53 12 43 25 32 rrcurveto
+ 22 28 18 17 59 -17 rrcurveto
+ 29 -9 27 -26 16 -26 rrcurveto
+ 26 -42 11 -78 7 -50 rrcurveto
+ closepath
+ endchar
+ } |-
+/beta {
+ 61 549 hsbw
+ -17 47 hstem
+ 398 62 hstem
+ 707 34 hstem
+ 16 78 vstem
+ 307 11 vstem
+ 351 103 vstem
+ 97 37 rmoveto
+ 42 -29 30 -15 42 -7 rrcurveto
+ 41 -7 42 3 34 12 rrcurveto
+ 26 9 68 33 25 101 rrcurveto
+ 12 48 -4 56 -11 38 rrcurveto
+ -24 82 -39 41 -63 30 rrcurveto
+ 37 31 34 27 11 71 rrcurveto
+ 10 64 -42 47 -21 17 rrcurveto
+ -71 58 -101 9 -68 -39 rrcurveto
+ -32 -19 -59 -32 0 -82 rrcurveto
+ -655 vlineto
+ 0 -51 -11 -50 -5 -51 rrcurveto
+ 87 hlineto
+ 3 25 5 25 0 25 rrcurveto
+ closepath
+ -1 745 rmoveto
+ 0 44 35 46 35 14 rrcurveto
+ 23 9 35 1 36 -28 rrcurveto
+ 69 -55 -17 -116 -25 -32 rrcurveto
+ -8 -10 -10 -18 -16 2 rrcurveto
+ -20 3 -41 11 -19 -16 rrcurveto
+ -9 -8 -20 -24 32 -17 rrcurveto
+ 16 -9 25 5 19 2 rrcurveto
+ 29 3 10 -7 15 -17 rrcurveto
+ 57 -64 16 -112 -15 -72 rrcurveto
+ -6 -31 -15 -36 -40 -22 rrcurveto
+ -36 -20 -46 5 -44 17 rrcurveto
+ -31 12 -15 18 -19 18 rrcurveto
+ closepath
+ endchar
+ } |-
+/chi {
+ 12 549 hsbw
+ 27 callsubr
+ 0 510 vstem
+ 26 1 3 callothersubr
+ pop
+ callsubr
+ 380 480 rmoveto
+ -133 -244 rlineto
+ 27 1 3 callothersubr
+ pop
+ callsubr
+ -39 167 rlineto
+ -8 37 -25 40 -33 13 rrcurveto
+ -26 10 -36 2 -26 -29 rrcurveto
+ -40 -43 -9 -76 -5 -36 rrcurveto
+ 18 hlineto
+ 6 23 3 29 27 28 rrcurveto
+ 21 23 35 4 33 -24 rrcurveto
+ 28 -20 10 -34 7 -29 rrcurveto
+ 32 -136 rlineto
+ -219 -401 rlineto
+ 102 hlineto
+ 148 273 rlineto
+ 2 hlineto
+ 13 -79 3 -36 20 -70 rrcurveto
+ 10 -36 13 -26 23 -21 rrcurveto
+ 38 -35 44 18 22 13 rrcurveto
+ 55 32 13 104 3 29 rrcurveto
+ -19 hlineto
+ -7 -22 -6 -48 -51 -18 rrcurveto
+ -43 -15 -35 23 -15 42 rrcurveto
+ -13 35 -17 43 -26 115 rrcurveto
+ 26 1 3 callothersubr
+ pop
+ callsubr
+ 204 374 rlineto
+ closepath
+ endchar
+ } |-
+/delta {
+ 40 494 hsbw
+ 344 96 vstem
+ 0 108 vstem
+ 28 -46 hstem
+ 740 -46 hstem
+ 215 447 rmoveto
+ -17 -7 -111 -27 -52 -89 rrcurveto
+ -48 -80 7 -78 27 -58 rrcurveto
+ 17 -36 23 -39 67 -35 rrcurveto
+ 34 -18 57 -4 48 13 rrcurveto
+ 33 9 42 28 25 24 rrcurveto
+ 104 103 -22 140 -47 77 rrcurveto
+ -39 65 -73 46 -18 11 rrcurveto
+ -13 8 -83 45 -48 49 rrcurveto
+ -32 32 8 33 14 14 rrcurveto
+ 17 18 30 19 48 -16 rrcurveto
+ 33 -10 8 -11 32 -33 rrcurveto
+ 32 -34 34 -20 33 24 rrcurveto
+ 25 19 -9 31 -19 23 rrcurveto
+ -17 20 -45 21 -35 8 rrcurveto
+ -15 3 -114 19 -46 -35 rrcurveto
+ -22 -17 -45 -23 20 -66 rrcurveto
+ 3 -10 8 -27 25 -23 rrcurveto
+ closepath
+ 237 -281 rmoveto
+ 20 -85 -16 -77 -28 -38 rrcurveto
+ -23 -30 -31 -14 -27 0 rrcurveto
+ -21 0 -41 4 -27 47 rrcurveto
+ -41 71 4 82 5 37 rrcurveto
+ 11 90 56 44 69 15 rrcurveto
+ 14 -12 57 -56 19 -78 rrcurveto
+ closepath
+ endchar
+ } |-
+/epsilon {
+ 22 439 hsbw
+ 275 96 vstem
+ -1 106 vstem
+ 30 -50 hstem
+ 274 -42 hstem
+ 502 -36 hstem
+ 379 114 rmoveto
+ -19 -59 -29 -21 -52 -6 rrcurveto
+ -30 -4 -87 -3 -43 56 rrcurveto
+ -16 22 -2 42 9 30 rrcurveto
+ 13 43 35 26 64 -11 rrcurveto
+ 23 -4 20 -4 24 12 rrcurveto
+ 38 19 -22 30 -40 -4 rrcurveto
+ -54 -5 rlineto
+ -41 -4 -51 6 -13 67 rrcurveto
+ -3 16 -4 71 61 28 rrcurveto
+ 51 23 52 -24 10 -39 rrcurveto
+ 16 -65 50 12 9 5 rrcurveto
+ 24 14 12 31 -22 32 rrcurveto
+ -18 27 -29 11 -20 8 rrcurveto
+ -27 11 -126 15 -77 -60 rrcurveto
+ -63 -49 8 -57 11 -28 rrcurveto
+ 14 -34 22 -14 54 -24 rrcurveto
+ -26 -8 -59 -15 -21 -68 rrcurveto
+ -19 -59 31 -56 41 -26 rrcurveto
+ 50 -31 88 -25 104 30 rrcurveto
+ 80 23 24 55 1 35 rrcurveto
+ closepath
+ endchar
+ } |-
+/phi {
+ 27 521 hsbw
+ 25 -37 hstem
+ 501 -38 hstem
+ 463 -90 vstem
+ 93 -92 vstem
+ 208 501 rmoveto
+ -35 -3 -74 -13 -50 -83 rrcurveto
+ -57 -95 1 -88 19 -62 rrcurveto
+ 42 -135 90 -19 70 -17 rrcurveto
+ 2 -198 rlineto
+ 40 -12 rlineto
+ -1 211 rlineto
+ 42 9 87 -1 54 123 rrcurveto
+ 33 76 7 117 -59 87 rrcurveto
+ -50 75 -56 13 -61 12 rrcurveto
+ -1 158 rlineto
+ -45 15 rlineto
+ closepath
+ 46 -207 rmoveto
+ 19 -14 43 -9 37 -87 rrcurveto
+ 20 -48 22 -131 -43 -79 rrcurveto
+ -32 -59 -29 -8 -34 -5 rrcurveto
+ closepath
+ -42 hmoveto
+ -25 0 -30 31 -23 36 rrcurveto
+ -50 78 -5 134 32 77 rrcurveto
+ 28 68 45 10 23 6 rrcurveto
+ closepath
+ endchar
+ } |-
+/gamma {
+ 5 411 hsbw
+ 29 callsubr
+ 28 1 3 callothersubr
+ pop
+ callsubr
+ 375 494 rmoveto
+ -113 -352 rlineto
+ -2 hlineto
+ 29 1 3 callothersubr
+ pop
+ callsubr
+ -13 78 -16 70 -16 70 rrcurveto
+ -25 101 -30 25 -31 9 rrcurveto
+ -19 6 -68 9 -25 -68 rrcurveto
+ -21 -57 5 -37 -1 -31 rrcurveto
+ 16 hlineto
+ 3 25 -2 36 32 27 rrcurveto
+ 42 35 42 -32 11 -13 rrcurveto
+ 15 -18 21 -55 12 -46 rrcurveto
+ 18 -67 8 -31 16 -118 rrcurveto
+ -19 -49 -41 -96 0 -70 rrcurveto
+ 0 -40 19 -28 28 -2 rrcurveto
+ 29 -2 20 14 14 47 rrcurveto
+ 23 77 -28 115 -4 32 rrcurveto
+ 28 1 3 callothersubr
+ pop
+ callsubr
+ 204 436 rlineto
+ closepath
+ endchar
+ } |-
+/eta {
+ 0 603 hsbw
+ 33 callsubr
+ 65 callsubr
+ 30 1 3 callothersubr
+ pop
+ callsubr
+ 206 366 rmoveto
+ 17 21 25 46 59 11 rrcurveto
+ 25 5 32 -9 18 -15 rrcurveto
+ 19 -16 9 -22 1 -41 rrcurveto
+ 13 -448 rlineto
+ 2 -53 8 -23 4 -24 rrcurveto
+ 31 1 3 callothersubr
+ pop
+ callsubr
+ 89 hlineto
+ -5 25 -10 25 -1 25 rrcurveto
+ 32 1 3 callothersubr
+ pop
+ callsubr
+ -11 497 rlineto
+ -1 58 -19 34 -43 32 rrcurveto
+ -28 21 -51 3 -31 -8 rrcurveto
+ 33 1 3 callothersubr
+ pop
+ callsubr
+ -63 -17 -37 -57 -20 -28 rrcurveto
+ -8 29 -3 36 -36 21 rrcurveto
+ -51 29 -59 -26 -23 -36 rrcurveto
+ -28 -44 4 -20 -3 -37 rrcurveto
+ 18 hlineto
+ 5 28 0 32 18 20 rrcurveto
+ 18 20 25 -5 16 -20 rrcurveto
+ 15 -18 6 -24 0 -49 rrcurveto
+ -344 vlineto
+ 85 hlineto
+ closepath
+ endchar
+ } |-
+/iota {
+ 0 329 hsbw
+ -17 48 hstem
+ 88 85 vstem
+ 173 503 rmoveto
+ -52 -19 -31 -16 -90 -18 rrcurveto
+ -20 vlineto
+ 32 56 14 -131 hvcurveto
+ -238 vlineto
+ 0 -26 28 -62 66 -4 rrcurveto
+ 103 -7 11 100 5 25 rrcurveto
+ -19 hlineto
+ -5 -14 -1 -44 -34 -9 rrcurveto
+ -24 -7 -10 4 -17 23 rrcurveto
+ -19 25 1 29 0 27 rrcurveto
+ closepath
+ endchar
+ } |-
+/phi1 {
+ 36 603 hsbw
+ 462 88 vstem
+ 0 104 vstem
+ 248 62 vstem
+ 24 -36 hstem
+ 500 -78 hstem
+ 212 492 rmoveto
+ -28 0 -37 -7 -32 -20 rrcurveto
+ -47 -30 -33 -31 -20 -57 rrcurveto
+ -18 -51 -3 -54 19 -67 rrcurveto
+ 45 -161 133 -16 57 -11 rrcurveto
+ -211 vlineto
+ 63 hlineto
+ 212 vlineto
+ 79 -5 75 65 27 32 rrcurveto
+ 33 39 26 68 0 62 rrcurveto
+ 0 49 -12 62 -40 57 rrcurveto
+ -21 30 -37 33 -31 11 rrcurveto
+ -27 10 -58 9 -43 -43 rrcurveto
+ -38 -38 -7 -64 1 -20 rrcurveto
+ 10 -319 rlineto
+ -10 2 -54 0 -45 77 rrcurveto
+ -24 42 -20 93 16 95 rrcurveto
+ 18 108 71 24 12 7 rrcurveto
+ closepath
+ 87 -177 rmoveto
+ -3 61 15 37 6 10 rrcurveto
+ 10 15 25 10 24 -11 rrcurveto
+ 17 -8 33 -35 13 -28 rrcurveto
+ 34 -73 -6 -86 -4 -17 rrcurveto
+ -13 -58 -15 -15 -14 -18 rrcurveto
+ -43 -53 -57 -3 -10 -2 rrcurveto
+ closepath
+ endchar
+ } |-
+/kappa {
+ 33 549 hsbw
+ 86 75 vstem
+ 0 18 hstem
+ 481 18 hstem
+ 434 vmoveto
+ 35 -1 51 4 0 -86 rrcurveto
+ -351 vlineto
+ 75 hlineto
+ 258 vlineto
+ 165 -203 rlineto
+ 18 -23 -7 -14 -47 0 rrcurveto
+ -18 vlineto
+ 235 hlineto
+ 18 vlineto
+ -59 0 -16 26 -31 37 rrcurveto
+ -178 224 rlineto
+ 51 51 31 34 32 21 rrcurveto
+ 42 28 4 -10 33 -24 rrcurveto
+ 9 -7 29 -13 31 20 rrcurveto
+ 16 10 20 42 -34 26 rrcurveto
+ -36 28 -63 -10 -32 -27 rrcurveto
+ -75 -56 -70 -66 -68 -68 rrcurveto
+ 217 vlineto
+ -90 -38 -29 1 -42 -9 rrcurveto
+ closepath
+ endchar
+ } |-
+/lambda {
+ 24 549 hsbw
+ 64 callsubr
+ 44 570 rmoveto
+ 10 30 -1 32 41 22 rrcurveto
+ 36 19 28 -13 18 -15 rrcurveto
+ 24 -19 16 -60 15 -68 rrcurveto
+ 34 1 3 callothersubr
+ pop
+ callsubr
+ -231 -498 rlineto
+ 92 hlineto
+ 171 365 rlineto
+ 2 hlineto
+ 35 1 3 callothersubr
+ pop
+ callsubr
+ 13 -115 35 -157 17 -41 rrcurveto
+ 16 -36 34 -31 37 -2 rrcurveto
+ 31 -2 33 21 19 34 rrcurveto
+ 22 39 -1 41 3 37 rrcurveto
+ -19 hlineto
+ -5 -15 -2 -46 -39 -16 rrcurveto
+ -24 -10 -23 6 -20 15 rrcurveto
+ -17 12 -16 27 -9 31 rrcurveto
+ -37 128 -19 199 -69 179 rrcurveto
+ -27 69 -104 51 -43 -98 rrcurveto
+ -18 -42 -6 -48 -2 -25 rrcurveto
+ closepath
+ endchar
+ } |-
+/mu {
+ 33 576 hsbw
+ -17 49 hstem
+ 500 -20 hstem
+ 28 86 vstem
+ 321 86 vstem
+ 28 500 rmoveto
+ -492 vlineto
+ 0 -59 -16 -18 -10 -56 rrcurveto
+ -11 -66 30 -32 27 0 rrcurveto
+ 27 0 30 32 -11 66 rrcurveto
+ -10 56 -17 18 -3 59 rrcurveto
+ 23 vlineto
+ 14 -10 33 -38 47 0 rrcurveto
+ 36 0 35 12 23 17 rrcurveto
+ 47 34 14 22 9 13 rrcurveto
+ 7 -32 -1 -25 35 -26 rrcurveto
+ 14 -11 41 -16 48 26 rrcurveto
+ 52 28 8 42 8 34 rrcurveto
+ -20 hlineto
+ -7 -17 3 -30 -27 -16 rrcurveto
+ -20 -11 -17 3 -16 16 rrcurveto
+ -15 15 -8 29 0 26 rrcurveto
+ 384 vlineto
+ -86 hlineto
+ 36 1 3 callothersubr
+ pop
+ callsubr
+ -372 vlineto
+ -14 -32 -36 -25 -23 -11 rrcurveto
+ -27 -12 -25 0 -30 13 rrcurveto
+ -40 18 -12 41 0 47 rrcurveto
+ 333 vlineto
+ closepath
+ endchar
+ } |-
+/nu {
+ -9 521 hsbw
+ 500 -18 hstem
+ 377 106 vstem
+ 2 -18 hstem
+ 239 40 vstem
+ 131 507 rmoveto
+ -58 -25 -3 1 -70 -7 rrcurveto
+ -19 vlineto
+ 41 -5 15 6 14 -36 rrcurveto
+ 171 -438 rlineto
+ 37 hlineto
+ 19 60 90 160 54 110 rrcurveto
+ 21 42 13 46 6 19 rrcurveto
+ 5 16 1 30 -25 21 rrcurveto
+ -19 16 -39 7 -22 -42 rrcurveto
+ -6 -13 -2 -10 11 -47 rrcurveto
+ 15 -64 -3 -24 -29 -56 rrcurveto
+ -79 -152 rlineto
+ closepath
+ endchar
+ } |-
+/omicron {
+ 35 549 hsbw
+ 368 98 vstem
+ 1 95 vstem
+ -17 40 hstem
+ 469 29 hstem
+ 123 8 rmoveto
+ 92 -46 101 15 63 62 rrcurveto
+ 123 116 -7 209 -136 92 rrcurveto
+ -110 76 -120 -34 -63 -74 rrcurveto
+ -100 -118 9 -197 148 -101 rrcurveto
+ closepath
+ 15 85 rmoveto
+ -49 89 -7 134 36 83 rrcurveto
+ 27 64 94 45 77 -89 rrcurveto
+ 73 -94 -11 -187 -41 -63 rrcurveto
+ -59 -90 -100 37 -40 71 rrcurveto
+ closepath
+ endchar
+ } |-
+/pi {
+ 10 549 hsbw
+ 46 116 vstem
+ 496 24 vstem
+ 88 -104 hstem
+ 304 70 vstem
+ 488 -86 hstem
+ 325 401 rmoveto
+ -17 -161 rlineto
+ -5 -52 -1 -80 13 -39 rrcurveto
+ 12 -36 21 -26 16 -12 rrcurveto
+ 27 -19 37 9 20 12 rrcurveto
+ 27 15 43 48 2 91 rrcurveto
+ -21 hlineto
+ -3 -15 2 -28 -25 -19 rrcurveto
+ -32 -25 -29 17 -13 12 rrcurveto
+ -15 14 -10 31 0 28 rrcurveto
+ 0 38 0 80 12 117 rrcurveto
+ 126 hlineto
+ 86 vlineto
+ -373 hlineto
+ -46 0 -31 -28 -17 -24 rrcurveto
+ -30 -42 -10 -41 -5 -14 rrcurveto
+ 17 hlineto
+ 21 31 rlineto
+ 11 16 27 16 28 0 rrcurveto
+ 47 hlineto
+ -29 -229 rlineto
+ -5 -42 -29 -23 -16 -21 rrcurveto
+ -12 -16 -19 -16 8 -34 rrcurveto
+ 5 -23 30 -22 27 7 rrcurveto
+ 32 8 15 22 8 38 rrcurveto
+ 12 54 18 110 16 187 rrcurveto
+ closepath
+ endchar
+ } |-
+/theta {
+ 43 521 hsbw
+ 341 100 vstem
+ 1 98 vstem
+ 22 -38 hstem
+ 368 -52 hstem
+ 690 -34 hstem
+ 221 690 rmoveto
+ -76 0 -55 -63 -22 -29 rrcurveto
+ -33 -46 -16 -38 -10 -53 rrcurveto
+ -18 -91 12 -109 7 -44 rrcurveto
+ 6 -34 13 -67 42 -51 rrcurveto
+ 56 -70 60 -12 34 0 rrcurveto
+ 34 0 60 12 56 70 rrcurveto
+ 42 51 13 67 6 34 rrcurveto
+ 7 44 12 109 -18 91 rrcurveto
+ -10 53 -16 38 -33 46 rrcurveto
+ -22 29 -55 63 -76 0 rrcurveto
+ closepath
+ -121 -322 rmoveto
+ 6 95 rlineto
+ 3 45 18 62 19 32 rrcurveto
+ 7 12 34 42 34 0 rrcurveto
+ 34 0 34 -42 7 -12 rrcurveto
+ 19 -32 18 -62 3 -45 rrcurveto
+ 6 -95 rlineto
+ closepath
+ -1 -52 rmoveto
+ -6 -104 rlineto
+ -1 -25 -11 -73 -37 -50 rrcurveto
+ -18 -25 -23 -18 -24 0 rrcurveto
+ -24 0 -23 18 -18 25 rrcurveto
+ -37 50 -11 73 -1 25 rrcurveto
+ -6 104 rlineto
+ closepath
+ endchar
+ } |-
+/rho {
+ 50 549 hsbw
+ -212 -18 hstem
+ 6 84 vstem
+ 26 -44 hstem
+ 348 92 vstem
+ 500 -64 hstem
+ 97 40 rmoveto
+ 9 -14 20 -25 51 -14 rrcurveto
+ 37 -10 33 3 42 17 rrcurveto
+ 32 13 48 35 32 59 rrcurveto
+ 31 58 10 66 -2 35 rrcurveto
+ -3 54 -6 48 -43 55 rrcurveto
+ -21 27 -44 39 -60 9 rrcurveto
+ -71 11 -31 -15 -28 -16 rrcurveto
+ -105 -58 -22 -76 1 -61 rrcurveto
+ 5 -423 rlineto
+ 0 -30 -9 -31 -3 -26 rrcurveto
+ 87 hlineto
+ 10 40 0 35 0 40 rrcurveto
+ closepath
+ -9 451 rmoveto
+ -1 40 13 27 26 24 rrcurveto
+ 16 14 23 7 29 -6 rrcurveto
+ 64 -12 41 -49 20 -39 rrcurveto
+ 25 -48 12 -55 -7 -61 rrcurveto
+ -5 -45 -17 -41 -23 -25 rrcurveto
+ -20 -23 -23 -13 -38 -5 rrcurveto
+ -85 -12 -44 80 0 21 rrcurveto
+ closepath
+ endchar
+ } |-
+/sigma {
+ 30 603 hsbw
+ -21 40 hstem
+ 414 86 hstem
+ 0 104 vstem
+ 400 102 vstem
+ 558 500 rmoveto
+ -259 hlineto
+ -54 0 -53 -14 -38 -17 rrcurveto
+ -23 -10 -62 -31 -29 -46 rrcurveto
+ -23 -37 -27 -42 14 -91 rrcurveto
+ 8 -50 38 -98 90 -54 rrcurveto
+ 75 -46 69 17 34 5 rrcurveto
+ 112 18 50 94 11 35 rrcurveto
+ 18 54 -5 45 -16 36 rrcurveto
+ -21 49 -72 78 -54 17 rrcurveto
+ 2 vlineto
+ 217 hlineto
+ closepath
+ -175 -121 rmoveto
+ 20 -47 4 -75 -19 -56 rrcurveto
+ -10 -29 -24 -47 -43 -13 rrcurveto
+ -65 -18 -30 22 -26 20 rrcurveto
+ -39 31 -40 62 -7 89 rrcurveto
+ -2 23 1 75 48 44 rrcurveto
+ 50 45 57 -5 30 0 rrcurveto
+ 52 -45 24 -30 19 -46 rrcurveto
+ closepath
+ endchar
+ } |-
+/tau {
+ 10 439 hsbw
+ 2 18 vstem
+ 80 -98 hstem
+ 360 20 vstem
+ 172 66 vstem
+ 500 -92 hstem
+ 173 500 rmoveto
+ -37 0 -43 -16 -25 -28 rrcurveto
+ -32 -36 -15 -31 -21 -78 rrcurveto
+ 18 hlineto
+ 13 36 33 60 38 0 rrcurveto
+ 91 hlineto
+ -6 -53 -18 -125 3 -99 rrcurveto
+ 3 -86 33 -37 17 -12 rrcurveto
+ 39 -26 38 17 15 9 rrcurveto
+ 61 37 1 63 1 57 rrcurveto
+ -18 hlineto
+ -9 -39 -2 -30 -38 -8 rrcurveto
+ -32 -6 -13 20 -11 14 rrcurveto
+ -13 17 -9 28 3 40 rrcurveto
+ 16 220 rlineto
+ 154 hlineto
+ 92 vlineto
+ closepath
+ endchar
+ } |-
+/upsilon {
+ 7 576 hsbw
+ 445 84 vstem
+ 133 84 vstem
+ 24 -42 hstem
+ 504 -104 hstem
+ 22 356 rmoveto
+ 14 29 5 18 16 11 rrcurveto
+ 31 22 24 -12 8 -19 rrcurveto
+ 15 -37 -2 -113 1 -75 rrcurveto
+ 1 -58 13 -39 21 -30 rrcurveto
+ 6 -9 17 -36 50 -17 rrcurveto
+ 43 -15 53 4 45 16 rrcurveto
+ 42 15 43 28 30 63 rrcurveto
+ 24 50 13 72 -10 66 rrcurveto
+ -12 83 -39 82 -136 52 rrcurveto
+ -6 -17 rlineto
+ 31 -19 60 -31 18 -103 rrcurveto
+ 15 -85 -14 -81 -18 -49 rrcurveto
+ -16 -44 -17 -27 -29 -16 rrcurveto
+ -57 -30 -28 32 -17 19 rrcurveto
+ -14 15 -26 38 0 63 rrcurveto
+ 0 60 -7 138 -12 72 rrcurveto
+ -4 25 -32 32 -38 4 rrcurveto
+ -27 3 -40 -14 -18 -28 rrcurveto
+ -22 -34 -11 -45 -9 -29 rrcurveto
+ closepath
+ endchar
+ } |-
+/omega1 {
+ 12 713 hsbw
+ 561 95 vstem
+ 293 98 vstem
+ 23 106 vstem
+ -18 44 hstem
+ 490 88 hstem
+ 658 583 rmoveto
+ -520 -8 rlineto
+ -32 0 -68 -37 -38 -102 rrcurveto
+ 16 1 rlineto
+ 59 44 4 -1 89 7 rrcurveto
+ -73 -49 -25 -17 -26 -70 rrcurveto
+ -26 -69 -4 -97 29 -80 rrcurveto
+ 10 -29 32 -52 42 -22 rrcurveto
+ 64 -33 46 14 32 17 rrcurveto
+ 41 22 18 34 16 23 rrcurveto
+ 22 -38 3 -18 44 -24 rrcurveto
+ 51 -28 59 13 40 24 rrcurveto
+ 56 34 11 43 11 30 rrcurveto
+ 22 59 6 126 -58 91 rrcurveto
+ -43 68 -48 15 -41 16 rrcurveto
+ 180 5 rlineto
+ closepath
+ -253 -5 rmoveto
+ 73 -42 23 -8 36 -87 rrcurveto
+ 33 -79 -10 -91 -5 -33 rrcurveto
+ -6 -44 -20 -43 -15 -15 rrcurveto
+ -13 -12 -34 -22 -45 22 rrcurveto
+ -42 21 -12 64 -3 31 rrcurveto
+ 22 101 10 42 -11 59 rrcurveto
+ -6 29 -14 28 -24 -2 rrcurveto
+ -16 -1 -25 -27 -4 -31 rrcurveto
+ -10 -72 2 -58 29 -73 rrcurveto
+ -7 -32 0 -49 -48 -28 rrcurveto
+ -16 -10 -41 -21 -35 40 rrcurveto
+ -17 20 -14 25 -8 57 rrcurveto
+ -13 93 17 100 24 45 rrcurveto
+ 39 71 29 3 53 28 rrcurveto
+ closepath
+ endchar
+ } |-
+/omega {
+ 42 686 hsbw
+ 538 101 vstem
+ 269 104 vstem
+ 3 101 vstem
+ -17 50 hstem
+ 482 18 hstem
+ 255 500 rmoveto
+ -35 -2 -59 7 -53 -40 rrcurveto
+ -63 -48 -34 -64 -8 -87 rrcurveto
+ -7 -72 7 -45 22 -53 rrcurveto
+ 18 -43 38 -41 34 -15 rrcurveto
+ 28 -13 51 -13 49 29 rrcurveto
+ 35 20 16 15 27 47 rrcurveto
+ 27 -47 16 -15 35 -20 rrcurveto
+ 49 -29 51 13 28 13 rrcurveto
+ 34 15 38 41 18 43 rrcurveto
+ 22 53 7 45 -7 72 rrcurveto
+ -8 87 -34 64 -63 48 rrcurveto
+ -53 40 -59 -7 -35 2 rrcurveto
+ -17 vlineto
+ 64 -24 24 -18 21 -35 rrcurveto
+ 53 -87 -6 -115 -12 -67 rrcurveto
+ -10 -52 -12 -21 -18 -17 rrcurveto
+ -20 -19 -22 -5 -28 8 rrcurveto
+ -66 19 -5 82 -5 19 rrcurveto
+ 18 52 20 63 -14 80 rrcurveto
+ -8 44 -14 23 -26 0 rrcurveto
+ -26 0 -14 -23 -8 -44 rrcurveto
+ -14 -80 20 -63 18 -52 rrcurveto
+ -5 -19 -5 -82 -66 -19 rrcurveto
+ -28 -8 -22 5 -20 19 rrcurveto
+ -18 17 -12 21 -10 52 rrcurveto
+ -12 67 -6 115 53 87 rrcurveto
+ 21 35 24 18 64 24 rrcurveto
+ closepath
+ endchar
+ } |-
+/xi {
+ 27 493 hsbw
+ 393 44 vstem
+ 73 34 vstem
+ 1 46 vstem
+ -134 -90 hstem
+ 92 -96 hstem
+ 482 -86 hstem
+ 766 -22 hstem
+ 144 764 rmoveto
+ -32 8 -40 -22 -15 -16 rrcurveto
+ -23 -25 1 -27 11 -21 rrcurveto
+ 16 -31 27 -4 21 -8 rrcurveto
+ -23 -22 -10 -18 -3 -35 rrcurveto
+ -4 -41 4 -23 52 -59 rrcurveto
+ -70 -57 -9 -11 -19 -43 rrcurveto
+ -25 -56 -9 -46 11 -56 rrcurveto
+ 8 -39 29 -55 28 -21 rrcurveto
+ 35 -27 44 -15 58 0 rrcurveto
+ 30 0 40 0 34 2 rrcurveto
+ 28 2 49 -4 5 -58 rrcurveto
+ 5 -56 -42 -22 -37 4 rrcurveto
+ -66 8 rlineto
+ -16 2 -15 0 -13 -16 rrcurveto
+ -13 -15 1 -29 22 -18 rrcurveto
+ 26 -21 51 -1 24 8 rrcurveto
+ 55 19 20 35 7 9 rrcurveto
+ 36 49 3 49 1 14 rrcurveto
+ 4 49 -24 42 -29 22 rrcurveto
+ -26 20 -32 3 -43 1 rrcurveto
+ -115 4 rlineto
+ -47 1 -50 18 -23 58 rrcurveto
+ -19 47 11 29 2 10 rrcurveto
+ 20 93 73 36 30 18 rrcurveto
+ 15 -3 33 -15 76 8 rrcurveto
+ 33 4 36 13 10 18 rrcurveto
+ 9 16 -2 17 -19 10 rrcurveto
+ -18 10 -45 1 -29 -5 rrcurveto
+ -38 -6 -38 -18 -34 -16 rrcurveto
+ -38 30 -20 19 3 36 rrcurveto
+ 4 50 37 27 17 12 rrcurveto
+ 42 4 18 -3 49 23 rrcurveto
+ 36 17 14 20 4 12 rrcurveto
+ 8 24 -10 18 -27 3 rrcurveto
+ -33 3 -32 -12 -40 -31 rrcurveto
+ -51 -40 rlineto
+ -23 2 -24 12 -5 20 rrcurveto
+ -12 43 53 13 13 6 rrcurveto
+ closepath
+ endchar
+ } |-
+/psi {
+ 12 686 hsbw
+ 4 -21 hstem
+ 38 callsubr
+ 376 -228 rmoveto
+ 211 vlineto
+ 53 11 66 24 47 63 rrcurveto
+ 37 1 3 callothersubr
+ pop
+ callsubr
+ 31 42 24 41 12 237 rrcurveto
+ 3 55 31 4 46 10 rrcurveto
+ 38 1 3 callothersubr
+ pop
+ callsubr
+ 18 vlineto
+ -22 12 -34 0 -12 0 rrcurveto
+ -64 0 -31 -51 -11 -26 rrcurveto
+ -17 -40 -14 -175 -8 -70 rrcurveto
+ -8 -76 -52 -30 -40 -10 rrcurveto
+ 39 1 3 callothersubr
+ pop
+ callsubr
+ 465 vlineto
+ -63 hlineto
+ -465 vlineto
+ -40 10 -52 30 -8 76 rrcurveto
+ 40 1 3 callothersubr
+ pop
+ callsubr
+ -7 70 -15 175 -17 40 rrcurveto
+ -11 26 -31 51 -64 0 rrcurveto
+ -12 0 -34 0 -22 -12 rrcurveto
+ 41 1 3 callothersubr
+ pop
+ callsubr
+ -18 vlineto
+ 46 -10 31 -4 3 -55 rrcurveto
+ 12 -237 24 -41 31 -42 rrcurveto
+ 47 -63 66 -24 53 -11 rrcurveto
+ -211 vlineto
+ closepath
+ endchar
+ } |-
+/zeta {
+ 60 494 hsbw
+ 756 -20 hstem
+ 96 -106 hstem
+ -128 -96 hstem
+ 362 44 vstem
+ 0 48 vstem
+ 152 756 rmoveto
+ -22 -2 -33 -3 -31 -32 rrcurveto
+ -38 -39 6 -59 55 -19 rrcurveto
+ 44 -15 rlineto
+ -35 -47 -33 -50 -15 -37 rrcurveto
+ -47 -117 -1 -42 -2 -69 rrcurveto
+ -1 -32 8 -58 16 -40 rrcurveto
+ 24 -59 74 -38 35 -6 rrcurveto
+ 44 -8 42 9 42 3 rrcurveto
+ 45 3 35 -23 1 -41 rrcurveto
+ 0 -12 -3 -42 -37 -18 rrcurveto
+ -30 -15 -18 16 -49 9 rrcurveto
+ -54 9 -17 -32 0 -23 rrcurveto
+ 0 -19 22 -19 15 -6 rrcurveto
+ 25 -10 42 -2 41 14 rrcurveto
+ 64 21 47 76 -6 82 rrcurveto
+ -3 46 -15 25 -30 27 rrcurveto
+ -16 14 -45 24 -82 -4 rrcurveto
+ -46 -2 rlineto
+ -26 -1 -39 10 -32 45 rrcurveto
+ -26 36 2 36 -1 15 rrcurveto
+ -5 101 36 86 21 38 rrcurveto
+ 24 44 38 56 32 26 rrcurveto
+ 44 5 18 4 35 17 rrcurveto
+ 48 23 12 19 8 10 rrcurveto
+ 26 34 -16 20 -10 6 rrcurveto
+ -18 11 -22 -4 -27 -14 rrcurveto
+ -72 -38 -17 -26 -45 -39 rrcurveto
+ -20 6 -25 7 -9 31 rrcurveto
+ -16 51 53 23 13 6 rrcurveto
+ closepath
+ endchar
+ } |-
+/braceleft {
+ 58 480 hsbw
+ 128 75 vstem
+ -183 25 hstem
+ 231 28 hstem
+ 648 25 hstem
+ 232 vmoveto
+ 57 -12 71 0 0 -100 rrcurveto
+ -201 vlineto
+ -102 50 0 60 vhcurveto
+ 101 hlineto
+ 25 vlineto
+ -49 hlineto
+ -50 -37 13 64 hvcurveto
+ 201 vlineto
+ 0 100 -115 13 -32 9 rrcurveto
+ 32 15 115 13 0 100 rrcurveto
+ 201 vlineto
+ 64 37 13 50 vhcurveto
+ 49 hlineto
+ 25 vlineto
+ -101 hlineto
+ -60 -50 0 -102 hvcurveto
+ -201 vlineto
+ 0 -100 -71 0 -57 -12 rrcurveto
+ closepath
+ endchar
+ } |-
+/bar {
+ 65 200 hsbw
+ 0 70 vstem
+ 673 vmoveto
+ -850 vlineto
+ 70 hlineto
+ 850 vlineto
+ closepath
+ endchar
+ } |-
+/braceright {
+ 79 480 hsbw
+ 136 75 vstem
+ -183 25 hstem
+ 231 28 hstem
+ 648 25 hstem
+ 339 258 rmoveto
+ -57 12 -71 0 0 100 rrcurveto
+ 201 vlineto
+ 102 -50 0 -60 vhcurveto
+ -101 hlineto
+ -25 vlineto
+ 49 hlineto
+ 50 37 -13 -64 hvcurveto
+ -201 vlineto
+ 0 -100 115 -13 32 -15 rrcurveto
+ -32 -9 -115 -13 0 -100 rrcurveto
+ -201 vlineto
+ -64 -37 -13 -50 vhcurveto
+ -49 hlineto
+ -25 vlineto
+ 101 hlineto
+ 60 50 0 102 hvcurveto
+ 201 vlineto
+ 0 100 71 0 57 12 rrcurveto
+ closepath
+ endchar
+ } |-
+/similar {
+ 17 549 hsbw
+ 458 46 vstem
+ 7 55 vstem
+ 234 49 hstem
+ 475 307 rmoveto
+ 62 callsubr
+ 41 -25 rlineto
+ 43 48 31 31 134 -47 rrcurveto
+ 88 -31 55 -9 57 27 rrcurveto
+ 44 21 12 31 7 9 rrcurveto
+ closepath
+ endchar
+ } |-
+/Upsilon1 {
+ -2 620 hsbw
+ 242 104 vstem
+ 686 -48 hstem
+ 18 -18 hstem
+ 346 306 rmoveto
+ 0 36 1 76 12 52 rrcurveto
+ 8 34 16 67 46 41 rrcurveto
+ 30 28 25 10 33 -10 rrcurveto
+ 19 -6 10 -14 -28 -27 rrcurveto
+ -14 -13 -19 -31 30 -33 rrcurveto
+ 28 -31 39 23 15 23 rrcurveto
+ 12 18 18 56 -36 41 rrcurveto
+ -43 49 -33 -8 -31 -7 rrcurveto
+ -39 -9 -27 -23 -17 -21 rrcurveto
+ -61 -77 -4 -51 -16 -61 rrcurveto
+ -16 55 -19 74 -43 40 rrcurveto
+ -59 55 -73 28 -88 -9 rrcurveto
+ -21 -2 -10 -16 20 -7 rrcurveto
+ 96 -31 rlineto
+ 13 -4 52 -22 33 -71 rrcurveto
+ 26 -55 11 -106 0 -54 rrcurveto
+ 1 -231 rlineto
+ 45 callsubr
+ closepath
+ endchar
+ } |-
+/minute {
+ 27 247 hsbw
+ 589 145 hstem
+ 90 111 vstem
+ 198 669 rmoveto
+ 13 16 -27 35 -10 6 rrcurveto
+ -14 9 -43 6 -8 -17 rrcurveto
+ -108 -240 rlineto
+ -8 -18 31 -17 13 16 rrcurveto
+ closepath
+ endchar
+ } |-
+/lessequal {
+ 29 549 hsbw
+ 0 55 hstem
+ 346 64 hstem
+ 0 64 vstem
+ 0 hmoveto
+ 497 hlineto
+ 55 vlineto
+ -497 hlineto
+ closepath
+ 292 vmoveto
+ 58 callsubr
+ } |-
+/fraction {
+ -180 167 hsbw
+ 252 56 vstem
+ 659 18 hstem
+ -12 18 hstem
+ 464 677 rmoveto
+ -464 -689 rlineto
+ 56 hlineto
+ 464 689 rlineto
+ closepath
+ endchar
+ } |-
+/infinity {
+ 26 713 hsbw
+ 295 72 vstem
+ 230 68 hstem
+ 609 53 vstem
+ 0 51 vstem
+ 125 50 hstem
+ 351 53 hstem
+ 331 297 rmoveto
+ -61 55 -21 18 -47 21 rrcurveto
+ -97 43 -96 -67 -9 -88 rrcurveto
+ -8 -74 63 -89 92 9 rrcurveto
+ 103 10 57 75 24 21 rrcurveto
+ 24 -21 57 -75 103 -10 rrcurveto
+ 92 -9 63 89 -8 74 rrcurveto
+ -9 88 -96 67 -97 -43 rrcurveto
+ -47 -21 -21 -18 -61 -55 rrcurveto
+ closepath
+ -33 -33 rmoveto
+ -59 -57 -17 -19 -56 -13 rrcurveto
+ -55 -13 -59 38 -2 59 rrcurveto
+ -1 44 44 72 86 -30 rrcurveto
+ 34 -12 28 -21 57 -48 rrcurveto
+ closepath
+ 66 hmoveto
+ 57 48 28 21 34 12 rrcurveto
+ 86 30 44 -72 -1 -44 rrcurveto
+ -2 -59 -59 -38 -55 13 rrcurveto
+ -56 13 -17 19 -59 57 rrcurveto
+ closepath
+ endchar
+ } |-
+/florin {
+ 2 500 hsbw
+ 214 83 vstem
+ -192 25 hstem
+ 384 33 hstem
+ 659 25 hstem
+ 99 384 rmoveto
+ 117 hlineto
+ -24 -231 rlineto
+ -6 -58 -2 -59 -12 -57 rrcurveto
+ -6 -27 -5 -26 -6 -27 rrcurveto
+ -5 -23 -21 -33 -28 -8 rrcurveto
+ -35 -9 3 16 7 16 rrcurveto
+ 18 42 -14 15 -21 7 rrcurveto
+ -23 8 -33 -10 -3 -41 rrcurveto
+ -2 -31 15 -15 17 -11 rrcurveto
+ 30 -21 13 6 17 1 rrcurveto
+ 46 4 16 18 20 21 rrcurveto
+ 32 33 26 75 6 28 rrcurveto
+ 12 57 16 56 7 57 rrcurveto
+ 29 227 rlineto
+ 122 hlineto
+ 10 33 rlineto
+ -128 hlineto
+ 16 120 rlineto
+ 3 25 8 26 9 24 rrcurveto
+ 8 19 21 27 24 2 rrcurveto
+ 31 2 0 -13 -10 -21 rrcurveto
+ -5 -11 -9 -6 20 -25 rrcurveto
+ 14 -17 26 5 15 12 rrcurveto
+ 23 19 -5 20 -5 15 rrcurveto
+ -10 29 -30 14 -24 3 rrcurveto
+ -29 3 -38 -13 -14 -9 rrcurveto
+ -29 -19 -34 -37 -21 -55 rrcurveto
+ -22 -57 -8 -41 -5 -41 rrcurveto
+ -112 hlineto
+ closepath
+ endchar
+ } |-
+/club {
+ 86 753 hsbw
+ 534 -18 hstem
+ -8 -18 hstem
+ 312 -252 hstem
+ 0 574 vstem
+ 351 -26 rmoveto
+ -25 38 -14 15 0 66 rrcurveto
+ 0 53 10 22 55 -66 rrcurveto
+ 44 -52 87 -7 40 51 rrcurveto
+ 23 29 17 57 -29 74 rrcurveto
+ -17 44 -46 13 -32 0 rrcurveto
+ -44 0 -39 -30 -15 -8 rrcurveto
+ -48 -25 -2 36 15 16 rrcurveto
+ 17 18 34 2 26 63 rrcurveto
+ 21 50 -25 55 -36 23 rrcurveto
+ -22 14 -27 8 -32 0 rrcurveto
+ -32 0 -27 -8 -22 -14 rrcurveto
+ -36 -23 -25 -55 21 -50 rrcurveto
+ 26 -63 34 -2 17 -18 rrcurveto
+ 15 -16 -2 -36 -48 25 rrcurveto
+ -15 8 -39 30 -44 0 rrcurveto
+ -32 0 -46 -13 -17 -44 rrcurveto
+ -29 -74 17 -57 23 -29 rrcurveto
+ 40 -51 87 7 45 52 rrcurveto
+ 56 64 8 -20 0 -53 rrcurveto
+ 0 -66 -14 -15 -25 -38 rrcurveto
+ closepath
+ endchar
+ } |-
+/diamond {
+ 142 753 hsbw
+ 2 454 vstem
+ -36 586 hstem
+ 232 550 rmoveto
+ -232 -293 rlineto
+ 232 -293 rlineto
+ 226 293 rlineto
+ closepath
+ endchar
+ } |-
+/heart {
+ 117 753 hsbw
+ 404 -432 hstem
+ 1 510 vstem
+ 257 403 rmoveto
+ -15 0 -3 22 -8 19 rrcurveto
+ -25 67 -46 20 -46 1 rrcurveto
+ -42 1 -72 -27 0 -116 rrcurveto
+ 0 -57 32 -63 41 -53 rrcurveto
+ 91 -117 15 -18 78 -115 rrcurveto
+ 78 115 15 18 91 117 rrcurveto
+ 41 53 32 63 0 57 rrcurveto
+ 0 116 -72 27 -42 -1 rrcurveto
+ -46 -1 -46 -20 -25 -67 rrcurveto
+ -8 -19 -3 -22 -15 0 rrcurveto
+ closepath
+ endchar
+ } |-
+/spade {
+ 113 753 hsbw
+ -36 584 hstem
+ 231 54 vstem
+ 324 -36 rmoveto
+ -7 10 -31 33 -1 67 rrcurveto
+ -1 61 31 14 16 -40 rrcurveto
+ 24 -59 26 -36 57 9 rrcurveto
+ 53 9 31 63 -7 54 rrcurveto
+ -8 60 -16 16 -40 52 rrcurveto
+ -94 124 -28 35 -71 112 rrcurveto
+ -71 -112 -28 -35 -94 -124 rrcurveto
+ -40 -52 -16 -16 -8 -60 rrcurveto
+ -7 -54 31 -63 53 -9 rrcurveto
+ 57 -9 26 36 24 59 rrcurveto
+ 16 40 31 -14 -1 -61 rrcurveto
+ -1 -67 -31 -33 -7 -10 rrcurveto
+ closepath
+ endchar
+ } |-
+/arrowboth {
+ 24 1042 hsbw
+ 0 1000 vstem
+ 222 52 hstem
+ 115 274 rmoveto
+ 85 89 18 21 68 95 rrcurveto
+ -37 32 rlineto
+ -79 -94 -55 -67 -115 -102 rrcurveto
+ 115 -102 55 -67 79 -94 rrcurveto
+ 37 32 rlineto
+ -68 95 -18 21 -85 89 rrcurveto
+ 770 hlineto
+ -85 -89 -18 -21 -68 -95 rrcurveto
+ 37 -32 rlineto
+ 79 94 55 67 115 102 rrcurveto
+ -115 102 -55 67 -79 94 rrcurveto
+ -37 -32 rlineto
+ 68 -95 18 -21 85 -89 rrcurveto
+ closepath
+ endchar
+ } |-
+/arrowleft {
+ 32 987 hsbw
+ 4 906 vstem
+ 220 56 hstem
+ 910 276 rmoveto
+ -795 hlineto
+ 39 38 84 102 48 60 rrcurveto
+ -35 35 rlineto
+ -87 -103 -70 -70 -94 -90 rrcurveto
+ 94 -90 70 -70 87 -103 rrcurveto
+ 35 35 rlineto
+ -48 60 -84 102 -39 38 rrcurveto
+ 795 hlineto
+ closepath
+ endchar
+ } |-
+/arrowup {
+ 45 603 hsbw
+ 0 908 hstem
+ 235 56 vstem
+ 291 hmoveto
+ 795 vlineto
+ 38 -39 102 -84 60 -48 rrcurveto
+ 35 35 rlineto
+ -103 87 -70 70 -90 94 rrcurveto
+ -90 -94 -70 -70 -103 -87 rrcurveto
+ 35 -35 rlineto
+ 60 48 102 84 38 39 rrcurveto
+ -795 vlineto
+ closepath
+ endchar
+ } |-
+/arrowright {
+ 49 987 hsbw
+ 908 -908 vstem
+ 276 -56 hstem
+ 220 vmoveto
+ 795 hlineto
+ -39 -38 -84 -102 -48 -60 rrcurveto
+ 35 -35 rlineto
+ 87 103 70 70 94 90 rrcurveto
+ -94 90 -70 70 -87 103 rrcurveto
+ -35 -35 rlineto
+ 48 -60 84 -102 39 -38 rrcurveto
+ -795 hlineto
+ closepath
+ endchar
+ } |-
+/arrowdown {
+ 45 603 hsbw
+ 888 -908 hstem
+ 291 -56 vstem
+ 235 888 rmoveto
+ -795 vlineto
+ -38 39 -102 84 -60 48 rrcurveto
+ -35 -35 rlineto
+ 103 -87 70 -70 90 -94 rrcurveto
+ 90 94 70 70 103 87 rrcurveto
+ -35 35 rlineto
+ -60 -48 -102 -84 -38 -39 rrcurveto
+ 795 vlineto
+ closepath
+ endchar
+ } |-
+/degree {
+ 50 400 hsbw
+ 260 40 vstem
+ 0 40 vstem
+ 426 -40 hstem
+ 686 -40 hstem
+ 300 535 rmoveto
+ 82 -68 68 -82 vhcurveto
+ -83 0 -68 -68 1 -82 rrcurveto
+ -83 67 -67 83 vhcurveto
+ 82 68 67 83 hvcurveto
+ closepath
+ -40 hmoveto
+ -61 -50 -49 -60 vhcurveto
+ -61 -49 49 61 hvcurveto
+ -1 60 50 50 60 0 rrcurveto
+ 61 50 -50 -60 hvcurveto
+ closepath
+ endchar
+ } |-
+/plusminus {
+ 10 549 hsbw
+ 56 -56 hstem
+ 236 56 vstem
+ 408 -54 hstem
+ 408 vmoveto
+ -55 vlineto
+ 237 hlineto
+ -237 vlineto
+ 55 hlineto
+ 237 vlineto
+ 237 hlineto
+ 55 vlineto
+ -237 hlineto
+ 237 vlineto
+ -55 hlineto
+ -237 vlineto
+ closepath
+ 292 -408 rmoveto
+ 55 vlineto
+ -529 hlineto
+ -55 vlineto
+ closepath
+ endchar
+ } |-
+/second {
+ 20 411 hsbw
+ 478 -18 hstem
+ 734 -128 hstem
+ 92 108 vstem
+ 280 112 vstem
+ 188 656 rmoveto
+ 29 36 -27 24 -16 10 rrcurveto
+ -14 9 -43 6 -17 -38 rrcurveto
+ -99 -219 rlineto
+ -8 -18 31 -17 13 16 rrcurveto
+ closepath
+ 347 201 rmoveto
+ 21 26 -18 22 -22 15 rrcurveto
+ -13 9 -43 9 -16 -36 rrcurveto
+ -100 -225 rlineto
+ -10 -23 30 -10 11 13 rrcurveto
+ closepath
+ endchar
+ } |-
+/greaterequal {
+ 29 549 hsbw
+ 0 55 hstem
+ 429 68 vstem
+ 346 64 hstem
+ 497 55 rmoveto
+ -497 hlineto
+ -55 vlineto
+ 497 hlineto
+ closepath
+ 409 vmoveto
+ 59 callsubr
+ } |-
+/multiply {
+ 17 549 hsbw
+ 220 76 vstem
+ 229 74 hstem
+ 516 487 rmoveto
+ -37 37 rlineto
+ -221 -222 rlineto
+ -221 222 rlineto
+ -37 -37 rlineto
+ 220 -221 rlineto
+ -220 -221 rlineto
+ 37 -37 rlineto
+ 221 222 rlineto
+ 221 -222 rlineto
+ 37 37 rlineto
+ -220 221 rlineto
+ closepath
+ endchar
+ } |-
+/proportional {
+ 27 713 hsbw
+ 294 70 vstem
+ 229 72 hstem
+ 0 50 vstem
+ 126 49 hstem
+ 351 50 hstem
+ 607 372 rmoveto
+ -18 12 -47 38 -78 -28 rrcurveto
+ -43 -16 -28 -23 -64 -56 rrcurveto
+ -70 61 -12 13 -45 17 rrcurveto
+ -123 46 -72 -92 -7 -70 rrcurveto
+ -9 -95 95 -87 116 45 rrcurveto
+ 33 13 57 38 36 44 rrcurveto
+ 39 -37 9 -13 53 -32 rrcurveto
+ 78 -46 69 20 36 35 rrcurveto
+ -32 34 rlineto
+ -21 -11 -29 -33 -82 45 rrcurveto
+ -32 18 -44 35 -9 16 rrcurveto
+ 41 38 23 29 46 16 rrcurveto
+ 49 17 24 -11 33 -18 rrcurveto
+ closepath
+ -390 7 rmoveto
+ 50 -20 43 -45 14 -12 rrcurveto
+ -12 -11 -49 -52 -55 -19 rrcurveto
+ -90 -31 -45 70 4 50 rrcurveto
+ 3 31 36 80 101 -41 rrcurveto
+ closepath
+ endchar
+ } |-
+/partialdiff {
+ 26 494 hsbw
+ 356 80 vstem
+ 0 86 vstem
+ 12 -32 hstem
+ 402 -46 hstem
+ 746 -46 hstem
+ 78 667 rmoveto
+ 59 25 7 12 71 -6 rrcurveto
+ 62 -5 38 -56 12 -28 rrcurveto
+ 13 -32 20 -78 -1 -49 rrcurveto
+ -1 -38 -2 -36 -8 -42 rrcurveto
+ -67 52 -24 14 -59 2 rrcurveto
+ -64 2 -43 -30 -35 -43 rrcurveto
+ -24 -29 -38 -65 7 -81 rrcurveto
+ 6 -75 40 -44 38 -26 rrcurveto
+ 51 -35 75 -11 69 38 rrcurveto
+ 56 31 21 39 27 58 rrcurveto
+ 40 86 12 135 0 41 rrcurveto
+ 0 25 -3 108 -45 80 rrcurveto
+ -48 84 -59 35 -61 15 rrcurveto
+ -67 16 -75 -22 -39 -17 rrcurveto
+ closepath
+ 301 -418 rmoveto
+ -8 -65 -12 -64 -24 -59 rrcurveto
+ -20 -47 -24 -30 -37 -16 rrcurveto
+ -29 -13 -26 0 -28 18 rrcurveto
+ -45 30 -1 66 0 29 rrcurveto
+ 0 51 10 55 40 55 rrcurveto
+ 26 35 33 18 37 1 rrcurveto
+ 61 1 26 -42 21 -23 rrcurveto
+ closepath
+ endchar
+ } |-
+/bullet {
+ 50 460 hsbw
+ 0 360 vstem
+ 113 360 hstem
+ 360 293 rmoveto
+ 99 -81 81 -99 vhcurveto
+ -100 0 -81 -81 1 -99 rrcurveto
+ 0 -100 80 -81 100 1 rrcurveto
+ 99 81 80 100 hvcurveto
+ closepath
+ endchar
+ } |-
+/divide {
+ 10 549 hsbw
+ 71 112 236 55 344 112 hstem3
+ 202 112 vstem
+ 236 vmoveto
+ dotsection
+ 526 hlineto
+ 55 vlineto
+ -526 hlineto
+ closepath
+ dotsection
+ 202 109 rmoveto
+ 46 callsubr
+ -273 vmoveto
+ 46 callsubr
+ endchar
+ } |-
+/notequal {
+ 15 549 hsbw
+ 221 64 vstem
+ 136 55 hstem
+ 330 55 hstem
+ 387 549 rmoveto
+ -91 -164 rlineto
+ -296 hlineto
+ -55 vlineto
+ 265 hlineto
+ -77 -139 rlineto
+ -188 hlineto
+ -55 vlineto
+ 157 hlineto
+ -74 -133 rlineto
+ 49 -28 rlineto
+ 90 161 rlineto
+ 303 hlineto
+ 55 vlineto
+ -273 hlineto
+ 78 139 rlineto
+ 195 hlineto
+ 55 vlineto
+ -165 hlineto
+ 76 136 rlineto
+ closepath
+ endchar
+ } |-
+/equivalence {
+ 14 549 hsbw
+ 82 55 235 55 388 55 hstem3
+ 388 vmoveto
+ 60 callsubr
+ -208 vmoveto
+ 60 callsubr
+ -208 vmoveto
+ 60 callsubr
+ endchar
+ } |-
+/approxequal {
+ 14 549 hsbw
+ 451 61 vstem
+ 2 63 vstem
+ 168 49 hstem
+ 319 49 hstem
+ 476 394 rmoveto
+ 54 callsubr
+ -37 -127 rmoveto
+ 54 callsubr
+ endchar
+ } |-
+/ellipsis {
+ 111 1000 hsbw
+ 666 112 333 112 0 112 vstem3
+ -17 112 hstem
+ 56 -17 rmoveto
+ 52 callsubr
+ 333 hmoveto
+ 52 callsubr
+ 333 hmoveto
+ 52 callsubr
+ endchar
+ } |-
+/arrowvertex {
+ 280 603 hsbw
+ 56 -56 vstem
+ 1010 vmoveto
+ -1130 vlineto
+ 56 hlineto
+ 1130 vlineto
+ closepath
+ endchar
+ } |-
+/arrowhorizex {
+ -60 1000 hsbw
+ 276 -56 hstem
+ 220 vmoveto
+ 1110 hlineto
+ 56 vlineto
+ -1110 hlineto
+ closepath
+ endchar
+ } |-
+/carriagereturn {
+ 15 658 hsbw
+ 0 587 vstem
+ 68 55 hstem
+ 532 55 vstem
+ 532 629 rmoveto
+ -506 vlineto
+ -366 hlineto
+ 84 vlineto
+ -166 -111 rlineto
+ 166 -112 rlineto
+ 84 vlineto
+ 421 hlineto
+ 561 vlineto
+ closepath
+ endchar
+ } |-
+/aleph {
+ 175 823 hsbw
+ -1 118 vstem
+ 604 -134 hstem
+ 273 212 vstem
+ 38 -38 hstem
+ 113 562 rmoveto
+ -22 27 -14 25 -12 37 rrcurveto
+ -13 -11 -27 -15 -14 -36 rrcurveto
+ -11 -28 2 -42 18 -21 rrcurveto
+ 90 -108 rlineto
+ -44 -44 -21 -18 -16 -27 rrcurveto
+ -20 -34 -6 -15 -3 -32 rrcurveto
+ -4 -46 39 -49 20 -47 rrcurveto
+ 6 -14 -1 -20 -30 -4 rrcurveto
+ -26 -3 rlineto
+ -37 vlineto
+ 175 hlineto
+ 11 53 rlineto
+ 7 33 -28 41 -9 14 rrcurveto
+ -53 83 rlineto
+ -24 37 13 46 11 13 rrcurveto
+ 32 37 rlineto
+ 193 -225 rlineto
+ 39 -45 48 -59 12 -46 rrcurveto
+ 16 14 19 11 13 49 rrcurveto
+ 6 24 -5 20 -5 12 rrcurveto
+ -12 31 -18 18 -19 23 rrcurveto
+ -50 61 rlineto
+ -30 37 15 53 6 15 rrcurveto
+ 24 64 18 18 6 8 rrcurveto
+ 29 40 24 -18 15 -5 rrcurveto
+ 3 85 rlineto
+ -5 35 -23 23 -33 1 rrcurveto
+ -55 2 rlineto
+ -55 2 13 39 1 14 rrcurveto
+ -28 -15 -10 4 -10 -38 rrcurveto
+ -9 -35 -2 -37 8 -24 rrcurveto
+ 18 -54 54 10 30 0 rrcurveto
+ -47 -69 -6 -18 -23 -62 rrcurveto
+ closepath
+ endchar
+ } |-
+/Ifraktur {
+ 10 686 hsbw
+ -53 83 hstem
+ 64 72 hstem
+ 352 23 hstem
+ 652 88 hstem
+ 49 37 vstem
+ 366 72 vstem
+ 493 75 vstem
+ 555 654 rmoveto
+ -53 30 -35 15 -64 20 rrcurveto
+ -38 12 -39 9 -35 0 rrcurveto
+ -26 0 -50 -3 -42 -19 rrcurveto
+ -41 -18 -32 -25 -18 -29 rrcurveto
+ -20 -31 -21 -38 8 -65 rrcurveto
+ 8 -59 23 -31 28 -23 rrcurveto
+ 53 -44 51 2 33 -5 rrcurveto
+ 2 23 rlineto
+ -68 13 -14 3 -36 34 rrcurveto
+ -31 29 -12 35 0 33 rrcurveto
+ 0 30 7 29 27 25 rrcurveto
+ 43 40 56 14 75 -12 rrcurveto
+ 48 -8 87 -36 31 -15 rrcurveto
+ -71 -85 rlineto
+ -36 -43 10 -61 26 -47 rrcurveto
+ 87 -157 rlineto
+ 5 -9 20 -48 -11 -39 rrcurveto
+ -13 -46 -44 -14 -27 -7 rrcurveto
+ -31 -8 -21 6 -28 15 rrcurveto
+ -140 75 rlineto
+ -29 15 -19 11 -51 -31 rrcurveto
+ -87 -53 rlineto
+ 16 -19 rlineto
+ 52 24 11 5 49 -27 rrcurveto
+ 157 -86 rlineto
+ 47 -26 20 18 24 14 rrcurveto
+ 17 10 107 64 38 50 rrcurveto
+ 36 47 1 66 -19 37 rrcurveto
+ -38 74 -43 72 -33 76 rrcurveto
+ -7 16 -3 36 28 32 rrcurveto
+ closepath
+ endchar
+ } |-
+/Rfraktur {
+ 26 795 hsbw
+ 6 -21 hstem
+ 73 11 hstem
+ 676 58 hstem
+ 0 35 vstem
+ 180 49 vstem
+ 316 92 vstem
+ 728 584 rmoveto
+ -161 140 rlineto
+ -21 19 -20 -15 -14 -10 rrcurveto
+ -131 -95 rlineto
+ -26 41 -5 24 -48 25 rrcurveto
+ -87 46 -107 -41 -34 -24 rrcurveto
+ -52 -38 -26 -82 4 -56 rrcurveto
+ 2 -31 13 -40 36 -30 rrcurveto
+ 29 -24 37 -12 37 -21 rrcurveto
+ 48 -28 -32 -20 -9 -11 rrcurveto
+ 23 -16 rlineto
+ 36 52 rlineto
+ 15 21 1 42 -55 28 rrcurveto
+ -95 49 rlineto
+ -20 10 -14 19 -9 18 rrcurveto
+ -22 47 26 44 20 22 rrcurveto
+ 49 53 97 -3 45 -47 rrcurveto
+ 42 -44 3 -54 6 -41 rrcurveto
+ 10 -70 -1 -119 -8 -74 rrcurveto
+ -10 -101 -41 -57 -11 -16 rrcurveto
+ -78 55 rlineto
+ -19 14 -9 -15 -28 -24 rrcurveto
+ -70 -61 rlineto
+ 19 -15 rlineto
+ 17 12 17 8 16 -1 rrcurveto
+ 19 -1 12 -10 14 -11 rrcurveto
+ 38 -30 rlineto
+ 24 11 87 67 46 61 rrcurveto
+ 55 72 -3 53 3 43 rrcurveto
+ 4 65 0 110 -20 128 rrcurveto
+ 63 41 rlineto
+ 29 19 28 -1 34 -31 rrcurveto
+ 81 -75 rlineto
+ -193 -134 rlineto
+ 11 -20 rlineto
+ 31 1 14 -10 13 -36 rrcurveto
+ 10 -29 10 -44 10 -93 rrcurveto
+ 4 -35 3 -38 13 -40 rrcurveto
+ 18 -56 28 -17 24 -12 rrcurveto
+ 110 88 rlineto
+ -15 23 rlineto
+ -21 -8 -38 -22 -10 51 rrcurveto
+ -11 73 -18 106 -19 58 rrcurveto
+ -14 40 -19 33 -22 28 rrcurveto
+ closepath
+ endchar
+ } |-
+/weierstrass {
+ 159 987 hsbw
+ 206 -84 hstem
+ 289 38 vstem
+ 169 76 vstem
+ -1 38 vstem
+ -176 -34 hstem
+ 26 -38 hstem
+ 607 104 vstem
+ 502 -50 hstem
+ 314 573 rmoveto
+ -45 -28 -70 -40 -56 -66 rrcurveto
+ -24 -28 -37 -46 -19 -76 rrcurveto
+ -20 -82 29 -40 17 -43 rrcurveto
+ -26 -46 -36 -43 -18 -49 rrcurveto
+ -9 -25 -5 -52 10 -32 rrcurveto
+ 14 -47 34 -39 71 -2 rrcurveto
+ 55 -1 43 56 11 24 rrcurveto
+ 29 62 -21 101 -15 34 rrcurveto
+ -50 115 rlineto
+ 84 102 106 122 126 47 rrcurveto
+ 18 7 46 13 26 -26 rrcurveto
+ 29 -29 -4 -65 -2 -25 rrcurveto
+ -5 -56 -30 -89 -47 -67 rrcurveto
+ -19 -27 -26 -29 -27 -16 rrcurveto
+ -45 -27 -32 6 -22 12 rrcurveto
+ -31 17 3 27 5 21 rrcurveto
+ 5 23 12 -5 12 4 rrcurveto
+ 17 6 24 2 1 39 rrcurveto
+ 1 23 -19 16 -26 -1 rrcurveto
+ -50 -3 -9 -39 -6 -30 rrcurveto
+ -6 -33 2 -26 19 -34 rrcurveto
+ 14 -25 11 -11 43 -12 rrcurveto
+ 24 -7 47 2 43 16 rrcurveto
+ 67 25 51 70 14 17 rrcurveto
+ 57 71 27 88 5 32 rrcurveto
+ 6 38 -4 58 -28 44 rrcurveto
+ -28 43 -47 10 -33 2 rrcurveto
+ -52 3 -97 -39 -67 -51 rrcurveto
+ -74 -56 -74 -96 -48 -52 rrcurveto
+ -14 79 rlineto
+ -13 70 64 89 14 17 rrcurveto
+ 32 39 14 6 63 47 rrcurveto
+ closepath
+ -219 -463 rmoveto
+ 36 -73 rlineto
+ 27 -55 7 -52 -2 -19 rrcurveto
+ -1 -11 3 -20 -22 -24 rrcurveto
+ -11 -12 -36 -24 -35 38 rrcurveto
+ -21 22 -12 31 1 33 rrcurveto
+ 1 35 15 48 30 50 rrcurveto
+ closepath
+ endchar
+ } |-
+/circlemultiply {
+ 43 768 hsbw
+ 637 53 vstem
+ 0 53 vstem
+ -17 53 hstem
+ 620 53 hstem
+ 150 484 rmoveto
+ 156 -156 rlineto
+ -156 -156 rlineto
+ 39 -39 rlineto
+ 156 157 rlineto
+ 156 -156 rlineto
+ 39 38 rlineto
+ -156 156 rlineto
+ 156 156 rlineto
+ -39 38 rlineto
+ -156 -156 rlineto
+ -156 157 rlineto
+ closepath
+ -189 -195 rmoveto
+ 47 callsubr
+ 53 hmoveto
+ 56 callsubr
+ endchar
+ } |-
+/circleplus {
+ 43 768 hsbw
+ 636 53 vstem
+ 0 53 vstem
+ -15 53 hstem
+ 622 53 hstem
+ 318 54 vstem
+ 303 54 hstem
+ 318 577 rmoveto
+ -220 vlineto
+ -221 hlineto
+ -54 vlineto
+ 221 hlineto
+ -223 vlineto
+ 54 hlineto
+ 223 vlineto
+ 223 hlineto
+ 54 vlineto
+ -223 hlineto
+ 220 vlineto
+ closepath
+ -319 -247 rmoveto
+ 56 callsubr
+ -53 hmoveto
+ 47 callsubr
+ endchar
+ } |-
+/emptyset {
+ 39 823 hsbw
+ 687 55 vstem
+ 8 55 vstem
+ -17 55 hstem
+ 662 55 hstem
+ 611 554 rmoveto
+ 47 -54 29 -71 0 -79 rrcurveto
+ -172 -140 -140 -172 vhcurveto
+ -79 0 -71 29 -52 45 rrcurveto
+ closepath
+ -37 38 rmoveto
+ -46 55 -27 69 0 76 rrcurveto
+ 172 140 140 172 vhcurveto
+ 76 0 69 -27 55 -46 rrcurveto
+ closepath
+ 130 130 rmoveto
+ -90 -91 rlineto
+ -64 55 -84 34 -92 0 rrcurveto
+ -203 -164 -164 -203 hvcurveto
+ 0 -91 33 -84 56 -64 rrcurveto
+ -97 -98 rlineto
+ 37 -37 rlineto
+ 97 98 rlineto
+ 63 -56 85 -35 93 0 rrcurveto
+ 203 164 164 203 hvcurveto
+ 0 93 -34 85 -58 65 rrcurveto
+ 91 91 rlineto
+ closepath
+ endchar
+ } |-
+/intersection {
+ 40 768 hsbw
+ 0 18 hstem
+ 637 55 vstem
+ 0 55 vstem
+ 454 55 hstem
+ 692 hmoveto
+ 180 vlineto
+ 173 -155 156 -191 vhcurveto
+ -191 -155 -156 -173 hvcurveto
+ -180 vlineto
+ 55 hlineto
+ 190 vlineto
+ 148 143 116 148 vhcurveto
+ 148 143 -116 -148 hvcurveto
+ -190 vlineto
+ closepath
+ endchar
+ } |-
+/union {
+ 40 768 hsbw
+ -17 55 hstem
+ 637 55 vstem
+ 0 55 vstem
+ 637 492 rmoveto
+ -190 vlineto
+ -148 -143 -116 -148 vhcurveto
+ -148 -143 116 148 hvcurveto
+ 190 vlineto
+ -55 hlineto
+ -180 vlineto
+ -173 155 -156 191 vhcurveto
+ 191 155 156 173 hvcurveto
+ 180 vlineto
+ closepath
+ endchar
+ } |-
+/propersuperset {
+ 20 713 hsbw
+ 596 57 vstem
+ 0 55 hstem
+ 415 55 hstem
+ 0 hmoveto
+ 414 hlineto
+ 156 83 130 109 hvcurveto
+ 133 -114 98 -121 vhcurveto
+ -418 hlineto
+ -55 vlineto
+ 415 hlineto
+ 124 -2 60 -98 -2 -81 rrcurveto
+ -2 -108 -84 -71 -98 0 rrcurveto
+ -413 hlineto
+ closepath
+ endchar
+ } |-
+/reflexsuperset {
+ 20 713 hsbw
+ -70 -54 hstem
+ 56 -56 hstem
+ 596 56 vstem
+ 470 -54 hstem
+ 415 vmoveto
+ 413 hlineto
+ 121 63 -71 -109 hvcurveto
+ -109 -63 -71 -121 vhcurveto
+ -413 hlineto
+ -55 vlineto
+ 414 hlineto
+ 162 77 126 109 hvcurveto
+ 109 -77 126 -162 vhcurveto
+ -414 hlineto
+ closepath
+ -595 vmoveto
+ 637 hlineto
+ 55 vlineto
+ -637 hlineto
+ closepath
+ endchar
+ } |-
+/notsubset {
+ 36 713 hsbw
+ 363 60 vstem
+ 0 57 vstem
+ 0 55 hstem
+ 414 55 hstem
+ 519 540 rmoveto
+ -36 -71 rlineto
+ -256 hlineto
+ -87 -140 -85 -151 hvcurveto
+ 0 -84 43 -56 29 -28 rrcurveto
+ 58 -56 31 -1 78 -9 rrcurveto
+ -36 -69 rlineto
+ 60 hlineto
+ 36 70 rlineto
+ 355 hlineto
+ 55 vlineto
+ -326 hlineto
+ 186 359 rlineto
+ 140 hlineto
+ 55 vlineto
+ -112 hlineto
+ 37 71 rlineto
+ closepath
+ -125 -126 rmoveto
+ -187 -360 rlineto
+ -118 -16 -105 95 13 118 rrcurveto
+ 8 73 61 90 106 0 rrcurveto
+ closepath
+ endchar
+ } |-
+/propersubset {
+ 37 713 hsbw
+ 0 57 vstem
+ 0 55 hstem
+ 415 55 hstem
+ 653 470 rmoveto
+ -414 hlineto
+ -156 -83 -130 -109 hvcurveto
+ -133 114 -98 121 vhcurveto
+ 418 hlineto
+ 55 vlineto
+ -415 hlineto
+ -124 2 -60 98 2 81 rrcurveto
+ 2 108 84 71 98 0 rrcurveto
+ 413 hlineto
+ closepath
+ endchar
+ } |-
+/reflexsubset {
+ 37 713 hsbw
+ -1 56 vstem
+ -70 -54 hstem
+ 56 -56 hstem
+ 470 -54 hstem
+ 653 470 rmoveto
+ -414 hlineto
+ -162 -77 -126 -109 hvcurveto
+ -109 77 -126 162 vhcurveto
+ 414 hlineto
+ 55 vlineto
+ -413 hlineto
+ -121 -63 71 109 hvcurveto
+ 109 63 71 121 vhcurveto
+ 413 hlineto
+ closepath
+ -633 -485 rmoveto
+ -55 vlineto
+ 633 hlineto
+ 55 vlineto
+ closepath
+ endchar
+ } |-
+/element {
+ 45 713 hsbw
+ 57 -55 vstem
+ 54 -54 261 -54 468 -54 hstem3
+ 460 261 rmoveto
+ -404 hlineto
+ 9 45 16 35 29 27 rrcurveto
+ 35 33 36 13 42 0 rrcurveto
+ 237 hlineto
+ 54 vlineto
+ -237 hlineto
+ -99 0 -60 -66 -28 -40 rrcurveto
+ -24 -33 -12 -45 0 -50 rrcurveto
+ 0 -50 12 -45 24 -33 rrcurveto
+ 28 -40 60 -66 99 0 rrcurveto
+ 237 hlineto
+ 54 vlineto
+ -237 hlineto
+ -42 0 -36 13 -35 33 rrcurveto
+ -29 27 -16 35 -9 45 rrcurveto
+ 404 hlineto
+ closepath
+ endchar
+ } |-
+/notelement {
+ 45 713 hsbw
+ 55 -53 vstem
+ 54 -54 261 -54 468 -54 hstem3
+ 460 261 rmoveto
+ -186 hlineto
+ 87 153 rlineto
+ 99 hlineto
+ 54 vlineto
+ -68 hlineto
+ 35 62 rlineto
+ -46 25 rlineto
+ -49 -87 rlineto
+ -116 hlineto
+ -45 0 -95 -30 -54 -105 rrcurveto
+ -29 -56 0 -79 27 -60 rrcurveto
+ 13 -29 26 -32 34 -32 rrcurveto
+ -44 -78 rlineto
+ 44 -25 rlineto
+ 45 77 rlineto
+ 15 -11 30 -8 22 0 rrcurveto
+ 255 hlineto
+ 54 vlineto
+ -245 hlineto
+ -12 0 -24 2 -15 10 rrcurveto
+ 80 141 rlineto
+ 216 hlineto
+ closepath
+ -157 209 rmoveto
+ -89 -155 rlineto
+ -159 hlineto
+ 2 38 22 38 28 28 rrcurveto
+ 29 28 37 23 37 0 rrcurveto
+ closepath
+ -89 -322 rmoveto
+ -38 31 -18 36 -8 46 rrcurveto
+ 128 hlineto
+ closepath
+ endchar
+ } |-
+/angle {
+ 26 768 hsbw
+ 331 79 vstem
+ 0 55 hstem
+ 671 673 rmoveto
+ -671 -673 rlineto
+ 678 hlineto
+ 55 vlineto
+ -544 hlineto
+ 578 581 rlineto
+ closepath
+ endchar
+ } |-
+/gradient {
+ 36 713 hsbw
+ 457 47 vstem
+ 667 51 hstem
+ 645 718 rmoveto
+ -645 hlineto
+ 301 -737 rlineto
+ closepath
+ 40 181 rmoveto
+ -208 505 rlineto
+ 439 hlineto
+ closepath
+ endchar
+ } |-
+/registerserif {
+ 50 790 hsbw
+ -17 40 hstem
+ 155 18 hstem
+ 332 23 hstem
+ 517 18 hstem
+ 633 40 hstem
+ 0 40 vstem
+ 229 64 vstem
+ 424 68 vstem
+ 650 40 vstem
+ 690 328 rmoveto
+ 49 callsubr
+ -357 4 rmoveto
+ 26 hlineto
+ 133 -177 rlineto
+ 95 hlineto
+ 18 vlineto
+ -13 0 -12 0 -11 14 rrcurveto
+ -120 154 rlineto
+ 34 1 25 18 11 9 rrcurveto
+ 22 19 24 51 -26 46 rrcurveto
+ -12 21 -24 13 -16 6 rrcurveto
+ -23 9 -28 1 -26 0 rrcurveto
+ -167 hlineto
+ -18 vlineto
+ 40 4 -1 -29 hvcurveto
+ -288 vlineto
+ -19 -26 -7 -23 vhcurveto
+ -18 vlineto
+ 160 hlineto
+ 18 vlineto
+ -22 -25 5 24 hvcurveto
+ closepath
+ 287 vmoveto
+ 17 10 5 10 vhcurveto
+ 53 hlineto
+ 16 0 37 -12 5 -53 rrcurveto
+ 5 -40 -19 -29 -45 -14 rrcurveto
+ -26 -9 -25 2 -21 -1 rrcurveto
+ closepath
+ endchar
+ } |-
+/copyrightserif {
+ 51 790 hsbw
+ 650 40 vstem
+ 476 21 vstem
+ 160 63 vstem
+ 0 40 vstem
+ -15 40 hstem
+ 129 38 hstem
+ 492 28 hstem
+ 635 40 hstem
+ 474 518 rmoveto
+ -3 -14 -15 -5 -18 4 rrcurveto
+ -39 9 -77 34 -86 -62 rrcurveto
+ -121 -87 23 -221 149 -39 rrcurveto
+ 125 -33 59 69 28 29 rrcurveto
+ -11 18 rlineto
+ -12 -10 rlineto
+ -45 -37 -29 -9 -62 3 rrcurveto
+ -121 5 -31 181 75 94 rrcurveto
+ 35 45 56 14 55 -23 rrcurveto
+ 43 -19 21 -50 4 -24 rrcurveto
+ 20 hlineto
+ -4 128 rlineto
+ closepath
+ -493 -188 rmoveto
+ 55 callsubr
+ } |-
+/trademarkserif {
+ 18 890 hsbw
+ 0 18 vstem
+ 305 18 vstem
+ 575 20 vstem
+ 728 59 vstem
+ 405 27 vstem
+ 132 59 vstem
+ 293 18 hstem
+ 655 18 hstem
+ 3 673 rmoveto
+ -3 -97 rlineto
+ 18 -1 rlineto
+ -2 44 23 29 56 2 rrcurveto
+ 37 1 rlineto
+ -312 vlineto
+ -23 -20 -5 -31 vhcurveto
+ -18 vlineto
+ 160 hlineto
+ 18 vlineto
+ -31 -19 5 23 hvcurveto
+ 312 vlineto
+ 37 -1 rlineto
+ 56 -2 23 -29 -2 -44 rrcurveto
+ 18 1 rlineto
+ -3 97 rlineto
+ closepath
+ 32 hmoveto
+ -18 vlineto
+ 32 21 3 -38 hvcurveto
+ -281 vlineto
+ -23 -20 -5 -31 vhcurveto
+ -18 vlineto
+ 129 hlineto
+ 18 vlineto
+ -31 -20 5 23 hvcurveto
+ 261 vlineto
+ 144 -307 rlineto
+ 18 hlineto
+ 134 323 rlineto
+ -277 vlineto
+ -23 -20 -5 -31 vhcurveto
+ -18 vlineto
+ 160 hlineto
+ 18 vlineto
+ -31 -19 5 23 hvcurveto
+ 291 vlineto
+ 27 28 -2 21 vhcurveto
+ 18 vlineto
+ -112 hlineto
+ -126 -288 rlineto
+ -132 288 rlineto
+ closepath
+ endchar
+ } |-
+/product {
+ 25 823 hsbw
+ 43 callsubr
+ 568 113 vstem
+ 681 629 rmoveto
+ 93 66 6 28 vhcurveto
+ 42 1 3 callothersubr
+ pop
+ callsubr
+ 23 vlineto
+ -773 hlineto
+ 43 1 3 callothersubr
+ pop
+ callsubr
+ -23 vlineto
+ 28 67 -6 -93 hvcurveto
+ -626 vlineto
+ -70 -37 -11 -60 vhcurveto
+ -23 vlineto
+ 307 hlineto
+ 23 vlineto
+ -59 -38 11 70 hvcurveto
+ 44 1 3 callothersubr
+ pop
+ callsubr
+ 693 vlineto
+ 358 hlineto
+ -693 vlineto
+ -70 -38 -11 -58 vhcurveto
+ -23 vlineto
+ 306 hlineto
+ 23 vlineto
+ -59 -38 11 70 hvcurveto
+ closepath
+ endchar
+ } |-
+/radical {
+ 10 549 hsbw
+ -36 18 hstem
+ 382 37 vstem
+ 160 63 vstem
+ 16 417 rmoveto
+ 96 47 rlineto
+ 243 -502 rlineto
+ 150 950 rlineto
+ -35 5 rlineto
+ -127 -798 rlineto
+ -197 403 rlineto
+ -146 -72 rlineto
+ closepath
+ endchar
+ } |-
+/dotmath {
+ 69 250 hsbw
+ 0 100 vstem
+ 210 100 hstem
+ 100 260 rmoveto
+ 27 -23 23 -27 vhcurveto
+ -28 -22 -23 -27 hvcurveto
+ -28 22 -22 28 vhcurveto
+ 27 23 22 28 hvcurveto
+ closepath
+ endchar
+ } |-
+/logicalnot {
+ 15 713 hsbw
+ 610 55 vstem
+ 233 55 hstem
+ 233 vmoveto
+ 610 hlineto
+ -233 vlineto
+ 55 hlineto
+ 288 vlineto
+ -665 hlineto
+ closepath
+ endchar
+ } |-
+/logicaland {
+ 23 603 hsbw
+ 221 118 vstem
+ 348 104 hstem
+ 560 hmoveto
+ -280 454 rlineto
+ -280 -454 rlineto
+ 65 hlineto
+ 215 350 rlineto
+ 215 -350 rlineto
+ closepath
+ endchar
+ } |-
+/logicalor {
+ 30 603 hsbw
+ 218 112 vstem
+ 3 102 hstem
+ 448 vmoveto
+ 274 -448 rlineto
+ 274 448 rlineto
+ -44 29 rlineto
+ -230 -375 rlineto
+ -230 375 rlineto
+ closepath
+ endchar
+ } |-
+/arrowdblboth {
+ 27 1042 hsbw
+ 910 85 vstem
+ 1 86 vstem
+ 109 50 hstem
+ 331 50 hstem
+ 214 381 rmoveto
+ 76 95 rlineto
+ -40 34 rlineto
+ -98 -117 -36 -42 -116 -106 rrcurveto
+ 116 -106 36 -42 98 -117 rrcurveto
+ 40 34 rlineto
+ -76 95 rlineto
+ 568 hlineto
+ -76 -95 rlineto
+ 40 -34 rlineto
+ 98 117 36 42 116 106 rrcurveto
+ -116 106 -36 42 -98 117 rrcurveto
+ -40 -34 rlineto
+ 76 -95 rlineto
+ closepath
+ -612 -222 rmoveto
+ -84 86 rlineto
+ 84 86 rlineto
+ 657 hlineto
+ 84 -86 rlineto
+ -84 -86 rlineto
+ closepath
+ endchar
+ } |-
+/arrowdblleft {
+ 30 987 hsbw
+ 1 84 vstem
+ 116 53 hstem
+ 329 53 hstem
+ 909 382 rmoveto
+ -696 hlineto
+ 77 98 rlineto
+ -41 33 rlineto
+ -90 -111 -41 -42 -118 -111 rrcurveto
+ 118 -111 41 -42 90 -111 rrcurveto
+ 41 33 rlineto
+ -77 98 rlineto
+ 696 hlineto
+ 53 vlineto
+ -744 hlineto
+ -81 80 rlineto
+ 81 80 rlineto
+ 744 hlineto
+ closepath
+ endchar
+ } |-
+/arrowdblup {
+ 39 603 hsbw
+ 344 53 vstem
+ 131 53 vstem
+ 826 84 hstem
+ 33 621 rmoveto
+ 98 77 rlineto
+ -696 vlineto
+ 53 hlineto
+ 744 vlineto
+ 80 81 rlineto
+ 80 -81 rlineto
+ -744 vlineto
+ 53 hlineto
+ 696 vlineto
+ 98 -77 rlineto
+ 33 41 rlineto
+ -111 90 -42 41 -111 118 rrcurveto
+ -111 -118 -42 -41 -111 -90 rrcurveto
+ closepath
+ endchar
+ } |-
+/arrowdblright {
+ 45 987 hsbw
+ 825 84 vstem
+ 111 53 hstem
+ 324 53 hstem
+ 660 -20 rmoveto
+ 90 111 41 42 118 111 rrcurveto
+ -118 111 -41 42 -90 111 rrcurveto
+ -41 -33 rlineto
+ 77 -98 rlineto
+ -696 hlineto
+ -53 vlineto
+ 744 hlineto
+ 81 -80 rlineto
+ -81 -80 rlineto
+ -744 hlineto
+ -53 vlineto
+ 696 hlineto
+ -77 -98 rlineto
+ closepath
+ endchar
+ } |-
+/arrowdbldown {
+ 44 603 hsbw
+ 344 53 vstem
+ 131 53 vstem
+ -17 84 hstem
+ 495 271 rmoveto
+ -98 -77 rlineto
+ 696 vlineto
+ -53 hlineto
+ -744 vlineto
+ -80 -81 rlineto
+ -80 81 rlineto
+ 744 vlineto
+ -53 hlineto
+ -696 vlineto
+ -98 77 rlineto
+ -33 -41 rlineto
+ 111 -90 42 -41 111 -118 rrcurveto
+ 111 118 42 41 111 90 rrcurveto
+ closepath
+ endchar
+ } |-
+/lozenge {
+ 18 494 hsbw
+ 0 58 hstem
+ 387 60 vstem
+ 2 60 vstem
+ 691 54 hstem
+ 254 hmoveto
+ 194 377 rlineto
+ -194 368 rlineto
+ -60 hlineto
+ -194 -368 rlineto
+ 194 -377 rlineto
+ closepath
+ 194 377 rmoveto
+ -164 -323 rlineto
+ -164 323 rlineto
+ 164 314 rlineto
+ closepath
+ endchar
+ } |-
+/angleleft {
+ 25 329 hsbw
+ 251 46 hstem
+ 0 63 vstem
+ 281 721 rmoveto
+ -51 25 rlineto
+ -230 -472 rlineto
+ 230 -472 rlineto
+ 51 25 rlineto
+ -218 447 rlineto
+ closepath
+ endchar
+ } |-
+/registersans {
+ 50 790 hsbw
+ 650 40 vstem
+ 455 52 vstem
+ 216 49 vstem
+ 0 40 vstem
+ 308 43 hstem
+ 482 43 hstem
+ -20 40 hstem
+ 630 40 hstem
+ 690 325 rmoveto
+ 49 callsubr
+ -434 -180 rmoveto
+ 49 hlineto
+ 163 vlineto
+ 125 hlineto
+ 79 0 -22 -70 8 -45 rrcurveto
+ 8 -48 rlineto
+ 58 hlineto
+ -21 33 7 8 -4 50 rrcurveto
+ -6 66 -1 6 -39 25 rrcurveto
+ 37 28 15 18 -2 49 rrcurveto
+ -5 86 -57 11 -59 0 rrcurveto
+ -170 hlineto
+ closepath
+ 171 -43 rmoveto
+ 30 0 47 -8 -7 -65 rrcurveto
+ -5 -49 -32 -9 -33 0 rrcurveto
+ -122 hlineto
+ 131 vlineto
+ closepath
+ endchar
+ } |-
+/copyrightsans {
+ 49 790 hsbw
+ 649 40 vstem
+ 457 50 vstem
+ 177 50 vstem
+ -1 40 vstem
+ 26 -40 hstem
+ 170 -44 hstem
+ 526 -42 hstem
+ 676 -40 hstem
+ 508 404 rmoveto
+ -5 26 -8 32 -35 30 rrcurveto
+ -54 45 -105 2 -58 -49 rrcurveto
+ -83 -70 0 -165 59 -72 rrcurveto
+ 69 -82 119 14 53 55 rrcurveto
+ 48 49 1 35 1 20 rrcurveto
+ -47 hlineto
+ -2 -28 -16 -26 -24 -22 rrcurveto
+ -43 -42 -76 8 -38 44 rrcurveto
+ -61 72 26 121 31 38 rrcurveto
+ 65 82 124 -45 8 -72 rrcurveto
+ closepath
+ -457 -74 rmoveto
+ 55 callsubr
+ } |-
+/trademarksans {
+ 5 786 hsbw
+ 293 18 hstem
+ 671 49 vstem
+ 362 49 vstem
+ 125 49 vstem
+ 630 43 hstem
+ 174 293 rmoveto
+ 337 vlineto
+ 125 hlineto
+ 43 vlineto
+ -299 hlineto
+ -43 vlineto
+ 125 hlineto
+ -337 vlineto
+ closepath
+ 441 hmoveto
+ 105 309 rlineto
+ -309 vlineto
+ 49 hlineto
+ 380 vlineto
+ -71 hlineto
+ -108 -323 rlineto
+ -108 323 rlineto
+ -71 hlineto
+ -380 vlineto
+ 49 hlineto
+ 309 vlineto
+ 105 -309 rlineto
+ closepath
+ endchar
+ } |-
+/summation {
+ 14 713 hsbw
+ 655 25 vstem
+ -97 100 hstem
+ 700 45 hstem
+ 603 745 rmoveto
+ -497 hlineto
+ -34 0 -36 5 -34 2 rrcurveto
+ 347 -454 rlineto
+ -349 -398 rlineto
+ 20 0 18 3 20 0 rrcurveto
+ 503 hlineto
+ 25 0 26 -7 26 -4 rrcurveto
+ 13 102 5 20 25 102 rrcurveto
+ -23 hlineto
+ -35 -89 -22 -24 -78 0 rrcurveto
+ -371 hlineto
+ 294 339 rlineto
+ -273 358 rlineto
+ 263 hlineto
+ 128 0 5 -49 20 -65 rrcurveto
+ 20 hlineto
+ closepath
+ endchar
+ } |-
+/parenlefttp {
+ 40 384 hsbw
+ 924 -16 hstem
+ 0 52 vstem
+ 52 -293 rmoveto
+ 425 vlineto
+ 0 159 37 190 43 103 rrcurveto
+ 72 171 82 90 110 71 rrcurveto
+ -13 10 rlineto
+ -97 -50 -108 -62 -94 -210 rrcurveto
+ -57 -127 -27 -155 0 -193 rrcurveto
+ -422 vlineto
+ closepath
+ endchar
+ } |-
+/parenleftex {
+ 40 384 hsbw
+ 52 -52 vstem
+ 925 vmoveto
+ -1010 vlineto
+ 52 hlineto
+ 1010 vlineto
+ closepath
+ endchar
+ } |-
+/parenleftbt {
+ 40 384 hsbw
+ -274 -16 hstem
+ 0 52 vstem
+ 926 vmoveto
+ -422 vlineto
+ 0 -193 27 -155 57 -127 rrcurveto
+ 94 -210 108 -62 97 -50 rrcurveto
+ 13 10 rlineto
+ -110 71 -82 90 -72 171 rrcurveto
+ -43 103 -37 190 0 159 rrcurveto
+ 425 vlineto
+ closepath
+ endchar
+ } |-
+/bracketlefttp {
+ 0 384 hsbw
+ 0 55 vstem
+ 871 55 hstem
+ 341 926 rmoveto
+ -341 hlineto
+ -1006 vlineto
+ 55 hlineto
+ 951 vlineto
+ 286 hlineto
+ closepath
+ endchar
+ } |-
+/bracketleftex {
+ 0 384 hsbw
+ 55 -55 vstem
+ -79 vmoveto
+ 55 hlineto
+ 1004 vlineto
+ -55 hlineto
+ closepath
+ endchar
+ } |-
+/bracketleftbt {
+ 0 384 hsbw
+ -80 55 hstem
+ 0 55 vstem
+ 926 vmoveto
+ -1006 vlineto
+ 340 hlineto
+ 55 vlineto
+ -285 hlineto
+ 951 vlineto
+ closepath
+ endchar
+ } |-
+/bracelefttp {
+ 201 494 hsbw
+ 926 -24 hstem
+ 54 -54 vstem
+ 54 -75 rmoveto
+ 685 vlineto
+ 0 78 7 69 27 43 rrcurveto
+ 41 66 62 25 47 12 rrcurveto
+ 23 vlineto
+ -101 -17 -59 -30 -37 -60 rrcurveto
+ -38 -61 -3 -70 0 -78 rrcurveto
+ -685 vlineto
+ closepath
+ endchar
+ } |-
+/braceleftmid {
+ 14 494 hsbw
+ 447 -39 hstem
+ 241 -54 vstem
+ 409 vmoveto
+ 57 -14 58 -29 35 -56 rrcurveto
+ 20 -31 17 -66 0 -46 rrcurveto
+ -252 vlineto
+ 54 hlineto
+ 238 vlineto
+ 0 111 -34 53 -25 28 rrcurveto
+ -43 48 -14 5 -91 29 rrcurveto
+ 91 29 14 5 43 48 rrcurveto
+ 25 28 34 53 0 111 rrcurveto
+ 234 vlineto
+ -54 hlineto
+ -248 vlineto
+ 0 -46 -17 -66 -20 -31 rrcurveto
+ -35 -56 -58 -29 -57 -14 rrcurveto
+ closepath
+ endchar
+ } |-
+/braceleftbt {
+ 201 494 hsbw
+ -70 996 hstem
+ 0 54 vstem
+ 926 vmoveto
+ -680 vlineto
+ 0 -78 3 -70 38 -61 rrcurveto
+ 37 -60 59 -30 101 -17 rrcurveto
+ 23 vlineto
+ -47 12 -62 25 -41 66 rrcurveto
+ -27 43 -7 69 0 78 rrcurveto
+ 680 vlineto
+ closepath
+ endchar
+ } |-
+/braceex {
+ 201 494 hsbw
+ 54 -54 vstem
+ -80 vmoveto
+ 54 hlineto
+ 1015 vlineto
+ -54 hlineto
+ closepath
+ endchar
+ } |-
+/angleright {
+ 21 329 hsbw
+ 245 58 hstem
+ 218 63 vstem
+ 281 274 rmoveto
+ -230 472 rlineto
+ -51 -25 rlineto
+ 218 -447 rlineto
+ -218 -447 rlineto
+ 51 -25 rlineto
+ closepath
+ endchar
+ } |-
+/integral {
+ 2 274 hsbw
+ -4 -102 hstem
+ 916 -98 hstem
+ 118 70 vstem
+ 188 488 rmoveto
+ 0 136 -21 157 2 37 rrcurveto
+ 1 18 16 16 23 -24 rrcurveto
+ 20 -22 37 12 14 17 rrcurveto
+ 20 24 -18 33 -15 10 rrcurveto
+ -15 10 -35 13 -28 -18 rrcurveto
+ -21 -13 -18 -32 -6 -20 rrcurveto
+ -21 -71 -5 -80 0 -159 rrcurveto
+ -144 vlineto
+ -1 -166 5 -74 2 -74 rrcurveto
+ 2 -60 -12 -74 -30 32 rrcurveto
+ -18 19 -16 13 -23 -12 rrcurveto
+ -24 -12 -8 -21 8 -22 rrcurveto
+ 4 -11 13 -20 16 -8 rrcurveto
+ 33 -16 47 26 8 10 rrcurveto
+ 8 10 10 13 11 38 rrcurveto
+ 13 46 20 90 1 157 rrcurveto
+ closepath
+ endchar
+ } |-
+/integraltp {
+ 332 686 hsbw
+ 920 -152 hstem
+ 0 83 vstem
+ 83 -83 rmoveto
+ 358 vlineto
+ 0 87 -4 74 11 100 rrcurveto
+ 8 76 30 139 53 65 rrcurveto
+ 42 51 38 7 19 -9 rrcurveto
+ -8 -9 -36 -35 44 -39 rrcurveto
+ 36 -32 74 26 -7 70 rrcurveto
+ -5 46 -24 16 -22 7 rrcurveto
+ -33 11 -31 -1 -39 -24 rrcurveto
+ -22 -14 -69 -53 -50 -94 rrcurveto
+ -40 -75 -23 -86 -11 -71 rrcurveto
+ -10 -64 -4 -82 0 -88 rrcurveto
+ -357 vlineto
+ closepath
+ endchar
+ } |-
+/integralex {
+ 332 686 hsbw
+ 83 -83 vstem
+ -88 vmoveto
+ 83 hlineto
+ 1063 vlineto
+ -83 hlineto
+ closepath
+ endchar
+ } |-
+/integralbt {
+ 39 686 hsbw
+ 66 -144 hstem
+ 293 83 vstem
+ 293 921 rmoveto
+ -323 vlineto
+ 0 -114 0 -114 -5 -100 rrcurveto
+ -4 -74 -28 -100 -53 -73 rrcurveto
+ -45 -63 -42 10 -14 0 rrcurveto
+ 9 10 16 9 -6 32 rrcurveto
+ -5 27 -22 19 -29 -1 rrcurveto
+ -26 -1 -34 -13 -5 -40 rrcurveto
+ -3 -26 7 -30 23 -19 rrcurveto
+ 24 -19 46 -6 42 15 rrcurveto
+ 54 19 61 65 43 92 rrcurveto
+ 41 87 15 74 8 62 rrcurveto
+ 12 92 3 86 0 90 rrcurveto
+ 327 vlineto
+ closepath
+ endchar
+ } |-
+/parenrighttp {
+ 54 384 hsbw
+ 926 -18 hstem
+ 344 52 vstem
+ 396 -293 rmoveto
+ 422 vlineto
+ 0 193 -27 155 -57 127 rrcurveto
+ -94 210 -108 62 -97 50 rrcurveto
+ -13 -10 rlineto
+ 110 -71 82 -90 72 -171 rrcurveto
+ 43 -103 37 -190 0 -159 rrcurveto
+ -425 vlineto
+ closepath
+ endchar
+ } |-
+/parenrightex {
+ 398 384 hsbw
+ 52 -52 vstem
+ 925 vmoveto
+ -1010 vlineto
+ 52 hlineto
+ 1010 vlineto
+ closepath
+ endchar
+ } |-
+/parenrightbt {
+ 54 384 hsbw
+ -274 -18 hstem
+ 344 52 vstem
+ 344 926 rmoveto
+ -425 vlineto
+ 0 -159 -37 -190 -43 -103 rrcurveto
+ -72 -171 -82 -90 -110 -71 rrcurveto
+ 13 -10 rlineto
+ 97 50 108 62 94 210 rrcurveto
+ 57 127 27 155 0 193 rrcurveto
+ 422 vlineto
+ closepath
+ endchar
+ } |-
+/bracketrighttp {
+ 22 384 hsbw
+ 283 55 vstem
+ 871 55 hstem
+ 926 vmoveto
+ -55 vlineto
+ 283 hlineto
+ -951 vlineto
+ 55 hlineto
+ 1006 vlineto
+ closepath
+ endchar
+ } |-
+/bracketrightex {
+ 305 384 hsbw
+ 55 -55 vstem
+ -79 vmoveto
+ 55 hlineto
+ 1004 vlineto
+ -55 hlineto
+ closepath
+ endchar
+ } |-
+/bracketrightbt {
+ 20 384 hsbw
+ -80 55 hstem
+ 285 55 vstem
+ 285 926 rmoveto
+ -951 vlineto
+ -285 hlineto
+ -55 vlineto
+ 340 hlineto
+ 1006 vlineto
+ closepath
+ endchar
+ } |-
+/bracerighttp {
+ 17 494 hsbw
+ 925 -22 hstem
+ 238 -54 vstem
+ 238 -75 rmoveto
+ 685 vlineto
+ 0 78 -3 70 -38 61 rrcurveto
+ -37 60 -59 30 -101 17 rrcurveto
+ -23 vlineto
+ 47 -12 62 -25 41 -66 rrcurveto
+ 27 -43 7 -69 0 -78 rrcurveto
+ -685 vlineto
+ closepath
+ endchar
+ } |-
+/bracerightmid {
+ 201 494 hsbw
+ 446 -38 hstem
+ 54 -54 vstem
+ 241 445 rmoveto
+ -57 14 -58 29 -35 56 rrcurveto
+ -20 31 -17 66 0 46 rrcurveto
+ 248 vlineto
+ -54 hlineto
+ -234 vlineto
+ 0 -111 34 -53 25 -28 rrcurveto
+ 43 -48 14 -5 91 -29 rrcurveto
+ -91 -29 -14 -5 -43 -48 rrcurveto
+ -25 -28 -34 -53 0 -111 rrcurveto
+ -238 vlineto
+ 54 hlineto
+ 252 vlineto
+ 0 46 17 66 20 31 rrcurveto
+ 35 56 58 29 57 14 rrcurveto
+ closepath
+ endchar
+ } |-
+/bracerightbt {
+ 17 494 hsbw
+ -69 23 hstem
+ 184 54 vstem
+ 184 926 rmoveto
+ -680 vlineto
+ 0 -78 -7 -69 -27 -43 rrcurveto
+ -41 -66 -62 -25 -47 -12 rrcurveto
+ -23 vlineto
+ 101 17 59 30 37 60 rrcurveto
+ 38 61 3 70 0 78 rrcurveto
+ 680 vlineto
+ closepath
+ endchar
+ } |-
+/apple {
+ 56 790 hsbw
+ -1 564 vstem
+ -2 622 hstem
+ 353 30 rmoveto
+ 20 0 17 -5 32 -15 rrcurveto
+ 11 -5 28 -12 33 6 rrcurveto
+ 47 6 6 16 21 18 rrcurveto
+ 40 36 25 43 44 95 rrcurveto
+ -29 15 -16 0 -36 48 rrcurveto
+ -17 22 -15 41 -1 35 rrcurveto
+ -1 44 15 36 12 20 rrcurveto
+ 16 27 11 12 40 29 rrcurveto
+ -8 9 -14 17 -16 12 rrcurveto
+ -53 42 -84 3 -39 -10 rrcurveto
+ -30 -8 -22 -19 -37 0 rrcurveto
+ -36 0 -22 19 -31 8 rrcurveto
+ -38 10 -84 -3 -53 -42 rrcurveto
+ -35 -27 -35 -47 -16 -86 rrcurveto
+ -13 -69 27 -110 24 -52 rrcurveto
+ 33 -71 25 -43 51 -46 rrcurveto
+ 12 -11 17 -13 34 -6 rrcurveto
+ 33 -6 28 12 10 5 rrcurveto
+ 33 15 17 5 19 0 rrcurveto
+ closepath
+ 157 778 rmoveto
+ -23 -4 -27 -12 -16 -8 rrcurveto
+ -12 -6 -22 -17 -20 -25 rrcurveto
+ -16 -20 -11 -29 -8 -20 rrcurveto
+ -7 -17 0 -16 2 -18 rrcurveto
+ 21 2 25 1 10 6 rrcurveto
+ 18 11 30 22 20 20 rrcurveto
+ 18 18 12 28 4 22 rrcurveto
+ 4 19 -2 23 0 20 rrcurveto
+ closepath
+ endchar
+ } |-
+/.notdef {
+ 0 250 hsbw
+ endchar
+ } |-
+end
+end
+readonly put
+noaccess put
+dup/FontName get exch definefont pop
+mark currentfile closefile
+cleartomark
diff --git a/Build/source/utils/t1utils/version.ac b/Build/source/utils/t1utils/version.ac
new file mode 100644
index 00000000000..d2f4e144ea2
--- /dev/null
+++ b/Build/source/utils/t1utils/version.ac
@@ -0,0 +1,11 @@
+dnl
+dnl Copyright (C) 2011-2015 Peter Breitenlohner <tex-live@tug.org>
+dnl
+dnl This file is free software; the copyright holder
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl --------------------------------------------------------
+dnl
+dnl m4-include this file to define the current t1utils version
+m4_define([t1utils_version], [1.42])