From ad56c1aac2a17eaf6bd71f7ecefef06b6dcd7eac Mon Sep 17 00:00:00 2001 From: Johannes Schoepfer Date: Sat, 8 Sep 2018 03:40:46 +0700 Subject: office/texlive: Updated for version 2018.180822. Signed-off-by: Willy Sudiarto Raharjo --- office/texlive/doinst.sh | 2 +- .../texlive/patches/synctex-missing-header.patch | 18 + .../patches/texlive-20170524-source-gcc7-1.patch | 33 - .../texlive-20170524-source-upstream_fixes-2.patch | 451 -------- office/texlive/patches/texlive-poppler-0.59.patch | 1142 -------------------- .../dump.unused.internal.libraries.from.sources.sh | 15 - office/texlive/prep/texmf_get.sh | 112 +- office/texlive/texlive.SlackBuild | 13 +- office/texlive/texlive.info | 6 +- 9 files changed, 98 insertions(+), 1694 deletions(-) create mode 100644 office/texlive/patches/synctex-missing-header.patch delete mode 100644 office/texlive/patches/texlive-20170524-source-gcc7-1.patch delete mode 100644 office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch delete mode 100644 office/texlive/patches/texlive-poppler-0.59.patch delete mode 100644 office/texlive/prep/dump.unused.internal.libraries.from.sources.sh (limited to 'office/texlive') diff --git a/office/texlive/doinst.sh b/office/texlive/doinst.sh index f864e767d6..d7af8f55c1 100644 --- a/office/texlive/doinst.sh +++ b/office/texlive/doinst.sh @@ -1,5 +1,5 @@ chroot . /usr/bin/mktexlsr 1>/dev/null 2>/dev/null printf "y\n" | chroot . /usr/bin/updmap-sys --syncwithtrees 1>/dev/null 2>/dev/null chroot . /usr/bin/updmap-sys 1>/dev/null 2>/dev/null -chroot . /usr/bin/fmtutil-sys --all 1>/dev/null 2>/dev/null +chroot . /usr/bin/fmtutil-sys --missing 1>/dev/null 2>/dev/null chroot . /usr/bin/mtxrun --generate 1>/dev/null 2>/dev/null diff --git a/office/texlive/patches/synctex-missing-header.patch b/office/texlive/patches/synctex-missing-header.patch new file mode 100644 index 0000000000..e783bd0bc1 --- /dev/null +++ b/office/texlive/patches/synctex-missing-header.patch @@ -0,0 +1,18 @@ +--- texk/web2c/Makefile.in.orig 2018-07-23 11:03:30.763277046 +0200 ++++ texk/web2c/Makefile.in 2018-07-23 11:04:53.940224054 +0200 +@@ -1762,6 +1762,7 @@ + MANS = $(dist_man_MANS) $(nodist_man_MANS) + DATA = $(pkgconfig_DATA) + am__syncinclude_HEADERS_DIST = synctexdir/synctex_parser.h \ ++ synctexdir/synctex_version.h \ + synctexdir/synctex_parser_utils.h + HEADERS = $(syncinclude_HEADERS) + RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ +@@ -4021,6 +4022,7 @@ + pkgconfigdir = ${libdir}/pkgconfig + @SYNCTEX_TRUE@syncinclude_HEADERS = \ + @SYNCTEX_TRUE@ synctexdir/synctex_parser.h \ ++@SYNCTEX_TRUE@ synctexdir/synctex_version.h \ + @SYNCTEX_TRUE@ synctexdir/synctex_parser_utils.h + + @SYNCTEX_TRUE@pkgconfig_DATA = synctexdir/synctex.pc diff --git a/office/texlive/patches/texlive-20170524-source-gcc7-1.patch b/office/texlive/patches/texlive-20170524-source-gcc7-1.patch deleted file mode 100644 index c2d3521a5b..0000000000 --- a/office/texlive/patches/texlive-20170524-source-gcc7-1.patch +++ /dev/null @@ -1,33 +0,0 @@ -Submitted By: Ken Moffat -Date: 2017-06-05 -Initial Package Version: 20170524 -Upstream Status: Unknown -Origin: http://tug.org/pipermail/tex-live/2017-June/040192.html -Description: From Dr. Werner Fink of SuSe, fixes compilation with gcc-7.1 - -diff -Naur texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ctype.c texlive-20170524-source/texk/web2c/luatexdir/luaffi/ctype.c ---- texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ctype.c 2017-02-10 01:03:59.000000000 +0000 -+++ texlive-20170524-source/texk/web2c/luatexdir/luaffi/ctype.c 2017-06-05 02:32:34.548531839 +0100 -@@ -245,6 +245,10 @@ - - lua_pop(L, 1); /* mt */ - cd = (struct cdata*) lua_touserdata(L, idx); -+ if (!cd) { -+ lua_pushnil(L); -+ return NULL; -+ } - *ct = cd->type; - lua_getuservalue(L, idx); - -diff -Naur texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ffi.h texlive-20170524-source/texk/web2c/luatexdir/luaffi/ffi.h ---- texlive-20170524-source.orig/texk/web2c/luatexdir/luaffi/ffi.h 2017-03-11 01:04:06.000000000 +0000 -+++ texlive-20170524-source/texk/web2c/luatexdir/luaffi/ffi.h 2017-06-05 02:32:34.548531839 +0100 -@@ -370,7 +370,7 @@ - #endif - struct cdata { - const struct ctype type --#ifdef __GNUC__ -+#if 0 /* def __GNUC__ */ - __attribute__ ((aligned(16))) - #endif - ; diff --git a/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch b/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch deleted file mode 100644 index e4ea52e28c..0000000000 --- a/office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch +++ /dev/null @@ -1,451 +0,0 @@ -Submitted By: Ken Moffat -Date: 2017-06-13 -Initial Package Version: 2017-05-25 -Upstream Status: Applied -Origin: Upstream -Description: Consolidated fixes for luatex. - -1. Removes debugging code which was accidentally left in -luatex, which made the (infrequently needed) io.popen useless. Also -disables io.saved_popen and changes the reported date of the luatex -version. - -2. Fix for io.lines (fixed in r44572). - -diff -Naur a/texk/web2c/luatexdir/lua/liolibext.c b/texk/web2c/luatexdir/lua/liolibext.c ---- a/texk/web2c/luatexdir/lua/liolibext.c 2017-03-11 01:04:06.000000000 +0000 -+++ b/texk/web2c/luatexdir/lua/liolibext.c 2017-06-11 01:49:11.813308882 +0100 -@@ -365,7 +365,7 @@ - lua_pushliteral(L,"all command execution is disabled"); - } else if (restrictedshell == 0) { - lua_pushboolean(L,1); -- lua_pushliteral(L,"all commands are permitted"); -+ lua_pushstring(L,filename); - } else { - char *safecmd = NULL; - char *cmdname = NULL; -@@ -374,10 +374,6 @@ - lua_pushboolean(L,0); - lua_pushliteral(L, "specific command execution disabled"); - break; -- case 1: -- lua_pushboolean(L,1); -- lua_pushstring(L,filename); -- break; - case 2: - lua_pushboolean(L,1); - lua_pushstring(L,safecmd); -diff -Naur a/texk/web2c/luatexdir/lua/luatex-core.c b/texk/web2c/luatexdir/lua/luatex-core.c ---- a/texk/web2c/luatexdir/lua/luatex-core.c 2017-04-19 11:07:10.000000000 +0100 -+++ b/texk/web2c/luatexdir/lua/luatex-core.c 2017-06-12 19:34:37.320003411 +0100 -@@ -52,7 +52,7 @@ - 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6f, 0x5f, - 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x6c, 0x6f, 0x63, 0x61, -- 0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x6c, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, - 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x66, 0x69, -@@ -84,169 +84,175 @@ - 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x2d, 0x2d, 0x20, - 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, -- 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, -- 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, -- 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, -- 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, -- 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, -- 0x79, 0x0a, 0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74, -- 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, -- 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, -- 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, -- 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, -- 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f, -- 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, -- 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, -- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, -+ 0x0a, 0x2d, 0x2d, 0x20, 0x28, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, -+ 0x20, 0x74, 0x6c, 0x31, 0x37, 0x20, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x29, 0x20, 0x69, -+ 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f, -+ 0x70, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, -+ 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x0a, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, -+ 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, -+ 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, -+ 0x6d, 0x74, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x74, 0x5f, 0x6c, -+ 0x69, 0x6e, 0x65, 0x73, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x72, -+ 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, -+ 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, - 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, -- 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68, -- 0x6f, 0x77, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20, -- 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27, -- 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, -- 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, -- 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, -- 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, -- 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, -- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, -- 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, -- 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, -- 0x6c, 0x79, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, -- 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, -- 0x5b, 0x5e, 0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, -- 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, -+ 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, -+ 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, - 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, -- 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27, -- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, -- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, -- 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, -- 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, -- 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, -- 0x6b, 0x61, 0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f, -- 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, -- 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b, -- 0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, -- 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, -- 0x20, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c, -- 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, -- 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, -- 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, -- 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, -- 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, -- 0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, -- 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, -- 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x68, 0x6f, 0x77, -+ 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x27, 0x20, 0x61, 0x6e, -+ 0x64, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x20, -+ 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, -+ 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x77, 0x27, 0x29, 0x0a, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, -+ 0x64, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, -+ 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, -+ 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, -+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, -+ 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, -+ 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, -+ 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, -+ 0x77, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x28, 0x68, 0x6f, 0x77, 0x2c, 0x27, 0x5b, 0x5e, -+ 0x72, 0x62, 0x5d, 0x27, 0x2c, 0x27, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x69, 0x66, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x20, 0x74, 0x68, -+ 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, -+ 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x27, 0x72, 0x27, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, 0x70, -+ 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x69, 0x66, 0x20, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x66, 0x69, 0x6c, -+ 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x27, 0x72, 0x27, 0x29, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, -+ 0x72, 0x6e, 0x20, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, -+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, -+ 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x2e, 0x2e, -+ 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x6b, 0x61, -+ 0x79, 0x2c, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x63, -+ 0x68, 0x65, 0x63, 0x6b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x28, 0x6e, -+ 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6f, 0x6b, 0x61, 0x79, -+ 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, -+ 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x28, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2c, 0x2e, 0x2e, -+ 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, -+ 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, -+ 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x6e, -+ 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, -+ 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x20, 0x3d, 0x20, 0x69, 0x6f, 0x5f, 0x6f, -+ 0x70, 0x65, 0x6e, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x68, 0x6f, 0x77, 0x20, 0x6f, 0x72, 0x20, -+ 0x27, 0x72, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, -+ 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, -+ 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, -+ 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, -+ 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, -+ 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, -+ 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, -+ 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, -+ 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, -- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, -- 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, -- 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x28, 0x66, 0x29, 0x0a, -- 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, -- 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, -- 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, -- 0x65, 0x28, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, -- 0x0a, 0x0a, 0x69, 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, -- 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e, -- 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, -- 0x6f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57, -- 0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, -- 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, -- 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, -- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54, -- 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61, -- 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a, -- 0x69, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31, -- 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, -- 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, -- 0x6f, 0x70, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, -- 0x6e, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, -- 0x70, 0x65, 0x6e, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, -- 0x65, 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, -- 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, -- 0x74, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, -- 0x73, 0x70, 0x61, 0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, -- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76, -- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74, -- 0x65, 0x6d, 0x70, 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, -- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, -- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, -- 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, -- 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69, -- 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, -- 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, -- 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, -- 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b, -- 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, -- 0x2e, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, -- 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72, -- 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, -- 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x69, -- 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, 0x65, 0x64, 0x5f, 0x6f, -- 0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, -- 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x0a, 0x0a, -- 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x74, -- 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x68, 0x65, 0x6c, -- 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, -- 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, -- 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, -- 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x78, 0x74, -- 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63, 0x27, 0x20, 0x74, 0x68, -- 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, -- 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, -- 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x65, -- 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65, 0x78, 0x65, 0x63, 0x75, -- 0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c, 0x6f, 0x73, 0x2e, 0x65, -- 0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x72, 0x65, -- 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x61, 0x77, 0x61, -- 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35, 0x20, 0x74, 0x68, 0x65, -- 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x6d, -- 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62, 0x20, 0x20, 0x20, 0x3d, -- 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x3d, 0x20, -- 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x20, 0x20, 0x3d, -- 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65, 0x0a, 0x0a, 0x20, 0x20, -- 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, -- 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, -- 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, -- 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, -- 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, -- 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, -- 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, -- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x48, 0x45, 0x58, -- 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, -- 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, -- 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, -- 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, -- 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, -- 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, -- 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, -- 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00 -+ 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, -+ 0x6f, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, -+ 0x5f, 0x69, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x6d, 0x74, 0x2e, 0x6c, 0x69, 0x6e, -+ 0x65, 0x73, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x72, -+ 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x57, 0x65, 0x20, 0x61, -+ 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, -+ 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, -+ 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, -+ 0x6e, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6b, 0x70, 0x73, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, -+ 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, -+ 0x69, 0x6e, 0x20, 0x43, 0x6f, 0x6e, 0x54, 0x65, 0x58, 0x74, 0x2e, 0x0a, 0x0a, 0x69, 0x66, 0x20, -+ 0x6b, 0x70, 0x73, 0x65, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, -+ 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, -+ 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, -+ 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x3d, -+ 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x70, 0x6f, 0x70, 0x65, 0x6e, -+ 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, 0x72, 0x6f, -+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, -+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, -+ 0x77, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, -+ 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x65, 0x6e, 0x76, 0x20, 0x20, 0x3d, -+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x74, 0x65, 0x6d, 0x70, -+ 0x64, 0x69, 0x72, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, -+ 0x6f, 0x2e, 0x70, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x20, 0x20, 0x3d, -+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, 0x73, 0x2e, 0x72, 0x65, 0x6e, -+ 0x61, 0x6d, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6f, -+ 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x74, 0x6d, 0x70, 0x66, 0x69, 0x6c, 0x65, 0x20, -+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x6f, 0x75, 0x74, -+ 0x70, 0x75, 0x74, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, -+ 0x6c, 0x66, 0x73, 0x2e, 0x63, 0x68, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x20, 0x20, -+ 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x74, 0x6f, -+ 0x75, 0x63, 0x68, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, -+ 0x66, 0x73, 0x2e, 0x72, 0x6d, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x6c, 0x66, 0x73, 0x2e, 0x6d, 0x6b, 0x64, 0x69, 0x72, 0x20, 0x20, 0x3d, -+ 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6f, 0x2e, 0x73, 0x61, 0x76, -+ 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x74, 0x65, -+ 0x78, 0x5f, 0x69, 0x6f, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, -+ 0x6c, 0x79, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x73, 0x61, 0x66, 0x65, -+ 0x72, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x6f, 0x72, 0x20, -+ 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x20, 0x7e, 0x3d, 0x20, 0x31, -+ 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, -+ 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x27, 0x66, 0x66, 0x69, 0x27, 0x29, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, -+ 0x6e, 0x65, 0x78, 0x74, 0x2c, 0x20, 0x66, 0x66, 0x69, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x7e, 0x3d, 0x20, 0x27, 0x67, 0x63, -+ 0x27, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, -+ 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x66, 0x69, 0x20, 0x3d, 0x20, 0x6e, 0x69, -+ 0x6c, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x73, 0x2e, 0x5b, 0x65, -+ 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x7c, 0x6f, 0x73, 0x2e, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x7c, -+ 0x6f, 0x73, 0x2e, 0x65, 0x78, 0x65, 0x63, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, -+ 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, -+ 0x20, 0x61, 0x77, 0x61, 0x72, 0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x69, 0x66, 0x20, 0x6d, 0x64, 0x35, -+ 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, -+ 0x20, 0x73, 0x75, 0x6d, 0x20, 0x20, 0x20, 0x20, 0x3d, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, -+ 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x73, 0x75, 0x62, -+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, -+ 0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x6f, 0x72, 0x6d, 0x61, -+ 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, -+ 0x20, 0x20, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x62, 0x79, 0x74, 0x65, -+ 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, -+ 0x64, 0x35, 0x2e, 0x73, 0x75, 0x6d, 0x68, 0x65, 0x78, 0x61, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, -+ 0x75, 0x62, 0x28, 0x73, 0x75, 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, -+ 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, -+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x22, 0x25, 0x30, 0x32, 0x78, 0x22, 0x2c, 0x62, 0x79, 0x74, -+ 0x65, 0x28, 0x63, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, -+ 0x64, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, -+ 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x64, 0x35, 0x2e, 0x73, 0x75, -+ 0x6d, 0x48, 0x45, 0x58, 0x41, 0x28, 0x6b, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x67, 0x73, 0x75, 0x62, 0x28, 0x73, 0x75, -+ 0x6d, 0x28, 0x6b, 0x29, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, -+ 0x69, 0x6f, 0x6e, 0x28, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -+ 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, -+ 0x28, 0x22, 0x25, 0x30, 0x32, 0x58, 0x22, 0x2c, 0x62, 0x79, 0x74, 0x65, 0x28, 0x63, 0x29, 0x29, -+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x29, 0x29, 0x0a, 0x20, -+ 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x00 - }; - return luaL_dostring(L, (const char*) luatex_core_lua); - } -\ No newline at end of file -diff -Naur a/texk/web2c/luatexdir/lua/luatex-core.lua b/texk/web2c/luatexdir/lua/luatex-core.lua ---- a/texk/web2c/luatexdir/lua/luatex-core.lua 2017-04-19 11:07:10.000000000 +0100 -+++ b/texk/web2c/luatexdir/lua/luatex-core.lua 2017-06-12 19:34:37.320003411 +0100 -@@ -16,7 +16,7 @@ - - local io_open = io.open - local io_popen = io.popen --local io_line = io.lines -+local io_lines = io.lines - - local fio_readline = fio.readline - local fio_checkpermission = fio.checkpermission -@@ -29,7 +29,7 @@ - local kpseused = status.kpse_used -- 0 1 - - io.saved_open = io_open -- can be protected --io.saved_popen = io_popen -- can be protected -+-- (deleted for tl17 rebuild) io.saved_popen = io_popen -- can be protected - io.saved_lines = io_lines -- always readonly - mt.saved_lines = mt_lines -- always readonly - -@@ -71,12 +71,16 @@ - end - end - --local function luatex_io_lines(name) -- local f = io_open(name,'r') -- if f then -- return function() -- return fio_readline(f) -+local function luatex_io_lines(name,how) -+ if name then -+ local f = io_open(name,how or 'r') -+ if f then -+ return function() -+ return fio_readline(f) -+ end - end -+ else -+ return io_lines() - end - end - -@@ -122,7 +126,6 @@ - lfs.rmdir = nil - lfs.mkdir = nil - -- io.saved_popen = nil - io.saved_open = luatex_io_open_readonly - - end -diff -Naur a/texk/web2c/luatexdir/luatex.c b/texk/web2c/luatexdir/luatex.c ---- a/texk/web2c/luatexdir/luatex.c 2017-03-31 14:27:09.000000000 +0100 -+++ b/texk/web2c/luatexdir/luatex.c 2017-06-11 01:49:11.813308882 +0100 -@@ -28,9 +28,11 @@ - - #define TeX - -+/* for tl17 update, change luatex_date_info but nothing else, -+ as context depends on the numeric version number. */ - int luatex_version = 100; /* \.{\\luatexversion} */ - int luatex_revision = '4'; /* \.{\\luatexrevision} */ --int luatex_date_info = 2017033109; /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/ -+int luatex_date_info = 2017060901; /* the compile date is now hardwired :YEAR MONTH DAY HOUR*/ - const char *luatex_version_string = "1.0.4"; - const char *engine_name = my_name; /* the name of this engine */ - diff --git a/office/texlive/patches/texlive-poppler-0.59.patch b/office/texlive/patches/texlive-poppler-0.59.patch deleted file mode 100644 index 401315a64c..0000000000 --- a/office/texlive/patches/texlive-poppler-0.59.patch +++ /dev/null @@ -1,1142 +0,0 @@ -diff -ur source.orig/texk/web2c/luatexdir/image/pdftoepdf.w source/texk/web2c/luatexdir/image/pdftoepdf.w ---- source.orig/texk/web2c/luatexdir/image/pdftoepdf.w 2017-05-08 22:39:36.639375783 +0200 -+++ source/texk/web2c/luatexdir/image/pdftoepdf.w 2017-09-19 11:23:36.586768739 +0200 -@@ -224,7 +224,7 @@ - free(checksum); - } - if (pdf_doc->doc == NULL) { -- docmemstream = new MemStream( docstream,0,streamsize, obj.initNull() ); -+ docmemstream = new MemStream( docstream,0,streamsize, Object(objNull) ); - doc = new PDFDoc(docmemstream); /* takes ownership of docmemstream */ - pdf_doc->pc++; - if (!doc->isOk() || !doc->okToPrint()) { -@@ -408,9 +408,8 @@ - Object obj1; - pdf_begin_array(pdf); - for (i = 0, l = array->getLength(); i < l; ++i) { -- array->getNF(i, &obj1); -+ obj1 = array->getNF(i); - copyObject(pdf, pdf_doc, &obj1); -- obj1.free(); - } - pdf_end_array(pdf); - } -@@ -422,9 +421,8 @@ - pdf_begin_dict(pdf); - for (i = 0, l = dict->getLength(); i < l; ++i) { - copyName(pdf, dict->getKey(i)); -- dict->getValNF(i, &obj1); -+ obj1 = dict->getValNF(i); - copyObject(pdf, pdf_doc, &obj1); -- obj1.free(); - } - pdf_end_dict(pdf); - } -@@ -510,13 +508,12 @@ - PDFDoc *doc = pdf_doc->doc; - xref = doc->getXRef(); - for (r = pdf_doc->inObjList; r != NULL;) { -- xref->fetch(r->ref.num, r->ref.gen, &obj1); -+ obj1 = xref->fetch(r->ref.num, r->ref.gen); - if (obj1.isStream()) - pdf_begin_obj(pdf, r->num, OBJSTM_NEVER); - else - pdf_begin_obj(pdf, r->num, 2); - copyObject(pdf, pdf_doc, &obj1); -- obj1.free(); - pdf_end_obj(pdf); - n = r->next; - delete r; -@@ -740,7 +737,7 @@ - catalog = doc->getCatalog(); - page = catalog->getPage(img_pagenum(idict)); - pageref = catalog->getPageRef(img_pagenum(idict)); -- doc->getXRef()->fetch(pageref->num, pageref->gen, &pageobj); -+ pageobj = doc->getXRef()->fetch(pageref->num, pageref->gen); - pageDict = pageobj.getDict(); - /* write the Page header */ - pdf_begin_obj(pdf, img_objnum(idict), OBJSTM_NEVER); -@@ -757,12 +754,11 @@ - pdf_dict_add_int(pdf, "PTEX.PageNumber", (int) img_pagenum(idict)); - } - if ((suppress_optional_info & 8) == 0) { -- doc->getDocInfoNF(&obj1); -+ obj1 = doc->getDocInfoNF(); - if (obj1.isRef()) { - /* the info dict must be indirect (PDF Ref p. 61) */ - pdf_dict_add_ref(pdf, "PTEX.InfoDict", addInObj(pdf, pdf_doc, obj1.getRef())); - } -- obj1.free(); - } - if (img_is_bbox(idict)) { - bbox[0] = sp2bp(img_bbox(idict)[0]); -@@ -788,19 +784,17 @@ - Now all relevant parts of the Page dictionary are copied. Metadata validity - check is needed(as a stream it must be indirect). - */ -- pageDict->lookupNF("Metadata", &obj1); -+ obj1 = pageDict->lookupNF("Metadata"); - if (!obj1.isNull() && !obj1.isRef()) - formatted_warning("pdf inclusion","/Metadata must be indirect object"); -- obj1.free(); - /* copy selected items in Page dictionary */ - for (i = 0; pagedictkeys[i] != NULL; i++) { -- pageDict->lookupNF(pagedictkeys[i], &obj1); -+ obj1 = pageDict->lookupNF(pagedictkeys[i]); - if (!obj1.isNull()) { - pdf_add_name(pdf, pagedictkeys[i]); - /* preserves indirection */ - copyObject(pdf, pdf_doc, &obj1); - } -- obj1.free(); - } - /* - If there are no Resources in the Page dict of the embedded page, -@@ -808,32 +802,28 @@ - PDF file, climbing up the tree until the Resources are found. - (This fixes a problem with Scribus 1.3.3.14.) - */ -- pageDict->lookupNF("Resources", &obj1); -+ obj1 = pageDict->lookupNF("Resources"); - if (obj1.isNull()) { - op1 = &pagesobj1; - op2 = &pagesobj2; -- pageDict->lookup("Parent", op1); -+ *op1 = pageDict->lookup("Parent"); - while (op1->isDict()) { -- obj1.free(); -- op1->dictLookupNF("Resources", &obj1); -+ obj1 = op1->dictLookupNF("Resources"); - if (!obj1.isNull()) { - pdf_add_name(pdf, "Resources"); - copyObject(pdf, pdf_doc, &obj1); - break; - } -- op1->dictLookup("Parent", op2); -+ *op2 = op1->dictLookup("Parent"); - optmp = op1; - op1 = op2; - op2 = optmp; -- op2->free(); - }; - if (!op1->isDict()) - formatted_warning("pdf inclusion","Page /Resources missing"); -- op1->free(); - } -- obj1.free(); - /* Write the Page contents. */ -- page->getContents(&contents); -+ contents = page->getContents(); - if (contents.isStream()) { - /* - Variant A: get stream and recompress under control of \pdfcompresslevel -@@ -844,27 +834,23 @@ - - Variant B: copy stream without recompressing - */ -- contents.streamGetDict()->lookup("F", &obj1); -+ obj1 = contents.streamGetDict()->lookup("F"); - if (!obj1.isNull()) { - normal_error("pdf inclusion","unsupported external stream"); - } -- obj1.free(); -- contents.streamGetDict()->lookup("Length", &obj1); -+ obj1 = contents.streamGetDict()->lookup("Length"); - pdf_add_name(pdf, "Length"); - copyObject(pdf, pdf_doc, &obj1); -- obj1.free(); -- contents.streamGetDict()->lookup("Filter", &obj1); -+ obj1 = contents.streamGetDict()->lookup("Filter"); - if (!obj1.isNull()) { - pdf_add_name(pdf, "Filter"); - copyObject(pdf, pdf_doc, &obj1); -- obj1.free(); -- contents.streamGetDict()->lookup("DecodeParms", &obj1); -+ obj1 = contents.streamGetDict()->lookup("DecodeParms"); - if (!obj1.isNull()) { - pdf_add_name(pdf, "DecodeParms"); - copyObject(pdf, pdf_doc, &obj1); - } - } -- obj1.free(); - pdf_end_dict(pdf); - pdf_begin_stream(pdf); - copyStreamStream(pdf, contents.getStream()->getUndecodedStream()); -@@ -875,8 +861,8 @@ - pdf_end_dict(pdf); - pdf_begin_stream(pdf); - for (i = 0, l = contents.arrayGetLength(); i < l; ++i) { -- copyStreamStream(pdf, (contents.arrayGet(i, &obj1))->getStream()); -- obj1.free(); -+ obj1 = contents.arrayGet(i); -+ copyStreamStream(pdf, obj1.getStream()); - if (i < (l - 1)) { - /* - Put a space between streams to be on the safe side (streams -@@ -897,8 +883,6 @@ - } - /* write out all indirect objects */ - writeRefs(pdf, pdf_doc); -- contents.free(); -- pageobj.free(); - /* - unrefPdfDocument() must come after contents.free() and pageobj.free()! - TH: The next line makes repeated pdf inclusion unacceptably slow -diff -ur source.orig/texk/web2c/luatexdir/lua/lepdflib.cc source/texk/web2c/luatexdir/lua/lepdflib.cc ---- source.orig/texk/web2c/luatexdir/lua/lepdflib.cc 2017-05-08 22:39:36.689375107 +0200 -+++ source/texk/web2c/luatexdir/lua/lepdflib.cc 2017-09-19 09:48:19.658021769 +0200 -@@ -538,7 +538,7 @@ - pdfdoc_changed_error(L); \ - uout = new_Object_userdata(L); \ - uout->d = new Object(); \ -- ((in *) uin->d)->function((Object *) uout->d); \ -+ *((Object *)uout->d) = ((in *) uin->d)->function(); \ - uout->atype = ALLOC_LEPDF; \ - uout->pc = uin->pc; \ - uout->pd = uin->pd; \ -@@ -668,13 +668,11 @@ - - static int m_Array_incRef(lua_State * L) - { -- int i; - udstruct *uin; - uin = (udstruct *) luaL_checkudata(L, 1, M_Array); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- i = ((Array *) uin->d)->incRef(); -- lua_pushinteger(L, i); -+ lua_pushinteger(L, 1); - return 1; - } - -@@ -685,8 +683,7 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_Array); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- i = ((Array *) uin->d)->decRef(); -- lua_pushinteger(L, i); -+ lua_pushinteger(L, 1); - return 1; - } - -@@ -702,7 +699,7 @@ - if ((uin->pd != NULL && uin->pd->pc != uin->pc) - || (uobj->pd != NULL && uobj->pd->pc != uobj->pc)) - pdfdoc_changed_error(L); -- ((Array *) uin->d)->add(((Object *) uobj->d)); -+ ((Array *) uin->d)->add(std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -718,7 +715,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Array *) uin->d)->get(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Array *) uin->d)->get(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -739,7 +736,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Array *) uin->d)->getNF(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -953,25 +950,21 @@ - - static int m_Dict_incRef(lua_State * L) - { -- int i; - udstruct *uin; - uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- i = ((Dict *) uin->d)->incRef(); -- lua_pushinteger(L, i); -+ lua_pushinteger(L, 1); - return 1; - } - - static int m_Dict_decRef(lua_State * L) - { -- int i; - udstruct *uin; - uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- i = ((Dict *) uin->d)->decRef(); -- lua_pushinteger(L, i); -+ lua_pushinteger(L, 1); - return 1; - } - -@@ -986,7 +979,7 @@ - pdfdoc_changed_error(L); - s = copyString(luaL_checkstring(L, 2)); - uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); -- ((Dict *) uin->d)->add(s, ((Object *) uobj->d)); -+ ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -999,7 +992,7 @@ - pdfdoc_changed_error(L); - s = luaL_checkstring(L, 2); - uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); -- ((Dict *) uin->d)->set(s, ((Object *) uobj->d)); -+ ((Dict *) uin->d)->set(s, std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -1027,7 +1020,7 @@ - s = luaL_checkstring(L, 2); - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Dict *) uin->d)->lookup(s, (Object *) uout->d); -+ *((Object *) uout->d) = ((Dict *) uin->d)->lookup(s); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1044,7 +1037,7 @@ - s = luaL_checkstring(L, 2); - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Dict *) uin->d)->lookupNF(s, (Object *) uout->d); -+ *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1096,7 +1089,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Dict *) uin->d)->getVal(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Dict *) uin->d)->getVal(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1117,7 +1110,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Dict *) uin->d)->getValNF(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1381,9 +1374,9 @@ - pdfdoc_changed_error(L); - luaL_checktype(L, 2, LUA_TBOOLEAN); - if (lua_toboolean(L, 2) != 0) -- ((Object *) uin->d)->initBool(gTrue); -+ *((Object *) uin->d) = Object(gTrue); - else -- ((Object *) uin->d)->initBool(gFalse); -+ *((Object *) uin->d) = Object(gFalse); - return 0; - } - -@@ -1395,7 +1388,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - i = luaL_checkint(L, 2); -- ((Object *) uin->d)->initInt(i); -+ *((Object *) uin->d) = Object(i); - return 0; - } - -@@ -1407,7 +1400,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - d = luaL_checknumber(L, 2); -- ((Object *) uin->d)->initReal(d); -+ *((Object *) uin->d) = Object(d); - return 0; - } - -@@ -1422,7 +1415,7 @@ - pdfdoc_changed_error(L); - s = luaL_checklstring(L, 2, &len); - gs = new GooString(s, len); -- ((Object *) uin->d)->initString(gs); -+ *((Object *) uin->d) = Object(gs); - return 0; - } - -@@ -1434,7 +1427,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - s = luaL_checkstring(L, 2); -- ((Object *) uin->d)->initName(s); -+ *((Object *) uin->d) = Object(objName, s); - return 0; - } - -@@ -1444,13 +1437,14 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_Object); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initNull(); -+ *((Object *) uin->d) = Object(objNull); - return 0; - } - - static int m_Object_initArray(lua_State * L) - { - udstruct *uin, *uxref; -+ Array *a; - uin = (udstruct *) luaL_checkudata(L, 1, M_Object); - uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef); - if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd) -@@ -1458,7 +1452,8 @@ - if ((uin->pd != NULL && uin->pd->pc != uin->pc) - || (uxref->pd != NULL && uxref->pd->pc != uxref->pc)) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initArray((XRef *) uxref->d); -+ a = new Array((XRef *) uxref->d); -+ *((Object *) uin->d) = Object(a); - return 0; - } - -@@ -1469,6 +1464,7 @@ - static int m_Object_initDict(lua_State * L) - { - udstruct *uin, *uxref; -+ Dict *d; - uin = (udstruct *) luaL_checkudata(L, 1, M_Object); - uxref = (udstruct *) luaL_checkudata(L, 2, M_XRef); - if (uin->pd != NULL && uxref->pd != NULL && uin->pd != uxref->pd) -@@ -1476,7 +1472,8 @@ - if ((uin->pd != NULL && uin->pd->pc != uin->pc) - || (uxref->pd != NULL && uxref->pd->pc != uxref->pc)) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initDict((XRef *) uxref->d); -+ d = new Dict((XRef *) uxref->d); -+ *((Object *) uin->d) = Object(d); - return 0; - } - -@@ -1490,7 +1487,7 @@ - if ((uin->pd != NULL && uin->pd->pc != uin->pc) - || (ustream->pd != NULL && ustream->pd->pc != ustream->pc)) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initStream((Stream *) ustream->d); -+ *((Object *) uin->d) = Object((Stream *) ustream->d); - return 0; - } - -@@ -1503,7 +1500,7 @@ - pdfdoc_changed_error(L); - num = luaL_checkint(L, 2); - gen = luaL_checkint(L, 3); -- ((Object *) uin->d)->initRef(num, gen); -+ *((Object *) uin->d) = Object(num, gen); - return 0; - } - -@@ -1515,7 +1512,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - s = luaL_checkstring(L, 2); -- ((Object *) uin->d)->initCmd(CHARP_CAST s); -+ *((Object *) uin->d) = Object(objCmd, CHARP_CAST s); - return 0; - } - -@@ -1525,7 +1522,7 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_Object); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initError(); -+ *((Object *) uin->d) = Object(objError); - return 0; - } - -@@ -1535,7 +1532,7 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_Object); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- ((Object *) uin->d)->initEOF(); -+ *((Object *) uin->d) = Object(objEOF); - return 0; - } - -@@ -1551,7 +1548,7 @@ - pdfdoc_changed_error(L); - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->fetch((XRef *) uxref->d, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->fetch((XRef *) uxref->d); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1816,7 +1813,7 @@ - pdfdoc_changed_error(L); - if (!((Object *) uin->d)->isArray()) - luaL_error(L, "Object is not an Array"); -- ((Object *) uin->d)->arrayAdd((Object *) uobj->d); -+ ((Object *) uin->d)->arrayAdd(std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -1833,7 +1830,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->arrayGet(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGet(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1857,7 +1854,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->arrayGetNF(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1897,7 +1894,7 @@ - pdfdoc_changed_error(L); - if (!((Object *) uin->d)->isDict()) - luaL_error(L, "Object is not a Dict"); -- ((Object *) uin->d)->dictAdd(copyString(s), (Object *) uobj->d); -+ ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -1915,7 +1912,7 @@ - pdfdoc_changed_error(L); - if (!((Object *) uin->d)->isDict()) - luaL_error(L, "Object is not a Dict"); -- ((Object *) uin->d)->dictSet(s, (Object *) uobj->d); -+ ((Object *) uin->d)->dictSet(s, std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -1930,7 +1927,7 @@ - if (((Object *) uin->d)->isDict()) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->dictLookup(s, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookup(s); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1950,7 +1947,7 @@ - if (((Object *) uin->d)->isDict()) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->dictLookupNF(s, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1991,7 +1988,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->dictGetVal(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetVal(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2015,7 +2012,7 @@ - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((Object *) uin->d)->dictGetValNF(i - 1, (Object *) uout->d); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2243,7 +2240,7 @@ - m_poppler_get_poppler(Page, Dict, getPieceInfo); - m_poppler_get_poppler(Page, Dict, getSeparationInfo); - m_poppler_get_poppler(Page, Dict, getResourceDict); --m_poppler_get_OBJECT(Page, getAnnots); -+m_poppler_get_OBJECT(Page, getAnnotsObject); - - m_poppler_get_OBJECT(Page, getContents); - -@@ -2270,7 +2267,7 @@ - {"getPieceInfo", m_Page_getPieceInfo}, - {"getSeparationInfo", m_Page_getSeparationInfo}, - {"getResourceDict", m_Page_getResourceDict}, -- {"getAnnots", m_Page_getAnnots}, -+ {"getAnnots", m_Page_getAnnotsObject}, - {"getContents", m_Page_getContents}, - {"__tostring", m_Page__tostring}, - {NULL, NULL} // sentinel -@@ -2520,7 +2517,7 @@ - if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((PdfDocument *) uin->d)->doc->getDocInfo((Object *) uout->d); -+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfo(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2538,7 +2535,7 @@ - if (((PdfDocument *) uin->d)->doc->getXRef()->isOk()) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((PdfDocument *) uin->d)->doc->getDocInfoNF((Object *) uout->d); -+ *((Object *) uout->d) = ((PdfDocument *) uin->d)->doc->getDocInfoNF(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2841,7 +2838,7 @@ - uout = new_Object_userdata(L); - uout->d = new Object(); - origin = (Object *) (((Attribute *) uin->d)->getValue()); -- origin->copy ( ((Object *)uout->d) ); -+ *((Object *) uout->d) = origin->copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -3320,7 +3317,7 @@ - parent = root->findParentElement(i-1); - if (parent != NULL) { - uout = new_StructElement_userdata(L); -- uout->d = new StructElement( *parent ); -+ uout->d = (StructElement *) parent; - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -3370,7 +3367,7 @@ - gen = luaL_checkint(L, 3); - uout = new_Object_userdata(L); - uout->d = new Object(); -- ((XRef *) uin->d)->fetch(num, gen, (Object *) uout->d); -+ *((Object *) uout->d) = ((XRef *) uin->d)->fetch(num, gen); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -diff -ur source.orig/texk/web2c/luatexdir/lua/lpdfscannerlib.cc source/texk/web2c/luatexdir/lua/lpdfscannerlib.cc ---- source.orig/texk/web2c/luatexdir/lua/lpdfscannerlib.cc 2017-05-08 22:39:36.692708395 +0200 -+++ source/texk/web2c/luatexdir/lua/lpdfscannerlib.cc 2017-09-19 09:48:19.658021769 +0200 -@@ -634,7 +634,7 @@ - int i; - for (i=0;iget(i, val); -+ *val = arrayref->get(i); - if (val->isStream()) { - ObjectList *rover = self->_streams; - ObjectList *item = (ObjectList *)priv_xmalloc (sizeof(ObjectList)); -diff -ur source.orig/texk/web2c/pdftexdir/pdftoepdf.cc source/texk/web2c/pdftexdir/pdftoepdf.cc ---- source.orig/texk/web2c/pdftexdir/pdftoepdf.cc 2017-06-16 21:49:09.293857387 +0200 -+++ source/texk/web2c/pdftexdir/pdftoepdf.cc 2017-09-19 09:48:19.661355046 +0200 -@@ -84,31 +84,6 @@ - #define MASK_SUPPRESS_PTEX_PAGENUMBER 0x04 - #define MASK_SUPPRESS_PTEX_INFODICT 0x08 - --// PdfObject encapsulates the xpdf Object type, --// and properly frees its resources on destruction. --// Use obj-> to access members of the Object, --// and &obj to get a pointer to the object. --// It is no longer necessary to call Object::free explicitely. -- --class PdfObject { -- public: -- PdfObject() { // nothing -- } ~PdfObject() { -- iObject.free(); -- } -- Object *operator->() { -- return &iObject; -- } -- Object *operator&() { -- return &iObject; -- } -- private: // no copying or assigning -- PdfObject(const PdfObject &); -- void operator=(const PdfObject &); -- public: -- Object iObject; --}; -- - // When copying the Resources of the selected page, all objects are copied - // recusively top-down. Indirect objects however are not fetched during - // copying, but get a new object number from pdfTeX and then will be -@@ -212,18 +187,6 @@ - delete pdf_doc; - } - --// Replacement for --// Object *initDict(Dict *dict1){ initObj(objDict); dict = dict1; return this; } -- --static void initDictFromDict(PdfObject & obj, Dict * dict) --{ -- obj->initDict(xref); -- for (int i = 0, l = dict->getLength(); i < l; i++) { -- Object obj1; -- obj->dictAdd(copyString(dict->getKey(i)), dict->getValNF(i, &obj1)); -- } --} -- - // -------------------------------------------------------------------- - - static int addEncoding(GfxFont * gfont) -@@ -320,10 +283,10 @@ - - static void copyDictEntry(Object * obj, int i) - { -- PdfObject obj1; -+ Object obj1; - copyName(obj->dictGetKey(i)); - pdf_puts(" "); -- obj->dictGetValNF(i, &obj1); -+ obj1 = obj->dictGetValNF(i); - copyObject(&obj1); - pdf_puts("\n"); - } -@@ -376,17 +339,17 @@ - static void copyProcSet(Object * obj) - { - int i, l; -- PdfObject procset; -+ Object procset; - if (!obj->isArray()) - pdftex_fail("PDF inclusion: invalid ProcSet array type <%s>", - obj->getTypeName()); - pdf_puts("/ProcSet [ "); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- obj->arrayGetNF(i, &procset); -- if (!procset->isName()) -+ procset = obj->arrayGetNF(i); -+ if (!procset.isName()) - pdftex_fail("PDF inclusion: invalid ProcSet entry type <%s>", -- procset->getTypeName()); -- copyName(procset->getName()); -+ procset.getTypeName()); -+ copyName(procset.getName()); - pdf_puts(" "); - } - pdf_puts("]\n"); -@@ -394,10 +357,29 @@ - - #define REPLACE_TYPE1C true - -+static bool embeddableFont(Object * fontdesc) -+{ -+ Object fontfile, ffsubtype; -+ -+ if (!fontdesc->isDict()) -+ return false; -+ fontfile = fontdesc->dictLookup("FontFile"); -+ if (fontfile.isStream()) -+ return true; -+ if (REPLACE_TYPE1C) { -+ fontfile = fontdesc->dictLookup("FontFile3"); -+ if (!fontfile.isStream()) -+ return false; -+ ffsubtype = fontfile.streamGetDict()->lookup("Subtype"); -+ return ffsubtype.isName() && !strcmp(ffsubtype.getName(), "Type1C"); -+ } -+ return false; -+} -+ - static void copyFont(char *tag, Object * fontRef) - { -- PdfObject fontdict, subtype, basefont, fontdescRef, fontdesc, charset, -- fontfile, ffsubtype, stemV; -+ Object fontdict, subtype, basefont, fontdescRef, fontdesc, charset, -+ stemV; - GfxFont *gfont; - fd_entry *fd; - fm_entry *fontmap; -@@ -413,33 +395,39 @@ - } - // Only handle included Type1 (and Type1C) fonts; anything else will be copied. - // Type1C fonts are replaced by Type1 fonts, if REPLACE_TYPE1C is true. -- if (!fixedinclusioncopyfont && fontRef->fetch(xref, &fontdict)->isDict() -- && fontdict->dictLookup("Subtype", &subtype)->isName() -- && !strcmp(subtype->getName(), "Type1") -- && fontdict->dictLookup("BaseFont", &basefont)->isName() -- && fontdict->dictLookupNF("FontDescriptor", &fontdescRef)->isRef() -- && fontdescRef->fetch(xref, &fontdesc)->isDict() -- && (fontdesc->dictLookup("FontFile", &fontfile)->isStream() -- || (REPLACE_TYPE1C -- && fontdesc->dictLookup("FontFile3", &fontfile)->isStream() -- && fontfile->streamGetDict()->lookup("Subtype", -- &ffsubtype)->isName() -- && !strcmp(ffsubtype->getName(), "Type1C"))) -- && (fontmap = lookup_fontmap(basefont->getName())) != NULL) { -+ fontdict = fontRef->fetch(xref); -+ fontdesc = Object(objNull); -+ if (fontdict.isDict()) { -+ subtype = fontdict.dictLookup("Subtype"); -+ basefont = fontdict.dictLookup("BaseFont"); -+ fontdescRef = fontdict.dictLookupNF("FontDescriptor"); -+ if (fontdescRef.isRef()) { -+ fontdesc = fontdescRef.fetch(xref); -+ } -+ } -+ if (!fixedinclusioncopyfont && fontdict.isDict() -+ && subtype.isName() -+ && !strcmp(subtype.getName(), "Type1") -+ && basefont.isName() -+ && fontdescRef.isRef() -+ && fontdesc.isDict() -+ && embeddableFont(&fontdesc) -+ && (fontmap = lookup_fontmap(basefont.getName())) != NULL) { - // round /StemV value, since the PDF input is a float - // (see Font Descriptors in PDF reference), but we only store an - // integer, since we don't want to change the struct. -- fontdesc->dictLookup("StemV", &stemV); -- fd = epdf_create_fontdescriptor(fontmap, zround(stemV->getNum())); -- if (fontdesc->dictLookup("CharSet", &charset) && -- charset->isString() && is_subsetable(fontmap)) -- epdf_mark_glyphs(fd, charset->getString()->getCString()); -+ stemV = fontdesc.dictLookup("StemV"); -+ fd = epdf_create_fontdescriptor(fontmap, zround(stemV.getNum())); -+ charset = fontdesc.dictLookup("CharSet"); -+ if (!charset.isNull() && -+ charset.isString() && is_subsetable(fontmap)) -+ epdf_mark_glyphs(fd, charset.getString()->getCString()); - else - embed_whole_font(fd); -- addFontDesc(fontdescRef->getRef(), fd); -+ addFontDesc(fontdescRef.getRef(), fd); - copyName(tag); - gfont = GfxFont::makeFont(xref, tag, fontRef->getRef(), -- fontdict->getDict()); -+ fontdict.getDict()); - pdf_printf(" %d 0 R ", addFont(fontRef->getRef(), fd, - addEncoding(gfont))); - } else { -@@ -451,24 +439,24 @@ - - static void copyFontResources(Object * obj) - { -- PdfObject fontRef; -+ Object fontRef; - int i, l; - if (!obj->isDict()) - pdftex_fail("PDF inclusion: invalid font resources dict type <%s>", - obj->getTypeName()); - pdf_puts("/Font << "); - for (i = 0, l = obj->dictGetLength(); i < l; ++i) { -- obj->dictGetValNF(i, &fontRef); -- if (fontRef->isRef()) -+ fontRef = obj->dictGetValNF(i); -+ if (fontRef.isRef()) - copyFont(obj->dictGetKey(i), &fontRef); -- else if (fontRef->isDict()) { // some programs generate pdf with embedded font object -+ else if (fontRef.isDict()) { // some programs generate pdf with embedded font object - copyName(obj->dictGetKey(i)); - pdf_puts(" "); - copyObject(&fontRef); - } - else - pdftex_fail("PDF inclusion: invalid font in reference type <%s>", -- fontRef->getTypeName()); -+ fontRef.getTypeName()); - } - pdf_puts(">>\n"); - } -@@ -557,7 +545,7 @@ - - static void copyObject(Object * obj) - { -- PdfObject obj1; -+ Object obj1; - int i, l, c; - Ref ref; - char *p; -@@ -601,8 +589,8 @@ - } else if (obj->isArray()) { - pdf_puts("["); - for (i = 0, l = obj->arrayGetLength(); i < l; ++i) { -- obj->arrayGetNF(i, &obj1); -- if (!obj1->isName()) -+ obj1 = obj->arrayGetNF(i); -+ if (!obj1.isName()) - pdf_puts(" "); - copyObject(&obj1); - } -@@ -612,9 +600,8 @@ - copyDict(obj); - pdf_puts(">>"); - } else if (obj->isStream()) { -- initDictFromDict(obj1, obj->streamGetDict()); - pdf_puts("<<\n"); -- copyDict(&obj1); -+ copyDict(obj->getStream()->getDictObject()); - pdf_puts(">>\n"); - pdf_puts("stream\n"); - copyStream(obj->getStream()->getUndecodedStream()); -@@ -638,9 +625,8 @@ - InObj *r; - for (r = inObjList; r != 0; r = r->next) { - if (!r->written) { -- Object obj1; - r->written = 1; -- xref->fetch(r->ref.num, r->ref.gen, &obj1); -+ Object obj1 = xref->fetch(r->ref.num, r->ref.gen); - if (r->type == objFont) { - assert(!obj1.isStream()); - pdfbeginobj(r->num, 2); // \pdfobjcompresslevel = 2 is for this -@@ -656,7 +642,6 @@ - pdf_puts("\n"); - pdfendobj(); - } -- obj1.free(); - } - } - } -@@ -839,8 +824,8 @@ - Page *page; - Ref *pageRef; - Dict *pageDict; -- PdfObject contents, obj1, obj2, pageObj, dictObj; -- PdfObject groupDict; -+ Object contents, obj1, obj2, pageObj, dictObj; -+ Object groupDict; - bool writeSepGroup = false; - Object info; - char *key; -@@ -867,8 +852,8 @@ - encodingList = 0; - page = pdf_doc->doc->getCatalog()->getPage(epdf_selected_page); - pageRef = pdf_doc->doc->getCatalog()->getPageRef(epdf_selected_page); -- xref->fetch(pageRef->num, pageRef->gen, &pageObj); -- pageDict = pageObj->getDict(); -+ pageObj = xref->fetch(pageRef->num, pageRef->gen); -+ pageDict = pageObj.getDict(); - rotate = page->getRotate(); - PDFRectangle *pagebox; - // write the Page header -@@ -886,7 +871,7 @@ - pdf_printf("/%s.PageNumber %i\n", pdfkeyprefix, (int) epdf_selected_page); - } - if ((suppress_ptex_info & MASK_SUPPRESS_PTEX_INFODICT) == 0) { -- pdf_doc->doc->getDocInfoNF(&info); -+ info = pdf_doc->doc->getDocInfoNF(); - if (info.isRef()) { - // the info dict must be indirect (PDF Ref p. 61) - pdf_printf("/%s.InfoDict ", pdfkeyprefix); -@@ -942,14 +927,14 @@ - pdf_puts(stripzeros(s)); - - // Metadata validity check (as a stream it must be indirect) -- pageDict->lookupNF("Metadata", &dictObj); -- if (!dictObj->isNull() && !dictObj->isRef()) -+ dictObj = pageDict->lookupNF("Metadata"); -+ if (!dictObj.isNull() && !dictObj.isRef()) - pdftex_warn("PDF inclusion: /Metadata must be indirect object"); - - // copy selected items in Page dictionary except Resources & Group - for (i = 0; pageDictKeys[i] != NULL; i++) { -- pageDict->lookupNF(pageDictKeys[i], &dictObj); -- if (!dictObj->isNull()) { -+ dictObj = pageDict->lookupNF(pageDictKeys[i]); -+ if (!dictObj.isNull()) { - pdf_newline(); - pdf_printf("/%s ", pageDictKeys[i]); - copyObject(&dictObj); // preserves indirection -@@ -957,8 +942,8 @@ - } - - // handle page group -- pageDict->lookupNF("Group", &dictObj); -- if (!dictObj->isNull()) { -+ dictObj = pageDict->lookupNF("Group"); -+ if (!dictObj.isNull()) { - if (pdfpagegroupval == 0) { - // another pdf with page group was included earlier on the - // same page; copy the Group entry as is. See manual for -@@ -972,11 +957,11 @@ - copyObject(&dictObj); - } else { - // write Group dict as a separate object, since the Page dict also refers to it -- pageDict->lookup("Group", &dictObj); -- if (!dictObj->isDict()) -+ dictObj = pageDict->lookup("Group"); -+ if (!dictObj.isDict()) - pdftex_fail("PDF inclusion: /Group dict missing"); - writeSepGroup = true; -- initDictFromDict(groupDict, page->getGroup()); -+ groupDict = Object(page->getGroup()); - pdf_printf("/Group %ld 0 R\n", (long)pdfpagegroupval); - } - } -@@ -989,14 +974,14 @@ - pdftex_warn - ("PDF inclusion: /Resources missing. 'This practice is not recommended' (PDF Ref)"); - } else { -- initDictFromDict(obj1, page->getResourceDict()); -+ Object *obj1 = page->getResourceDictObject(); - if (!obj1->isDict()) - pdftex_fail("PDF inclusion: invalid resources dict type <%s>", - obj1->getTypeName()); - pdf_newline(); - pdf_puts("/Resources <<\n"); - for (i = 0, l = obj1->dictGetLength(); i < l; ++i) { -- obj1->dictGetVal(i, &obj2); -+ obj2 = obj1->dictGetVal(i); - key = obj1->dictGetKey(i); - if (strcmp("Font", key) == 0) - copyFontResources(&obj2); -@@ -1009,8 +994,8 @@ - } - - // write the page contents -- page->getContents(&contents); -- if (contents->isStream()) { -+ contents = page->getContents(); -+ if (contents.isStream()) { - - // Variant A: get stream and recompress under control - // of \pdfcompresslevel -@@ -1021,36 +1006,35 @@ - - // Variant B: copy stream without recompressing - // -- contents->streamGetDict()->lookup("F", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("F"); -+ if (!obj1.isNull()) { - pdftex_fail("PDF inclusion: Unsupported external stream"); - } -- contents->streamGetDict()->lookup("Length", &obj1); -- assert(!obj1->isNull()); -+ obj1 = contents.streamGetDict()->lookup("Length"); -+ assert(!obj1.isNull()); - pdf_puts("/Length "); - copyObject(&obj1); - pdf_puts("\n"); -- contents->streamGetDict()->lookup("Filter", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("Filter"); -+ if (!obj1.isNull()) { - pdf_puts("/Filter "); - copyObject(&obj1); - pdf_puts("\n"); -- contents->streamGetDict()->lookup("DecodeParms", &obj1); -- if (!obj1->isNull()) { -+ obj1 = contents.streamGetDict()->lookup("DecodeParms"); -+ if (!obj1.isNull()) { - pdf_puts("/DecodeParms "); - copyObject(&obj1); - pdf_puts("\n"); - } - } - pdf_puts(">>\nstream\n"); -- copyStream(contents->getStream()->getUndecodedStream()); -+ copyStream(contents.getStream()->getUndecodedStream()); - pdfendstream(); -- } else if (contents->isArray()) { -+ } else if (contents.isArray()) { - pdfbeginstream(); -- for (i = 0, l = contents->arrayGetLength(); i < l; ++i) { -- Object contentsobj; -- copyStream((contents->arrayGet(i, &contentsobj))->getStream()); -- contentsobj.free(); -+ for (i = 0, l = contents.arrayGetLength(); i < l; ++i) { -+ Object contentsobj = contents.arrayGet(i); -+ copyStream(contentsobj.getStream()); - if (i < l - 1) - pdf_newline(); // add a newline after each stream except the last - } -diff -ur source.orig/texk/web2c/pdftexdir/pdftosrc.cc source/texk/web2c/pdftexdir/pdftosrc.cc ---- source.orig/texk/web2c/pdftexdir/pdftosrc.cc 2017-06-16 21:49:09.297190679 +0200 -+++ source/texk/web2c/pdftexdir/pdftosrc.cc 2017-09-19 09:48:19.661355046 +0200 -@@ -86,22 +86,20 @@ - objgen = atoi(argv[3]); - } - xref = doc->getXRef(); -- catalogDict.initNull(); -- xref->getCatalog(&catalogDict); -+ catalogDict = xref->getCatalog(); - if (!catalogDict.isDict("Catalog")) { - fprintf(stderr, "No Catalog found\n"); - exit(1); - } -- srcStream.initNull(); -+ srcStream = Object(objNull); - if (objnum == 0) { -- catalogDict.dictLookup("SourceObject", &srcStream); -+ srcStream = catalogDict.dictLookup("SourceObject"); - static char const_SourceFile[] = "SourceFile"; - if (!srcStream.isStream(const_SourceFile)) { - fprintf(stderr, "No SourceObject found\n"); - exit(1); - } -- srcName.initNull(); -- srcStream.getStream()->getDict()->lookup("SourceName", &srcName); -+ srcName = srcStream.getStream()->getDict()->lookup("SourceName"); - if (!srcName.isString()) { - fprintf(stderr, "No SourceName found\n"); - exit(1); -@@ -110,7 +108,7 @@ - // We cannot free srcName, as objname shares its string. - // srcName.free(); - } else if (objnum > 0) { -- xref->fetch(objnum, objgen, &srcStream); -+ srcStream = xref->fetch(objnum, objgen); - if (!srcStream.isStream()) { - fprintf(stderr, "Not a Stream object\n"); - exit(1); -@@ -159,29 +157,26 @@ - int localOffset = 0; - Guint firstOffset; - -- assert(xref->fetch(e->offset, 0, &objStr)->isStream()); -- nObjects = objStr.streamGetDict()->lookup("N", &obj1)->getInt(); -- obj1.free(); -- first = objStr.streamGetDict()->lookup("First", &obj1)->getInt(); -- obj1.free(); -+ objStr = xref->fetch(e->offset, 0); -+ assert(objStr.isStream()); -+ obj1 = objStr.streamGetDict()->lookup("N"); -+ nObjects = obj1.getInt(); -+ obj1 = objStr.streamGetDict()->lookup("First"); -+ first = obj1.getInt(); - firstOffset = objStr.getStream()->getBaseStream()->getStart() + first; - - // parse the header: object numbers and offsets - objStr.streamReset(); -- obj1.initNull(); -- str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first); -+ str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first); - parser = new Parser(xref, new Lexer(xref, str), gFalse); - for (n = 0; n < nObjects; ++n) { -- parser->getObj(&obj1); -- parser->getObj(&obj2); -+ obj1 = parser->getObj(); -+ obj2 = parser->getObj(); - if (n == e->gen) - localOffset = obj2.getInt(); -- obj1.free(); -- obj2.free(); - } - while (str->getChar() != EOF) ; - delete parser; -- objStr.free(); - - fprintf(outfile, "%.10lu 00000 n\n", - (long unsigned)(firstOffset + localOffset)); -@@ -192,7 +187,6 @@ - s->reset(); - while ((c = s->getChar()) != EOF) - fputc(c, outfile); -- srcStream.free(); - } - if (objnum == 0) - fprintf(stderr, "Source file extracted to %s\n", outname); -@@ -201,7 +195,6 @@ - else - fprintf(stderr, "Cross-reference table extracted to %s\n", outname); - fclose(outfile); -- catalogDict.free(); - delete doc; - delete globalParams; - } diff --git a/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh b/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh deleted file mode 100644 index 71ab0b53db..0000000000 --- a/office/texlive/prep/dump.unused.internal.libraries.from.sources.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Repacks the texlive tarball to remove unused sources. - -VERSION=${VERSION:-$(echo texlive-*source.tar.?z* | rev | cut -f 2 -d - | cut -f 1 -d - | rev)} - -tar xf texlive-${VERSION}-source.tar.xz || exit 1 -mv texlive-${VERSION}-source.tar.xz texlive-${VERSION}-source.tar.xz.orig -( cd texlive-${VERSION}-source/libs && rm -rf cairo freetype2 gd gmp mpfr icu libpng pixman zlib ) -( cd texlive-${VERSION}-source/utils && rm -rf asymptote ) -tar cf texlive-${VERSION}-source.tar texlive-${VERSION}-source -rm -r texlive-${VERSION}-source -#xz -9 texlive-${VERSION}-source.tar -xz texlive-${VERSION}-source.tar -touch -r texlive-${VERSION}-source.tar.xz.orig texlive-${VERSION}-source.tar.xz -rm texlive-${VERSION}-source.tar.xz.orig diff --git a/office/texlive/prep/texmf_get.sh b/office/texlive/prep/texmf_get.sh index 7d7c37d2d2..fa4f3f752d 100644 --- a/office/texlive/prep/texmf_get.sh +++ b/office/texlive/prep/texmf_get.sh @@ -1,6 +1,6 @@ #!/bin/bash -# texmf_get.sh (c) 2016-2018 Johannes Schoepfer, Germany, slackbuilds[at]schoepfer[dot]info +# texmf_get.sh (c) 2016 - 2018 Johannes Schoepfer, Germany, slackbuilds[at]schoepfer[dot]info # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,7 +20,7 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# V 15.0.0 +# V 15.0.2 # # Prepare xz-compressed tarballs of texlive-texmf-trees based on texlive.tlpdb # This script takes care of dependencies(as far as these are present in texlive.tlpdb) @@ -29,7 +29,7 @@ # -base: the most usefull stuff, most binaries/scripts, # manpages for compiled binaries 65mb 2017-11-07 # -docs: -base documentation only, no manpages/GNU infofiles -# -extra: remaining stuff +# -extra: remaining stuff and corresponding docs # # texlive netarchive policy: Every package is included as dependency # in exactly one collection. A package may have dependencies on other @@ -39,46 +39,51 @@ #set -e MAJORVERSION=2018 +mirror="http://mirror.ctan.org/systems/texlive/tlnet/" +TMP=$PWD/tmp -# -excluded packages, which are +# Globally excluded packages, which are/contain # -useless without tlmgr-installer # -non-linux -# -covered by an external package e.g. asymptote on SBo -# -obsolete +# -covered by an external package, e.g. asymptote on SBo +# -obsolete, e.g. omega +# -java dependend packages # -binaries provided already by texlive.Slackbuild -# -does only contain sources, or hyphen directives, e.g. metatype1, patch, ... -# -does only contain hyphen directives, e.g. hyphen-farsi ... +# -binaries provided already other system packages, e.g. texlive-scripts.ARCH +# -only sources, or hyphen directives, e.g. metatype1, patch, ... +# -only hyphen directives, e.g. hyphen-farsi ... global_exclude=" - hyphen-farsi - hyphen-arabic - asymptote - tlcockpit - tlshell - texlive.infra - texlive-docindex - texlive-scripts - texlive-msg-translations - texosquery - texliveonfly - texworks aleph - omega antomega - omegaware + asymptote + bibtexu + cslatex + dviout.win32 + hyphen-arabic + hyphen-farsi lambda - otibet + metatype1 ocherokee oinuit - cslatex - bibarts - metatype1 + omega + omegaware + otibet patch + texlive-common + texlive-docindex + texlive-msg-translations + texlive-scripts + texlive.infra + texliveonfly + texosquery + texworks + tlcockpit + tlshell wintools.win32 - dviout.win32 " - # special packages, move their type1 fonts(if metfonts are present) + # special packages, move their type1 fonts(if metafonts are present) # and/or docs to -extra special_packages=" koma-script @@ -390,7 +395,7 @@ untar () { then tar xf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated || exit 1 else - #tar vxf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated + #tar vxf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated tar vxf ${package}${flavour}.tar.xz --exclude tlpkg -C $relocated | egrep '\.sty$|\.bbx$|\.cls$' > $texmf/$package.deps if [ -n "$texmf/$package.deps" ] then @@ -423,11 +428,9 @@ untar () { fi fi - # Check for binaries, delete them as these should be provided - # by texlive.Slackbuild, keep symlinks and scripts + # Delete binaries, these are provided + # by texlive.Slackbuild, keep symlinks and scripts - unset binaries - unset scripts for arch in $platforms do if [ -d $texmf/texmf-dist/bin/$arch ] @@ -439,16 +442,19 @@ untar () { do ln -sf $(readlink $link | sed "s/^..\/..\(.*\)/..\/share\1/" ) $link || exit 1 done - # move symlinks/scripts to linked_scripts + # move symlinks to linked_scripts find $texmf/texmf-dist/bin/$arch -type l -exec mv '{}' $texmf/texmf-dist/linked_scripts/ \; - binaries="$(find $texmf/texmf-dist/bin/$arch -type f -exec file '{}' + | grep -e "executable" -e "shared object" | grep ELF | cut -f 1 -d : )" - for bin in $binaries + # keep only binaries of special packages + # remove xindy.mem(gzip compresses data) to prevent overwriting + for bin in $(find $texmf/texmf-dist/bin/$arch \ + -type f -exec file '{}' + | \ + grep -e "executable" -e "shared object" -e "gzip compressed data" | \ + grep -e ELF -e "gzip compressed data" | cut -f 1 -d : ) do - # keep binaries of special packages for binary in $keep_precompiled do - if [ "$(echo $bin | rev | cut -d'/' -f1 | rev )" != "$binary" ] + if [ "$(echo $bin | rev | cut -d'/' -f1 | rev)" != "$binary" ] then rm $bin echo $bin | rev | cut -d'/' -f1 | rev >> $binary_removed.$edition @@ -723,12 +729,7 @@ exit 0 # Main -# release mirror -mirror="http://mirror.ctan.org/systems/texlive/tlnet/" -# pre-test mirror 2016 -# mirror="http://ftp.cstug.cz/pub/tex/local/tlpretest/" LANG=C -TMP=$PWD/tmp output=$TMP/packages output_doc=$TMP/packages.doc.tmp errorlog=$TMP/error.log @@ -777,7 +778,7 @@ fi # Get linenumbers of empty lines from $db emptylines="$(grep -n ^$ $db | cut -d':' -f1)" -# Provide TLCore packages for -base, as these packages(and their dependencies) should be present in any case. +# Provide TLCore packages for -base, as these packages(and their dependencies) should be present in any case. grep -B1 ^'category TLCore' $db | grep -v ^'category TLCore' | grep -v ^-- | grep -v '\.' | cut -d' ' -f2 > $corepackages # Make a list of all collections @@ -790,7 +791,7 @@ do then for arch in $platforms do - global_exclude+=" $(echo $exclude | sed "s/\.ARCH$/\.$arch/")" + global_exclude+=" $(echo $exclude | sed "s/\.ARCH$/\.$arch/")" done global_exclude=${global_exclude/$exclude/} fi @@ -995,6 +996,26 @@ case $edition in Content of -$edition: $(sed "/-linux$/d" $packages_base | sort) EOF + # add texdoc cache file + if [ $(command -v texdoc) ] + then + mkdir -p $texmf/texmf-dist/tlpkg + mkdir -p texmf-dist/scripts/texdoc + ln -s ${db}.orig $texmf/texmf-dist/tlpkg/texlive.tlpdb + TEXMFVAR=$texmf/texmf-dist \ + texdoc -lM texlive-en >/dev/null + mv texmf-dist/texdoc/cache-tlpdb.lua \ + texmf-dist/scripts/texdoc/Data.tlpdb.lua + rm -rf $texmf/texmf-dist/tlpkg + else + echo "WARNING: texdoc/texlive is not installed, the texdoc cache" + echo "Data.tlpdb.lua can't be created and wont't be available." + echo "texdoc will not wotk without this." + echo "" + echo "Continue with any key or abort with ctrl-c" + read -n1 + fi + #Splitted packages, type1 fonts/docs moved to -extra: #$(echo $special_packages) #EOF @@ -1003,6 +1024,7 @@ EOF tar rf $tarball --owner=0 --group=0 --sort=name \ texmf-dist/doc/man/ texmf-dist/doc/info/ \ texmf-dist/packages.$edition.gz \ + texmf-dist/scripts/texdoc/Data.tlpdb.lua \ || exit 1 # # add cm-super minimal maps/config # tar rf $tarball --owner=0 --group=0 --sort=name \ diff --git a/office/texlive/texlive.SlackBuild b/office/texlive/texlive.SlackBuild index 63b97c33a5..527747254d 100644 --- a/office/texlive/texlive.SlackBuild +++ b/office/texlive/texlive.SlackBuild @@ -30,7 +30,7 @@ PRGNAM=texlive SOURCEVERSION=20180414 -VERSION=${VERSION:-2018.180630} +VERSION=${VERSION:-2018.180822} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} @@ -90,11 +90,13 @@ sed -i \ -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \ texk/kpathsea/texmf.cnf -# prevent compiling Xdvi with libXp -sed -i 's|-lXp ||' texk/xdvik/configure - # Upstream stable fixes patch -Np0 -i $CWD/patches/20180625.diff || exit 1 +# Add missing synctex header +patch -Np0 -i $CWD/patches/synctex-missing-header.patch || exit 1 + +# prevent compiling Xdvi with libXp +sed -i 's|-lXp ||' texk/xdvik/configure # Needed on -current, 2018-05-06 # The 2018 version of texlive ships with support for poppler-0.57.0 and older, @@ -123,6 +125,9 @@ cd build --disable-missing \ --disable-multiplatform \ --disable-debug \ + --disable-dialog \ + --disable-bibtexu \ + --disable-xz \ --with-x \ --enable-xindy \ --disable-xindy-docs \ diff --git a/office/texlive/texlive.info b/office/texlive/texlive.info index bf3d620f39..616d092ddc 100644 --- a/office/texlive/texlive.info +++ b/office/texlive/texlive.info @@ -1,10 +1,10 @@ PRGNAM="texlive" -VERSION="2018.180630" +VERSION="2018.180822" HOMEPAGE="http://tug.org/texlive/" DOWNLOAD="http://mirrors.ctan.org/systems/texlive/Source/texlive-20180414-source.tar.xz \ - http://slackware.schoepfer.info/slackbuilds/texlive/2018/texlive/texlive-base-2018.180630.tar.xz" + http://slackware.schoepfer.info/slackbuilds/texlive/2018/texlive/texlive-base-2018.180822.tar.xz" MD5SUM="41d1e8874d266935c656fe51b440a413 \ - afd68de4f3548bb1f7bb1594d2a2b9bd" + ad0cf3240342615167baf2c119bb3063" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" -- cgit v1.2.3