diff options
Diffstat (limited to 'office/texlive')
-rw-r--r-- | office/texlive/README | 14 | ||||
-rw-r--r-- | office/texlive/README.tlpkg | 17 | ||||
-rw-r--r-- | office/texlive/doinst.sh | 5 | ||||
-rw-r--r-- | office/texlive/patches/20180625.diff | 688 | ||||
-rw-r--r-- | office/texlive/patches/texlive-20170524-source-gcc7-1.patch | 33 | ||||
-rw-r--r-- | office/texlive/patches/texlive-20170524-source-upstream_fixes-2.patch | 451 | ||||
-rw-r--r-- | office/texlive/patches/texlive-poppler-0.59.patch | 1142 | ||||
-rw-r--r-- | office/texlive/prep/dump.unused.internal.libraries.from.sources.sh | 15 | ||||
-rw-r--r-- | office/texlive/prep/texmf_get.sh | 1054 | ||||
-rw-r--r-- | office/texlive/slack-desc | 19 | ||||
-rw-r--r-- | office/texlive/texlive.SlackBuild | 249 | ||||
-rw-r--r-- | office/texlive/texlive.info | 12 |
12 files changed, 0 insertions, 3699 deletions
diff --git a/office/texlive/README b/office/texlive/README deleted file mode 100644 index d08796d591..0000000000 --- a/office/texlive/README +++ /dev/null @@ -1,14 +0,0 @@ -TeXLive (TeXLive binaries, support files, TeX formats) - -This package contains binaries and many support files, TeX formats and -packages, and other files included in the TeXLive TeX distribution. -This should be adequate for the needs of most TeX users. - -The remaining stuff can be found in texlive-extra and texlive-docs, -all of which are also available at SlackBuilds.org. - -Have a look at the scripts in the prep/ directory to see how the texmf -archives were created from the original Texlive netarchives. - -Note that this package conflicts with the tetex packages in Slackware, -so you'll need to remove tetex and tetex-doc before installing TeXLive. diff --git a/office/texlive/README.tlpkg b/office/texlive/README.tlpkg deleted file mode 100644 index 7a6f790ca8..0000000000 --- a/office/texlive/README.tlpkg +++ /dev/null @@ -1,17 +0,0 @@ -The TeXLive Package Manager, i.e. tlmgr(1), is not shipped with this -TeXLive package, as it's not expected to work properly (if at all). -The general consensus from the TeXLive users mailing list is that -distributions should not be shipping tlpkg. - -The *proper* way to upgrade the TeXLive Slackware package (or any -part of it) is through your Slackware's package manager. If you -elect to try tlmgr(1), and it doesn't work at all, or worse, it messes -up part of your TeXLive installation, too bad. On the other hand, -if you are able to document exactly what we need to do in order to -make it: - 1) work - 2) put updates and such in a user-specific directory, i.e. - *not* alter/replace system package contents -then we would love to hear from you. :-) - ---rworkman :-) diff --git a/office/texlive/doinst.sh b/office/texlive/doinst.sh deleted file mode 100644 index f864e767d6..0000000000 --- a/office/texlive/doinst.sh +++ /dev/null @@ -1,5 +0,0 @@ -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/mtxrun --generate 1>/dev/null 2>/dev/null diff --git a/office/texlive/patches/20180625.diff b/office/texlive/patches/20180625.diff deleted file mode 100644 index 583d99486d..0000000000 --- a/office/texlive/patches/20180625.diff +++ /dev/null @@ -1,688 +0,0 @@ -diff -ur ./texk/dvipdfm-x/ChangeLog ../b18/texk/dvipdfm-x/ChangeLog ---- ./texk/dvipdfm-x/ChangeLog 2018-03-03 11:27:37.000000000 +0100 -+++ ../b18/texk/dvipdfm-x/ChangeLog 2018-06-25 22:07:46.343277185 +0200 -@@ -1,3 +1,16 @@ -+2018-05-06 Akira Kakuto <kakuto@fuk.kindai.ac.jp> -+ -+ * tt_cmap.c: Revert a part of changes in 2017-12-09, -+ which breaks to give tounicode entries for ligatures. -+ http://tug.org/pipermail/tex-live/2018-May/041608.html. -+ * configure.ac: Version 20180506. -+ -+ 2018-04-28 Stefan Br\"uns <stefan.bruens@rwth-aachen.de> -+ -+ * pngimage.c: Fix a bug which causes a segfault with 1/2/4-bit -+ transparent indexed PNGs. -+ * configure.ac: Version 20180428. -+ - 2018-03-03 Akira Kakuto <kakuto@fuk.kindai.ac.jp> - - * xbb.c: Remove unused lines. -diff -ur ./texk/dvipdfm-x/configure ../b18/texk/dvipdfm-x/configure ---- ./texk/dvipdfm-x/configure 2018-02-17 09:41:35.000000000 +0100 -+++ ../b18/texk/dvipdfm-x/configure 2018-06-25 22:07:47.183276612 +0200 -@@ -1,6 +1,6 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20180217. -+# Generated by GNU Autoconf 2.69 for dvipdfm-x (TeX Live) 20180506. - # - # Report bugs to <tex-k@tug.org>. - # -@@ -590,8 +590,8 @@ - # Identity of this package. - PACKAGE_NAME='dvipdfm-x (TeX Live)' - PACKAGE_TARNAME='dvipdfm-x--tex-live-' --PACKAGE_VERSION='20180217' --PACKAGE_STRING='dvipdfm-x (TeX Live) 20180217' -+PACKAGE_VERSION='20180506' -+PACKAGE_STRING='dvipdfm-x (TeX Live) 20180506' - PACKAGE_BUGREPORT='tex-k@tug.org' - PACKAGE_URL='' - -@@ -1350,7 +1350,7 @@ - # 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 dvipdfm-x (TeX Live) 20180217 to adapt to many kinds of systems. -+\`configure' configures dvipdfm-x (TeX Live) 20180506 to adapt to many kinds of systems. - - Usage: $0 [OPTION]... [VAR=VALUE]... - -@@ -1421,7 +1421,7 @@ - - if test -n "$ac_init_help"; then - case $ac_init_help in -- short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20180217:";; -+ short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20180506:";; - esac - cat <<\_ACEOF - -@@ -1551,7 +1551,7 @@ - test -n "$ac_init_help" && exit $ac_status - if $ac_init_version; then - cat <<\_ACEOF --dvipdfm-x (TeX Live) configure 20180217 -+dvipdfm-x (TeX Live) configure 20180506 - generated by GNU Autoconf 2.69 - - Copyright (C) 2012 Free Software Foundation, Inc. -@@ -2390,7 +2390,7 @@ - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - --It was created by dvipdfm-x (TeX Live) $as_me 20180217, which was -+It was created by dvipdfm-x (TeX Live) $as_me 20180506, which was - generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ -@@ -8075,7 +8075,7 @@ - - # Define the identity of the package. - PACKAGE='dvipdfm-x--tex-live-' -- VERSION='20180217' -+ VERSION='20180506' - - - cat >>confdefs.h <<_ACEOF -@@ -14744,7 +14744,7 @@ - Report bugs to <bug-libtool@gnu.org>." - - lt_cl_version="\ --dvipdfm-x (TeX Live) config.lt 20180217 -+dvipdfm-x (TeX Live) config.lt 20180506 - configured by $0, generated by GNU Autoconf 2.69. - - Copyright (C) 2011 Free Software Foundation, Inc. -@@ -16624,7 +16624,7 @@ - # report actual input values of CONFIG_FILES etc. instead of their - # values after options handling. - ac_log=" --This file was extended by dvipdfm-x (TeX Live) $as_me 20180217, which was -+This file was extended by dvipdfm-x (TeX Live) $as_me 20180506, which was - generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES -@@ -16694,7 +16694,7 @@ - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" - ac_cs_version="\\ --dvipdfm-x (TeX Live) config.status 20180217 -+dvipdfm-x (TeX Live) config.status 20180506 - configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -diff -ur ./texk/dvipdfm-x/configure.ac ../b18/texk/dvipdfm-x/configure.ac ---- ./texk/dvipdfm-x/configure.ac 2018-02-28 00:14:55.000000000 +0100 -+++ ../b18/texk/dvipdfm-x/configure.ac 2018-06-25 22:07:47.183276612 +0200 -@@ -7,7 +7,7 @@ - dnl gives unlimited permission to copy and/or distribute it, - dnl with or without modifications, as long as this notice is preserved. - dnl --AC_INIT([dvipdfm-x (TeX Live)], [20180217], [tex-k@tug.org]) -+AC_INIT([dvipdfm-x (TeX Live)], [20180506], [tex-k@tug.org]) - AC_PREREQ([2.65]) - AC_CONFIG_SRCDIR([agl.c]) - AC_CONFIG_AUX_DIR([../../build-aux]) -diff -ur ./texk/dvipdfm-x/pngimage.c ../b18/texk/dvipdfm-x/pngimage.c ---- ./texk/dvipdfm-x/pngimage.c 2018-02-17 09:41:35.000000000 +0100 -+++ ../b18/texk/dvipdfm-x/pngimage.c 2018-06-25 22:07:49.306275165 +0200 -@@ -964,12 +964,16 @@ - png_bytep trans; - int num_trans; - png_uint_32 i; -+ png_byte bpc, mask, shift; - - if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) || - !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) { - WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR); - return NULL; - } -+ bpc = png_get_bit_depth(png_ptr, info_ptr); -+ mask = 0xff >> (8 - bpc); -+ shift = 8 - bpc; - - smask = pdf_new_stream(STREAM_COMPRESS); - dict = pdf_stream_dict(smask); -@@ -981,7 +985,8 @@ - pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray")); - pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8)); - for (i = 0; i < width*height; i++) { -- png_byte idx = image_data_ptr[i]; -+ /* data is packed for 1/2/4 bpc formats, msb first */ -+ png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask; - smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff; - } - pdf_add_stream(smask, (char *)smask_data_ptr, width*height); -diff -ur ./texk/dvipdfm-x/tt_cmap.c ../b18/texk/dvipdfm-x/tt_cmap.c ---- ./texk/dvipdfm-x/tt_cmap.c 2017-12-09 15:07:09.000000000 +0100 -+++ ../b18/texk/dvipdfm-x/tt_cmap.c 2018-06-25 22:07:49.617274953 +0200 -@@ -1,6 +1,6 @@ - /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. - -- Copyright (C) 2007-2017 by Jin-Hwan Cho and Shunsaku Hirata, -+ Copyright (C) 2007-2018 by Jin-Hwan Cho and Shunsaku Hirata, - the dvipdfmx project team. - - This program is free software; you can redistribute it and/or modify -@@ -928,19 +928,12 @@ - } - #undef MAX_UNICODES - if (unicode_count == -1) { --#if defined(LIBDPX) - if(verbose > VERBOSE_LEVEL_MIN) { - if (name) - MESG("No Unicode mapping available: GID=%u, name=%s\n", gid, name); - else - MESG("No Unicode mapping available: GID=%u\n", gid); - } --#else -- if (name) -- MESG("No Unicode mapping available: GID=%u, name=%s\n", gid, name); -- else -- MESG("No Unicode mapping available: GID=%u\n", gid); --#endif /* LIBDPX */ - } else { - /* the Unicode characters go into wbuf[2] and following, in UTF16BE */ - /* we rely on WBUF_SIZE being more than adequate for MAX_UNICODES */ -@@ -1021,13 +1014,7 @@ - { - USHORT count = 0; - USHORT cid = cffont ? cff_charsets_lookup_inverse(cffont, gid) : gid; -- -- /* Skip PUA characters and alphabetic presentation forms, allowing -- * handle_subst_glyphs() as it might find better mapping. Fixes the -- * mapping of ligatures encoded in PUA in fonts like Linux Libertine -- * and old Adobe fonts. -- */ -- if (is_used_char2(used_chars, cid) && !is_PUA_or_presentation(ch)) { -+ if (is_used_char2(used_chars, cid)) { - int len; - unsigned char *p = wbuf + 2; - -@@ -1038,11 +1025,18 @@ - len = UC_UTF16BE_encode_char((int32_t) ch, &p, wbuf + WBUF_SIZE); - CMap_add_bfchar(cmap, wbuf, 2, wbuf + 2, len); - -- /* Avoid duplicate entry -- * There are problem when two Unicode code is mapped to -- * single glyph... -+ /* Skip PUA characters and alphabetic presentation forms, allowing -+ * handle_subst_glyphs() as it might find better mapping. Fixes the -+ * mapping of ligatures encoded in PUA in fonts like Linux Libertine -+ * and old Adobe fonts. - */ -- used_chars[cid / 8] &= ~(1 << (7 - (cid % 8))); -+ if (!is_PUA_or_presentation(ch)) { -+ /* Avoid duplicate entry -+ * There are problem when two Unicode code is mapped to -+ * single glyph... -+ */ -+ used_chars[cid / 8] &= ~(1 << (7 - (cid % 8))); -+ } - } - - return count; -diff -ur ./texk/web2c/ptexdir/ChangeLog ../b18/texk/web2c/ptexdir/ChangeLog ---- ./texk/web2c/ptexdir/ChangeLog 2018-02-05 13:35:05.000000000 +0100 -+++ ../b18/texk/web2c/ptexdir/ChangeLog 2018-06-25 22:08:39.566240911 +0200 -@@ -1,3 +1,16 @@ -+2018-05-06 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> -+ -+ * kanji.c: More strict check kanji token. -+ -+2018-04-14 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> -+ -+ * ptex-base.ch: Fix issue GitHub:texjporg/tex-jp-build#57 -+ that discontinuous KINSOKU/INHIBIT table cannot be -+ searched properly. -+ (regression caused by a commmit of 2017-09-11) -+ * tests/free_pena.tex, tests/free_ixsp.tex: Added. -+ * ptex_version.h: pTeX version p3.8.1. -+ - 2018-02-05 Hironobu Yamashita <h.y.acetaminophen@gmail.com> - - * ptex-base.ch: Set subtype for JFM glue in math list. -diff -ur ./texk/web2c/ptexdir/kanji.c ../b18/texk/web2c/ptexdir/kanji.c ---- ./texk/web2c/ptexdir/kanji.c 2016-11-25 19:24:38.000000000 +0100 -+++ ../b18/texk/web2c/ptexdir/kanji.c 2018-06-25 22:08:39.675240837 +0200 -@@ -4,6 +4,7 @@ - */ - - #include "kanji.h" -+#define CS_TOKEN_FLAG 0xFFFF - - #if !defined(WIN32) - int sjisterminal; -@@ -12,7 +13,8 @@ - /* TOKEN */ - boolean check_kanji(integer c) - { -- return is_char_kanji(c); -+ if (c >= CS_TOKEN_FLAG) return false; -+ else return is_char_kanji(c); - } - - boolean is_char_ascii(integer c) -diff -ur ./texk/web2c/ptexdir/ptex-base.ch ../b18/texk/web2c/ptexdir/ptex-base.ch ---- ./texk/web2c/ptexdir/ptex-base.ch 2018-02-05 13:35:05.000000000 +0100 -+++ ../b18/texk/web2c/ptexdir/ptex-base.ch 2018-06-25 22:08:39.677240836 +0200 -@@ -58,6 +58,7 @@ - % pTeX p3.7.1. - % (2017-09-07) HK pTeX p3.7.2 More restrictions on direction change commands. - % (2018-01-21) HK Added \ptexversion primitive and co. pTeX p3.8. -+% (2018-04-14) HK pTeX p3.8.1 Bug fix for discontinuous KINSOKU table. - % - - @x -@@ -73,8 +74,8 @@ - @y - @d pTeX_version=3 - @d pTeX_minor_version=8 --@d pTeX_revision==".0" --@d pTeX_version_string=='-p3.8.0' {current \pTeX\ version} -+@d pTeX_revision==".1" -+@d pTeX_version_string=='-p3.8.1' {current \pTeX\ version} - @# - @d pTeX_banner=='This is pTeX, Version 3.14159265',pTeX_version_string - @d pTeX_banner_k==pTeX_banner -@@ -6397,6 +6398,8 @@ - @d inhibit_both=0 {disable to insert space before 2byte-char and after it} - @d inhibit_previous=1 {disable to insert space before 2byte-char} - @d inhibit_after=2 {disable to insert space after 2byte-char} -+@d inhibit_none=3 {enable to insert space before/after 2byte-char} -+@d inhibit_unused=4 {unused entry} - @d no_entry=1000 - @d new_pos=0 - @d cur_pos=1 -@@ -6427,14 +6430,15 @@ - begin s:=calc_pos(c); p:=s; - if n=new_pos then - begin repeat -- if (inhibit_xsp_code(p)=0)or(inhibit_xsp_code(p)=c) then goto done; -+ if (inhibit_xsp_type(p)=inhibit_unused)or(inhibit_xsp_code(p)=0) -+ or(inhibit_xsp_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; p:=no_entry; - end - else - begin repeat -- if inhibit_xsp_code(p)=0 then goto done1; -- if inhibit_xsp_code(p)=c then goto done; -+ if inhibit_xsp_code(p)=0 then goto done1 -+ else if (inhibit_xsp_type(p)<>inhibit_unused)and(inhibit_xsp_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; - done1: p:=no_entry; -@@ -6447,9 +6451,10 @@ - begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int; - if is_char_kanji(n) then - begin j:=get_inhibit_pos(tokanji(n),new_pos); -- if (j<>no_entry)and(cur_val>inhibit_after)and(global or cur_level=level_one) then -- begin n:=0; cur_val:=0 end -- { remove the entry from inhibit table } -+ if (j<>no_entry)and(cur_val>inhibit_after) then -+ begin if global or(cur_level=level_one) then cur_val:=inhibit_unused -+ { remove the entry from inhibit table } -+ else cur_val:=inhibit_none; end - else if j=no_entry then - begin print_err("Inhibit table is full!!"); - help1("I'm skipping this control sequences.");@/ -@@ -6466,7 +6471,7 @@ - - @ @<Fetch inhibit type from some table@>= - begin scan_int; q:=get_inhibit_pos(tokanji(cur_val),cur_pos); --cur_val_level:=int_val; cur_val:=3; -+cur_val_level:=int_val; cur_val:=inhibit_none; - if q<>no_entry then cur_val:=inhibit_xsp_type(q); - end - -@@ -6476,6 +6481,7 @@ - - @d pre_break_penalty_code=1 - @d post_break_penalty_code=2 -+@d kinsoku_unused_code=3 - - @<Put each...@>= - primitive("prebreakpenalty",assign_kinsoku,pre_break_penalty_code); -@@ -6502,15 +6508,16 @@ - gubed - if n=new_pos then - begin repeat -- if (kinsoku_type(p)=0)or(kinsoku_code(p)=c) then goto done; -+ if (kinsoku_type(p)=0)or(kinsoku_type(p)=kinsoku_unused_code) -+ or(kinsoku_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; - p:=no_entry; - end - else - begin repeat -- if kinsoku_type(p)=0 then goto done1; -- if kinsoku_code(p)=c then goto done; -+ if kinsoku_type(p)=0 then goto done1 -+ else if (kinsoku_type(p)<>kinsoku_unused_code)and(kinsoku_code(p)=c) then goto done; - incr(p); if p>255 then p:=0; - until s=p; - done1: p:=no_entry; -@@ -6523,8 +6530,8 @@ - begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int; - if is_char_ascii(n) or is_char_kanji(n) then - begin j:=get_kinsoku_pos(tokanji(n),new_pos); -- if (j<>no_entry)and(cur_val=0)and(global or cur_level=level_one) then -- define(kinsoku_base+j,0,0) { remove the entry from KINSOKU table } -+ if (j<>no_entry)and(cur_val=0)and(global or(cur_level=level_one)) then -+ define(kinsoku_base+j,kinsoku_unused_code,0) { remove the entry from KINSOKU table } - else begin - if j=no_entry then begin - print_err("KINSOKU table is full!!"); -diff -ur ./texk/web2c/ptexdir/ptex_version.h ../b18/texk/web2c/ptexdir/ptex_version.h ---- ./texk/web2c/ptexdir/ptex_version.h 2018-01-21 04:48:06.000000000 +0100 -+++ ../b18/texk/web2c/ptexdir/ptex_version.h 2018-06-25 22:08:39.678240835 +0200 -@@ -1 +1 @@ --#define PTEX_VERSION "p3.8.0" -+#define PTEX_VERSION "p3.8.1" -diff -ur ./texk/web2c/uptexdir/kanji.c ../b18/texk/web2c/uptexdir/kanji.c ---- ./texk/web2c/uptexdir/kanji.c 2018-02-25 01:31:25.000000000 +0100 -+++ ../b18/texk/web2c/uptexdir/kanji.c 2018-06-25 22:08:41.864239345 +0200 -@@ -18,7 +18,7 @@ - /* TOKEN */ - boolean check_kanji (integer c) - { -- if (c > CS_TOKEN_FLAG) return false; -+ if (c >= CS_TOKEN_FLAG) return false; - else if (!(XXHi(c)>=KCAT_KANJI && XXHi(c)<=KCAT_HANGUL)) return false; - else return is_char_kanji(c); - } -diff -ur ./utils/README ../b18/utils/README ---- ./utils/README 2018-04-08 22:08:33.000000000 +0200 -+++ ../b18/utils/README 2018-06-25 22:08:45.738236705 +0200 -@@ -1,4 +1,4 @@ --$Id: README 47384 2018-04-08 20:08:33Z karl $ -+$Id: README 47642 2018-05-08 16:06:43Z karl $ - Public domain. Originally written 2005 by Karl Berry. - - Extra utilities we (optionally) compile for TeX Live. -@@ -16,7 +16,7 @@ - - lacheck - maintained here, by us - --m-tx 0.63 - checked 09jan18 -+m-tx 0.63a - checked 29apr18 - http://ctan.org/pkg/m-tx/ - - pmx 2.8.4 - checked 14feb18 -diff -ur ./utils/m-tx/ChangeLog ../b18/utils/m-tx/ChangeLog ---- ./utils/m-tx/ChangeLog 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/ChangeLog 2018-06-25 22:08:49.771233956 +0200 -@@ -1,3 +1,7 @@ -+2018-04-29 Akira Kakuto <kakuto@fuk.kindai.ac.jp> -+ -+ * Import m-tx 0.63a. -+ - 2018-01-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> - - * Import m-tx 0.63. -diff -ur ./utils/m-tx/TLpatches/ChangeLog ../b18/utils/m-tx/TLpatches/ChangeLog ---- ./utils/m-tx/TLpatches/ChangeLog 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/TLpatches/ChangeLog 2018-06-25 22:08:49.772233956 +0200 -@@ -1,3 +1,7 @@ -+2018-04-29 Akira Kakuto <kakuto@fuk.kindai.ac.jp> -+ -+ * patch-01-write-bin: Update for 0.63a. -+ - 2018-01-09 Akira Kakuto <kakuto@fuk.kindai.ac.jp> - - * patch-01-write-bin: Update for 0.63. -diff -ur ./utils/m-tx/TLpatches/TL-Changes ../b18/utils/m-tx/TLpatches/TL-Changes ---- ./utils/m-tx/TLpatches/TL-Changes 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/TLpatches/TL-Changes 2018-06-25 22:08:49.772233956 +0200 -@@ -1,4 +1,4 @@ --Changes applied to the mtx-0.63 tree as obtained from: -+Changes applied to the mtx-0.63a tree as obtained from: - http://www.ctan.org/tex-archive/support/m-tx/ - - Remove: -diff -ur ./utils/m-tx/TLpatches/patch-01-write-bin ../b18/utils/m-tx/TLpatches/patch-01-write-bin ---- ./utils/m-tx/TLpatches/patch-01-write-bin 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/TLpatches/patch-01-write-bin 2018-06-25 22:08:49.772233956 +0200 -@@ -1,6 +1,21 @@ --diff -ur mtx-0.63.orig/globals.c mtx-0.63/globals.c ----- mtx-0.63.orig/globals.c Tue Jan 09 01:39:42 2018 --+++ mtx-0.63/globals.c Tue Jan 09 08:46:40 2018 -+diff -ur mtx-0.63a/files.c mtx-src/files.c -+--- mtx-0.63a/files.c Tue Jan 09 01:39:42 2018 -++++ mtx-src/files.c Wed Apr 25 18:07:12 2018 -+@@ -289,9 +289,9 @@ -+ pushFile(infilename); -+ strcpy(outfile_NAME, outfilename); -+ if (outfile != NULL) -+- outfile = freopen(outfile_NAME, "w", outfile); -++ outfile = freopen(outfile_NAME, "wb", outfile); -+ else -+- outfile = fopen(outfile_NAME, "w"); -++ outfile = fopen(outfile_NAME, "wb"); -+ _SETIO(outfile != NULL, FileNotFound); -+ strcpy(stylefile_NAME, stylefilename); -+ if (stylefile != NULL) -+diff -ur mtx-0.63a/globals.c mtx-src/globals.c -+--- mtx-0.63a/globals.c Tue Jan 09 01:39:42 2018 -++++ mtx-src/globals.c Wed Apr 25 18:07:37 2018 - @@ -230,7 +230,7 @@ - if (outfile != NULL) - fclose(outfile); -diff -ur ./utils/m-tx/configure ../b18/utils/m-tx/configure ---- ./utils/m-tx/configure 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/configure 2018-06-25 22:08:49.879233883 +0200 -@@ -1,6 +1,6 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.69 for m-tx (TeX Live) 0.63. -+# Generated by GNU Autoconf 2.69 for m-tx (TeX Live) 0.63a. - # - # Report bugs to <tex-k@tug.org>. - # -@@ -580,8 +580,8 @@ - # Identity of this package. - PACKAGE_NAME='m-tx (TeX Live)' - PACKAGE_TARNAME='m-tx--tex-live-' --PACKAGE_VERSION='0.63' --PACKAGE_STRING='m-tx (TeX Live) 0.63' -+PACKAGE_VERSION='0.63a' -+PACKAGE_STRING='m-tx (TeX Live) 0.63a' - PACKAGE_BUGREPORT='tex-k@tug.org' - PACKAGE_URL='' - -@@ -1275,7 +1275,7 @@ - # 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 m-tx (TeX Live) 0.63 to adapt to many kinds of systems. -+\`configure' configures m-tx (TeX Live) 0.63a to adapt to many kinds of systems. - - Usage: $0 [OPTION]... [VAR=VALUE]... - -@@ -1341,7 +1341,7 @@ - - if test -n "$ac_init_help"; then - case $ac_init_help in -- short | recursive ) echo "Configuration of m-tx (TeX Live) 0.63:";; -+ short | recursive ) echo "Configuration of m-tx (TeX Live) 0.63a:";; - esac - cat <<\_ACEOF - -@@ -1438,7 +1438,7 @@ - test -n "$ac_init_help" && exit $ac_status - if $ac_init_version; then - cat <<\_ACEOF --m-tx (TeX Live) configure 0.63 -+m-tx (TeX Live) configure 0.63a - generated by GNU Autoconf 2.69 - - Copyright (C) 2012 Free Software Foundation, Inc. -@@ -1861,7 +1861,7 @@ - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - --It was created by m-tx (TeX Live) $as_me 0.63, which was -+It was created by m-tx (TeX Live) $as_me 0.63a, which was - generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ -@@ -3784,7 +3784,7 @@ - - # Define the identity of the package. - PACKAGE='m-tx--tex-live-' -- VERSION='0.63' -+ VERSION='0.63a' - - - cat >>confdefs.h <<_ACEOF -@@ -5868,7 +5868,7 @@ - # report actual input values of CONFIG_FILES etc. instead of their - # values after options handling. - ac_log=" --This file was extended by m-tx (TeX Live) $as_me 0.63, which was -+This file was extended by m-tx (TeX Live) $as_me 0.63a, which was - generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES -@@ -5925,7 +5925,7 @@ - cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" - ac_cs_version="\\ --m-tx (TeX Live) config.status 0.63 -+m-tx (TeX Live) config.status 0.63a - configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -diff -ur ./utils/m-tx/mtx-src/Corrections ../b18/utils/m-tx/mtx-src/Corrections ---- ./utils/m-tx/mtx-src/Corrections 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/Corrections 2018-06-25 22:08:49.880233882 +0200 -@@ -3,6 +3,12 @@ - - Newest items at top. You might also want to look at file `MAINTENANCE`. - -+Version 0.63a -+------------- -+ -+Commented out apparently spurious begin...end block in preambleDefaults -+in preamble.pas. (RDT) -+ - Version 0.63 - ------------ - -diff -ur ./utils/m-tx/mtx-src/files.c ../b18/utils/m-tx/mtx-src/files.c ---- ./utils/m-tx/mtx-src/files.c 2016-11-25 19:24:43.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/files.c 2018-06-25 22:08:49.882233881 +0200 -@@ -289,9 +289,9 @@ - pushFile(infilename); - strcpy(outfile_NAME, outfilename); - if (outfile != NULL) -- outfile = freopen(outfile_NAME, "w", outfile); -+ outfile = freopen(outfile_NAME, "wb", outfile); - else -- outfile = fopen(outfile_NAME, "w"); -+ outfile = fopen(outfile_NAME, "wb"); - _SETIO(outfile != NULL, FileNotFound); - strcpy(stylefile_NAME, stylefilename); - if (stylefile != NULL) -diff -ur ./utils/m-tx/mtx-src/libp2c/p2clib.c ../b18/utils/m-tx/mtx-src/libp2c/p2clib.c ---- ./utils/m-tx/mtx-src/libp2c/p2clib.c 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/libp2c/p2clib.c 2018-06-25 22:08:49.883233880 +0200 -@@ -73,8 +73,8 @@ - { - register char *dd = (char *)d, *ss = (char *)s; - if (dd < ss || dd - ss >= n) { --#if defined(bcopy) && defined(memcpy) -- my_memcpy(dd, ss, n); -+#if defined(bcopy) && defined(memcpy) -+ Anyptr my_memcpy(Anyptr d, Const Anyptr s, size_t n); - #else - memcpy(dd, ss, n); - #endif -diff -ur ./utils/m-tx/mtx-src/preamble.c ../b18/utils/m-tx/mtx-src/preamble.c ---- ./utils/m-tx/mtx-src/preamble.c 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/preamble.c 2018-06-25 22:08:49.953233832 +0200 -@@ -801,8 +801,8 @@ - stave_size[i] = unspec; - for (i = 0; i <= maxstaves; i++) - nspace[i] = unspec; -- nspace[i] = unspec; -- stave_size[i-1] = unspec; -+ /* next line seems to be spurious. 0.63a RDT */ -+ /* begin nspace[i]:=unspec; stave_size[i]:=unspec; end; */ - n_pages = 1; - n_systems = 1; - readStyles(); -diff -ur ./utils/m-tx/mtx-src/preamble.pas ../b18/utils/m-tx/mtx-src/preamble.pas ---- ./utils/m-tx/mtx-src/preamble.pas 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/preamble.pas 2018-06-25 22:08:49.953233832 +0200 -@@ -501,7 +501,8 @@ - for i:=1 to maxvoices do setVocal(i,false); - for i:=1 to maxstaves do stave_size[i]:=unspec; - for i:=0 to maxstaves do nspace[i]:=unspec; -- begin nspace[i]:=unspec; stave_size[i]:=unspec; end; -+ { next line seems to be spurious. 0.63a RDT } -+ { begin nspace[i]:=unspec; stave_size[i]:=unspec; end; } - n_pages:=1; n_systems:=1; - readStyles; old_known_styles := known_styles; - for i:=1 to lines_in_paragraph do omit_line[i]:=false; -diff -ur ./utils/m-tx/mtx-src/prepmx.c ../b18/utils/m-tx/mtx-src/prepmx.c ---- ./utils/m-tx/mtx-src/prepmx.c 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/prepmx.c 2018-06-25 22:08:49.954233832 +0200 -@@ -66,8 +66,8 @@ - - /** M-Tx preprocessor to PMX Dirk Laurie */ - --#define version "0.63" --#define version_date "<7 January 2018>" -+#define version "0.63a" -+#define version_date "<8 April 2018>" - - /** See file "Corrections" for updates */ - -@@ -758,7 +758,7 @@ - Static void topOfPMXfile(void) - { - Char STR2[24]; -- Char STR3[32]; -+ Char STR3[30]; - - putLine("---"); - sprintf(STR2, "\\def\\mtxversion{%s}", version); -diff -ur ./utils/m-tx/mtx-src/prepmx.pas ../b18/utils/m-tx/mtx-src/prepmx.pas ---- ./utils/m-tx/mtx-src/prepmx.pas 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/mtx-src/prepmx.pas 2018-06-25 22:08:49.954233832 +0200 -@@ -5,8 +5,8 @@ - { CMO: addition/change by Christian Mondrup } - - {* M-Tx preprocessor to PMX Dirk Laurie } --const version = '0.63'; -- version_date = '<7 January 2018>'; -+const version = '0.63a'; -+ version_date = '<8 April 2018>'; - - {* See file "Corrections" for updates } - -diff -ur ./utils/m-tx/tests/mozart.pmx ../b18/utils/m-tx/tests/mozart.pmx ---- ./utils/m-tx/tests/mozart.pmx 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/tests/mozart.pmx 2018-06-25 22:08:50.059233760 +0200 -@@ -1,6 +1,6 @@ - --- --\def\mtxversion{0.63} --\def\mtxdate{<7 January 2018>} -+\def\mtxversion{0.63a} -+\def\mtxdate{<8 April 2018>} - \input mtx - \mtxComposerLine{}{W. A. Mozart (1756--1791)} - \mtxTitleLine{Riff in C} -diff -ur ./utils/m-tx/version.ac ../b18/utils/m-tx/version.ac ---- ./utils/m-tx/version.ac 2018-01-09 04:41:12.000000000 +0100 -+++ ../b18/utils/m-tx/version.ac 2018-06-25 22:08:50.059233760 +0200 -@@ -8,4 +8,4 @@ - dnl -------------------------------------------------------- - dnl - dnl m4-include this file to define the current mtx version --m4_define([mtx_version], [0.63]) -+m4_define([mtx_version], [0.63a]) 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 <ken at linuxfromscratch dot org> -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 <ken at linuxfromscratch dot org> -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;i<count;i++) { - Object *val = new Object(); -- arrayref->get(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 deleted file mode 100644 index 7d7c37d2d2..0000000000 --- a/office/texlive/prep/texmf_get.sh +++ /dev/null @@ -1,1054 +0,0 @@ -#!/bin/bash - -# 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 -# permitted provided that the following conditions are met: -# -# 1. Redistributions of this script must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# 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 -# -# 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) -# of collections and packages, and that every texlive-package is included only once. -# The editions(base/extra/docs) should contain no binaries(exception biber) -# -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 -# -# texlive netarchive policy: Every package is included as dependency -# in exactly one collection. A package may have dependencies on other -# packages from any collection. - -# package source: http://mirror.ctan.org/systems/texlive/tlnet/archive/ - -#set -e -MAJORVERSION=2018 - -# -excluded packages, which are -# -useless without tlmgr-installer -# -non-linux -# -covered by an external package e.g. asymptote on SBo -# -obsolete -# -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 ... - -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 - lambda - otibet - ocherokee - oinuit - cslatex - bibarts - metatype1 - patch - wintools.win32 - dviout.win32 - " - - # special packages, move their type1 fonts(if metfonts are present) - # and/or docs to -extra -special_packages=" - koma-script - velthuis - armtex - montex - vntex - pl - cc-pl - cs - musixtex-fonts - tipa - cbfonts - ptex-fonts - uptex-fonts - " -#Todo: split type1 fonts, or keep subset of type1 fonts in base -# cm-super - -# keep precompiled binaries, list binary, not package name -keep_precompiled=" - biber - " - -texmf_editions () { - - # "excludes from -base", also dependencies are excluded - PACKAGES=" - cm-super - biber - bib2gls - knitting - pgfornament - pgfplots - pst-cox - pst-poker - pst-vectorian - pst-geo - bclogo - $(grep ^"name .*biblatex" $db | cut -d' ' -f2 ) - " texmfget extra || exit 1 - - # packages/collections and their dependencies for -base - PACKAGES=" - $(cat $corepackages) - etoolbox - xcolor - memoir - velthuis - wasy - ptex - platex - revtex - uptex - uplatex - collection-basic - collection-latex - collection-metapost - collection-plaingeneric - collection-luatex - collection-context - collection-fontutils - collection-langczechslovak - collection-langeuropean - collection-langenglish - collection-langfrench - collection-langitalian - collection-langpolish - collection-langportuguese - collection-langspanish - collection-latexrecommended - $(collection_by_size fontsextra 70000 || exit 1) - $(collection_by_size publishers 10000 || exit 1) - " texmfget base - - # packages/collections and their dependencies for -extra - PACKAGES=" - amiri - arabi - arabi-add - arara - arev - bangorcsthesis - beamer2thesis - beamertheme-detlevcm - beamertheme-epyt - beamertheme-saintpetersburg - beebe - bhcexam - bxtexlogo - churchslavonic - collection-fontsextra - collection-langchinese - collection-langcjk - collection-langjapanese - collection-langkorean - collection-publishers - collection-texworks - collection-wintools - ctan-o-mat - ctanify - ctanupload - dad - ethiop-t1 - fibeamer - fithesis - ghsystem - gregoriotex - hustthesis - ijsra - iwhdp - jpsj - kerkis - ketcindy - kpfonts - langsci - latex2nemeth - libertine - lilyglyphs - lni - luatexko - media9 - musuos - mwe - newtx - nwejm - padauk - pdfwin - pdfx - powerdot-tuliplab - powerdot-FUBerlin - quran - resumecls - sanskrit-t1 - sapthesis - sduthesis - seuthesix - simurgh - skaknew - stellenbosch - suanpan - tudscr - uantwerpendocs - ucs - udesoftec - universalis - uowthesis - wasy2-ps - xduthesis - xetexko - xq - " texmfget extra || exit 1 - - # What's left, for base again - PACKAGES=" - collection-fontsrecommended - collection-xetex - collection-langcyrillic - collection-langarabic - collection-langgerman - collection-langgreek - collection-langother - collection-humanities - collection-mathscience - collection-pictures - collection-pstricks - collection-music - collection-games - collection-binextra - collection-bibtexextra - collection-formatsextra - collection-latexextra - " texmfget base || exit 1 - -} - -# ==== Nothing to edit beyond this line ==== - -usage () { - echo - echo "Generate texmf trees/editions based on collections/packages" - echo "and their (hard)dependencies." - echo "./texmf_get.sh [base|docs|extra|lint]" - echo - echo "-base: texfiles, no docs" - echo "-docs: docs of -base" - echo "-extra: remaining texfiles and docs" - echo "[lint]: compare filename contents of all generated editions," - echo " to detect overlapping files" - echo - echo "Only new/updated/missing tex packages are downloaded." - echo "The first run takes \"long\", tex packages(about 2500Mb)" - echo "need to be downloaded." - echo "To check out a new version/release, delete" - echo "$db" - echo "A new ascii index file/database(texlive.tlpdb) is will be" - echo "pulled on the next run, and a new version yymmdd will be set." - echo - echo "All generated tarballs, logs etc. are going to" - echo "$TMP" - echo -} - -collection_by_size () { - # from collection $1, pull packages smaller $2 bytes - start_n="$(grep -n ^"name collection-$1"$ $db | cut -d':' -f1)" - # find end of package/collection - for emptyline in $emptylines - do - if [ "$emptyline" -gt "$start_n" ] - then - end_n=$emptyline - break - fi - done - extrapackages="$(sed "${start_n},${end_n}!d" $db | grep ^"depend " | grep -v ^"depend collection" | sed "s/^depend//g" )" - - # add if smaller than ... - for checksize in $extrapackages - do - package_meta $checksize || exit 1 - size=$(grep ^"containersize " $texmf/$checksize.meta | cut -d' ' -f2) - # for $2, e.g. 3000 means 3kb - [ $size -lt $2 ] && echo $checksize - done -} - -package_meta () { - if [ ! -s "$texmf/$1.meta" ] - then - # collection start linenumer - start_n="$(grep -n ^"name ${1}"$ $db | cut -d':' -f1)" - [ -z "$start_n" ] && echo "$1 was not found in $db, bye." && exit 1 - # find end of package/collection - for emptyline in $emptylines - do - if [ "$emptyline" -gt "$start_n" ] - then - end_n=$emptyline - break - fi - done - # Don't handle collections as dependency of other collections - sed "${start_n},${end_n}!d;/^depend collection/d" $db > $texmf/$1.meta - fi -} - -download () { - # Download packages, if not already available. Not every packages has a corresponding .doc package. - # Try three times if package isn't present, with -t1 to get another mirror the second time - cd $texmf - if [ ! -s "${1}${flavour}.tar.xz" ] - then - for run in {1..10} - do - wget -t1 -c ${mirror}archive/${1}${flavour}.tar.xz - [ -s "${1}${flavour}.tar.xz" ] && break - done - fi - # If no success by downloading, write error log - [ ! -s ${1}${flavour}.tar.xz ] && echo "Downloading ${1}${flavour}.tar.xz did not work, writing to $errorlog" && echo "$VERSION" >> $errorlog && echo "Error downloading ${1}${flavour}.tar.xz" >> $errorlog && exit 1 - - # check sha512, give three tries for downloading again(diffrent mirrors are used automatically) - if [ "$flavour" = ".doc" ] - then - sha512="$(grep ^doccontainerchecksum $texmf/$1.meta | cut -d' ' -f2 )" - else - sha512="$(grep ^containerchecksum $texmf/$1.meta | cut -d' ' -f2 )" - fi - - for run in {1..10} - do - if [ "$(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 )" != "$sha512" ] - then - # Download (hopefully) newer file - rm ${1}${flavour}.tar.xz - wget -t1 -c ${mirror}archive/${1}${flavour}.tar.xz - else - break - fi - done - # check sha512 again, exit if it fails - if [ "$(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 )" != "$sha512" ] - then - echo "sha512sum $(sha512sum ${1}${flavour}.tar.xz | cut -d' ' -f1 ) of" - echo "${package}${flavour}.tar.xz doesn't match with $db" - # delete metafile on failure to get generated again on next run, where new $db may be in use - rm $texmf/$1.meta - echo "sha512sum $sha512" - echo "Delete ${db}* to be current again, and try again." - exit 1 - fi -} - -untar () { - # leave if $1 has no content - if [ -s "$1" ] - then - while read package - do - echo "untar $package" - # untar all packages, check for relocation, "relocate 1" -> untar in texmf-dist - download $package || exit 1 - # untar the tex package, relocate to texmf-dist if necessary, binpackages always need relocation - relocated='.' - [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" -o -n "$(grep ^"binfiles " $texmf/$package.meta)" ] && relocated="texmf-dist" - # if not .doc package, investigate files for dependencies/provides - if [ -n "$flavour" ] - 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 | egrep '\.sty$|\.bbx$|\.cls$' > $texmf/$package.deps - if [ -n "$texmf/$package.deps" ] - then - unset provide - unset depends - for depfile in $(cat $texmf/$package.deps) - do - filename="$( echo $depfile | rev | cut -d'.' -f2- | cut -d'/' -f1 | rev)" - # always add $filename as "ProvidesPackage", if it's a .sty - echo $depfile | grep '\.sty'$ &>/dev/null - [ $? = 0 ] && provide+="${filename}," - # remove comments, if there are backslashes ignore that content, except it is \filename - #provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\\\ProvidesPackage{\([^}]*\)}.*/\1/p" | sed "s/\\\filename/$filename/g;/\\\/d" | sort -u | tr '\n' ',')" - #sed -z "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\)*.\n//g" | sed "s/[[:space:]]// - #provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -z "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\)*.\n//g" | sed "s/[[:space:]]// | sed -n "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\){\([^}]*\)}.*/\2/p" | sed "s/\\\filename/$filename/g;s/\\\ExplFileName/$filename/g;/\\\/d" | sed "s/\(\.sty$\|\.cls$\)//g" | sort -u | tr '\n' ',')" - provide+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -z "s/\(Package\|ExplPackage\|File\|Class\)\n/\1/g" | sed "s/[[:space:]]//" | sed -n "s/.*\\\Provides\(Package\|ExplPackage\|File\|Class\){\([^}]*\)}.*/\2/p" | sed "s/\\\filename/$filename/g;s/\\\ExplFileName/$filename/g" | sed "s/\(\.sty$\|\.cls$\)//g" | sort -u | tr '\n' ',')" - #depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\(\\\require\|\\\use\)package{\([^}]*\)}.*/\2/p" | sed "/\\\/d" | sort -u | tr '\n' ',')" - depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\(\\\require\|\\\use\)package{\([^}]*\)}.*/\2/p" | sort -u | tr '\n' ',')" - #depends+="$(sed "s/%.*//g" $texmf/$relocated/$depfile | sed -n "s/.*\\\\(require\|use\)package{\([^}]*\)}.*/\2/p" | sed "/\\\/d" | sort -u | tr '\n' ',')" - done - if [ -n "$provide" ] - then - #echo "$package $provide | sort -u | tr '\n' ',' " >> $TMP/provides.run.$edition - echo "$package $provide" >> $TMP/provides.run.$edition - fi - if [ -n "$depends" ] - then - echo "$package $depends" >> $TMP/depends.run.$edition - fi - fi - fi - - # Check for binaries, delete them as these should be provided - # by texlive.Slackbuild, keep symlinks and scripts - - unset binaries - unset scripts - for arch in $platforms - do - if [ -d $texmf/texmf-dist/bin/$arch ] - then - [ ! -d $texmf/texmf-dist/linked_scripts ] \ - && mkdir $texmf/texmf-dist/linked_scripts - # rewrite link target to fit systemwide installation - for link in $(find $texmf/texmf-dist/bin/$arch -type l) - do - ln -sf $(readlink $link | sed "s/^..\/..\(.*\)/..\/share\1/" ) $link || exit 1 - done - # move symlinks/scripts 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 - do - # keep binaries of special packages - for binary in $keep_precompiled - do - if [ "$(echo $bin | rev | cut -d'/' -f1 | rev )" != "$binary" ] - then - rm $bin - echo $bin | rev | cut -d'/' -f1 | rev >> $binary_removed.$edition - fi - done - done - # move scripts to linked-scripts - scripts="$(find $texmf/texmf-dist/bin/$arch -type f -exec file '{}' + | grep -wv ELF | cut -f 1 -d : )" - for script in $scripts - do - mv $script $texmf/texmf-dist/linked_scripts/ - done - fi - done - - if [ "$flavour" = ".doc" ] - then - size=$(grep ^doccontainersize $texmf/$package.meta | cut -d' ' -f2) - else - size=$(grep ^containersize $texmf/$package.meta | cut -d' ' -f2) - fi - shortdesc="$(grep ^shortdesc $texmf/$package.meta | cut -d' ' -f2- )" - echo "$size byte, $package$flavour: $shortdesc" >> $output.meta - # make index of uncompressed size of each package - echo "$(xz -l --verbose ${package}${flavour}.tar.xz | grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 ) byte, $package$flavour: $shortdesc" >> $output.meta.uncompressed - done < $1 - - # copy packages index to texmf-dist, so included packages are known in later installation - # don't list binary packages, as the binaries itself are not contained, only the symlinks. - cat $output.meta | grep -v '\-linux:' >> $output.$edition.meta - cat $output.meta.uncompressed | grep -v '\-linux:' >> $output.$edition.meta.uncompressed - - # cleanup - [ -f $output.meta ] && rm $output.meta - [ -f $output.meta.uncompressed ] && rm $output.meta.uncompressed - fi -} - -remove_cruft () { - # Remove m$-stuff, ConTeXt single-user-system stuff, source leftovers and pdf-versions of manpages - rm -rf texmf-dist/source - rm -rf texmf-dist/scripts/context/stubs/source/ - find texmf-dist/ -type d -name 'win32' -exec rm -rf {} + - find texmf-dist/ -type d -name 'win64' -exec rm -rf {} + - find texmf-dist/ -type d -name 'mswin' -exec rm -rf {} + - find texmf-dist/ -type d -name 'win' -exec rm -rf {} + - find texmf-dist/ -type d -name 'setup' -exec rm -rf {} + - find texmf-dist/ -type d -name 'install' -exec rm -rf {} + - find texmf-dist/ -type f -name 'uninstall*.sh' -delete - find texmf-dist/ -type f -name '*.bat' -delete - find texmf-dist/ -type f -name '*.bat.w95' -delete - find texmf-dist/ -type f -name '*win32*' -delete - find texmf-dist/ -type f -name 'winansi*' -delete - find texmf-dist/ -type f -name '*man1.pdf' -delete - find texmf-dist/ -type f -name '*man5.pdf' -delete - # Remove zero-length files, as these appear e.g. in hyph-utf8 tex-package. - # find texmf-dist/ -type f -size 0c -delete - find texmf-dist/ -type f -empty -delete - # Remove empty directories recursively - find texmf-dist/ -type d -empty -delete -} - -texmfget () { - # make sure no package is added more than once. - echo "Preparing index of packages to be added to -${1} ..." - echo "$PACKAGES" | sed "s/[[:space:]]//g;/^$/d" > $collections_tobedone - # Remove outputfile if already present - >$output - >$output_doc - - # Only do something if $collection wasn't already done before - while [ -s $collections_tobedone ] - do - collection=$(tail -n1 $collections_tobedone) - - # continue with next collection if collection was already done - if [ -s "$collections_done" ] - then - grep -w "^${collection}$" $collections_done &> /dev/null - if [ $? = 0 ] - then - # remove from $collections_tobedone - sed -i "/^$collection$/d" $collections_tobedone - if [ -n "$(grep "^${collection} added to" $logfile)" ] - then - echo "$collection already added " >> $logfile - fi - continue - fi - fi - - package_meta $collection || exit 1 - - # If $collection is a singel package(not a collection-), add it here - if [ -n "$(head -n1 $texmf/$collection.meta | fgrep -v "name collection" )" ] - then - addpackage=no - # if package contains docs, add to docpackages - if [ -n "$(grep ^docfiles $texmf/$collection.meta)" ] - then - echo "$collection" >> $output_doc - echo "$collection added to docs $1" >> $logfile - addpackage=yes - fi - if [ -n "$(grep ^runfiles $texmf/$collection.meta)" -o -n "$(grep ^binfiles $texmf/$collection.meta)" ] - then - echo "$collection" >> $output - echo "$collection added to -$1" >> $logfile - addpackage=yes - fi - # very package should be added to one edition, abort if that didn't work - if [ $addpackage = no ] - then - echo "$collection doesn't contain any docfiles/runfiles/binfiles" - echo "Please exclude package/report to upstream mailinglist tex-live@tug.org, bye." - exit 1 - fi - fi - - # Don't handle collections as dependency of other collections, as this destroys control over what packages to be added - # add dependend packages, but no binary(ARCH) and no packages conataining a '.'. Packges with dot indicate binary/texlive-manager/windows packages - - grep ^"depend " $texmf/$collection.meta | cut -d' ' -f2- > $dependencies - - if [ -s "$dependencies" ] - then - # check for .ARCH packages which may be binaries, scripts or links - # Binaries should all come from the sourcebuild(exception biber) - for dependency in $(cat $dependencies) - do - echo $dependency | grep '\.ARCH'$ &>/dev/null - if [ $? = 0 ] - then - for arch in $platforms - do - archpackage="$(echo $dependency | sed "s/\.ARCH$/\.$arch/")" - grep ^"name $archpackage"$ $db &>/dev/null && echo "$archpackage" >> $dependencies.verified_arch - done - else - echo $dependency >> $dependencies.verified_arch - fi - done - if [ -f $dependencies.verified_arch ] - then - mv $dependencies.verified_arch $dependencies - else - rm $dependencies - fi - fi - - if [ -s "$dependencies" ] - then - echo "----------------" >> $logfile - echo "Dependencies of $collection: $(cat $dependencies | tr '\n' ' ')" >> $logfile - for dependency in $(cat $dependencies) - do - if [ -n "$(grep ^"${dependency}"$ $collections_done)" ] - then - sed -i "/^${dependency}$/d" $dependencies - continue - else - for exclude in $global_exclude - do - if [ "$exclude" = "$dependency" ] - then - sed -i "/^${exclude}$/d" $dependencies - echo "$exclude excluded, see \$global_exclude" >> $logfile - fi - done - fi - done - cat $dependencies >> $collections_tobedone - echo "----------------" >> $logfile - fi - - sed -i "/^${collection}$/d" $collections_tobedone - echo "$collection" >> $collections_done - done - # handle package index list per edition - cat $output >> $TMP/packages.$1 - # handle doc package index, one for each edition - cat $output_doc >> $TMP/packages.$1.doc - - # untar only one $edition, untar docs together with -extra edition - if [ "$1" = $edition -o docs = $edition ] - then - cd $texmf - - # Cleanup tar-directory - [ -d $texmf/texmf-dist ] && rm -rf $texmf/texmf-dist - mkdir $texmf/texmf-dist - - # Make tarball/checksum reproducible by setting mtime(clamp-mtime), owner, group and sort content - # --clamp-mtime --mtime doesn't work with tar 1.13, when makepkg creates the tarball: - # tar-1.13: time_t value 9223372036854775808 too large (max=68719476735) - echo "Adding files to $( echo $tarball | rev | cut -d'/' -f1 | rev ) ..." - case $edition in - base) - unset flavour - untar $output || exit 1 - remove_cruft || exit 1 - tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1 - rm -rf texmf-dist - ;; - extra) - unset flavour - untar $output || exit 1 - export flavour=".doc" - untar $output_doc || exit 1 - remove_cruft || exit 1 - #tar vrf $tarball --clamp-mtime --mtime --owner=0 --group=0 --sort=name texmf-dist || exit 1 - tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1 - rm -rf texmf-dist - ;; - docs) - export flavour=".doc" - # only add -base docs to -docs - if [ $1 = base ] - then - untar $output_doc || exit 1 - remove_cruft || exit 1 - #tar vrf $tarball --clamp-mtime --mtime --owner=0 --group=0 --sort=name texmf-dist || exit 1 - tar rf $tarball --owner=0 --group=0 --sort=name texmf-dist || exit 1 - rm -rf texmf-dist - fi - ;; - esac - fi -} - -lint () { - -echo "Comparing content of all editions, this may take a while ..."; -cd $TMP -# check if all editions of same VERSION are there, take -base as reference -lint_version=$( ls texlive-base-*tar.xz | head -n1 | cut -d'.' -f2 || exit 1) -if [ -s texlive-extra-$MAJORVERSION.$lint_version.tar.xz \ - -a -s texlive-docs-$MAJORVERSION.$lint_version.tar.xz ] -then - for edition in base extra docs - do - echo "Extracting index of texlive-${edition}-$MAJORVERSION.$lint_version.tar.xz ..." - # don't list directories - tar tf texlive-${edition}-$MAJORVERSION.$lint_version.tar.xz | grep -v '/'$ > $TMP/packages.$edition.lint - done - - # compare content - for edition in base extra docs - do - >$TMP/packages.$edition.lint.dup - case $edition in - base) - echo "check if files of base are present in another edition" - while read line - do - grep ^"$line"$ $TMP/packages.extra.lint >> $TMP/packages.base.lint.dup - grep ^"$line"$ $TMP/packages.docs.lint >> $TMP/packages.base.lint.dup - done < $TMP/packages.$edition.lint - ;; - esac - done -else - echo "Not all editions are present to lint them. Create them first by" - echo "$0 [base|docs|extra]" - echo "bye." - exit 1 -fi - -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 -texmf=$TMP/texmf -db=$TMP/texlive.tlpdb -tmpfile=$TMP/tmpfile -collections_done=$TMP/done -collections_tobedone=$TMP/tobedone -corepackages=$TMP/corepackages -allcollections=$TMP/allcollections -binary_removed=$TMP/binaries.removed -manpages=$TMP/manpages -dependencies=$TMP/deps -packages_base=$TMP/packages.base -packages_extra=$TMP/packages.extra -packages_manpages=$TMP/packages.manpages -files_split=$TMP/files.split -platforms="x86_64-linux i386-linux" - -mkdir -p $texmf -cd $TMP - -case "$1" in - base|docs|extra) edition=$1;; - lint) lint ;; - *) usage; exit 0 ;; -esac - -echo "Building $edition tarball ..." - -# Set VERSION, get texlive.tlpdb and keep unshorten $db.orig -if [ ! -s ${db}.orig -o ! -s $db -o ! -s VERSION ] -then - echo $MAJORVERSION.$(date +%y%m%d) > VERSION - wget -c -O ${db}.orig ${mirror}tlpkg/texlive.tlpdb - # remove most content from $db to be faster on later processing. - # keep dependencies/manpages/binfiles/shortdesc/sizes - egrep \ - '^\S|^ RELOC/doc/man|^ texmf-dist/doc/man/man|^ RELOC/doc/info/|^ texmf-dist/doc/info/|^ bin|^$' \ - ${db}.orig | grep -v ^longdesc > $db - - # As $db (might be)/is new, remove the meta-files, might created again with (pontentionally) new content - rm -rf $texmf/*.meta -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. -grep -B1 ^'category TLCore' $db | grep -v ^'category TLCore' | grep -v ^-- | grep -v '\.' | cut -d' ' -f2 > $corepackages - -# Make a list of all collections -grep ^"name collection-" $db | cut -d' ' -f2 > $allcollections - -# translate .ARCH to platforms in excludes, to make .ARCH packages excludeable by $global_exclude -for exclude in $global_exclude -do - if [ -n "$(echo $exclude | grep '\.ARCH'$ )" ] - then - for arch in $platforms - do - global_exclude+=" $(echo $exclude | sed "s/\.ARCH$/\.$arch/")" - done - global_exclude=${global_exclude/$exclude/} - fi -done -# globally exclude from $corepackages -for exclude in $global_exclude -do - sed -i "/^${exclude}$/d" $corepackages -done - -VERSION=$(cat $TMP/VERSION) -tarball=$TMP/texlive-$edition-$VERSION.tar -# set logfile -logfile=$TMP/$VERSION.log - -# reset some files ->$logfile ->$tarball ->$collections_done ->$files_split ->$manpages ->$packages_manpages ->$packages_base ->$packages_extra ->$packages_base.doc ->$packages_extra.doc ->$TMP/packages.$edition.meta ->$TMP/packages.$edition.meta.uncompressed ->$TMP/provides.run.$edition ->$TMP/depends.run.$edition ->$binary_removed.$edition - -# put the editions base/extra together -texmf_editions || exit 1 - -# Check if all collections are part in at least one edition -while read collection -do - grep -w "$collection" $collections_done &> /dev/null - if [ $? != 0 ] - then - echo "Error: $collection was not handled." - echo "Edit packages/collections in the texmfget function." | tee -a $logfile - exit 1 - fi -done < $allcollections - -# cleanup -rm $allcollections -rm $corepackages -rm $collections_done -rm $collections_tobedone -rm $output -rm $output_doc -rm $dependencies - -# untar special- and manpage packages to be splitted/moved to other editions -# splitting special packages, files index -echo "Prepare index of to be splitted/moved files from -base" -[ ! -d texmf-dist ] && mkdir texmf-dist -for package in $special_packages -do - echo "Splitting $package" - # special packages have to be in -base, as only here are special - # tasks done to reduce size of -base edition - if [ -z "$( grep ^"$package"$ $packages_base )" ] - then - echo "$package was not found to be part of -base" - echo "Edit \$special_packages in $0" - echo "to contain only packages from -base, bye." - exit 1 - fi - unset relocated - pathprefix="texmf-dist/" - [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" ] && \ - relocated="-C texmf-dist" && unset pathprefix - # avoid big pdf docs which are also present as html - # move (big)type1 fonts to -extra - # $files_split lists files to be moved from -base -extra - if [ $package = "cm-super" ] - then - # cm-super minimal for -base, create index of extended cm-super - tar tf $texmf/$package.tar.xz | sed \ - "/1000\.pfb$/d;/^tlpkg/d;/\.sty$/d;/\.enc$/d;/\.GS$/d" \ - | tee -a $files_split > $files_split.tmp - else - tar tf $texmf/${package}.tar.xz | sed \ - -ne "/.*doc\/latex\/.*\.pdf$/p" \ - -ne "/.*fonts\/map\/.*\.map$/p" \ - -ne "/.*fonts\/enc\/.*\.enc$/p" \ - -ne "/.*fonts\/afm\/.*\.\(afm\|afm\.gz\)$/p" \ - -ne "/.*fonts\/type1\/.*\.pfb$/p" \ - -ne "/.*fonts\/vf\/.*\.vf$/p" \ - | tee -a $files_split > $files_split.tmp - fi - - if [ $edition = base ] - then - # Calculate package-minimal size, uncompressed and compressed - mkdir -p calculate/texmf-dist - tar xf $texmf/$package.tar.xz -C calculate/texmf-dist --exclude-from=$files_split.tmp - tar cf calculate/calc.tar.xz -I 'xz -9' calculate/texmf-dist - size_minimal=$(du -bc calculate/calc.tar.xz | tail -n1 | sed "s/[[:space:]].*//") - size_minimal_uncompressed="$(xz -l --verbose calculate/calc.tar.xz | grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 )" - sed -i \ - -e "s/^[0-9]* byte, $package: /$size_minimal byte, $package-minimal: /" \ - $output.base.meta - sed -i \ - -e "s/^[0-9]* byte, $package: /$size_minimal_uncompressed byte, $package-minimal: /" \ - $output.base.meta.uncompressed - rm -rf calculate - fi - - if [ $edition = extra ] - then - mkdir -p calculate/texmf-dist - tar xf $texmf/${package}.tar.xz -C calculate/texmf-dist $(paste $files_split.tmp) - tar cf calculate/calc.tar.xz -I 'xz -9' calculate/texmf-dist - size_extended=$(du -bc calculate/calc.tar.xz | tail -n1 | sed "s/[[:space:]].*//") - size_extended_uncompressed="$(xz -l --verbose calculate/calc.tar.xz | \ - grep "Uncompressed size" | cut -d'(' -f2 | cut -d' ' -f1 )" - - # put new sizes in package index uncompressed - sed -i \ - -e "s/^[0-9]* byte, $package: /$size_extended byte, $package-extended: /" \ - $output.extra.meta - sed -i \ - -e "s/^[0-9]* byte, $package: /$size_extended_uncompressed byte, $package-extended: /" \ - $output.extra.meta.uncompressed - rm -rf calculate - fi - - # untar to provide files for -extra - tar xf $texmf/${package}.tar.xz $relocated $(paste $files_split.tmp) - if [ $package = "cm-super" ] - then - # create cm-super- minimal config/maps with 10pt glyphs only - sed "s/cm-super/cm-super-minimal/g" $texmf/texmf-dist/dvips/cm-super/config.cm-super \ - > $texmf/texmf-dist/dvips/cm-super/config-minimal.cm-super - for map in t1 t2a t2b t2c ts1 x2 - do - grep 1000 $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-$map.map \ - > $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-$map.map - sed -i "/.*1000\.pfb/d" $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-$map.map - done - fi - -done - - -# cleanup -rm $files_split.tmp -# fix relocation in index for splitted packages -sed -i \ - -e "s|^doc|texmf-dist\/doc|g" \ - -e "s|^fonts|texmf-dist\/fonts|g" \ - -e "s|^dvips|texmf-dist\/dvips|g" \ - $files_split - -# sort meta data about added packages -sort -n $output.$edition.meta > $tmpfile -mv $tmpfile $output.$edition.meta -sort -n $output.$edition.meta.uncompressed > $tmpfile -mv $tmpfile $output.$edition.meta.uncompressed - -sort -u $binary_removed.$edition > $tmpfile -mv $tmpfile $binary_removed.$edition - -# include manpages/GNU infofiles in -base, write index for later exclution from other editions. -# In -extra/-docs there should not be any manpage left. -echo "Looking for manpages/GNU infofiles to be included in -base ..." -for package in $(paste -s $packages_base.doc | sort -u) -do - if [ -n "$(egrep "(doc/man/man|doc/info/)" $texmf/$package.meta )" ] - then - echo "Adding manpage from $package.doc to -base" - flavour=".doc" download $package || exit 1 - unset relocated - pathprefix="texmf-dist/" - [ -n "$(grep -w ^"relocated 1" $texmf/$package.meta)" ] \ - && relocated="-C texmf-dist" && unset pathprefix - tar tf $texmf/${package}.doc.tar.xz | sed \ - -ne "/.*doc\/man\/.*\.1$/p" \ - -ne "/.*doc\/man\/.*\.5$/p" \ - -ne "/.*doc\/info\/.*\.info$/p" \ - | tee -a $manpages > $manpages.tmp - # untar to provide files for -/extra/-docs - tar xf $texmf/${package}.doc.tar.xz $relocated $(paste $manpages.tmp) - echo "$package" >> $packages_manpages - fi -done -# cleanup -rm $manpages.tmp -sed -i \ - -e "s/^doc/texmf-dist\/doc/g" \ - $manpages - -case $edition in - base) - # Content info - cat << EOF | gzip -9 >> $texmf/texmf-dist/packages.$edition.gz -Content of -$edition: -$(sed "/-linux$/d" $packages_base | sort) -EOF -#Splitted packages, type1 fonts/docs moved to -extra: -#$(echo $special_packages) -#EOF - -# add manpages/GNU infofiles to the tarball - tar rf $tarball --owner=0 --group=0 --sort=name \ - texmf-dist/doc/man/ texmf-dist/doc/info/ \ - texmf-dist/packages.$edition.gz \ - || exit 1 -# # add cm-super minimal maps/config -# tar rf $tarball --owner=0 --group=0 --sort=name \ -# texmf-dist/dvips/cm-super/config-minimal.cm-super \ -# --wildcards texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-*.map \ -# || exit 1 - echo "Removing files -from base, splitted from special packages to be included in -extra" - tar f $tarball --delete $(paste $files_split) || exit 1 - ;; - extra) - echo "Removing manpages from $edition which now reside in -base" - tar f $tarball --delete $(paste $manpages) 2>/dev/null - # content info - echo "Content of -$edition, including documentation:" > $texmf/texmf-dist/packages.$edition - sed "/-linux$/d" $TMP/packages.$edition | sort >> $texmf/texmf-dist/packages.$edition - gzip -9 $texmf/texmf-dist/packages.$edition -# # remove cm-super minimal config, which resides in -base -# rm \ -# $texmf/texmf-dist/dvips/cm-super/config-minimal.cm-super \ -# $texmf/texmf-dist/fonts/map/dvips/cm-super/cm-super-minimal-*.map - tar rf $tarball --owner=0 --group=0 --sort=name \ - --exclude texmf-dist/doc \ - texmf-dist \ - || exit 1 - ;; - docs) - # add docs splittet from base from special packages, add packages index - # content info, this edition contains all docs from -base - echo "Content of -$edition, documentation for -base:" > $texmf/texmf-dist/packages.$edition - sort $packages_base.doc >> $texmf/texmf-dist/packages.$edition - gzip -9 $texmf/texmf-dist/packages.$edition - tar rf $tarball --owner=0 --group=0 --sort=name \ - texmf-dist/doc/ \ - texmf-dist/packages.$edition.gz \ - || exit 1 - echo "Removing manpages from $edition which now reside in -base" - tar f $tarball --delete $(paste $manpages) || exit 1 - ;; -esac - -rm -rf texmf-dist - -# compress the tarball as everything is in place now -echo "Compressing $tarball ..." -[ -f $tarball.xz ] && rm $tarball.xz -xz -9 -T0 $tarball || exit 1 -md5sum $tarball.xz -ls -lh $tarball.xz -echo "Logfile: $logfile" diff --git a/office/texlive/slack-desc b/office/texlive/slack-desc deleted file mode 100644 index 4e573a1608..0000000000 --- a/office/texlive/slack-desc +++ /dev/null @@ -1,19 +0,0 @@ -# HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. -# Line up the first '|' above the ':' following the base package name, and -# the '|' on the right side marks the last column you can put a character in. -# You must make exactly 11 lines for the formatting to be correct. It's also -# customary to leave one space after the ':' except on otherwise blank lines. - - |-----handy-ruler------------------------------------------------------| -texlive: texlive (TeX binaries, support files, and formats) -texlive: -texlive: This package contains binaries, support files, TeX formats and -texlive: packages,and other files included in the TeXLive TeX distribution. -texlive: Included are input files for TeX, runtime configuration files, -texlive: hyphenation tables, manpages, and the computer modern fonts. -texlive: -texlive: SlackBuilds.org has more texmf files and documentation in the -texlive: texlive-extra and texlive-docs packages. -texlive: -texlive: diff --git a/office/texlive/texlive.SlackBuild b/office/texlive/texlive.SlackBuild deleted file mode 100644 index 63b97c33a5..0000000000 --- a/office/texlive/texlive.SlackBuild +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# TeXLive build script for Slackware - -# Copyright 2009, 2017 - 2018 Patrick J. Volkerding, Sebeka, MN, USA -# Copyright 2009 - 2014 Robby Workman, Northport, AL, USA -# Copyright 2016 - 2017 Johannes Schoepfer, Germany -# All rights reserved. -# -# Redistribution and use of this script, with or without modification, is -# permitted provided that the following conditions are met: -# -# 1. Redistributions of this script must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# URL: ftp://tug.org/historic/systems/texlive/ -# Testrelease: ftp://tug.org/texlive/Images/test/ -# Upstream stable fixes: svn://tug.org/texlive/branches/branch2018/Build/source - -PRGNAM=texlive -SOURCEVERSION=20180414 -VERSION=${VERSION:-2018.180630} -BUILD=${BUILD:-1} -TAG=${TAG:-_SBo} - -CWD=$(pwd) -TMP=${TMP:-/tmp/SBo} -PKG=$TMP/package-texlive -OUTPUT=${OUTPUT:-/tmp} - -set -e - -if [ -z "$ARCH" ]; then - case "$( uname -m )" in - i?86) ARCH=i586 ;; - arm*) ARCH=arm ;; - *) ARCH=$( uname -m ) ;; - esac -fi - -if [ "$ARCH" = "i586" ]; then - SLKCFLAGS="-O2 -march=i586 -mtune=i686" - LIBDIRSUFFIX="" -elif [ "$ARCH" = "x86_64" ]; then - SLKCFLAGS="-O2 -fPIC" - LIBDIRSUFFIX="64" -else - SLKCFLAGS="-O2" - LIBDIRSUFFIX="" -fi - -# NOTE: Using the system version of poppler will require texlive to be -# recompiled with pretty much every poppler update, as they almost always -# bump the shared library version. But sometimes you do what you have -# to do... -SYSTEMPOPPLER=${SYSTEMPOPPLER:-NO} -if [ "$SYSTEMPOPPLER" = "NO" ]; then - POPPLER="--without-system-poppler --without-system-xpdf" -else - POPPLER="--with-system-poppler --with-system-xpdf" -fi - -rm -rf $PKG -mkdir -p $TMP $PKG $OUTPUT -cd $TMP -rm -rf texlive-$SOURCEVERSION-source -tar xvf $CWD/texlive-${SOURCEVERSION}-source.tar.xz || exit 1 -cd texlive-$SOURCEVERSION-source || exit 1 -chown -R root:root . -chmod -R u+w,go-w,a+rX-st . - -export LANG=C -export PATH="$PKG/usr/bin:$PATH" -export LD_LIBRARY_PATH="$PKG/usr/lib${LIBDIRSUFFIX}:$LD_LIBRARY_PATH" - -# set TEXMFROOT and TEXMFLOCAL -sed -i \ - -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \ - -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 - -# Needed on -current, 2018-05-06 -# The 2018 version of texlive ships with support for poppler-0.57.0 and older, -# but it includes alternative newpoppler files which enable building with -# poppler-0.62.0 or newer. -#if [ ! "$SYSTEMPOPPLER" = "NO" ]; then -# mv -v texk/web2c/pdftexdir/pdftoepdf{-newpoppler,}.cc || exit 1 -# mv -v texk/web2c/pdftexdir/pdftosrc{-newpoppler,}.cc || exit 1 -#fi - -# --with-system-harfbuzz requires graphite2 (and harfbuzz linked to it) -mkdir build -cd build - CFLAGS="$SLKCFLAGS" \ - CXXFLAGS="$SLKCFLAGS -fpermissive" \ - ../configure \ - --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --mandir=/usr/man \ - --infodir=/usr/info \ - --with-banner-add=' on Slackware (SlackBuilds.org)' \ - --disable-native-texlive-build \ - --enable-largefile \ - --enable-shared \ - --disable-static \ - --disable-missing \ - --disable-multiplatform \ - --disable-debug \ - --with-x \ - --enable-xindy \ - --disable-xindy-docs \ - --disable-xindy-rules \ - --with-clisp-runtime=system \ - --enable-gc=system \ - --with-system-zlib \ - --with-system-libpng \ - --with-system-t1lib \ - --with-system-gd \ - --with-system-freetype2 \ - --with-system-libgs \ - --with-system-icu \ - --with-system-pixman \ - --with-system-cairo \ - --with-system-gmp \ - --with-system-mpfr \ - --with-system-fontconfig \ - --with-system-ncurses \ - --without-system-harfbuzz \ - --disable-aleph \ - --disable-dump-share \ - --disable-linked-scripts \ - $POPPLER \ - --build=$ARCH-slackware-linux || exit 1 - - make || exit 1 - # make check || exit 1 - make install-strip DESTDIR=$PKG || exit 1 - -cd .. - -# Don't ship .la files: -rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la - -# Remove all files which are covered by tlnet -rm -rf $PKG/usr/share $PKG/usr/man $PKG/usr/info - -# install the tlnet stuff -mkdir -p $PKG/usr/share -tar xvf $CWD/texlive-base-$VERSION.tar.xz -C $PKG/usr/share || exit 1 -chown -R root:root $PKG -chmod -R u+w,go-w,a+rX-st $PKG - -# use symlinks/scripts from tlnet -mv $PKG/usr/share/texmf-dist/linked_scripts/* $PKG/usr/bin -rmdir $PKG/usr/share/texmf-dist/linked_scripts - -# set some paths -sed -i \ - -e 's|^TEXMFROOT.*|TEXMFROOT = $SELFAUTODIR/share|' \ - -e 's|^TEXMFLOCAL.*|TEXMFLOCAL = $TEXMFROOT/texmf-local|' \ - -e 's|^OSFONTDIR.*|OSFONTDIR = ~/.fonts:/usr/share/fonts|' \ - $PKG/usr/share/texmf-dist/web2c/texmf.cnf - -# disable obsolete aleph/lamed/cslatex/pdfcslatex -sed -i \ - -e 's|^aleph|#! aleph|' \ - -e 's|^lamed|#! lamed|' \ - -e 's|^cslatex|#! cslatex|' \ - -e 's|^pdfcslatex|#! pdfcslatex|' \ - $PKG/usr/share/texmf-dist/web2c/fmtutil.cnf - -# make ConTeXt work, and remove unused settings -sed -i \ - -e 's|selfautoparent:|/usr/share/|g' \ - -e 's|\(TEXMFLOCAL[ ]*=[ ]*\)[^,]*|\1"/usr/share/texmf-local"|' \ - -e '/selfautodir/d' \ - -e '/texmflocal/d' \ - $PKG/usr/share/texmf-dist/web2c/texmfcnf.lua - -# provide texlive fonts optionally for other system apps -mkdir -p $PKG/etc/fonts/conf.avail -cat > $PKG/etc/fonts/conf.avail/09-texlive.conf << EOF -<?xml version='1.0'?> -<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> -<fontconfig> - <dir>/usr/share/texmf-dist/fonts/opentype</dir> - <dir>/usr/share/texmf-dist/fonts/truetype</dir> -</fontconfig> -EOF - -# Install the docs while we're still here -mkdir -p $PKG/usr/doc/texlive-$VERSION -cp -a ChangeLog README* $PKG/usr/doc/texlive-$VERSION -# Install index of provided tex packages to the docs -mv $PKG/usr/share/texmf-dist/packages.base.gz $PKG/usr/doc/texlive-$VERSION - -# Put a symlink to /usr/share/texmf-dist/doc in our Slackware docdir -ln -s ../../share/texmf-dist/doc $PKG/usr/doc/texlive-$VERSION/doc - -# We won't make tlmgr easily available; it's still there, but -# we'll make it harder to void the warranty :-) -rm -f $PKG/usr/bin/tlmgr -cat $CWD/README.tlpkg > $PKG/usr/doc/texlive-$VERSION/README.tlpkg - -# Create some directories to make it clear that they're owned by this package -mkdir -p $PKG/usr/share/{texmf-config,texmf-var,texmf-local} - -# Add some perl modules, at least one of which is required by updmap -mkdir -p $PKG/usr/share/perl5 -mv texk/tests/TeXLive $PKG/usr/share/perl5/ - -# Move manual pages to the correct place -mkdir $PKG/usr/man -mv $PKG/usr/share/texmf-dist/doc/man/man1 $PKG/usr/man -mv $PKG/usr/share/texmf-dist/doc/man/man5 $PKG/usr/man -rmdir $PKG/usr/share/texmf-dist/doc/man -mv $PKG/usr/share/texmf-dist/doc/info $PKG/usr - -# Handle the man pages -find $PKG/usr/man -type f -exec gzip -9 {} \; -for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done - -# Handle the GNU info pages -rm -f $PKG/usr/info/dir -gzip -9 $PKG/usr/info/* - -mkdir -p $PKG/install -cat $CWD/doinst.sh > $PKG/install/doinst.sh -cat $CWD/slack-desc > $PKG/install/slack-desc - -cd $PKG -/sbin/makepkg -p -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/office/texlive/texlive.info b/office/texlive/texlive.info deleted file mode 100644 index bf3d620f39..0000000000 --- a/office/texlive/texlive.info +++ /dev/null @@ -1,12 +0,0 @@ -PRGNAM="texlive" -VERSION="2018.180630" -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" -MD5SUM="41d1e8874d266935c656fe51b440a413 \ - afd68de4f3548bb1f7bb1594d2a2b9bd" -DOWNLOAD_x86_64="" -MD5SUM_x86_64="" -REQUIRES="" -MAINTAINER="Johannes Schoepfer" -EMAIL="slackbuilds[at]schoepfer[dot]info" |