summaryrefslogtreecommitdiff
path: root/texmf-dist
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2017-07-13 10:25:48 +0900
committerNorbert Preining <norbert@preining.info>2017-07-13 10:25:48 +0900
commitcfe306ba1b7ec40855a300580b7981845d56edeb (patch)
treee2feaf2adf8a8afe43a995528097913793874d01 /texmf-dist
parent32d0671418a3cc6ad0465b06539ed54d96f77784 (diff)
add aeb-mlink aeb-pro aebxmp graphicxsp annot-pro
Diffstat (limited to 'texmf-dist')
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/README.md40
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/mlink_tst.pdfbin0 -> 57009 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/mlink_tst.tex145
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.pdfbin0 -> 29460 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.tex36
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/np_test.txt1
-rw-r--r--texmf-dist/doc/latex/aeb-mlink/shameless_ad.pdfbin0 -> 40725 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/README.md44
-rw-r--r--texmf-dist/doc/latex/aeb-pro/aebpro_man.pdfbin0 -> 609630 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdfbin0 -> 70199 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex430
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdfbin0 -> 50752 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex232
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdfbin0 -> 718560 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex361
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdfbin0 -> 124605 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex346
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdfbin0 -> 256437 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex469
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdfbin0 -> 255216 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex150
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.pdfbin0 -> 55695 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.tex161
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdfbin0 -> 681851 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex218
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.tex44
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/explog.pdfbin0 -> 49193 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/target1.pdfbin0 -> 29562 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/target1.tex72
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/target2.pdfbin0 -> 24149 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/target2.tex43
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/children/theeuro.pdfbin0 -> 43410 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/extras.zip.txtbin0 -> 434162 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.pdfbin0 -> 9068 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.tex16
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/test_install.pdfbin0 -> 17732 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/test_install.tex27
-rw-r--r--texmf-dist/doc/latex/aeb-pro/install_jsfiles.pdfbin0 -> 220856 bytes
-rw-r--r--texmf-dist/doc/latex/aebxmp/README.md53
-rw-r--r--texmf-dist/doc/latex/aebxmp/aebxmp_man.pdfbin0 -> 133445 bytes
-rw-r--r--texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.pdfbin0 -> 50399 bytes
-rw-r--r--texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.tex138
-rw-r--r--texmf-dist/doc/latex/annot-pro/README.md19
-rw-r--r--texmf-dist/doc/latex/annot-pro/annotpro_man.pdfbin0 -> 625896 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/annots.pdfbin0 -> 65924 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/annots.tex203
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.epsbin0 -> 354751 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.epsbin0 -> 827064 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.pdfbin0 -> 23264 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/graphics/AeST_Logo.epsbin0 -> 298202 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/stamps.pdfbin0 -> 30297 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/stamps.tex138
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/textbox.pdfbin0 -> 43916 bytes
-rw-r--r--texmf-dist/doc/latex/annot-pro/examples/textbox.tex62
-rw-r--r--texmf-dist/doc/latex/graphicxsp/README.md41
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/000_0151.epsbin0 -> 554024 bytes
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/3Dcheck.eps8304
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/3Dx.eps8164
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon.eps8346
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon_full.eps10414
-rw-r--r--texmf-dist/doc/latex/graphicxsp/graphics/example.eps389
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_comp_aeb.tex200
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_comp_noaeb.tex168
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_forms_aeb.tex205
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_layers_aebpro.tex102
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_man.pdfbin0 -> 128169 bytes
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_man.tex772
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_tst_aeb.tex229
-rw-r--r--texmf-dist/doc/latex/graphicxsp/grxsp_tst_noaeb.tex215
-rw-r--r--texmf-dist/source/latex/aeb-mlink/aeb_mlink.dtx624
-rw-r--r--texmf-dist/source/latex/aeb-mlink/aeb_mlink.ins59
-rw-r--r--texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.pdfbin0 -> 129039 bytes
-rw-r--r--texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.tex544
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb.js24
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb_pro.dtx4903
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb_pro.ins67
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb_pro.js130
-rw-r--r--texmf-dist/source/latex/aeb-pro/doc/aebpro_man.tex3793
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.epsbin0 -> 289706 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.pdfbin0 -> 34683 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw15.pdfbin0 -> 25733 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw50.pdfbin0 -> 30674 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/Manual_BG_DesignV_AeB.pdfbin0 -> 44428 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/Manual_BG_Print_AeB.pdfbin0 -> 27099 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/aest.xlsbin0 -> 677888 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/ease.pdfbin0 -> 109690 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/extras/trek.wavbin0 -> 89864 bytes
-rw-r--r--texmf-dist/source/latex/aeb-pro/fsprodef.js64
-rw-r--r--texmf-dist/source/latex/aeb-pro/icons/btn_anime_icons1.pdfbin0 -> 15812 bytes
-rw-r--r--texmf-dist/source/latex/aebxmp/aebxmp.dtx812
-rw-r--r--texmf-dist/source/latex/aebxmp/aebxmp.ins60
-rw-r--r--texmf-dist/source/latex/aebxmp/doc/aebxmp_man.tex580
-rw-r--r--texmf-dist/source/latex/annot-pro/annot_pro.dtx1162
-rw-r--r--texmf-dist/source/latex/annot-pro/annot_pro.ins63
-rw-r--r--texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex1120
-rw-r--r--texmf-dist/source/latex/graphicxsp/graphicxsp.dtx1037
-rw-r--r--texmf-dist/source/latex/graphicxsp/graphicxsp.ins60
-rw-r--r--texmf-dist/tex/latex/aeb-mlink/aeb_mlink.sty342
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aeb_pro.sty346
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aeblayers.def306
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aebpro.cfg12
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aebpro.def1237
-rw-r--r--texmf-dist/tex/latex/aeb-pro/anime_support.def493
-rw-r--r--texmf-dist/tex/latex/aeb-pro/btnnanime.def56
-rw-r--r--texmf-dist/tex/latex/aeb-pro/create_icon.def156
-rw-r--r--texmf-dist/tex/latex/aeb-pro/ocganime.def39
-rw-r--r--texmf-dist/tex/latex/aeb-pro/unicodes.def380
-rw-r--r--texmf-dist/tex/latex/aebxmp/aebxmp.sty446
-rw-r--r--texmf-dist/tex/latex/annot-pro/annot_pro.sty616
-rw-r--r--texmf-dist/tex/latex/graphicxsp/graphicxsp.sty552
110 files changed, 61080 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/aeb-mlink/README.md b/texmf-dist/doc/latex/aeb-mlink/README.md
new file mode 100644
index 00000000..a7c43656
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/README.md
@@ -0,0 +1,40 @@
+Package: aeb_mlink
+Author: D. P. Story
+Dated: 2016/02/16
+Version: v2.0
+
+The aeb_mlink package implements new links capable of created multi-line
+links. The new commands are \mlhypertext, \mlhyperlink, \mlhyperref,
+\mlnameref, \mlNameref, \mlhref, and \mlurl. All but the first are multi-line
+versions of hyperref commands with the same root name.
+
+What new in version 2.0, added the \mlurl command.
+
+Restriction: This package requires that the PDF be created by Adobe
+Distiller, version 7.0 or later to create multi-line links, and requires
+Adobe Reader 7.0 or later for the links to work correctly.
+
+This package requires the latest version of AeB, in particular, the
+eforms package required is dated 2008/03/14 or later. See
+ctan.org/pkg/acrotex or
+www.math.uakron.edu/~dpstory/webeq.html to retrieve acrotex.zip.
+
+Installation Instructions: Place the zip file in your latex search
+path and unzip. Refresh your file name database, and you are ready
+to go. Start with documentation and the demo files contained in the
+examples folder.
+
+Let me know if there are problems or suggested features. e-mail
+me at dpstory@uakron.edu or dpstory@acrotex.net
+
+The latest updates to the aeb_mlink package can be found at
+www.math.uakron.edu/~dpstory/aeb_pro.html.
+
+My other web site is http://blog.acrotex.net/ has the latest on my
+ruminations on LaTeX and PDF.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory@uakron.edu
+2016/02/16
diff --git a/texmf-dist/doc/latex/aeb-mlink/mlink_tst.pdf b/texmf-dist/doc/latex/aeb-mlink/mlink_tst.pdf
new file mode 100644
index 00000000..56009cc3
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/mlink_tst.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-mlink/mlink_tst.tex b/texmf-dist/doc/latex/aeb-mlink/mlink_tst.tex
new file mode 100644
index 00000000..3e1f2f54
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/mlink_tst.tex
@@ -0,0 +1,145 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[designi]{web}
+\usepackage{eforms}
+\usepackage{aeb_mlink}
+\usepackage{multicol}
+
+\renewcommand\hproportionwebtitle{.75}
+\renewcommand{\titleauthorproportion}{.5}
+
+
+\title{Demonstrating the \textsf{aeb\_mlink} Package\texorpdfstring{\\[3pt]}{: }A member of AeB Pro}
+\author{D. P. Story}
+\subject{Multi-line links using the AcroTeX eDucation Bundle}
+\keywords{AeB, multi-line links}
+
+\university{NORTHWEST FLORIDA STATE COLLEGE\\
+ Department of Mathematics}
+\email{storyd@nwfsc.edu}
+\version{1.0}
+\revisionLabel{}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+
+This file tests and demonstrates new macros for creating hypertext
+links that wrap around a line. Most of the text is nonsense, and was
+created to fill the page, no offence taken I hope
+
+This paragraph contains two links that go beyond the
+\mlhypertext[\S{U}\W{1}\Color{0 .6 0}\A{\JS{app.alert("First
+Link\\n\\nLet's try another! J\\374rgen and with unicode J\\u00FCrgen")}}
+]{margins of this text width} so it wraps around to the
+next line. Now, I'll \mlhypertext[\A{\JS{app.alert("Second
+Link")}}]{insert a multi-line link.}\footnote{Techniques by D. P.
+Story} Can we continue with this? Yes, so says D. P. Story.
+
+
+This paragraph contains two links that go beyond the
+\mlhypertext[\A{\JS{app.alert("Third Link")}}]{margins of this text width},
+so it wraps around to the next line. Let's try a numbered equation:
+\begin{equation}
+ \boxed{x + y = 1}
+\end{equation}
+Now, with your permission, I'll insert another one of these
+\mlhypertext[\A{\JS{app.alert("Fourth Link")}}]{links of the
+multiline type.}\footnote{D.P. Story is very nice fellow, but he has a rather
+\mlhypertext[\A{\JS{app.alert("Footnote!")}}]{grand head; we must watch the
+compliments} so we don't inflate his ego more.} Can we continue with
+this? Yes, so says D. P. Story.
+
+
+On the next page, we try multiple column format.
+
+\mlhypertext[\S{U}\W{1}\Color{0 0.6 0}\A{\JS{app.alert("Success! Multi-line links with hyphenation!\\n\\nCongrats,
+J\\u00FCrgen")}}]{Welcome my friends to my residence, humble as it is. The encyclopedia is a wonderful book.}
+We shall study it closely during your visit.
+
+Try this great link: \mlhypertext[\A{\JS{app.alert("Yes, they do!");}}]{J\"{u}rgen, \LaTeX{} and
+math \mbox{\smash[b]{$\displaystyle\int_0^1 f(x)\,dx$}} work admirably.}
+
+
+\parskip0pt
+
+\begin{multicols}{2}
+\noindent Being able to create multi-line links becomes important when the
+\texttt{\string\linewidth} is narrow. On this page we create some
+mindless text that will fill up all or part of the page, then create
+some multi-line links.
+
+Without a doubt, \textsl{this method will fail if the paragraph contains
+multi-line links that crosses a \emph{page boundary} or a \emph{\mlhypertext[\A{\JS{app.alert("Wrong again! However, there are problems
+with page boundaries.");}}]{column boundary}}}.
+
+This paragraph contains two links that extend beyond the
+\mlhypertext[\A{\JS{app.alert("Fifth Link")}}]{margins of this text
+width} which causes it to wrap around to the next line. Note the
+hyphenation of the link, this is due to the \textsf{soul} package.
+As a further test, I'll \mlhypertext[\A{\JS{app.alert("Sixth
+Link")}}]{insert a multi-line link} again. Can we continue with
+this? Yes, so says D. P. Story.
+
+\end{multicols}
+
+
+\section{Second of Three Sections}\label{second}
+
+Let us begin by having page filling mindless text,
+then we'll force a page break, but before we break, a friend of
+mine, asked if multi-line links work with math formulas. A very strange request,
+\mlhypertext[\A{\JS{app.alert("I said, \\"No, they won't work.\\"...I'm wrong again.")}}]{$ x= f(t)$, $ x= g(t)$, $h(x) = e^x$}, very strange
+indeed. Let's try.
+
+Use \LaTeX/hyperref system of cross-referencing
+\mlnameref{three}. The last link is a modification of
+the \texttt{\string\nameref} command from hyperref.The
+\texttt{\string\Nameref} command can be duplicated
+\mlNameref{three} as well.
+
+\newpage
+
+\section{Third of Three Sections}\label{three}
+
+The second section, oops, I've lost count. I have nothing to say in
+this section. I take that back, below are problem areas multi-line
+linking:
+
+\begin{enumerate}
+ \item This method cannot work across page boundaries
+ \item See the \textsf{soul} package documentation for limitations on the arguments
+ of the \cs{mlxx} commands.
+ \item Works for footnotes
+ \item Can use verbatim text in a paragraph, \verb!$#}^!,
+ but cannot include verbatim in a multi-line link. Is
+ there any real need to do so?
+\end{enumerate}
+
+\section{URLs}
+
+Let us try a URL across lines: \mlhref[\S{U}\W{1}\Color{0.6 0 0}]{%
+http://www.math.uakron.edu/~dpstory/acrotex.html#educational}
+{See the educational offerings of the {Acro\negthinspace{\TeX}} Web
+Site at the University of Akron}. This link plays off the
+\texttt{\string\href} \hypertarget{command}{command}.
+
+We can also call a local file, let's try: \mlhref{shameless_ad.pdf}{Here
+is a shameless advertisement for Acro\!\TeX}.
+
+Try launching a file now, let's try a \LaTeX{} file:
+\mlhref[\S{U}\W{1}\Color{.6 0 0}]{run:\jobname.tex}{This is the
+source file of this document}.\footnote{Source document needs to be in the folder
+containing this PDF file.}
+
+Finally, let's try my own email address at Acro\!\TeX.Net,
+\mlhref{mailto:dpstory@acrotex.net}{dpstory at acrotex dot net}.
+
+\href{run:np_test.txt}{Launch Notepad}\footnote{Windows system required.}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.pdf b/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.pdf
new file mode 100644
index 00000000..bf10f2a1
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.tex b/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.tex
new file mode 100644
index 00000000..2e966d63
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/mlink_tst_url.tex
@@ -0,0 +1,36 @@
+\documentclass{article}
+% compile with or without the colorlinks option
+\usepackage{xcolor}
+\usepackage[colorlinks]{hyperref}
+\usepackage{aeb_mlink}
+
+\definePath{\urlAcroTeXBlog}{http://www.acrotex.net/blog}
+\definecolor{webgreen}{rgb}{0,.5,0}
+
+\parindent0pt \parskip3pt
+
+\begin{document}
+
+In this demo file we test the \verb~\mlurl~ command.
+
+OK, let's see if we still wrap around the line
+\mlurl{http://www.math.uakron.edu/~dpstory}. Now let's try another link, the following URL
+\mlurl[\S{U}\W{1}\Color{0 .6 0}\linktxtcolor{webgreen}]{http://www.acrotex.net}, does it wrap?
+
+Let's try a footnote.\footnote{OK, lets see if we still wrap around the line, does it work?
+\mlurl{http://www.math.uakron.edu/~dpstory}.}
+
+Here, we reference a \textsf{AeB Pro} articles \mlurl{\urlAcroTeXBlog/?tag=aeb-pro}.
+
+If the URL contains spaces, uses URL encoding, see \mlurl{http://www.w3schools.com/tags/ref_urlencode.asp}, for example.
+In the next example, we use \verb~\%20~ for space, the normal \texttt{\%20} is a problem because \texttt{\%}
+is still the {\LaTeX} comment character.
+
+Try a PDF with search: \mlurl{http://www.math.uakron.edu/~dpstory/acrotex/aeb_man.pdf#page=8%
+&search=AcroTeX\%20web\%20exerquiz}.
+
+The comment character can be used to wrap a long URL to the next line without effecting the address,
+as is done in the source file.
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-mlink/np_test.txt b/texmf-dist/doc/latex/aeb-mlink/np_test.txt
new file mode 100644
index 00000000..d9ea3996
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/np_test.txt
@@ -0,0 +1 @@
+This is a test document for notepad to open.
diff --git a/texmf-dist/doc/latex/aeb-mlink/shameless_ad.pdf b/texmf-dist/doc/latex/aeb-mlink/shameless_ad.pdf
new file mode 100644
index 00000000..69a04440
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-mlink/shameless_ad.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/README.md b/texmf-dist/doc/latex/aeb-pro/README.md
new file mode 100644
index 00000000..4c008de9
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/README.md
@@ -0,0 +1,44 @@
+The AeB Pro Package
+Author: D. P. Story
+Dated: 2017-03-08
+
+The AeB Pro Package complements and extends AcroTeX eDucation Bundle.
+
+AeB Pro implements a number of new features:
+ (1) AeB Central (this can be used by non-distiller users)
+ (2) Complete support for set up the initial view of the document
+ (3) Extensive support for document actions: document level JS,
+ set document actions (willSave, didSave, etc.) and open
+ document actions. (4) Complete support for page actions (5)
+ Complete support for full screen mode, and all the current
+ transition effects through version 8.
+ (6) Methods to easily attach documents
+ (7) document assembly methods, methods used immediately following
+ PDF creation.
+ (8) Methods for linking to attachments and launching attachments
+ (9) Support for creating PDF Packages.
+ (10) Initializing fields using unicode.
+ (11) Basic support for layers, rollovers and animations.
+ (12) In this version (v2.1 or later), the package is opened up to
+ non-Distiller workflows. Use the dvips/Distiller workflow to obtain all
+ features, (1)--(11) below, of this package. For authors that have Acrobat
+ but prefer a non-Distiller workflow, use the useacrobat option for
+ features (1)--(10) below. For authors who do not have Acrobat, use the
+ nopro option to access features (1)--(3),
+
+Extensive examples illustrate all these features.
+
+Installation Instructions: Contained in the documentation
+aebpro_man.pdf and in install_jsfiles.pdf.
+
+Let me know if there are problems or suggested features. E-mail
+me at dpstory@uakron.edu or dpstory@acrotex.net
+
+The AcroTeX Blog (http://blog.acrotex.net/) lists the distribution files at
+http://www.acrotex.net/blog/?page_id=835, all demo files that use AeB Pro
+are listed at http://www.acrotex.net/blog/?tag=aeb-pro.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory@uakron.edu
diff --git a/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf b/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf
new file mode 100644
index 00000000..b25ceb9a
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf
new file mode 100644
index 00000000..4af04e42
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
new file mode 100644
index 00000000..52404840
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
@@ -0,0 +1,430 @@
+% use useacrobat option with pdftex and xetex if you have acrobat
+% use nopro if you don't have acrobat
+\documentclass{article}
+\usepackage[%
+ web={
+ pro,
+ designv,
+ tight,
+ centertitlepage,
+ },
+ aebxmp,
+]{aeb_pro}
+
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Doc/Page Events \& Fullscreen Support,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent}
+\newenvironment{sverbatim}
+{\par\footnotesize\verbatim}{\endverbatim}
+
+%
+% Environments for setting the will and did things
+% Advanced > Document Processing > Set Document Actions
+%
+\begin{willClose}
+console.println("willClose");
+\end{willClose}
+
+\begin{willSave}
+console.println("willSave");
+\end{willSave}
+
+\begin{didSave}
+console.println("didSave");
+\end{didSave}
+
+\begin{willPrint}
+console.println("willPrint");
+\end{willPrint}
+
+\begin{didPrint}
+console.println("didPrint");
+\end{didPrint}
+
+%
+% Set the default full screen transition behavior
+%
+\setDefaultFS
+{%
+ fullscreen,
+ cursor=delay,
+ Trans=Random,
+ loop,
+ escape
+}
+%
+% This command has been around from insDLJS for many years,
+% used for first page open actions
+%
+\OpenAction{\JS{%
+% console.show();\r
+ console.clear();\r
+ console.println("Show the output of the page actions");
+}}
+%
+% Here, you can add an event that occurs with every page open
+% There is a command to cancel this out
+%
+\begin{everyPageOpen}
+var str = "every page open";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+%
+% Here, you can add an event that occurs with every page close
+% There is a command to cancel this out
+%
+\begin{everyPageClose}
+var str = "every page close";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageClose}
+%
+% To add an additional page open event to the first page, you
+% can use either the \OpenAction of insdljs, or you can use
+% this command indirectly through the addJSToPageOpen environment
+% in the preamble.
+%
+\begin{addJSToPageOpen}
+var str = "This should be the first page"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+
+%
+% To add an additional page close event to the first page, use
+% the addJSToPageClose environment in the preamble.
+%
+\begin{addJSToPageClose}
+var str = "This is the close action for the first page!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+
+\begin{document}
+
+\setPageTransitionAt{1,\atPage{test}-\atPage{exam},7}{Trans=Blend,PageDur=20,TransDur=5}
+%
+% This environment allows you to set a page open event at a particular page
+% if known. We can specify page ranges by marking the page with a \label,
+% then referencing that page with a special command \atPage, like so.
+%
+\begin{addJSToPageOpenAt}{1,\atPage{test}-\atPage{exam}}
+var str = ("Add to open page at pages between \\\\atPage{test} and \\\\atPage{exam}; Page " + (this.pageNum+1));
+console.println(str);
+\end{addJSToPageOpenAt}
+%
+% This environment allows you to set a page close event at a particular page
+% if known.
+%
+\begin{addJSToPageCloseAt}{5-8,12,15-}
+var str = "Add to close page at page " + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageCloseAt}
+
+%------------------ \maketitle ---------------------------------------
+
+\maketitle
+
+\tableofcontents
+
+%------------------ Document Content ---------------------------------
+
+\section{Document Actions}
+
+In this section we outline the various commands and environments for
+creating document and page actions for a PDF document.
+
+\newtopic As you read through this section, keep the console
+window open to see the various page events reporting back to the
+console.
+
+\subsection{Document Level JavaScripts}
+
+Creating document level JavaScript has been part of AeB for many years, use the
+\texttt{insDLJS} environment, as documented in \texttt{webeqman.pdf}.
+
+\subsection{Set Document Actions}
+
+The AeB Pro provides environments for the events willClose,
+willSave, didSave, willPrint and didPrint JavaScript events.
+Corresponding {\LaTeX} environments are created: \texttt{willClose},
+\texttt{willSave}, \texttt{didSave}, \texttt{willPrint} and
+\texttt{didPrint}. These are illustrated in the preamble of this
+document.
+
+\subsection{Open/Close Page Actions}
+
+When a page opens or closes a JavaScript occurs. Predefined JavaScript can execute
+in reaction to these events. AeB Pro provides several commands and environments.
+
+\subsubsection{Open/Close Page Actions for First Page}
+
+Because of the way AeB was originally written---\textsf{exerquiz}, actually---,
+the first page is a special case.
+
+There is a command, \cs{OpenAction}, that is part of the \texttt{insdljs} package for several years, that
+is used to introduce open page actions:
+
+\begin{sverbatim}
+\OpenAction{\JS{%
+ console.show();\r
+ console.clear();\r
+ console.println("Show the output of the page actions");
+}}
+\end{sverbatim}
+This command goes in the preamble to define action for the first page. This command is capable of defining
+non-JavaScript action, see the documentation of \texttt{insdljs} for some details.
+
+Environments, defined in AeB Pro, but uses macros from \texttt{insdljs} are
+\texttt{addJSToPageOpen} and \texttt{addJSToPageClose}. When placed in the preamble, these
+provide JavaScript support for page open/close events of the first page. In the preamble of this document, you'll find
+
+\begin{sverbatim}
+\begin{addJSToPageOpen}
+var str = "This should be the first page"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+\end{sverbatim}
+and
+\begin{sverbatim}
+\begin{addJSToPageClose}
+var str = "This is the close action for the first page!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+\end{sverbatim}
+
+\subsubsection{Open/Close Page Actions for the other Pages}
+
+The same two environments \texttt{addJSToPageOpen} and \texttt{addJSToPageClose} can be used
+in the body of the text to generate open or close actions for the page on which they appear.
+It's a rather hit or miss proposition because the tex compiler may break the page at an unexpected location
+and the environments are processed on the page following the one you wanted them to appear on.
+
+\newtopic Just below this paragraph are \texttt{addJSToPageOpen} and \texttt{addJSToPageClose} environments.
+Will the effects defined by these environments appear on this page or the next?
+%
+% These two environments allow you to set the page open and page close actions for
+% the current page. They do not overwrite the action created by the At versions
+% of the same environment.
+%
+\begin{addJSToPageOpen}
+var str = "Local open action"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+
+\begin{addJSToPageClose}
+var str = "Local Close action!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+
+\newtopic Another approach to trying to place \texttt{addJSToPageOpen} or \texttt{addJSTo\-Page\-Close}
+on the page you want is to use the \texttt{addJSToPageOpenAt} or \texttt{addJSToPageCloseAt} environments.
+These are the same of their cousins, but are more powerful. Each of these takes an argument that specifies
+the page, pages, and/or page ranges of the open/close effects you want. These two commands can go in the
+preamble, but I recommend putting them just after the \verb!\begin{document}! and before \cs{maketitle}, as
+illustrated in this document.
+
+The two environments take a comma-delimited list of pages and page ranges, for example, an argument might
+be \verb!{2-6,9,12,15-}!. This argument states that the open or close JavaScript listed in the environment
+should execute on pages 2 through 6, page 9, page 11, and pages 15 through the end of the document. Very cool!
+
+This is all well and good if you know exactly which pages are the
+ones you want the effects to appear. What's even more cool is that
+you can use {\LaTeX}'s cross-referencing mechanism to specify the
+pages. By placing these environments after \verb!\begin{document}!,
+the cross referencing information (the \texttt{.aux}) has been input
+and you can use \cs{atPage}, a special simplified version of
+\cs{pageref}, to reference the pages. See the verbatim listing
+below.
+
+\begin{sverbatim}
+\begin{addJSToPageOpenAt}{1,\atPage{test}-\atPage{exam}}
+var str = "Add to open page at pages between \\\\atPage{test} and \\\\atPage{exam} "
+ + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageOpenAt}
+\end{sverbatim}
+In the above, we specify a range \verb!\atPage{test}-\atPage{exam}!, which when expanded
+becomes a range of \pageref*{test}-\pageref*{exam}. If the first page number is larger than
+the second number, the two numbers are switched; consequently, \verb!\atPage{exam}-\atPage{test}!
+yields the same results.
+\begin{sverbatim}
+\begin{addJSToPageCloseAt}{5-8,12,15-}
+var str = "Add to close page at page " + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageCloseAt}
+\end{sverbatim}
+Notice that in the \texttt{addJSToPageOpenAt} environment above,
+page 1 was specified. This specification is ignored. You do remember
+that the first page events need to be defined in the preamble, don't
+you.
+
+\subsubsection{Every Page Open/Close Events}
+
+As an additional feature, there may be an occasion where you want to
+define an event for every page. These are handled separately from the earlier
+mentioned open/closed events so one does not overwrite the other. These environments
+are \texttt{everyPageOpen} and \texttt{everyPageClose}. They can go in the preamble, or anywhere.
+They will take effect on the page they are processed on. Using these environments a second time
+overwrites any earlier definition. To cancel out the every page action you can use
+\cs{canceleveryPageOpen} and \cs{canceleveryPageClose}. The environments that appear
+in the preamble are
+
+\begin{sverbatim}
+\begin{everyPageOpen}
+var str = "every page open";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+
+\begin{everyPageClose}
+var str = "every page close";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageClose}
+\end{sverbatim}
+
+\section{Fullscreen Control}
+
+In this section we present the controlling commands for default
+fullscreen mode and for defining page transition effects.
+
+\subsection{\texorpdfstring{\protect\cs{setDefaultFS}}{\textbackslash setDefaultFS}}
+
+Set the default fullscreen behavior of Adobe Reader/Acrobat by using \cs{setDefaultFS}
+in the preamble. This command takes a number of arguments using \texttt{xkeyval}, each key
+correspond to a JavaScript property of the fullscreen object.
+
+\newtopic In the preamble of this document, I have placed \cs{setDefaultFS} specifying
+that the document should go into fullscreen mode with a random transition for its default
+transition effect.
+
+\begin{sverbatim}
+\setDefaultFS
+{%
+ fullscreen,
+ cursor=delay,
+ Trans=Random,
+ loop,
+ escape
+}
+\end{sverbatim}
+See the AeB Pro documentation for full documentation on these properties.
+
+\subsection{Page Transition Effects}
+
+There are two commands \cs{setPageTransition} and
+\cs{setPageTransitionAt}. The former sets the transition effects for
+the page on which it is processed. It suffers from the same malady
+as do \texttt{addJSToPageOpen} and \texttt{addJSToPageClose}, you
+have to hit the page you want. The latter command is the same
+remedy, as illustrated below.
+
+\begin{sverbatim}
+\setPageTransitionAt{1,\atPage{test}-\atPage{exam},7}{Trans=Blend,PageDur=20,TransDur=5}
+\end{sverbatim}
+See the AeB Pro documentation for full documentation on these properties.
+
+\newpage
+\parindent0pt
+
+\section{Test}\label{test}
+
+Hi world! Page \thepage
+
+\newpage
+
+Again, hi! Page \thepage
+
+\newpage
+
+
+\begin{addJSToPageOpen}
+app.beep(0);
+\end{addJSToPageOpen}
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+
+\newpage
+
+
+Canceling every open page
+
+\canceleveryPageOpen
+
+\newpage
+\section{Exam}\label{exam}
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+\begin{everyPageOpen}
+var z = "every page open, reset";
+console.println(z + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+
+Introducing the AeB Pro Family!
+
+\newtopic Resetting every page open this page
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf
new file mode 100644
index 00000000..5efa8728
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex
new file mode 100644
index 00000000..03557696
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex2.tex
@@ -0,0 +1,232 @@
+% use useacrobat option with pdftex and xetex if you have acrobat
+% use nopro if you don't have acrobat
+\documentclass{article}
+\usepackage
+[%
+% useacrobat,
+% nopro,
+ web={
+ pro,
+ designiv,
+% navibar,
+ tight,
+% forcolorpaper,
+ centertitlepage,
+ usesf
+ },
+ aebxmp
+]{aeb_pro}
+
+\begin{comment}
+Experiment with various combinations of \noSectionNumber, \forceSubSubNumbers, Commenting
+and uncommenting the \selectDings data structure (for the toc). Comment and uncomment
+the dings key-value pair for the layout sections data structure.
+\end{comment}
+\noSectionNumbers
+%\forceSubSubNumbers
+
+\begin{comment}
+\selectDings
+{
+ dDingToc=\ding{082},
+ ddDingToc=\ding{079},
+ dddDingToc=\ding{254}
+}
+\end{comment}
+
+\definecolor{orange}{rgb}{0.97,0.65,0.00}
+\definecolor{indianbrown}{rgb}{0.35,0.24,0.11}
+
+\sectionLayout
+{%
+ ding=\ding{082}, % This ding will appear when \noSectionNumbers is in effect, comment out to get no ding
+ indent=\prtscr{-\oddsidemargin}{0pt}, % Use \prtscr to have different values depending on for print or screen
+ halign=l, % align left, the default
+ color=\prtscr{webbrown}{red}, % text color of red
+ special=\prtscr{default}{shadow}, % shadow special effects
+ shadowcolor=blue % shadow color blue
+}
+\subsectionLayout{%
+ ding=\ding{079},
+ indent=\prtscr{-.5\oddsidemargin}{0pt},
+ halign=\prtscr{l}{c},
+ color=red,
+ special=\prtscr{default}{fcolorbox}
+}
+\subsubsectionLayout{%
+ ding=$\bullet$,
+ halign=\prtscr{l}{r},
+ color=indianbrown,
+ special=\prtscr{default}{fcolorboxfit},
+ framecolor=red,
+ bgcolor=orange
+}
+\tocLayout
+{%
+ ding=\ding{082},
+ indent=\prtscr{-\oddsidemargin}{0pt},
+ halign=\prtscr{l}{c},
+ color=red,
+ shadowcolor=blue
+}
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package
+ \texorpdfstring{\\[1ex]}
+ {: }Highlighting the \texttt{pro} option of Web,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\selectColors
+{
+ universityColor = blue,
+ titleColor = red,
+ authorColor = blue,
+ urlColor = webbrown,
+ linkColor = webgreen,
+ fileColor = webbrown
+}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent}
+\newenvironment{sverbatim}
+{\par\footnotesize\verbatim}{\endverbatim}
+
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{AeB Control Central}
+
+The AeB family of software, {\LaTeX} packages all, are for the most
+part stand alone; however, usually they are used in combination with
+each other, at least that is the purpose for which they were
+originally designed. When several members of family AeB are used,
+they should be loaded in the optimal order. With AeB Pro, you can
+now list the members of the AeB family you wish to use, along with
+their optional parameters you wish to use.
+
+\newtopic For example,
+
+\begin{sverbatim}
+\usepackage[%
+ driver=dvips,
+ web={pro,designv,tight,nodirectory,centertitlepage,usesf},
+ exerquiz={<optional parameters>},
+ ...,
+ aebxmp,
+]{aeb_pro}
+\end{sverbatim}
+Yes, yes, I know this is not necessary, you can always load the
+packages earlier than AeB Pro, but please, humor me.
+
+By default, the code for supporting features that require the use of
+Distiller and Acrobat~Pro are included; there is a \texttt{nopro} option that excludes
+these features. Use the \texttt{nopro} if you wish to use the AeB Control Center
+to load the various members of the Acro\negthinspace\TeX{} family.
+
+\newtopic See the AeB Pro documentation for the list of supported options.
+
+\section{Document Information:
+ \texorpdfstring{\protect\cs{DeclareDocInfo}}
+ {\textbackslash DeclareDocInfo}}
+
+The \texttt{web} package and the \texttt{hyperref} package both have
+several data strings used in the Description tab of the Document
+Properties of a PDF document. Below is the \cs{DeclareDocInfo}
+``data structure'', the meanings of the keys are clear. Some of the
+keys are used in the Description tab of the PDF document, others are
+used in the title page, while others true play a dual role.
+
+\begin{sverbatim}
+\DeclareDocInfo{
+ title=The AeB Pro Package
+ \texorpdfstring{\\[1ex]}
+ {: }Highlighting the \texttt{pro} option of Web,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\end{sverbatim}
+The last three keys are particular to the \textsf{aebxmp} package,
+which has been input into this document. These three keys populate
+the Advanced Metadata dialog box; Acrobat~8 Pro is required for
+\textsf{aebxmp} package to work correctly.
+
+\newtopic See the AeB Pro documentation for a detailed description of \cs{DeclareDoc\-In\-fo}
+and the \textsf{aebxmp} package documentation.
+
+\section{Control over Headings}
+
+The \texttt{pro} option of web introduces the use of the xkeyval package and with it comes a
+complex choice for setting up your section headings and various elements of your title page.
+
+\subsection{Designing your Section Headings}
+
+When the \texttt{pro} option of the \textsf{web} package is used, the commands
+\cs{section\-Layout}, \cs{sub\-section\-Layout} and \cs{subsubsectionLayout} become available.
+Look in the preamble of this document, there, I've set the look of the format of each of these
+three section levels. My design choices are meant to illustrate the variety of choices you have,
+I myself have no sense of color, or design, for that matter.
+
+The normal setting is to show section numbers, when you execute \cs{no\-Section\-Numbers} in the preamble,
+obviously, no section numbers will be shown. (Useful for presentations, with no cross-references.) If
+you specify a value for the \texttt{ding} key, then a ding appears where the section number was.
+
+When showing section numbers, the default, one of the famous features of the \textsf{web} package was to have
+a bullet for the subsubsection heading, rather than the subsubsection number. By executing
+\cs{forceSubSubNumbers} in the preamble, you force the appearance of the subsubsection numbers. To get
+the appearance of these numbers in the table of contents, use the \texttt{latextoc} option of \textsf{web}.
+
+The commands can be placed in the preamble or anywhere. They take
+effect at the next encountered section that is applicable.
+
+\subsection{Designing your Initial Pages}
+
+The same mechanism used for the formatting of the section headings is also used for the
+title page and the table of contents.
+
+\subsubsection{The Title Page}
+
+Certain components of the title page can be controlled using the same mechanism as the
+section headings. Corresponding to the university, the title and the author are
+\cs{universityLayout}, \cs{titleLayout} and \cs{authorLayout}. These three have the same key-value
+pairs as the section layout commands, but they do now obey the \texttt{ding} key.
+
+\newtopic See \texttt{aebpro\_titlepg.tex} for an interesting illustration of the key-values
+of the layout for the title page.
+
+\subsubsection{The Table of Contents}
+
+The \cs{tocLayout} command is like the layout commands on the title page, it does not obey the
+\texttt{ding} key. With it you can adjust color of the text and horizontal positioning. Special
+effects can also be specified.
+
+When \cs{noPageNumbers} is in effect, you can specify the values of the \cs{selectDings} structure
+to have dings showing up in the table of contents listing. These dings may or may not match the dings
+of the section labeling. Specifying no ding for a particular section level displays no ding for that
+toc entry.
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf
new file mode 100644
index 00000000..2787301a
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex
new file mode 100644
index 00000000..c20a15e0
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex
@@ -0,0 +1,361 @@
+% Acrobat required
+% use useacrobat option with pdftex and xetex if you have acrobat
+\documentclass{article}
+\usepackage{graphicx,fancyvrb}
+\usepackage[%
+ web={
+ pro,
+ designv,
+ tight,
+% forcolorpaper, % uncomment to get doc for paper
+ centertitlepage,
+ usesf
+ },
+ eforms,
+%
+% Attach source file, and the tex log (I've renamed \jobname.log
+% to \jobname.tex.log to avoid the distiller from overwriting it.
+% The distiller only creates the log if there some sort of error message; consequently,
+% the log for distiller is not attached (no error), but the tex log is destroyed by distiller
+ attachsource={tex,log,tex.log},
+%
+% Just for laughs, let's include Robot Man.
+%
+ attachments={extras.zip.txt, ../extras/robot_man.pdf},
+ aebxmp,
+]{aeb_pro}
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Attachments and Doc Assembly,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=http://www.acrotex.net,
+ talkdate={January 12, 2007},
+ version=1.0,
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\DeclareInitView{layoutmag={navitab=UseAttachments},windowoptions=fit}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent}
+\newenvironment{sverbatim}
+{\par\footnotesize\verbatim}{\endverbatim}
+%
+% As you do not have the necessary background files, the \addWatermarkFromFile
+% will silently fail.
+%
+\begin{forpaper}
+\begin{docassembly}
+var pos=this.path.indexOf(this.documentFileName,"/");
+var myPath=this.path.substring(0,pos);
+try {
+\addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf"
+}); } catch(e) { console.println(e.toString()) };
+try {
+ \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+} catch(e) { console.println(e.toString()) };
+try {
+ \importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
+ \importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
+ \importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+ var f = this.getField("cheesySound");
+ f.buttonPosition = position.iconOnly;
+ var oIcon = this.getIcon("logo");
+ f.buttonSetIcon(oIcon,0);
+ oIcon = this.getIcon("logopush");
+ f.buttonSetIcon(oIcon,1);
+ oIcon = this.getIcon("logorollover");
+ f.buttonSetIcon(oIcon,2);
+} catch(e) { console.println(e.toString()) };
+try {\importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});} catch(e){}
+\end{docassembly}
+\end{forpaper}
+\begin{forscreen}
+\begin{docassembly}
+var pos=this.path.indexOf(this.documentFileName);
+var myPath=this.path.substring(0,pos);
+try {
+ \addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf"
+ });
+} catch(e) { console.println(e.toString()) };
+try {
+ \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+} catch(e) { console.println(e.toString()) };
+try {
+ \importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
+ \importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
+ \importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+ var f = this.getField("cheesySound");
+ f.buttonPosition = position.iconOnly;
+ var oIcon = this.getIcon("logo");
+ f.buttonSetIcon(oIcon,0);
+ oIcon = this.getIcon("logopush");
+ f.buttonSetIcon(oIcon,1);
+ oIcon = this.getIcon("logorollover");
+ f.buttonSetIcon(oIcon,2);
+} catch(e) { console.println(e.toString()) };
+try {\importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});} catch(e){}
+\end{docassembly}
+\end{forscreen}
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{Introduction}
+
+AeB Pro has two options for attaching files to the source PDF. The
+approach is the \texttt{import\-Data\-Object} JavaScript method in
+conjunction with the FDF techniques.
+
+Also in this sample file, doc assembly techniques are also
+demonstrated.\footnote{The attachments feature uses doc assembly
+methods, but simplified for user convenience.}
+
+\section{Attaching Files with AeB Pro}
+
+There are two options for attaching files
+\begin{enumerate}
+ \item \texttt{attachsource} is a simplified option for attaching
+ any file of the form \cs{jobname.}\texttt{\textsl{ext}}.
+
+ \item \texttt{attachments} is a general option for attaching a
+ file, as specified by its absolute or relative path.
+\end{enumerate}
+
+\subsection{The \texttt{attachsource} option}
+
+Use this option to attach a file with the same base name as \cs{jobname}.
+
+\begin{Verbatim}
+ \usepackage[%
+ driver=dvips,
+ web={pro,usesf,...},
+ attachsource={tex,dvi,log,tex.log},
+ ...
+ ]{aeb_pro}
+\end{Verbatim}
+Simply list the extensions you wish to attach to the current
+document. In the example above, we attach the original source file
+\cs{jobname.tex}, \cs{jobname.dvi}, \cs{jobname.log} (the distiller
+log) and \cs{jobname.tex.log} (the tex log).
+
+
+\newtopic One problem with attaching the log file is that the distiller also
+produces a log file with the same name \cs{jobname.log}.
+Consequently, the log file for the tex file is overwritten by the
+distiller log file. You'll see from the PDF document, that the log
+file attached is the one for the distiller.
+
+A work around for this is to latex your file, rename the
+log file to another extension, such as \cs{jobname.tex.log}, then
+distill.
+
+\subsection{The \texttt{attachments} option}
+
+The \texttt{attachments} key is for attaching files other than ones
+associated with the source file. The value of this key is a
+comma-delimited list (enclosed in braces) of absolute paths and/or
+relative paths to the file required to attach. For example,
+
+\begin{Verbatim}
+\usepackage[%
+ driver=dvips,
+ web={pro,usesf,...},
+ attachments={extras.zip.txt,../extras/robot_man.pdf,
+ /C/Documents and Settings/dps/My Documents/My Pictures/birthday17.jpg},
+ ...
+]{aeb_pro}
+\end{Verbatim}
+The first and second references are relative to the folder containing this
+source file, and third one is an example of an absolute path
+(picture not attached).
+
+\newtopic There are some files that Acrobat does not attach, but
+there is no public list of these. One finds them by discovery,
+\texttt{.exe} and \texttt{.zip} files, for example.
+
+A trick that I use to send \texttt{.zip} files through the email
+(they are often stripped away by mail servers) is to \emph{hide} the
+\texttt{.zip} file in a PDF as an attachment. But since Acrobat does
+not attach \texttt{.zip}, I change the extension from \texttt{.zip}
+to \texttt{zip.txt}, then inform the recipient to save the
+\texttt{zip.txt} file and change the extension back to \texttt{.zip}.
+Swave!
+
+\section{Doc Assembly}
+
+Ahhhh, document assembly. What can be said? This is a method that I
+have used for many years and is incorporated into the
+\textsf{insdljs} package under the name of \texttt{execJS}. Whereas
+the \texttt{execJS} environment is still available to you, I've
+simplified things. The term doc assembly refers to the use of the
+\texttt{docassembly} environment (which is just an \texttt{execJS}
+environment).
+
+The \texttt{execJS}/\texttt{docassembly} environments create an FDF
+file with the various JavaScript commands that were contained in the
+body of the environment. These environments also place in open page
+action so that when the PDF is opened for the first time in Acrobat
+Pro, the FDF file will be imported and the JS will be executed one
+time and then discarded, see \cite{TUG:execJS} for an article on this topic.
+This technique only works if you have Acrobat Pro.
+
+In addition to the \texttt{docassembly} environment, AeB Pro also
+has several macros that expand to JavaScript methods that I find
+useful. These are
+\begin{enumerate}
+ \item \cs{addWatermarkFromFile}: inserts a background into the PDF
+
+ \item \cs{importIcon}: imports icon files\footnote{The
+ AcroMemory package uses these environments and functions to
+ import icons.}
+
+ \item \cs{importSound}: imports a sound file
+
+ \item \cs{appopenDoc}: opens a document
+
+ \item \cs{insertPages}: inserts pages into the PDF, useful for
+ inserting pages of difference sizes, such as tables or figures,
+ into a {\LaTeX} document which requires that all page be of a
+ fixed size.
+
+ \item \cs{importDataObject}: Attaches a file to the PDF. This
+ function is used in the two attachments options of AeB Pro.
+\end{enumerate}
+See the AeB Pro documentation for details. Here, in this demo file,
+I present the code in the preamble of this document:
+\begin{Verbatim}
+var pos=this.path.indexOf(this.documentFileName);
+var myPath=this.path.substring(0,pos);
+\begin{docassembly}
+\addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf"
+});
+\end{docassembly}
+\end{Verbatim}
+It is \emph{very important} to note that the arguments for this
+(pseudo-JS method) are enclosed in matching parentheses/braces
+combination, i.e., \verb!({!\dots\verb!})!. The arguments are
+key-value pairs separated by a colon, and the parameters themselves
+are separated by commas. (The argument is actually an
+object-literal). It is \emph{extremely important} to have the left
+parenthesis/brace pair, \verb!({!, immediately follow the function
+name. This is because the environment is a partial-verbatim
+environment: \verb!\! is still the escape, but left and right braces
+have been ``sanitized''. The commands, like
+\cs{addWatermarkFromFile} first gobble up the next two tokens, and
+re-inserts \verb!({! in a different location. (See the
+\textsf{aeb\_pro.dtx} for the definitions.)
+
+For another cheesy demonstration, let's import a sound, associate it
+with a button. I leave it to you to press the button at your
+discretion.
+\begin{center}
+\setbox0=\hbox{\includegraphics[height=16bp]{extras/AeB_Logo.eps}}
+\newtopic\pushButton[\S{S}\W{0}\A{\JS{%
+ var s = this.getSound("StarTrek");\r
+ s.play();
+}}]{cheesySound}{\the\wd0 }{\the\ht0 }
+\end{center}
+
+\begin{Verbatim}
+\begin{docassembly}
+try {
+ \addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf"
+ });
+} catch(e) { console.println(e.toString()) };
+try {
+ \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+} catch(e) { console.println(e.toString()) };
+\end{docassembly}
+\end{Verbatim}
+Above is the full verbatim listing of the \texttt{docassembly}
+environment that will execute for the screen. You'll note the
+\cs{importSound} command, which imports the sound file
+\texttt{trek.wav}. I've also enclosed the individual commands in a
+\texttt{try/catch} construct. Doing so is very useful for debugging
+the script.
+
+One last little demonstration of the doc assembly methods. In the
+preamble, I've imported a few AeB logos (forgive me) and placed them
+as appearance faces for the button above. Below is a listing of the
+code, with some comments added.
+
+\begin{Verbatim}[fontsize=\small]
+\begin{docassembly}
+...
+...
+// Import the sounds into the document
+\importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
+\importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
+\importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+var f = this.getField("cheesySound"); // get the field object of the button
+f.buttonPosition = position.iconOnly; // set it to receive icon appearances
+var oIcon = this.getIcon("logo"); // get the "logo" icon
+f.buttonSetIcon(oIcon,0); // assign it as the default appearance
+oIcon = this.getIcon("logopush"); // get the "logopush" icon
+f.buttonSetIcon(oIcon,1); // assign it as the down appearance
+oIcon = this.getIcon("logorollover"); // get the "logorollover" icon
+f.buttonSetIcon(oIcon,2); // assign it as the rollover appearance
+\end{docassembly}
+\end{Verbatim}
+The result is the button you see above.
+
+\newtopic As a final example of \texttt{docassembly} usage, rather
+than using the attachments options of AeB Pro, you can also attach
+your own files using the \texttt{docassembly} environment.
+\begin{Verbatim}[fontsize=\small]
+\begin{docassembly}
+...
+...
+try {
+ \importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});
+} catch(e){}
+\end{docassembly}
+\end{Verbatim}
+The attachments options automatically assign names. These names appear in the Description column of the attachments
+tab of Acrobat/Reader. For file attached using the \texttt{attachsource}, the base name plus extension is used, for
+the files specified by the \texttt{attachments} key, the names are given sequentially, \texttt{"AeB Attachment 1"},
+\texttt{"AeB Attachment 2"} and so on. When you roll your own, the description can be more aptly chosen.
+
+\newtopic I have found many uses for the \texttt{execJS}
+environment, or the simplified \texttt{docassembly} environment.
+You are only limited by your imagination, and knowledge of
+JavaScript for Acrobat.
+
+
+\newpage
+\markright{References}
+
+\begin{thebibliography}{[1]}\label{references}
+\addcontentsline{toc}{section}{\protect\numberline{}References}
+
+\bibitem{TUG:execJS} ``\texttt{execJS}: A new technique for introducing discardable
+JavaScript into a PDF from a \LaTeX{} source,'' TUG\textsc{boat}, The
+Communications of the \TeX{} User Group, Vol.~22, No.~4, pp.\
+265-268 (2001).
+
+\end{thebibliography}
+
+
+
+\end{document}
+
+\importDataObject({cName: "\myEmbeddedFile",cDIPath: "aebpro_ex2.pdf"});
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf
new file mode 100644
index 00000000..d43072a7
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex
new file mode 100644
index 00000000..81c83709
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex
@@ -0,0 +1,346 @@
+% dvips/Distiller workflow only
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage[%
+ web={
+ pro,
+ designv,
+ tight,
+% forcolorpaper,
+ centertitlepage,
+ dvipsnames,
+ usesf
+ },
+ uselayers,
+ eforms,
+ aebxmp,
+]{aeb_pro}
+\usepackage{graphicx}
+\usepackage[nomessages]{fp}
+%
+% The versions of pstricks-add and pstricks should be
+% fairly recent.
+%
+\usepackage{pstricks-add}
+\usepackage[absolute,overlay]{textpos}
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Layers and Rollovers,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=http://www.acrotex.net,
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent}
+\newenvironment{sverbatim}
+{\par\footnotesize\verbatim}{\endverbatim}
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+\begin{document}
+
+\maketitle
+
+\section{Layers}
+
+When the \texttt{uselayers} option is taken, the necessary code is
+input to produce layers (Optional Content Groups). The
+\textcolor{blue}{{\AcroTeX} Presentation Bundle} (APB), which has a
+very sophisticated method of control over layers, by comparison, the
+\textcolor{blue}{AeB Pro} layer support is very primitive indeed. As
+a rule, after you create a layer, you will need a control of that
+layer. This could be a button or a link that executes JavaScript.
+
+The basic command for creating a layer is \cs{xBld}. The content of
+the layer is set off by the \cs{xBld}/\cs{eBld} pair. The command
+\cs{xBld} takes two parameters: (1) the first is optional,
+\texttt{true} if the layer is initially visible or \texttt{false},
+the default, if the layer is hidden initially; (2) the name of the
+layer, this is used to reference the layer, to make it visible or
+hidden.
+
+The creation and control of layers are illustrated in the two
+subsequent sections.
+
+\newtopic When constructing a layer, there are two possible scenarios:
+\begin{enumerate}
+ \item The layer takes up ``tex'' space
+ \item The layer does not take up ``tex'' space
+\end{enumerate}
+Let's look at each of these in turn.
+
+\subsection{Layer takes up space}
+
+A layer that takes up space in tex is the easiest case. For
+example, guess what I'm thinking thinking about: I'm thinking about
+my formerly favorite number, \xBld{mythoughts}the number is the
+value of the integral $\int_0^4 4x + \frac14\,dx$. \eBld Want a
+hint? \setLink[%
+\A{\JS{%
+ var oLayer = getxBld("mythoughts");
+ if ( oLayer != null )
+ oLayer.state = !oLayer.state;
+ }}
+]{\textcolor{red}{Click here}} I hope that hint worked for you.
+Click on the link to hide the layer again.
+
+\newtopic For those viewing this document in PDF, the relevant code
+code is seen below.
+
+First the layer is enclosed in a \cs{xBld}/\cs{eBld} pair, the
+default state is hidden, so we don't supply the optional parameter.
+The require (second) parameter is the name used to refer to the
+layer.
+
+The link text has a JavaScript action. First we get the OCG object
+for this layer by calling the \texttt{getxBld} function (this is
+part of the AeB Pro JavaScript) then if non-null (you may not have
+spelled the name correctly) we toggle the current state,
+\texttt{oLayer.state = !oLayer.state}.
+\begin{sverbatim}
+\xBld{mythoughts}the number is the value of the integral
+$\int_0^4 4x + \frac14\,dx$. \eBld Want a hint?
+\setLink[\A{\JS{%
+ var oLayer = getxBld("mythoughts");
+ if ( oLayer != null )
+ oLayer.state = !oLayer.state;
+ }}
+]{\textcolor{red}{Click here}}
+\end{sverbatim}
+
+An advantage of the layers approach is that the content of the
+layers are latexed as part of the content of the tex file;
+consequently, you can include virtually anything in your layer that
+tex can handle, math, figures, PSTricks, etc. Acrobat Pro 7.0 (and
+distiller) or later is required to build the layers, but only Adobe
+Reader 7.0 or later is needed to view the document, once
+constructed.
+
+\NewPage
+\subsection{Layer takes no space}\label{nospace}
+
+Perhaps the easiest way of creating layers that do not take up any tex space is to use a
+package such as \textsf{textpos}. In the preamble of this document, I've placed the following
+command:
+
+\begin{sverbatim}
+\usepackage{pstricks-add,pstricks}
+\usepackage[absolute,overlay]{textpos}
+\end{sverbatim}
+
+\begin{textblock*}{.67\linewidth}[.5,.5](.5\paperwidth,.5\paperheight)
+\xBld{crossinggraphcs}\psshadowbox[framesep=0pt]{\fcolorbox{red}{cornsilk}{%
+\parbox{\linewidth}
+{%
+\begin{center}
+\begin{pspicture}(-0.5,-1,0)(7,5)
+ \pscustom[linewidth=1pt,fillstyle=hlines,hatchcolor=red]{
+ \psplot[linewidth=1pt]{2}{5}{%
+ x x mul neg x 6 mul add 5 sub}
+ \psplot[linewidth=1pt]{5}{2}{%
+ x x mul neg 3 div x 4 mul 3 div add 5 3 div add}
+ }
+ \pscustom[linewidth=1pt,fillstyle=vlines,hatchcolor=blue]{
+ \psline(0,1.666667)
+ \psplot[linewidth=1pt]{0}{2}{%
+ x x mul neg 3 div x 4 mul 3 div add 5 3 div add}
+ \psplot[linewidth=1pt]{2}{1}{%
+ x x mul neg x 6 mul add 5 sub}
+ }
+ \psaxes{->}(0,0)(-0.5,-0.5)(7,5)
+ \uput[-90](7,0){$x$}
+ \uput[0](0,5){$y$}
+ \psplot[linewidth=1pt]{0.75}{5.25}{%
+ x x mul neg x 6 mul add 5 sub}
+ \psplot[linewidth=1pt]{0}{5.25}{%
+ x x mul neg 3 div x 4 mul 3 div add 5 3 div add}
+ \rput(5,2){$f$}
+ \rput(3,2){$g$}
+\end{pspicture}
+\end{center}
+}}}\eBld
+\end{textblock*}
+
+Now we can create a layer that takes up no space, but is overlaid on top of the tex content.
+We use the \textsf{textpos} commands to place the layer. Once created and placed, we must
+have a way of showing it and hiding it. This time, we'll use a button:
+\pushButton[
+ \CA{Push}
+\A{\JS{%
+ toggleSetThisLayer("crossinggraphcs");
+}}]{crossinggraphcsBtn}{}{12bp}
+
+\newtopic As you can see from this example, you must be very careful in the placement of your
+layers vis-\`{a}-vis the button. Form fields are laid on top of
+content, and a layer is considered part of the content. This particular layer could be move to the
+upper left corner, for example, Let's see how a link works, shall we? \setLink[%
+\A{\JS{%
+ toggleSetThisLayer("crossinggraphcs");
+}}]{\textcolor{red}{Click here}}! The link is active even through the layer, you just have to find it!
+I could have set this link to that it has a visible bounding box, in which case the border of the
+bounding box shows through the layer, but hey, at least you can find the link!
+
+One thing you need to keep in mind is the placement of the code,
+within the \texttt{textblock} environment. The overlaid material
+will appear on whatever page the \texttt{textblock} ends up on.
+Should you add more material before the \texttt{textblock}, the
+controls may drop off to the next page. When the user presses the
+control, nothing happens, actually, the layer is appearing on the previous page.
+Sometimes it makes sense to insert a \cs{newpage} to ensure the proper placement
+of the overlay relative to the placement of the controls.
+
+\NewPage % this is \newpage when for screen, does nothing when forpaper, defined in web
+
+\defineRC{help1}
+{%
+\psset{llx=-12pt, lly=-12pt,urx =12pt,ury =12pt,xAxisLabel=$x$,yAxisLabel=$y$}
+\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){.75\linewidth}{.25\linewidth}
+ \psset{algebraic=true}%
+ \rput(4,1){$y=\sin(x)$}%
+ \psplot[linecolor=blue]{0}{TwoPi}{sin(x)}
+\end{psgraph*}
+}
+
+\begin{rollover}
+\begin{textblock*}{.4\linewidth}[.5,.5](.5\paperwidth,.5\paperheight)
+\xBld{help1}\psshadowbox[framesep=0pt]{\fcolorbox{red}{cornsilk}{%
+\parbox{\linewidth}{\insertRC{help1}}}}\eBld
+\end{textblock*}
+\end{rollover}
+\begin{printRollover}
+\definePR{help1}{\parbox{.4\linewidth}{\insertRC{help1}}}\insertPR{help1}
+\end{printRollover}
+
+\section{Rollovers}
+
+The AeB Pro package offers you two rollovers, which ostensibly provides
+help to the document consumer.
+
+\subsection{\texorpdfstring{\protect\cs{texHelp}}{\textbackslash{texHelp}} uses Layers}
+
+The rollover is a special case of the techniques discussed in
+\hyperref[nospace]{section~\ref*{nospace}}. For a rollover, you
+create a form field, enclosing a word, when the user rolls across
+the word, a help box opens. For example, recall the graph of the
+\texHelp{help1}{$\sin(x)$,} isn't it pretty? Try rolling over the
+word that is tagged with the `\texHelpIndicator{}' symbol.
+
+You will have to look at the source file to see what goes on here,
+suffice it to say that the command \cs{texHelp} was used to create
+the rollover, the symbol that appears is defined in the
+\textsf{aeb\_pro} package by \cs{texHelpIndicator}, this command can
+be re-defined to have a different symbol.
+
+\subsection{\texorpdfstring{\protect\cs{pdfHelp}}{\textbackslash pdfHelp} does not}
+
+There is another type of rollover, \cs{pdfHelp}. The command takes three arguments,
+the first one is the name of the button field that is enclose around the third argument,
+the second argument is the help text. The help text is not part of the {\LaTeX} content
+of the document is is not compiled by the {\TeX} compiler, so it should be text. For example,
+can you remember the inventor of \pdfHelp{knuth}{Donald Knuth}{\TeX?}
+
+As with \cs{texHelp}, the symbol that tags the word as a help word
+is defined in \textsf{aeb\_pro.dtx} by the command
+\cs{pdf\-Help\-Indicator}. This command can be re-defined as needed.
+
+\section{Layers and Animation}
+
+Let's see if we can conjure up a little animation, shall we?
+
+\noindent\begin{minipage}{.65\linewidth}\centering
+\DeclareAnime{sinegraph}{10}{40}
+\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+\psset{llx =-12pt,lly=-12pt,urx =12pt,ury =12pt} % ,trigLabels=true,labelFontSize=\small
+\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){164pt}{70pt}
+ \psset{algebraic=true}%
+ \rput(4,1){$y=\sin(x)$}
+ \FPdiv{\myDelta}{\psPiTwo}{\nFrames}%
+ \def\xi{0}%
+ \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\thisframe}
+\end{psgraph*}
+\end{minipage}\hfill
+\begin{minipage}{.3\linewidth}%\centering
+\backAnimeBtn{24bp}{12bp}\kern1bp\clearAnimeBtn{24bp}{12bp}\kern1bp\forwardAnimeBtn{24bp}{12bp}
+\end{minipage}
+
+\newtopic It is possible to combine the techniques of
+\hyperref[nospace]{section~\ref*{nospace}} with those of animation, to create
+an anime that pops up. We leave this as an exercise for the reader, that's you.
+
+\NewPage
+
+\newtopic\xBld{dialog1}This page illustrates how you can create a series of
+steps, all controlled by a button. \eBld\xBld{dialog2}Let us begin by
+drawing the $\sin(x)$ curve. \eBld\xBld{dialog3}Do you think that I can do it?
+\eBld\xBld{dialog4} Well, here goes!\eBld
+
+\begin{center}
+\DeclareAnime{graph}{10}{40}
+\def\frame{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+\psset{llx=-12pt, lly=-12pt,urx =12pt,ury =12pt,xAxisLabel=$x$,yAxisLabel=$y$}
+\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){.5\linewidth}{.25\linewidth}
+ \psset{algebraic=true}%
+ \rput(4,1){$y=\sin(x)$}%
+ \FPdiv{\myDelta}{\psPiTwo}{\nFrames}%
+ \def\xi{0}%
+ \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\frame}
+ \xBld{step1}\psplot[linecolor=blue]{0}{Pi 2 div}{sin(x)}\eBld
+ \xBld{step2}\psplot[linecolor=webgreen]{Pi 2 div}{Pi}{sin(x)}\eBld
+ \xBld{step3}\psplot[linecolor=Plum]{Pi}{3 Pi mul 2 div}{sin(x)}\eBld
+ \xBld{step4}\psplot[linecolor=yellow]{3 Pi mul 2 div}{TwoPi}{sin(x)}\eBld
+\end{psgraph*}
+\end{center}
+
+\newtopic\xBld{step1}Notice that the function increases from $[\,0, \pi/2\,]$
+and attains it maximum value of $1$ at $ x = \pi/2$. \eBld\xBld{step2}The
+sine function then decreases to zero over the interval $[\,\pi/2, \pi\,]$.
+\eBld \xBld{step3}Continuing its sinusoidal path it decreases on the
+interval $[\,\pi,3\pi/2\,]$ down to its minimum value of $-1$ at $ x =
+3\pi/2$. \eBld \xBld{step4}Finally, it increases up to $0$ over the
+interval $[\,3\pi/2, 2\pi\,]$ completing the first cycle of its
+graph.\eBld
+
+\newtopic\xBld{wrapup}Try \texttt{shift-click} too. dps\eBld
+
+\begin{defineJS}[\catcode`*=0]{\stepwise}
+if ( typeof stepcounter == "undefined" ) stepcounter = 0;
+if ( !event.shift ) stepcounter++;
+if ( stepcounter > 10 ) stepcounter = 11;
+if ( stepcounter < 1 ) stepcounter = 0;
+switch (stepcounter)
+{
+ case 1: toggleSetThisLayer("dialog1", !event.shift); break;
+ case 2: toggleSetThisLayer("dialog2", !event.shift); break;
+ case 3: toggleSetThisLayer("dialog3", !event.shift); break;
+ case 4: toggleSetThisLayer("dialog4", !event.shift); break;
+ case 5: if (event.shift) aebAnimeLayersBackward(*animSpeed,*nFrames,"*animBaseName");
+ else aebAnimeLayersForward(*animSpeed,*nFrames,"*animBaseName");
+ break;
+ case 6: toggleSetThisLayer("step1", !event.shift); break;
+ case 7: toggleSetThisLayer("step2", !event.shift); break;
+ case 8: toggleSetThisLayer("step3", !event.shift); break;
+ case 9: toggleSetThisLayer("step4", !event.shift); break;
+ case 10: toggleSetThisLayer("wrapup",!event.shift); break;
+ default:
+}
+if ( event.shift ) stepcounter--;
+\end{defineJS}
+
+\medskip
+\begin{center}
+ \pushButton[\CA{Step Through}\TU{Step Through}\A{\JS{\stepwise}}]%
+ {stepthru}{}{12bp}
+\end{center}
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf
new file mode 100644
index 00000000..012a8932
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex
new file mode 100644
index 00000000..f155d89b
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex5.tex
@@ -0,0 +1,469 @@
+% Acrobat required
+% use useacrobat option with pdftex and xetex if you have acrobat
+% ----------------
+%
+% Instructions for compiling this file
+% 1. Compile this file once, but do not make into a PDF yet.
+% 2. Open the two files children/target1.tex and children/target2.tex
+% and compile these two files several times to resolve the cross-
+% references. Now, make into PDFs.
+% 3. Return to this file and compile again to input cross-reference info
+% and make into a PDF via distiller.
+%
+\documentclass{article}
+\usepackage{xr-hyper}
+\usepackage[%
+% driver=dvips,
+ gopro,
+ web={designiv,usesf,tight},
+ attachsource={tex,dvi},
+ attachments={%
+ children/target1.pdf,% % AeB Attachment #1
+ children/target2.pdf,% % AeB Attachment #2
+ ../extras/aest.xls % AeB Attachment #3
+ },
+ linktoattachments,
+ eforms
+]{aeb_pro}
+
+\externaldocument[target1-]{children/target1}
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Linking to Attachments,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=http://www.acrotex.net,
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\par\vskip6pt\noindent}
+\def\aftersverbskip{\noindent}
+\newenvironment{sverbatim}
+{\par\small\verbatim}
+{\endverbatim\par\aftergroup\aftersverbskip}
+\newenvironment{ssverbatim}
+{\par\footnotesize\verbatim}
+{\endverbatim\par\aftergroup\aftersverbskip}
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+%\autolabelNum{AeST}{3}
+%\autolabelNum{cooltarget}{3}
+%\autolabelNum{attach1}{1}
+%\autolabelNum{attach2}{2}
+%
+% \autolabelNum[mytarget]{1}
+% \autolabelNum*[mytarget]{1}{New Title}
+% \autolabelNum*[AeST]{3}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022 beep}
+% \labelName{cooltarget}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\begin{attachmentNames}
+\autolabelNum{1}
+%\autolabelNum{2}
+\autolabelNum*{2}{target2.pdf Attachment File}
+\autolabelNum*[AeST]{3}{AeBST Components}
+\labelName{cooltarget}{My (cool) $|x^3|$ ~ % '<attachment>'}
+\end{attachmentNames}
+% The use of \importDataObject should occur after the \texttt{attachmentNames} environment.
+%\def\u{\string\\u}%
+\begin{docassembly}
+var retn=\importDataObject({cName: "cooltarget",cDIPath: "aebpro_ex2.pdf"});
+if ( (app.viewerVersion>7) && retn )
+ this.getDataObject("cooltarget").description="\aref(cooltarget)";
+\end{docassembly}
+
+\def\preseti{bordercolor={0 0 1},highlight=outline,border=visible,linestyle=dashed,open=new}
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{Introduction}
+
+As we saw briefly in \texttt{aebpro\_ex3.tex}, it is possible to
+attach a document using the \texttt{docassembly} environment, as
+illustrated below,
+\begin{sverbatim}
+ \begin{docassembly}
+ \importDataObject({
+ cName: "cooltarget",
+ cDIPath: "aebpro_ex2.pdf"
+ });
+ \end{docassembly}
+\end{sverbatim}
+In the above, we use \cs{importDataObject}, set the path to be
+\texttt{cDIPath: "aebpro\_ex2.pdf"} (this can be absolute or
+relative), and give the attachment a name with \texttt{cName:}
+\texttt{"\cs{aref(cooltarget)}"}. The special command \cs{aref}, is
+used to reference the assigned name has as its argument the label
+name, \emph{delimited by parentheses}.
+
+The parameter \texttt{cName} in the above \texttt{docassembly} code
+is of particular importance. The value of \texttt{cName} is used in
+the names tree for embedded files. It is used to reference the
+attachment in the link code. After the file is imported, the value
+of \texttt{cName} is converted by Acrobat to Unicode. When
+referencing it, you must know the unicode of the value of the
+\texttt{cName} key.
+
+First, we insert into the preamble, the \texttt{linktoattachments} option.
+This brings in all the code and commands to be discussed in this document.
+(See the preamble of this file.)
+
+\section{Naming Attachments}
+
+For documents attached by the \texttt{attachments} option, AeB Pro
+assigns them ``names,'' which appear in the attachments tab of
+Acrobat/Reader as the Description.\footnote{The Description is
+important as it is the way embedded files are referenced
+internally.} The names assigned are \texttt{AeB Attachment 1},
+\texttt{AeB Attachment 2}, \texttt{AeB Attachment 3}, and so on.
+If you embedded the file using the \texttt{docassem\-bly} environment
+and the \cs{importDataObject} method, then you are free to assign a
+name of your preference. However it is done, the names must be
+converted to unicode on the {\TeX} side of things to set up the
+links, and there must be a \LaTeX-like way of referencing this
+unicode name, hence the development of the \texttt{attachmentNames}
+environment and the two commands \cs{autolabelNum} and
+\cs{labelName}.\footnote{It is important to note that
+these are not needed unless you are linking to the embedded
+files.}
+
+We describe these by example. In the preamble you will find
+\begin{sverbatim}
+ \begin{attachmentNames}
+ \autolabelNum{1}
+ \autolabelNum*{2}{target2.pdf Attachment File}
+ \autolabelNum*[AeST]{3}{AeBST Components}
+ \labelName{cooltarget}{My (cool) $|x^3|$ ~ % '<attachment>'}
+ \end{attachmentNames}
+\end{sverbatim}
+\textbf{\color{red}Note:} The \texttt{attachmentNames} environment
+and the commands \cs{autolabel\-Num} and \cs{labelName} should be
+used only in the parent document; for child documents they are not
+necessary.
+
+\begin{description}
+
+\item[\cs{autolabelNum}:] For PDFs (or other files) embedded using the
+\texttt{attachments} option, use the \cs{autolabelNum} command. The
+syntax is
+\begin{verbatim}
+ \autolabelNum[<label>]{<num>}
+\end{verbatim}
+The first optional argument is the label to be used to refer to this
+embedded file; the default is \texttt{attach<num>}. The second
+argument is the second is a number, 1, 2, 3.., which
+corresponds to the order the file is listed in the value of the
+\texttt{attachments} key.\footnote{To minimize the number of changes
+to the document, if you later add an attachment, add it to the end
+of the list so the earlier declarations are still valid.}
+
+\item[\cs{autolabelNum*}:] There is a star form of \cs{autolabelNum}, which
+allows to to change the description of the attachment.
+\begin{verbatim}
+ \autolabelNum*[<label>]{<num>}{<description>}
+\end{verbatim}
+By default, the first attachment has label name \texttt{attach<num>}
+and has a description of \texttt{AeB Attachment <num>}, This command
+allows you not only to change the label, but to change the description
+of the attachment as well.
+
+\item[\cs{labelName}:] For files that are embedded in using
+\cs{importDataObject}, use the command \cs{labelName} for assigning
+the name, and setting up the correspondence between the name and the
+label.
+\begin{verbatim}
+ \labelName{<label>}{<description>}
+\end{verbatim}
+The first argument is the label to be used to reference this
+embedded file. The second parameter you can assign an arbitrary
+name.
+\end{description}
+
+\newtopic The \texttt{<description>} parameter used in
+\cs{autolabelNum*} and \cs{labelName} can be an arbitrary string
+assigned to the description of this embedded file, the characters
+can be most anything in the Basic Latin unicode set, 0021--007E,
+with the exception of left and right braces \verb!{}!, backslash
+\verb!\! and double quotes \texttt{"}.
+
+You can also enter the unicode character codes directly by typing
+\cs{uXXXX} in the \texttt{<description>}, where \texttt{XXXX} are four hex digits. (Did I say not
+to use `\verb!\!'?) This is very useful when using the trouble making
+characters such as backslash, left and right braces, and double
+quotes, or using unicode above 00FF (Basic Latin + Latin-1). To illustrate, suppose we wish
+the description of \texttt{cooltarget} to be
+\begin{sverbatim}
+ "$|e^{\ln(17)}|$"
+\end{sverbatim}
+All the bad characters!
+\begin{sverbatim}
+\labelName{cooltarget}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\end{sverbatim}
+From the unicode character tables we see that
+\begin{itemize}
+\item left brace \cs{u007B}
+\item right brace \cs{u007D}
+\item backslash \cs{u005C}
+\item double quotes \cs{u0022}
+\end{itemize}
+See the example file \texttt{aebpro\_ex6.tex} for additional examples of the use
+of \cs{uXXXX} character codes.
+
+There are several ``helper'' commands as well: \cs{EURO}, \cs{DQUOTE}, \cs{BSLASH},
+\cs{LBRACE} and \cs{RBRACE}. When the \cs{u} is detected, an \cs{expandafter} is executed.
+This allows a command to appear immediately after the \cs{u}, things work out well if the
+command expands to four hex numbers, as it should. Thus, instead of typing
+\cs{u0022} you can type \verb!\u\DQUOTE!.
+
+\section{Linking to Embedded Files}\label{embed}
+
+This package defines two commands, \cs{ahyperref} and
+\cs{ahyperlink}, to create links between parent and child and child
+and child. The default behavior of \cs{ahyperref} (and
+\cs{ahyperlink}) is to set up a link from parent to child.
+\cs{ahyperlink} and \cs{ahyperref} are identical in all respects
+except for how it interprets the destination. (Refer to
+\Nameref{jump} for details.)
+
+\newtopic The commands each take three arguments, the
+first one of which is optional
+\begin{verbatim}
+ \ahyperref[<options>]{<target_label>}{<text>}
+ \ahyperlink[<options>]{<target_label>}{<text>}
+\end{verbatim}
+\noindent In the simplest case, we jump from the parent to the first page of a
+child file, like so \ahyperref{attach1}{target1.pdf}, given by\dots
+\begin{verbatim}
+ \ahyperref{attach1}{target1.pdf}
+\end{verbatim}
+This is the same as \ahyperref[goto=p2c]{attach1}{target1.pdf}, the code is\dots
+\begin{verbatim}
+ \ahyperref[goto=p2c]{attach1}{target1.pdf}
+\end{verbatim}
+The \texttt{goto} key is one of the key-value pairs taken by the
+optional argument. Permissible values for the \texttt{goto} key are
+\texttt{p2c} (the default), \texttt{c2p} (child to parent) and
+\texttt{c2c} (child to child).
+
+\newtopic
+\fcolorbox{blue}{webyellow}{\parbox{\linewidth-2\fboxsep-2\fboxrule}{\textbf{\textcolor{red}{TIP:}}
+After jumping to an attachment you can return to the point of origin
+(in the parent document) by selecting the menu item \texttt{View >
+Page Navigation > Previous View} or by using the keyboard shortcut of
+\texttt{Alt+Left Arrow}}}
+
+\newtopic Similarly, link to the other embedded files in this parent:
+\ahyperref{attach2}{target2.pdf} and \ahyperref{cooltarget}{aebpro\_ex2.pdf}
+
+In all cases above, the \cs{ahyperlink} command could have been used, because no
+\emph{named} destination was specified, without a named destination, the these links jump to page~1.
+
+
+\subsection{Jumping to a target}\label{jump}
+
+As you may know, {\LaTeX}, more exactly, \texttt{hyperref} has two
+methods of jumping to a target in another document, jump to a label
+(defined by \cs{label}) and jump to a target set by
+\cs{hypertarget}. Each of these is demonstrated for embedded files
+in the next two sections.
+
+\subsubsection{Jumping to a \texorpdfstring{\protect\cs{hypertarget}}{\textbackslash hypertarget}
+with \texorpdfstring{\protect\cs{ahyperlink}}{\textbackslash ahyperlink}}
+
+There is a destination defined by the hyperref command
+\texttt{hypertarget} in \texttt{target1.pdf} and we shall jump to
+it. Here we go! \ahyperlink[dest=mytarget]{attach1}{Jump!}. The
+code for this jump is
+\begin{verbatim}
+ \ahyperlink[dest=mytarget]{attach1}{Jump!}
+\end{verbatim}
+\noindent Note that \texttt{dest=mytarget}, where ``\texttt{mytarget}'' is the
+label assigned by the \cs{hypertarget} command in \texttt{target1.pdf}.
+
+\penalty-5000
+
+\subsubsection{Jumping to a \texorpdfstring{\protect\cs{label}}{\textbackslash label}
+with \texorpdfstring{\protect\cs{ahyperref}}{\textbackslash ahyperref}}
+
+{\LaTeX} has a cross-referencing system, to jump to a target set by
+the \cs{label} command we use the \textsf{xr-hyper} package that
+comes with \texttt{hyperref}. Using label referencing, we can jump to
+\ahyperref[dest=target1-s:intro]{attach1}{Section~\ref*{target1-s:intro}}
+on page~\pageref*{target1-s:intro} of the embedded file
+\texttt{target1.pdf}. Swave! The code for the jump is
+\begin{verbatim}
+ \ahyperref[dest=target1-s:intro]{attach1}
+ {Section~\ref*{target1-s:intro}}
+\end{verbatim}
+\noindent we set \verb!dest=target1-s:intro!
+
+The label in \texttt{target1.pdf} is \texttt{s:intro}, in the preamble of
+this document we have
+\begin{verbatim}
+ \externaldocument[target1-]{children/target1}
+\end{verbatim}
+\noindent which causes \textsf{xr-hyper} to append a prefix to the label (this
+avoids the possibility of duplication of labels, over multiple
+embedded files).
+
+\goodbreak
+\subsection{Optional Args of \texorpdfstring{\protect\cs{ahyperref}}{\textbackslash ahyperref}
+and \texorpdfstring{\protect\cs{ahyperlink}}{\textbackslash ahpyerlink}}
+
+The \cs{ahyperref} commands has a large number of optional arguments
+enabling you to create any link that the user interface of Acrobat
+Pro can create, and more. These are documented in
+\textsf{aeb\_pro.dtx} and well as the main documentation. Suffice it
+to have an example or two.
+
+By using the optional parameters, you can create any link the UI can create:
+\ahyperref[dest=target1-s:intro,bordercolor={0 1 0},highlight=outline,%
+border=visible,linestyle=dashed]{attach1}{Jump!}
+This link is given by\dots
+\begin{verbatim}
+ \ahyperref[%
+ dest=target1-s:intro,
+ bordercolor={0 1 0},
+ highlight=outline,
+ border=visible,
+ linestyle=dashed
+ ]{attach1}{Jump!}
+\end{verbatim}
+\noindent Now what do you think of that?
+
+\newtopic The argument list can be quite long, as shown above. If you have some favorite settings, you can
+save them in a macro, like so,
+\begin{sverbatim}
+ \def\preseti{bordercolor={0 0 1},highlight=outline,open=new,%
+ border=visible,linestyle=dashed}
+\end{sverbatim}
+\noindent Then, I can say, more simply, \ahyperref[dest=target1-s:intro,preset=\preseti]{attach1}{Jump!}
+This link is given by\dots
+\begin{sverbatim}
+\ahyperref[dest=target1-s:intro,preset=\preseti]{attach1}{Jump!}
+\end{sverbatim}
+\noindent I've defined a \texttt{preset} key so you can predefine some common settings you like to use,
+the enter these settings through preset key, like so \verb!preset=\preseti!. Cool.
+
+Note that in the second example, I've included \texttt{open=new}, this causes the embedded file to open
+in a new window. For Acrobat/Reader operating in MDI, a new child window will open; for SDI (version 8),
+and if the user preferences allows it, it will open in its Acrobat/Adobe Reader window.
+
+\newtopic
+\fcolorbox{blue}{webyellow}{\parbox{\linewidth-2\fboxsep-2\fboxrule}{\textbf{\textcolor{red}{TIP:}}
+After jumping to an attachment that opens a new window, just close the new window to
+return the parent document. \texttt{:-\textrm{\{})}}}
+
+\section{Opening and Saving with \texorpdfstring{\protect\cs{ahyperextract}}
+ {\textbackslash ahyperextract}}
+
+In addition to embedding and linking a PDF, you can embed most any
+file and programmatically (or through the UI) open and/or save it to
+the local file system.
+
+To attach a file to the parent PDF, you can use the
+\texttt{attachsource} or the \texttt{attachments} options of AeB
+Pro, or you can embed your own using the \texttt{importDataObject}
+method, as described earlier in this file.
+
+If an embedded file is a PDF, then you can link to it, using
+\cs{ahyperref} or \cs{ahyperlink}; we can jump to an embedded PDF
+and jump back. If the embedded file is not a PDF, then jumping to it
+makes no sense; the best we can do is to open the file (using an
+application to display the file) and/or save it to the local hard
+drive.
+
+The AeB Pro package has the command \cs{ahyperextract} to extract
+the embedded file, and to save it to the local hard drive, with an
+option to start the associated application and to display the file.
+The syntax for \cs{ahyperextract} is the same as that of the other two commands:
+\begin{verbatim}
+ \ahyperextract[<options>]{<target_label>}{<text>}
+\end{verbatim}
+\noindent The \texttt{<options>} are the same as \cs{ahyperref}, the \texttt{<target\_label>} is the one associated
+with the attachment name, and the \texttt{<text>} is the link text.
+
+\newtopic In addition to the standard options of \cs{ahyperref}, \cs{ahyperextract} recognizes one additional key, \texttt{launch}.
+This key accepts three values: \texttt{save} (the default), \texttt{view} and \texttt{viewnosave}. The following is a
+partial verbatim listing of the descriptions given in the \textsl{JavaScript for Acrobat API Reference}, in the section
+describing \texttt{importDataObject} method of the Doc object:
+\begin{itemize}
+ \item \texttt{save}: The file will not be launched after it is saved. The user is prompted for a save path.
+ \item \texttt{view}: The file will be saved and then launched.
+ Launching will prompt the user with a security alert warning
+ if the file is not a PDF file. The user will be prompted for a
+ save path.
+ \item \texttt{viewnosave}: The file will be temporarily saved and
+ then launched. Launching will prompt the user with a security
+ alert warning if the file is not a PDF file. A temporary path
+ is used, and the user will not be prompted for a save path.
+ The temporary file that is created will be deleted by Acrobat
+ upon application shutdown.
+\end{itemize}
+
+\newtopic Here is a series of examples of usage:
+\begin{enumerate}
+
+\item \ahyperextract[launch=view]{cooltarget}{aebpro\_ex2.pdf}: Launch
+ and view this PDF. The code is
+\begin{verbatim}
+\ahyperextract[launch=view]{cooltarget}{aebpro\_ex2.pdf}
+\end{verbatim}
+When you extract (or open) PDF in this way, any links created
+by \cs{ahyperref} or \cs{ahyperlink} as the PDF being viewed is no longer an embedded file of the
+parent.
+
+\item View the \ahyperextract[launch=viewnosave]{tex}{aebpro\_ex5.tex}. The code is
+\begin{verbatim}
+\ahyperextract[launch=viewnosave]{tex}{aebpro\_ex5.tex}
+\end{verbatim}
+Note that for attachments brought in by the \texttt{attachsource} option,
+the label for that attachment is the file extension, in this case
+\texttt{tex}.
+
+\item \ahyperextract[launch=save]{AeST}{AeBST Component List}: This is an Excel spreadsheet which lists
+the components of the {Acro\negthinspace\TeX} eDucation System
+Tools. Here you are prompted to save; the spreadsheet will not be launched:
+\begin{verbatim}
+\ahyperextract[launch=save]{AeST}{AeBST Component List}
+\end{verbatim}
+\end{enumerate}
+
+\section{Final Assembly}
+
+To assemble your parent document with all the cross-references to
+its embedded children, perform the following steps.
+\begin{enumerate}
+
+\item {\LaTeX} the parent document so that the auxiliary file
+ \cs{jobname\_xref.cut}. This file is read by the children when they
+ are {\LaTeX}ed.
+
+\item {\LaTeX} the child documents. The child documents will write
+ their own auxiliary file and read \cs{jobname\_xref.cut}. (Multiple
+ compiles may be necessary to bring the auxiliary document up to
+ date.)
+
+\item Make PDF for the child documents.
+
+\item Now {\LaTeX} the parent again, which will read in the
+ auxiliary files of the children, if needed. Distill and \textsl{Le
+ Voil\`{a}}, you have it!
+
+\item At this point you can clean up all auxiliary files.
+
+\end{enumerate}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf
new file mode 100644
index 00000000..6ad1f873
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex
new file mode 100644
index 00000000..66cbd350
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex
@@ -0,0 +1,150 @@
+% Acrobat required
+% use useacrobat option with pdftex and xetex if you have acrobat
+\documentclass{article}
+\usepackage[%
+ gopro,
+ web={designiv,usesf,tight},
+ attachsource={tex},
+ attachments={%
+ children/theeuro.pdf, % AeB Attachment 1
+ children/explog.pdf, % AeB Attachment 2
+ ../extras/aest.xls, % AeB Attachment 3
+ ../extras/ease.pdf % AeB Attachment 4
+ },
+ linktoattachments,
+ eforms
+]{aeb_pro}
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{:} Creating a Package of Files,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=http://www.acrotex.net,
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Version}
+\version{1.0}\nocopyright
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\par\vskip6pt\noindent}
+\def\aftersverbskip{\noindent}
+\newenvironment{sverbatim}
+{\par\small\verbatim}
+{\endverbatim\par\aftergroup\aftersverbskip}
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+\begin{attachmentNames}
+\autolabelNum*{1}{European Currency \u\EURO}
+\autolabelNum*{2}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+%\autolabelNum*{2}{\u\DQUOTE$|e^\u\LBRACE\u005Cln(17)\u\RBRACE|$\u\DQUOTE}
+\autolabelNum*[AeST]{3}{The AeBST Components}
+\autolabelNum*[atease]{4}{The @EASE Control Panel}
+\end{attachmentNames}
+
+\makePDFPackage{viewmode=tile} % tile, details, hidden
+% Try compiling with this option
+%\makePDFPackage{viewmode=tile,initview=attach1}
+
+% choose view > Portfolio > Cover Sheet to recover the cover sheet
+
+\optionalPageMatter
+{%
+ \par\bigskip
+ \begin{minipage}{.67\linewidth}
+ Link testing:
+ \begin{itemize}
+ \item See the \ahyperlink{attach1}{Euro}
+ \item See my \ahyperlink{attach2}{formerly favorite number}
+ \item See the \ahyperlink{atease}{@EASE Control Panel}
+ \item View the \ahyperextract[launch=view]{AeST}{AeST Components}
+ \end{itemize}
+ \end{minipage}
+}
+
+\begin{document}
+
+\maketitle
+
+\section*{The \protect\cs{makePDFPackage} command}
+
+The concept of a PDF Package is introduced in Acrobat~8.\footnote{The PDF Package
+has had several name changes, originally known as a Collection, a Portable Collection,
+a PDF Package, and finally a (PDF) Portfolio.} On first
+blush, it is nothing more than a fancy user interface to display
+embedded files; however, it is also used in the new email form data
+workflow. Using the new \textsf{Forms} menu, data contained in FDF
+files can be packaged, and summary data can be displayed in the user
+interface. Consequently, the way forms uses it, a PDF package can be
+used as a simple database.
+
+Unfortunately, at this time, the form feature/database feature of
+PDF Packages is inaccessible to the JavaScript API and AeB Pro.
+What AeB Pro provides is packaging of the embedded files with the
+nice UI.
+
+\newtopic The procedure is as follows: Embed all files files in the
+parent as described in \texttt{aebpro\_ex5.pdf}, and use the command
+\cs{makePDFPackage} to package the attachments. The syntax is
+\begin{verbatim}
+ \makePDFPackage{<key-values>}
+\end{verbatim}
+There are only two sets of key-value pairs
+\begin{description}
+ \item[\texttt{initview=<label>}:] Specifying a value for the
+ initview key determines which file will be used as the initial
+ view when the document is opened. If
+ \texttt{initview=attach2}, for this document, then the file
+ corresponding to the label \texttt{attach2}, as set up in the
+ \texttt{attachmentNames} environment is the initial view.
+ Listing \texttt{initview} with no value (or if
+ \texttt{initview} is not listed at all) causes the parent
+ document -- also called the \emph{cover sheet} -- to be
+ initially shown.
+
+ \item[\texttt{viewmode=details|tile|hidden}:] The
+ \texttt{viewmode} determines which of the three user
+ interfaces is to be used initially. In terms of the UI
+ terminology: $\texttt{details} = \textsf{View top}$;
+ $\texttt{tile} = \textsf{View left}$; and $\texttt{hidden} =
+ \textsf{Minimize view}$. The default is \texttt{details}.
+\end{description}
+If you use this command with an empty argument list,
+\verb!\makePDFPackage{}!, you create a PDF package with the
+defaults.
+
+When navigating a PDF Package (Portfolio) the cover sheet can be viewed by
+accessed through the menu item \texttt{View > Portfolio > Cover Sheet}.
+
+\newtopic\textbf{\textcolor{red}{TIP:}} Use the \cs{autolabelNum*}
+command to assign a more informative description of the attachments,
+like so.
+\begin{sverbatim}
+ \autolabelNum*{1}{European Currency \u20AC}
+ \autolabelNum*{2}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+ \autolabelNum*[AeST]{3}{The AeBST Components}
+ \autolabelNum*[atease]{4}{The @EASE Control Panel}
+\end{sverbatim}
+
+Note that there is an alternative that is commented out to the assignment of the
+second attachment, it is
+\begin{sverbatim}
+ \autolabelNum*
+ {2}{\u\DQUOTE$|e^\u\LBRACE\u005Cln(17)\u\RBRACE|$\u\DQUOTE}
+\end{sverbatim}
+One can use the ``helper'' commands, as described in \texttt{aeb\_pro.tex}; however,
+there is a slight problem. Within the \texttt{<description>} argument, we obey spaces, so
+if we were to say \verb!\u\LBRACE\u\BSLASH ln(17)\u\RBRACE! there would be a space
+after the backslash. This is the reason we used \cs{u005C}.
+
+\newtopic That's it! Hope you enjoy this feature and find a good
+use for it.
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.pdf
new file mode 100644
index 00000000..cccf3cbf
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.tex
new file mode 100644
index 00000000..655c1883
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex7.tex
@@ -0,0 +1,161 @@
+% use useacrobat option with pdftex and xetex if you have acrobat
+% use nopro if you don't have acrobat (the attachsource silently fails)
+\documentclass{article}
+\usepackage[
+ gopro,
+ web={designv,nodirectory,usesf},
+ eforms, % only needed for \toggleAttachmentsPanel
+ attachsource={tex}
+]{aeb_pro}
+\usepackage{array}
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+
+\begin{comment}
+ The layoutmag key has values:
+ navitab=UseNone,UseOutlines,UseThumbs,UseOC,UseAttachments
+ pagelayout=SinglePage,OneColumn,TwoColumnLeft,TwoColumnRight,TwoPageLeft,TwoPageRight
+ mag=ActualSize,FitPage,FitWidth,FitHeight,FitVisible, or positive number (e.g., mag = 50)
+ openatpage = page number (base 1)
+
+ The windowoptions key has values:
+ fit,center,showtitle,fullscreen
+
+ The uioptions key has values:
+ hidetoolbar,hidemenubar,hidewindowui
+\end{comment}
+
+\DeclareInitView
+{%
+ layoutmag={openatpage=2,mag=ActualSize,pagelayout=TwoPageRight},
+ windowoptions={fit,center,showtitle},
+ uioptions={hidetoolbar,hidemenubar,hidewindowui}
+}
+\DeclareDocInfo
+{%
+ title=AcroTeX Fun with Initial View,
+ university=Acro\negthinspace\TeX.Net,
+ author=D. P. Story,
+ email=dpstory@acrotex.net,
+ subject=Testing total control,
+ talksite=\url{www.acrotex.net},
+ version=1.0,
+ keywords={Initial View tab, Document Properties}
+}
+\nocopyright
+
+\optionalPageMatter
+{%
+ \par\bigskip
+ \begin{center}
+ \toggleAttachmentsPanel{red}{View the attachment}
+ \end{center}
+}
+
+
+
+\begin{document}
+
+\maketitle
+
+\noindent The \cs{DeclareInitView} command is a companion to
+\cs{DeclareDocInfo}, each of these fills a tab of the
+\textsf{Document Properties} dialog box.
+
+\begin{verbatim}
+\DeclareInitView
+{%
+ layoutmag={openatpage=2,mag=ActualSize,pagelayout=TwoPageRight},
+ windowoptions={fit,center,showtitle},
+ uioptions={hidetoolbar,hidemenubar,hidewindowui}
+}
+\DeclareDocInfo
+{%
+ title=AcroTeX Fun with Initial View,
+ university=Acro\negthinspace\TeX.Net,
+ author=D. P. Story,
+ email=dpstory@acrotex.net,
+ subject=Testing total control,
+ talksite=\url{www.acrotex.net},
+ version=1.0,
+ keywords={Initial View tab, Document Properties}
+}
+\end{verbatim}
+Use this document to experiment with the various
+properties of set by \cs{DeclareInitView}.
+
+\newpage
+
+\begin{itemize}
+
+ \item \texttt{layoutmag}: This key sets the initial page layout and magnification
+ of the document. The values of this key are themselves key-values:
+
+ \begin{small}\setlength{\extrarowheight}{3pt}
+ \begin{tabular}{|>{\ttfamily}l>{\raggedright}p{1.85in}p{2.15in}<{\raggedright}|}\hline
+ \multicolumn{1}{|l}{Key} &\multicolumn{1}{l}{Value(s)} & Description \\\hline
+ navitab & \texttt{UseNone}, \texttt{UseOutlines}, \texttt{UseThumbs},
+ \texttt{UseOC}, \texttt{UseAttachments}
+ & The UI for these are Page Only, Bookmarks Panel
+ and Page, Pages Panel and Page, Layers Panel and
+ Page, Attachments Panel and Page, respectively. The
+ default is \texttt{UseNone}\\
+ pagelayout & \texttt{SinglePage}, \texttt{OneColumn}, \texttt{TwoPageLeft},
+ \texttt{TwoColumnLeft}, \texttt{TwoPageRight}, \texttt{TwoColumnRight}
+ & The UI for these are Single Page, Single Page
+ Continuous, Two-Up (Facing), Two-Up Continuous
+ (Facing), Two-Up (Cover Page), Two-Up Continuous
+ (Cover Page), respectively. The default is user's
+ preferences.\\
+ mag & \texttt{ActualSize}, \texttt{FitPage}, \texttt{FitWidth},
+ \texttt{FitHeight}, \texttt{FitVisible}, or \texttt{<positive number>}
+ & The UI for these are Actual Size, Fit Page, Fit
+ Width, Fit Height, Fit Visible, respectively. If a
+ positive number is provided, this is interpreted as
+ a magnification percentage. The default is to use
+ user's preferences. \\
+ openatpage & \texttt{<positive number>}
+ & The page number (base 1) to open the document at. Default is page 1.\\\hline
+ \end{tabular}
+ \end{small}%
+
+\newpage
+
+ \item \texttt{windowoptions}: The Window Options region of the
+ Initial View tab consists of a series of check boxes, which when
+ checked modifies the initial state of the document window. These are
+ not really Boolean keys. If the key is present, the
+ corresponding box in the UI will be checked, otherwise, the box
+ remains cleared.
+
+ \begin{tabular}{|>{\ttfamily}lp{2in}|}\hline
+ Key & Description \\\hline
+ fit & Resize window to initial page\\
+ center & Center window on screen \\
+ fullscreen & Open in Full Screen mode\\
+ showtitle & Show document title in the title bar\\\hline
+ \end{tabular}
+
+ Note that you can open the document in Full Screen mode using the
+ \texttt{fullscreen} key above, or by using the \texttt{fullscreen} key
+ of the \cs{setDefaultFS}. Either will work.
+
+\newpage
+
+ \item \texttt{uioptions}: The User Interface Options region of
+ the Initial View tab consists of a series of check boxes, which
+ when checked hides a UI control. These are not really Boolean
+ keys. If the key is present, the corresponding box in the UI
+ will be checked, otherwise, the box remains cleared.
+
+ \begin{tabular}{|>{\ttfamily}lp{2in}|}\hline
+ Key & Description \\\hline
+ hidemenubar & Hide menu bar\\
+ hidetoolbar & Hide tool bars\\
+ hidewindowui & Hide window controls\\\hline
+ \end{tabular}
+
+\end{itemize}
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf
new file mode 100644
index 00000000..116c2a75
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex
new file mode 100644
index 00000000..3565c239
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex
@@ -0,0 +1,218 @@
+% Acrobat required
+% use useacrobat option with pdftex and xetex if you have acrobat
+\documentclass{article}
+\usepackage[
+ web={designv,forcolorpaper,pro,tight,usesf},
+ eforms,
+ linktoattachments,
+ attachsource={tex},
+ aebxmp,
+]{aeb_pro}
+
+\DeclareDocInfo
+{
+ university={Acro\negthinspace\TeX.Net},
+ title={A Note on Entering Unicode into a Form Field},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject={White Paper that discusses how to use AeB Pro to create form fields with unicode strings},
+ talksite={\url{www.acrotex.net}},
+ version={1.0},
+ keywords={AeB, AcroForm, unicode, AcroTeX, AcroTeX.Net},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net}
+}
+\nocopyright
+
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand{\cS}[2]{\textField[\Ff\FfReadOnly\textSize{10}\textFont{Arial}\uDV{FEFF#2}\uV{FEFF#2}\BC{}]{#1}{20bp}{11bp}}
+
+\parskip6pt
+\parindent0pt
+
+\labelName{coolDPS}{Donald \u20AC. Story}
+\labelName{myCoolIV}{\u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\labelName{Reset myCoolIV}{Reset the \u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022 field}
+
+\begin{document}
+
+\makeinlinetitle
+%\maketitle
+
+\section{The Basics}
+
+This document demonstrates how to use some of the new commands that
+come with AeB Pro, and some of the new keys in the eforms package
+that are designed to enter unicode hex encoding. In all cases, you must have
+the font that contains the glyph represented by the unicode hex.
+
+You need AeB Pro with the \texttt{linktoattachments} and the eforms package, see
+preamble above.
+
+The first step is to use the \cs{labelName} command to define your unicode string
+and associate a label with it. In the preamble, the following definition can be found.
+\begin{verbatim}
+\labelName{coolDPS}{Donald \u20AC. Story}
+\end{verbatim}
+The string can be a combination of characters from Basic Latin. As
+described in the AeB Pro manual, the string can be entered using
+keyboard keystrokes, or unicode notation \cs{uXXXX}, as above.
+Spaces are eaten up, so you must enter the unicode for a space
+\cs{u0020}. The command \cs{labelName} creates a macro that contains
+the pure encoding of the string. You can use \cs{aref} to access
+this encoding.
+The Unicode for the string \verb!Donald \u20AC. Story! is
+\begin{quote}
+\unicodeStr(coolDPS)
+\end{quote}
+The hex code is computed from a table of unicodes defined in AeB Pro, with allowances for enter
+a ``raw unicode'' using a \cs{u} escape sequence.
+
+Next, create an AcroForm field, a text field, in this example, and
+use the command \cs{unicodeStr} to reference the label enclosed
+in matching parentheses, like so
+\begin{verbatim}
+\textField[\Ff\FfReadOnly\textSize{10}\textFont{Arial}\W0
+ \uDV{\unicodeStr(coolDPS)}\uV{\unicodeStr(coolDPS)}\BC{}
+]{dps}{1in}{11bp}
+\end{verbatim}
+The result of the above code is
+
+\textField[\Ff\FfReadOnly\textSize{10}\textFont{Arial}\W0
+ \uDV{\unicodeStr(coolDPS)}\uV{\unicodeStr(coolDPS)}\BC{}
+]{dps}{1in}{11bp}
+
+
+The technique uses some of the code brought in by the the
+\texttt{linktoattachments} option of AeB Pro, and a new command,
+named \cs{unicodeStr}, designed to make it simple to enter unicode
+encoded strings into a form field.
+
+The above field is set to read only, the one below is not:
+
+\textField[\textSize{10}\textFont{Arial}
+ \uDV{\unicodeStr(myCoolIV)}\uV{\unicodeStr(myCoolIV)}
+]{myCoolIV}{1.5in}{12bp}\pushButton[\textSize{10}\textFont{Arial}\uCA{FEFF20AC}
+ \uAC{FEFF20AA}\uRC{FEFF00A5}\uTU{\unicodeStr(Reset myCoolIV)}\A{\JS{this.resetForm(["myCoolIV"])}}]{reset}{.5in}{12bp}
+
+Edit the box above, then click on the reset button. (Notice the
+tooltip for the reset button.)
+
+The eforms uses an optional first argument to change the appearance
+of a form field, add in action (usually JavaScript action) or to
+initialize the field value. In the above form fields, several
+unicode counterparts to the standard keys were used.
+\begin{itemize}
+ \item \cs{uV} and \cs{uDV} were used instead of \cs{V} and
+ \cs{DV} for giving the field a value and a default value,
+ respectively. The ``u'' versions are used when the string is in
+ unicode.
+
+ \item Button face text for the reset button was entered with
+ \cs{uCA}, \cs{uAC} and \cs{uRC} rather than \cs{CA}, \cs{AC} and
+ \cs{RC}. You can mix these two types together. The normal face
+ caption could be defined by \cs{uCA} and the others defined by
+ \cs{AC} and \cs{RC}.
+
+ \item The ``tooltip'', as used in the reset button, normally uses
+ the \cs{TU} key. When the string is meant to be unicode, use the
+ \cs{uTU} key.
+\end{itemize}
+
+\section{More Advanced}
+
+For combo boxes and list boxes, things are slightly more
+complicated. In the example below, we define a combo box. First,
+define the appearance values of the combo box (the string that is
+seen listed in the combo box).
+\begin{verbatim}
+\labelName{myEuro}{\u20AC (Euro)}
+\labelName{myYen}{\u00A5 (Yen)}
+\labelName{mySheqel}{\u20AA (Sheqel)}
+\labelName{myPound}{\u00A3 (Pound)}
+\labelName{myFranc}{\u20A3 (Franc)}
+\end{verbatim}
+
+\labelName{myEuro}{\u20AC (Euro)}
+\labelName{myYen}{\u00A5 (Yen)}
+\labelName{mySheqel}{\u20AA (Sheqel)}
+\labelName{myPound}{\u00A3 (Pound)}
+\labelName{myFranc}{\u20A3 (Franc)}
+
+Then we can define our combo box. According to the PDF file format,
+unicode strings should be enclosed in angle brackets
+\verb!<XXXXXXXXXXXX>!. In initializing the combo box below, the
+\cs{unicodeStr} command is used, but this time it is enclosed in
+angle brackets. (That is all the ``u'' versions of the keys do above
+is to automatically insert the angle brackets for you. Here we have
+to do it ourselves. (I suppose one could have a helper command, but
+you can handle it.)
+\begin{verbatim}
+\comboBox[\Ff\FfEdit\DV{1}\V{Euro}\textFont{Arial}
+\BG{0.98 0.92 0.73}\BC{0 .6 0}]{myCombo}{1in}{11bp}
+{*{[(Euro)<\unicodeStr(myEuro)>]%
+ [(Yen)<\unicodeStr(myYen)>]%
+ [(Sheqel)<\unicodeStr(mySheqel)>]%
+ [(Pound)<\unicodeStr(myPound)>]%
+ [(Franc)<\unicodeStr(myFranc)>]}
+}
+\end{verbatim}
+where the \texttt{*} in the position shown above is a token that signals the
+passing of a raw form of the value options of a combo or list box; it is
+defined in \textsf{eforms}.
+
+The result is
+\comboBox[\Ff\FfEdit\DV{1}\V{Euro}\textFont{Arial}
+\BG{0.98 0.92 0.73}\BC{0 .6 0}]{myCombo}{1in}{11bp}
+{*{[(Euro)<\unicodeStr(myEuro)>]%
+ [(Yen)<\unicodeStr(myYen)>]%
+ [(Sheqel)<\unicodeStr(mySheqel)>]%
+ [(Pound)<\unicodeStr(myPound)>]%
+ [(Franc)<\unicodeStr(myFranc)>]}
+}
+
+Very swave!
+
+\section{More Advanced Still}
+
+You can also enter raw hex yourself (without using \cs{labelName}) if you have the patience to do
+it, and in some cases, it is the easiest.
+
+For the purpose of the table below, the following definition was given in the preamble:
+
+\begin{verbatim}
+\newcommand{\cS}[2]{%
+ \textField[
+ \Ff\FfReadOnly\BC{}\textSize{10}\textFont{Arial}
+ \uDV{FEFF#2}\uV{FEFF#2}
+ ]{#1}{20bp}{11bp}}
+\end{verbatim}
+Again the \cs{uDV} and \cs{uV} keys are used but without
+\cs{unicodeStr}. In this case, we must do it ourselves. As was
+mentioned earlier, the ``u'' versions of these keys automatically
+insert the angle brackets. Inside the angle brackets is the raw
+unicode hex code. What wasn't mentioned before is that the first
+four hex digits must be \texttt{FEFF} to signal the beginning of
+unicode. Here, we insert these digits ourselves, followed, through
+parameter replacement, by the unicode hex digits of the characters
+desired. The result is the table you see below. (Again the field is
+readonly, the table is the one that appears in manual of usage for the
+JJ\_Game class (\texttt{jjg\_man.pdf}).
+
+\begin{center}
+\begin{tabular}{lll||lll}
+Description & Unicode & Symbol & Description & Unicode & Symbol \\\hline
+Dollar Sign & \cs{u0024}& \cS{Dollar}{0024} & Lira Sign & \cs{u20A4} &\cS{Lira}{20A4}\\
+Pound Sign & \cs{u00A3}& \cS{Pound}{00A3} & Peseta Sign & \cs{u20A7} &\cS{Pesta}{20A7}\\
+Currency Sign & \cs{u00A4}& \cS{Currency}{00A4} & New Sheqel Sign & \cs{u20AA} &\cS{Sheqel}{20AA}\\
+Yen Sign & \cs{u00A5}& \cS{Yen}{00A5} & Dong Sign & \cs{u20AB} & \cS{Dong}{20AB}\\
+French Franc & \cs{u20A3}& \cS{Franc}{20A3} & Euro Sign & \cs{u20AC} &\cS{Euro}{20AC}\\
+\end{tabular}
+\end{center}
+
+FYI: See \url{http://jrgraphix.net/research/unicode_blocks.php?block=0} for a display of unicode characters.
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.tex
new file mode 100644
index 00000000..40933cb4
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.tex
@@ -0,0 +1,44 @@
+\documentclass{article}
+\usepackage[web={tight,pro}]{aeb_pro}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\vskip\medskipamount\noindent}
+
+\parindent0pt
+\parskip6pt
+
+\begin{document}
+
+
+\section{Index of Example Files}
+
+The following is a list of the example files that illustrate and test various
+features of AeB Pro.
+
+\begin{enumerate}
+ \item \texttt{aebpro\_ex1.tex}: Illustrates the document and page
+ open/close actions and fullscreen support of AeB Pro.
+
+ \item \texttt{aebpro\_ex2.tex}: Demonstrates the features of the
+ \texttt{pro} option of the \textsf{web} package, including enhanced control
+ over the layout of section headings and the title page.
+
+ \item \texttt{aebpro\_ex3.tex}: Highlights the attachments options and the
+ doc assembly methods.
+
+ \item \texttt{aebpro\_ex4.tex}: A discussion of layers, rollovers and animation.
+
+ \item \texttt{aebpro\_ex5.tex}: Linking to attachments: The \cs{ahyperref}, \cs{ahyperlink}
+ and the \cs{ahyperextract} commands.
+
+ \item \texttt{aebpro\_ex6.tex}: Learn how to create a PDF Package out of your attachments.
+
+ \item \texttt{aebpro\_ex7.tex}: Explore the \cs{DeclareInitView} command, documentation included
+ in this file.
+
+ \item \texttt{aebpro\_ex8.tex}: Details of how to use unicode to set the initial value(s) of field, or as
+ captions on a button.
+\end{enumerate}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/explog.pdf b/texmf-dist/doc/latex/aeb-pro/examples/children/explog.pdf
new file mode 100644
index 00000000..7ecab32f
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/explog.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/target1.pdf b/texmf-dist/doc/latex/aeb-pro/examples/children/target1.pdf
new file mode 100644
index 00000000..d898ea16
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/target1.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/target1.tex b/texmf-dist/doc/latex/aeb-pro/examples/children/target1.tex
new file mode 100644
index 00000000..61b19a24
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/target1.tex
@@ -0,0 +1,72 @@
+\documentclass{article}
+\usepackage{xr-hyper}
+\usepackage[%
+% driver=dvips,
+ web={usesf,designiv},
+ linktoattachments,
+ childof={../aebpro_ex5},
+ eforms
+]{aeb_pro}
+
+\externaldocument[target2-]{target2}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
+\par\noindent}
+\def\aftersverbskip{\vskip-\parskip}
+\newenvironment{sverbatim}
+{\par\vskip-\parskip\parskip0pt\footnotesize\verbatim}
+{\endverbatim\par\aftergroup\aftersverbskip}
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+\pagestyle{empty}
+\parindent0pt
+\parskip6pt
+
+\begin{document}
+\makebox[0pt][l]{D.P. Story}\hfill\textbf{Attaching and Linking}\hfill\makebox[0pt][r]{\url{www.acrotex.net}}
+
+\bigskip
+
+Welcome to \texttt{target1.pdf}!
+
+Now, return to \ahyperref[goto=c2p]{}{parent document}
+
+Jump to the other attached file \ahyperref[goto=c2c]{attach2}{target2.pdf}
+
+\newpage
+
+\section{Instructions}\label{s:intro}
+
+Instructions to set up links from the child are straight forward. First, you insert a new option
+into the option list of \texttt{aeb\_pro}:
+\begin{sverbatim}
+\usepackage[%
+ ...
+ linktoattachments,
+ childof={../aebpro_ex5},
+]{aeb_pro}
+\end{sverbatim}
+In addition to the \texttt{linktoattachments}, we also include the
+\texttt{childof} key along with its value,
+\verb!childof={../aebpro_ex5}!, the path to the parent. Do not
+include any extension, just the base name will do fine, just fine.
+Second, well, you're done, there is no second.
+
+For child to child, \ahyperref[goto=c2c]{attach2}{target2.pdf}\\
+\verb!\ahyperref[goto=c2c]{attach2}{target2.pdf}!\\
+and for child to \ahyperref[goto=c2p]{}{parent document}\\
+\verb!\ahyperref[goto=c2p]{}{parent document}!
+
+Let's jump to a \verb!\label{target2-targetsection}!: \ahyperref[goto=c2c,dest=target2-targetsection]{attach2}
+{Section~\ref*{target2-targetsection}} in the document \texttt{target2.pdf} on page~\pageref*{target2-targetsection}.
+
+\newpage
+
+On this page we set a \hypertarget{mytarget}{\cs{hypertarget}}, and expect to jump here from the parent
+document.
+
+Now, let's jump to a target defined by \cs{hypertarget}: \ahyperlink[goto=c2c,dest=myhypertarget]{attach2}{Away!}
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/target2.pdf b/texmf-dist/doc/latex/aeb-pro/examples/children/target2.pdf
new file mode 100644
index 00000000..a37fdee4
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/target2.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/target2.tex b/texmf-dist/doc/latex/aeb-pro/examples/children/target2.tex
new file mode 100644
index 00000000..560baa50
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/target2.tex
@@ -0,0 +1,43 @@
+\documentclass{article}
+\usepackage{xr-hyper}
+\usepackage[%
+% driver=dvips,
+ web={usesf,designiv},
+ linktoattachments,
+ childof={../aebpro_ex5},
+ eforms
+]{aeb_pro}
+
+\externaldocument[attach1-]{target1}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\pagestyle{empty}
+\parindent0pt
+\parskip6pt
+
+\begin{document}
+\makebox[0pt][l]{D.P. Story}\hfill\textbf{Attaching and Linking}\hfill\makebox[0pt][r]{\url{www.acrotex.net}}
+
+\bigskip
+
+Welcome to \texttt{target2.pdf}.
+
+
+Now, return to \ahyperref[goto=c2p]{}{parent document}
+
+Jump to the other attached file \ahyperref[goto=c2c]{attach1}{target1.pdf}
+
+\newpage
+\section{Target Section}\label{targetsection}
+
+This is \texttt{target2.pdf}, you should have arrived here via a child-to-child link from
+\texttt{target1.pdf}. This is a test of \cs{ahyperref}. And \ahyperref[goto=c2c,dest=target1-s:intro]
+{attach1}{return!}
+
+\newpage
+One this page, we'll create a
+\hypertarget{myhypertarget}{hypertarget}. We'll test child to child
+jumping to a destination using \cs{ahyperlink}. And \ahyperlink[goto=c2c,dest=mytarget]{attach1}{return!}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/children/theeuro.pdf b/texmf-dist/doc/latex/aeb-pro/examples/children/theeuro.pdf
new file mode 100644
index 00000000..d66a5989
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/children/theeuro.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/extras.zip.txt b/texmf-dist/doc/latex/aeb-pro/examples/extras.zip.txt
new file mode 100644
index 00000000..1bdc0430
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/extras.zip.txt
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.pdf b/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.pdf
new file mode 100644
index 00000000..df933661
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.tex b/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.tex
new file mode 100644
index 00000000..1be13778
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/myCoverPage.tex
@@ -0,0 +1,16 @@
+\documentclass{article}
+\usepackage[web=designiv]{aeb_pro}
+
+\thispagestyle{empty}
+
+\begin{document}
+
+\null\vfill
+
+\begin{center}\sffamily\Huge\bfseries
+ If you see this, the test worked! AeB Pro is installed correctly.
+\end{center}
+
+\vfill
+
+\end{document} \ No newline at end of file
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf b/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf
new file mode 100644
index 00000000..07cfd9fe
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex b/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex
new file mode 100644
index 00000000..20a2216f
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex
@@ -0,0 +1,27 @@
+\documentclass{article}
+\usepackage[web=designiv,eforms]{aeb_pro}
+
+\begin{defineJS}{\insertSomePages}
+aebTrustedFunctions( this, aebInsertPages, {nPage: -1,cPath: "myCoverPage.pdf",nStart: 0} );
+\end{defineJS}
+
+\thispagestyle{empty}
+\parindent0pt\parskip6pt
+
+\begin{document}
+
+This is a file to test your AeB Pro installation.
+
+To test the \textsf{AeB Pro} installation, press this button: \pushButton[\CA{Test AeB
+Pro}\A{\JS{\insertSomePages}}]{btnTest}{}{11bp}
+
+Upon pressing the button, if you have installed the \texttt{aeb\_pro.js} file
+correctly, a cover page should be inserted as the first page. If the cover
+page does not appear, check the \textsf{Acrobat} console window
+\texttt{Ctrl+J} for an error message. If you did place \texttt{aeb\_pro.js}
+in the use JavaScript folder, and the file was not imported, then either you
+haven't closed and opened \textsf{Acrobat} after you installed \texttt{aeb\_pro.js},
+or the cover page document \texttt{myCoverPage.pdf} does not exist or has
+been moved from this folder
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/install_jsfiles.pdf b/texmf-dist/doc/latex/aeb-pro/install_jsfiles.pdf
new file mode 100644
index 00000000..d55c3e30
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/install_jsfiles.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aebxmp/README.md b/texmf-dist/doc/latex/aebxmp/README.md
new file mode 100644
index 00000000..668b93f0
--- /dev/null
+++ b/texmf-dist/doc/latex/aebxmp/README.md
@@ -0,0 +1,53 @@
+The aebxmp Package
+Author: D. P. Story
+Dated: 2017-02-17
+
+This is a package that requies the document author to have the full Acrobat
+application. In this case the dvips/Distiller, pdflatex, or xelatex workflow
+may be use to create the PDF.
+
+The package provides commands for populating certain additional metadata,
+beyond that already provided by hyperref.
+
+1. Commands to set the copyright status, notice, and url fields (as seen in the
+ Additional Metadata dialog accessed from the Document Properties >
+ Description tab.
+
+2. (v2.0) Added support for two other fields found in the Additional Metadata
+ dialog box: for populating Author Title and Description Writer.
+
+3. (v2.0) aebxmp also sets the value of Created as seen at the bottom of the
+ Additional Metadata dialog box
+
+4. (v2.0) aebxmp defines the \Authors command for setting multiple authors,
+ the authors are accessible separately using Doc.info.Authors.
+
+5. (v2.0) Finally, aebxmp defines a command for setting custom document
+ properties, this is seen on the Custom tab of the Document Properties
+ dialog box.
+
+6. (v2.2) Added a \Keywords command that takes a comma-delimited list
+ of keywords, and creates an array of keywords. These keywords can be
+ accessed individually using a special document-level JavaScript
+ function.
+
+7. (v2.3) Rewrote some of the code so that now the XMP package is set
+ using only E4X; removed all literal elements.
+
+8. (v2.3d) Added access functions getCopyrightStatus(),
+ getCopyrightInfoURL(), getAuthorTitle(), and getDescriptionWriter().
+
+9. (v2.5) Extended aebxmp to include a non-Distiller workflow as long as
+ the document author has the Acrobat application.
+
+10. (v2.5a) Require insdljs dated 2016/07/31 to make colon syntax available.
+ Values of customProperties can use the colon notation.
+
+My other web site is http://www.acrotex.net/, follow my articles at
+http://blog.acrotex.net.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory at acrotex dot net
+
diff --git a/texmf-dist/doc/latex/aebxmp/aebxmp_man.pdf b/texmf-dist/doc/latex/aebxmp/aebxmp_man.pdf
new file mode 100644
index 00000000..63ab1226
--- /dev/null
+++ b/texmf-dist/doc/latex/aebxmp/aebxmp_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.pdf b/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.pdf
new file mode 100644
index 00000000..e79a5e90
--- /dev/null
+++ b/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.tex b/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.tex
new file mode 100644
index 00000000..6fc826c2
--- /dev/null
+++ b/texmf-dist/doc/latex/aebxmp/examples/aebxmp_test.tex
@@ -0,0 +1,138 @@
+\documentclass{article}
+\usepackage[designiv,tight]{web} % Requires use of Acrobat
+\usepackage{eforms}
+\usepackage{aebxmp}
+
+\university{Acro\negthinspace\TeX.Net}
+\title{Testing the aebxmp Package}
+%\Title{Testing the aebxmp Package}
+\Title{%
+ {[en-US]Testing the aebxmp Package}
+ {[fr]Test du paquet aebxmp}
+ {[de]Testen des aebxmp Pakets}
+}
+\author{D. P. Story}
+\Authors{{D. P. Story}{J\u00FCrgen Gilg}}
+%\subject{Test file for using E4X to update the XMP Data Model}
+%\Subject{[en-US]Test file for using E4X to update the XMP Data Model}
+\Subject{%
+ {[en-US]Test file for using E4X to update the XMP Data Model}
+ {[fr]Fichier de test utilisant E4X pour mettre à jour
+ le modèle de données XMP}
+ {[de]Testdatei für die Verwendung von E4X, um das XMP Daten
+ Modell zu aktualisieren}
+}
+\pdfLang{en-US}
+\metaLang{en,en-US,fr,de}
+%\keywords{AcroTeX.Net,XMP,E4X,Adobe Acrobat,JavaScript}
+\Keywords{AcroTeX.Net,XMP,E4X,Adobe Acrobat,JavaScript}
+\email{dpstory@acrotex.net}
+\copyrightStatus{True}
+%\copyrightNotice{Copyright (C) \the\year, D. P. Story}
+\copyrightNotice{%
+ {[en-us]Copyright \u00A9 \the\year, D. P. Story}
+ {[fr]Copyright \u00A9 \the\year, D. P. Story}
+ {[de]Copyright \u00A9 \the\year, D. P. Story}
+}
+\copyrightInfoURL{http://www.acrotex.net}
+
+\authortitle{Programming and Development, AcroTeX.Net}
+\descriptionwriter{Testing and Promotions Department, AcroTeX.Net}
+
+\customProperties
+{%
+ {name=Developer,value={D. P. Story, Esq.}}
+ {name=Motivator,value=Jürgen Gilg}
+% {name=Motivator,value=J\u00FCrgen Gilg}
+}
+% Alternate notation
+%\customProperties
+%{%
+% {name:Developer,value:{D. P. Story, Esq.}}
+% {name:Motivator,value:Jürgen Gilg}
+%% {name:Motivator,value:J\u00FCrgen Gilg}
+%}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\begin{document}
+
+\maketitle
+
+\section{Viewing Metadata}
+
+Press \texttt{Ctrl+D}, select the \textsf{Description} tab, and click
+\textsf{Additional Metadata} to inspect the copyright metadata, populated
+by the \textsf{aebxmp} package; or, just click on this button
+\pushButton[\CA{View Metadata}
+\A{\JS{app.execMenuItem("GeneralInfo");}}]{viewMeta}{}{11bp}
+
+\def\xmpTab{\space\space}%
+\def\displayMeta#1{\JS{%
+ console.println("#1:");\r
+ for (var i=0; i<#1.length; i++)\r\t
+ console.println("\xmpTab"+#1[i]);\r
+}}
+
+Open the \setLink[\A{\JS{console.clear();console.show();}}]{console
+window} and view some of the advanced metadata:
+\setLink[\A{\displayMeta{aKeywords}}]{keywords},
+\setLink[\A{\displayMeta{aTitle}}]{title},
+\setLink[\A{\displayMeta{aSubject}}]{subject}, and
+\setLink[\A{\displayMeta{aRights}}]{copyrightNotice}.
+
+\section{Custom Document Properties}
+You can define custom properties using the \cs{customProperties} command.
+\begin{verbatim}
+ \customProperties
+ {%
+ {name=<name1>,value=<value1>}
+ {name=<name2>,value=<value2>}
+ }
+\end{verbatim}
+The value of the \texttt{name} key requires a unique name, which must not
+be one of the standard property names \texttt{Title}, \texttt{Author},
+\texttt{Subject}, \texttt{Keywords}, \texttt{Creator}, \texttt{Producer},
+\texttt{CreationDate}, \texttt{ModDate}, and \texttt{Trapped}.
+
+The properties may be accessed through the \texttt{info} property of the
+\texttt{Doc} object. The button \pushButton[\TU{Press to see the document
+properties}\CA{Info}\A{\JS{%
+ console.show();\r
+ console.clear();\r
+ for (var o in this.info)\r\t
+ console.println("info."+o+"="+this.info[o]);\r
+ if (aKeywords!=undefined) {\r\t
+ console.println("List Keywords:");\r\t
+ for (var i=0; i< aKeywords.length; i++){\r\t\t
+ console.println(" "+aKeywords[i]);\r\t
+ }\r
+ }
+}}]{info}{}{11bp}
+opens the console debugger window and displays all the document
+properties. Notice in the window, the keywords are listed twice:
+the first time is the value of \texttt{this.info.Keywords}, single string;
+the second time you see the keywords listed individually. The individual
+keywords are accessed using the \texttt{aKeywords} array, see the
+\texttt{aeb\_xmp} documentation for more details.
+
+The custom properties may be viewed using the user interface; press
+\texttt{Ctrl+D} and choose the \textsf{Custom} tab.
+
+\section{Authors}
+
+As mentioned in the documentation, a new command \cs{Authors} was defined;
+for this document, we have in the preamble,
+\begin{verbatim}
+ \Authors{{D. P. Story}{J\u00FCrgen Gilg}}
+\end{verbatim}
+Each author can be accessed individually; the button
+\pushButton[\CA{Authors}\TU{Get a listing of all authors}\A{\JS{%
+ console.show();\r
+ console.println("\\n");\r
+ for (var i=0; i<this.info.Authors.length; i++)\r\t
+ console.println("Author "+(i+1)+": " +this.info.Authors[i]);
+}}]{getAuthors}{}{11bp} lists out the authors in the debugger
+console.
+
+\end{document}
diff --git a/texmf-dist/doc/latex/annot-pro/README.md b/texmf-dist/doc/latex/annot-pro/README.md
new file mode 100644
index 00000000..113594e6
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/README.md
@@ -0,0 +1,19 @@
+annot_pro --- D. P. Story
+Dated: 2016/10/18
+
+What's New: Added support for text box annotations (originally called free
+text annotations). Added new sample file textbox.tex.
+
+This package is used to create text, stamp, file attachment, and text box
+annotations using Adobe Distiller, these annotations can be viewed in
+Adobe Reader. For users of pdf(la)tex, use the pdfcomment package by Josef
+Kleber might suffice.
+
+Check out my http://www.acrotex.net/ website and my blog site as well
+at http://blog.acrotex.net/.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory@uakron.edu
+dpstory@acrotex.net
diff --git a/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf b/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf
new file mode 100644
index 00000000..1f28487d
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/annotpro_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/annots.pdf b/texmf-dist/doc/latex/annot-pro/examples/annots.pdf
new file mode 100644
index 00000000..ddf49ec7
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/annots.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/annots.tex b/texmf-dist/doc/latex/annot-pro/examples/annots.tex
new file mode 100644
index 00000000..baddee5f
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/annots.tex
@@ -0,0 +1,203 @@
+\listfiles
+\documentclass{article}
+\usepackage[%
+ web={tight,usesf,usetemplates},
+]{aeb_pro}
+\usepackage{annot_pro}
+
+\title{The \textsf{annot\_pro} Package\texorpdfstring{\\[2ex]}{: }Text, Stamp, and File Attachment Annotations}
+\author{D. P. Story}
+\university{Acro\negthinspace\TeX.Net}
+\email{dpstory@acrotex.net}
+\subject{Acrobat text, stamp, and file attachment annotations}
+\keywords{AcroTeX, AeB Pro, Acrobat annotations}
+
+\textBgColor{webyellow}
+
+\DeclareInitView
+{%
+ layoutmag={mag=100},
+ windowoptions={fit}
+}
+
+\margins{.5in}{.5in}{24pt}{.25in} % left,right,top, bottom
+\screensize{4.5in}{6in} % height, width
+
+\def\myNote{type=text,name=Note,color=webyellow}
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+%
+% This needs to be set to the path to the graphics folder
+%
+\defineAPath{\graphicsPath}{C:/Users/Public/Documents/My TeX Files/%
+ tex/latex/aeb/aebpro/annot_pro/examples/graphics}
+
+\marginparsep=6pt
+\marginparwidth=.25in
+\parskip6pt
+\parindent0pt
+
+\reversemarginpar
+
+\setAnnotOptions{subject={AcroTeX Communiqu\'e},title={D.P. Story}}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+This is a brief demo package for the \textsf{annot\_pro} package. This package uses
+Adobe Distiller to distill PostScript files created by dvips (or dvipsone) to produce
+a selection of useful annotations, the ones for text (also called sticky notes), stamps,
+and file attachments. We take up each of these annotation types in that order. The command
+to create all types of supported annotation is \cs{annotpro}. The syntax is\dots
+\begin{verbatim}
+ \annotpro[<key-values>]{<content>}
+\end{verbatim}
+There are several keys that are common to all annotations, among
+these are \texttt{title} (whose value is usually the author of the
+annotation), and \texttt{subject}. The \texttt{<content>} argument
+is the text of the pop-up window (in the case of text and stamp
+annotations), and the file attachment description (for file
+attachment annotations).For example, \annotpro[title=Don
+Story,subject=AcroTeX.Net]{This is the content of the sticky note.}; the code is
+\begin{verbatim}
+ \annotpro[title=Don Story,subject=AcroTeX.Net]
+ {This is the content of the sticky note.}
+\end{verbatim}
+
+See the documentation for this package, \texttt{annotpro\_man.pdf}, for details
+beyond what is presented here.
+
+\section{Text annotations}
+
+There are a number of difference text annotation icons that can be used. The default
+is the \texttt{Note} annotation \annotpro{This is a Note annotation, or sticky note.}. The
+type of annotation is selected using the \texttt{type} key, text
+annotations are \texttt{type=text} (the default). An icon is selected using the \texttt{name} key.
+The above annotation is the default \texttt{name=Note}; consequently, the syntax is very simple:
+\begin{verbatim}
+ \annotpro{This is a Note annotation, or sticky note.}
+\end{verbatim}
+The default behavior is to leave the correct vertical and horizontal space in {\TeX} space to
+place the icon. The icons of a text annotation do not re-scale, they remain the same size regardless
+of the page magnification; consequently, they look best when the magnification is at 100\%.
+
+There are keys (\texttt{nohspace}, \texttt{novspace}, and \texttt{nospace}) for removing
+space around the icon in {\TeX} space.
+
+This is a sticky note that takes that uses the \texttt{\texttt{nohspace}} key.\makebox[0pt][r]{\raisebox{10bp}{\annotpro[name=Comment,nohspace]{J\"{u}rgen is a cool guy!}}\hspace{6bp}}
+The sticky note retains vertical space. For sticky notes, there are three keys for removing space,
+\texttt{nohspace}, \texttt{novspace}, and \texttt{nospace}. Acrobat users can move these icons around
+on the page, but users of Adobe Reader cannot; therefore, if an annot is to be used, it should not cover
+any page content. You can see the additional space left between paragraphs, this space was created
+by the vertical space of the note. Here,\annotpro[name=Comment,nospace,color=blue]{J\"{u}rgen is a cool guy!} the blue note, is the same note with the \texttt{nospace} key.
+
+Annots can be placed in the margin\annotpro[presets=\myNote,margin,readonly,margintext={Hi\\Mom!}]{This one appears in the margin of the document.}
+using the \texttt{margin} key, with an optional ``caption.'' The core {\LaTeX} command \cs{marginpar} is used. This particular
+annotation uses the \texttt{presets} key, this key allows you to predefine some options. The code for the margin note is
+\begin{verbatim}
+ \annotpro[presets=\myNote,margin,readonly,margintext={Hi\\Mom!}]
+ {This one appears in the margin of the document.}
+\end{verbatim}
+
+Here is another sticky note, the \texttt{Check}
+\annotpro[color=yellowgreen,name=Check]{This is an example of a
+note.\string\n\string\n We've created a blank line and started a new
+paragraph.}.
+
+\section{Stamp Annotations}
+
+
+The \textsl{PDF Reference} lists several stamps that are guaranteed to exist, by any conforming PDF viewer.
+This stamp is one\smash{\raisebox{38pt}{\makebox[0pt][l]{\annotpro[type=stamp,name=Approved,widthTo=150bp,color=blue]{I give my stamp of approval!}}}} of
+the standard stamps. A stamp is created by by putting \texttt{type=stamp} and by setting the
+\texttt{name} key to the name of the stamp.
+
+The stamp annotation does not obey the \texttt{nospace} keys, the same effect can be obtains using
+various combinations of \cs{smash} and \cs{makebox}. The code for the stamp above is
+\begin{verbatim}
+ \smash{\makebox[0pt][l]{\raisebox{36pt}{
+ \annotpro[type=stamp,name=Approved,widthTo=150bp,
+ color=blue]{I give my stamp of approval!}}}}
+\end{verbatim}\previewtrue
+Did I forget to mention \cs{raisebox}? I needed that command keep the stamp from covering page content.
+The \textsf{annot\_pro} package has a \texttt{preview} option. If used, the bounding rectangles of
+the annotations can be viewed in a dvi previewer. This helped me to place the stamp through my dvi previewer.
+
+Stamps can be re-scaled using \texttt{widthTo} (for re-scaling a stamp to a specified width), \texttt{heightTo} (for re-scaling to height),
+or \texttt{scale} (for re-scaling using a re-scaling factor, for example, \texttt{scale=.5}).
+For example, here is a stamp resize to 20bp width \annotpro[type=stamp,name=WordsTheBestJustGotBetter,widthTo=20bp,color=webbrown]{This package just got better!}.
+This stamp is one of the ``extra'' stamps that are (sometimes) shipped with Acrobat, see the file \texttt{stamps.pdf} for a complete listing
+of these extra stamps that ship with Acrobat.
+
+Stamps can be placed in the margins,\annotpro[type=stamp,name=WordsTheBestJustGotBetter,margin,widthTo=20bp,color=webbrown]{This package just got better!}
+but they probably need to be re-scaled to make them smaller; there are several keys that can be used for this purpose.
+A key I've used several times already is \texttt{widthTo} (for re-scaling a stamp to a specified width), \texttt{heightTo} (for re-scaling to height),
+and \texttt{scale} (for re-scaling using a re-scaling factor, for example, \texttt{scale=.5}).
+\begin{verbatim}
+ \annotpro[type=stamp,name=WordsTheBestJustGotBetter,
+ widthTo=20bp,color=webbrown]{This package
+ just got better!}
+\end{verbatim}
+
+Stamps are shipped with Acrobat (and some with Adobe Reader) in the form of PDF files. The PDF consist of
+a series of template pages with one graphical image of a stamp per page. The standard stamps
+reside in the file \texttt{Standard.pdf}.
+
+Additional Stamps: The following stamps may be on your computer, when \textbf{Acrobat Pro} is installed. See the
+file \texttt{stamps.pdf} for a complete listing of the stamps and their names.
+
+
+\begin{itemize}
+\item \texttt{StandardBusiness.pdf}: A \annotpro[type=stamp,name=SBApproved,color=webbrown]{This package just got better!} stamp
+\item \texttt{SignHere.pdf}: A \annotpro[type=stamp,name=SHSignHere,color=webbrown]{This package just got better!} stamp
+\item \texttt{Dynamic.pdf}: A \annotpro[type=stamp,name=\#DApproved,widthTo=2in,color=webbrown]{This package just got better!} stamp
+\item \texttt{Words.pdf}: A \annotpro[type=stamp,name=WordsTheBestJustGotBetter,widthTo=30bp,color=webbrown]{This package just got better!} stamp
+\item \texttt{Faces.pdf}: A \annotpro[type=stamp,name=FacesWow,widthTo=30bp,color=webbrown]{This package just got better!} stamp
+\item \texttt{Pointers.pdf}: A \annotpro[type=stamp,name=PointersWhen,widthTo=100bp,color=webbrown]{This package just got better!} stamp
+\end{itemize}
+These stamps are representatives of the many stamps that reside in the referenced files. The dimensions of these
+stamps are known by \textsf{annot\_pro} for these stamps. These can be resized using the \texttt{widthTo}, \texttt{heightTo}, or \texttt{scale}
+keys.
+
+Note that the names in the \texttt{Dynamic.pdf} file begin with the \texttt{\#} symbol. To reference these stamps, use
+\verb!\#!, like so \verb!name=\#DApproved!.
+
+The bounding rectangle for the non-standard stamps---ones whose
+dimensions are not known to this package---can be set using the
+\texttt{width} and \texttt{height} keys, there are default values if
+these keys are not specified.
+
+The stamps provided by Acrobat can be rotated using the rotate key. For example, the stamp named
+\texttt{PointersWhen} shown above, can be rotated 30 degrees, the stamp and the code are shown below.
+\smash{\makebox[0pt][l]{\put(125,-15){\annotpro[type=stamp,name=PointersWhen,widthTo=50bp,rotate=30,color=webbrown]{Here is the code for this stamp.}}}}
+\begin{verbatim}
+ \smash{\makebox[0pt][l]{\put(130,-20){%
+ \annotpro[type=stamp,name=PointersWhen,
+ widthTo=50bp,rotate=30,color=webbrown
+ ]{Here is the code for this stamp.}}}}
+\end{verbatim}
+See the file \texttt{stamps.tex} (and \texttt{stamps.pdf}) for a
+complete list of these stamps, and their names.
+
+\textbf{\textcolor{red}{Important:}} When using the stamps of
+Acrobat, always perform a \textbf{SaveAs} on the file when you have finished
+building the file. This imports the appearances of the stamps into
+the document and saves them.
+
+
+\section{File Attachment Annotations}
+
+This is a file attachment \annotpro[type=fileattachment,file={\graphicsPath/AdobeDon.pdf},name=Paperclip]{The author of annot\_pro (ho, ho).}
+which depicts the image of an average man. A file attachment is created with \texttt{type=fileattachment}; in addition,
+a value of the file key must be set, here \verb!file={\graphicsPath/AdobeDon.pdf}!, where \cs{graphicsPath} is a command
+that expands to the path to the folder holding \texttt{AdobeDon.pdf}. The definition of the path was made using
+a special command, \cs{defineAPath}, in \texttt{annot\_pro}.
+
+
+
+\end{document}
+
+width=185.76bp,height=185.46bp
diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps b/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps
new file mode 100644
index 00000000..80c8438b
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/APB_Logo_Sphere.eps
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps
new file mode 100644
index 00000000..1f4b8ffc
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.eps
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.pdf b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.pdf
new file mode 100644
index 00000000..ace1d19b
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/AdobeDon.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/graphics/AeST_Logo.eps b/texmf-dist/doc/latex/annot-pro/examples/graphics/AeST_Logo.eps
new file mode 100644
index 00000000..e885af7f
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/graphics/AeST_Logo.eps
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf b/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf
new file mode 100644
index 00000000..19913ab8
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/stamps.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/stamps.tex b/texmf-dist/doc/latex/annot-pro/examples/stamps.tex
new file mode 100644
index 00000000..cb961ab7
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/stamps.tex
@@ -0,0 +1,138 @@
+\documentclass[12pt]{article}
+\usepackage[forpaper]{web}
+%\usepackage{graphicx}
+\usepackage{annot_pro}
+\usepackage{array}
+
+\setAnnotOptions{subject={annot\_pro by AcroTeX},title={D.P. Story}}
+\useFullWidthForPaper
+
+\parindent0pt\parskip6pt
+
+%\previewtrue
+
+\def\stampW{1in}
+\def\stampH{30pt}
+\def\resizeW{1in}
+
+\newcommand{\showStamp}[2]{#1&#2&\annotpro[type=stamp,name=#1,readonly,widthTo=\resizeW]{Stamp Name: #1}}
+%\newcommand{\showStamp}[2]{#1&#2&\resizebox{\resizeW}{!}{\annotpro[type=stamp,name=#1,readonly,widthTo=\resizeW]{Stamp Name: #1}}}
+
+\begin{document}
+
+The application will insert the largest possible stamp, while
+preserving the aspect ratio. The stamp is centered in the bounding
+box.
+
+The following stamps are shipped with Acrobat in recent years.
+
+\setlength{\extrarowheight}{15pt}
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{Standard.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{Approved}{Approved}\\\showStamp{AsIs}{As Is}\\\showStamp{Confidential}{Confidential}\\\showStamp{Departmental}{Departmental}\\\showStamp{Draft}{Draft}\\\showStamp{Experimental}{Experimental}\\\showStamp{Expired}{Expired}\\\showStamp{Final}{Final}\\\showStamp{ForComment}{For Comment}\\\showStamp{ForPublicRelease}{For Public Release}\\\showStamp{NotApproved}{Not Approved}\\\showStamp{NotForPublicRelease}{Not For Public Release}\\\showStamp{Sold}{Sold}\\\showStamp{TopSecret}{Top Secret}
+\end{tabular}
+\end{center}
+
+\setlength{\extrarowheight}{18pt}
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{StandardBusiness.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{SBApproved}{Approved}\\\showStamp{SBCompleted}{Completed}\\\showStamp{SBConfidential}{Confidential}\\\showStamp{SBDraft}{Draft}\\\showStamp{SBFinal}{Final}\\\showStamp{SBForComment}{For Comment}\\\showStamp{SBForPublicRelease}{For Public Release}\\\showStamp{SBInformationOnly}{Information Only}\\\showStamp{SBNotApproved}{Not Approved}\\\showStamp{SBNotForPublicRelease}{Not For Public Release}\\\showStamp{SBPreliminaryResults}{Preliminary Results}\\\showStamp{SBVoid}{Void}
+\end{tabular}
+\end{center}
+
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{SignHere.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{SBRejected}{Rejected}\\\showStamp{SHAccepted}{Accepted}\\\showStamp{SHInitialHere}{Initial Here}\\\showStamp{SHSignHere}{Sign Here}\\\showStamp{SHWitness}{Witness}
+\end{tabular}
+\end{center}
+
+\newpage
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{Dynamic.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{\#DApproved}{Approved}\\\showStamp{\#DConfidential}{Confidential}\\\showStamp{\#DReceived}{Received}\\\showStamp{\#DReviewed}{Reviewed}\\\showStamp{\#DRevised}{Revised}
+\end{tabular}
+\end{center}
+
+
+Each stamp in the above table has a name that begins with the \texttt{\#} character. When using
+\textsf{annot\_pro}, use \verb!\#! instead of \texttt{\#}, like so,
+\verb!name=\#DApproved!.
+
+\newpage
+
+The following three sets were at one time shipped with Acrobat, you may not have some of these.
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{Pointers.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{PointersBogus}{Bogus}\\\showStamp{PointersBug}{Bug}\\\showStamp{PointersDOA}{DOA}\\\showStamp{PointersFYEO}{For Your Eyes Only}\\\showStamp{PointersFix}{Fix}\\\showStamp{PointersNuke}{Nuke This}\\\showStamp{PointersOptimize}{Optimize}\\\showStamp{PointersRedFlag}{Red Flag}\\\showStamp{PointersValidate}{Validate}\\\showStamp{PointersWarning}{Warning}\\\showStamp{PointersWhen}{When?}
+\end{tabular}
+\end{center}
+
+\def\resizeW{.5in}
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{Faces.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{FacesEcstatic}{Ecstatic}\\\showStamp{FacesElectric}{Electric}\\\showStamp{FacesGrumpy}{Grumpy}\\\showStamp{FacesHappy}{Happy}\\\showStamp{FacesHurt}{Hurt}\\\showStamp{FacesNeutral}{Neutral}\\\showStamp{FacesSmirk}{Smirk}\\\showStamp{FacesSurprised}{Surprised}\\\showStamp{FacesWorried}{Worried}\\\showStamp{FacesWow}{Wow}\\\showStamp{FacesZippy}{Zippy}
+\end{tabular}
+\end{center}
+
+\def\resizeW{1in}
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{Words.pdf}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{WordsAGenuineFind}{A Genuine Find}\\\showStamp{WordsBigSavings}{Big Savings!}\\\showStamp{WordsDeals}{Deals}\\\showStamp{WordsHappyBirthday}{Happy Birthday}\\\showStamp{WordsHot}{Hot}\\\showStamp{WordsLookWhatsNew}{Look What's New}\\\showStamp{WordsNeato}{Neato!}\\\showStamp{WordsTheBestJustGotBetter}{The Best Just Got Better}
+\end{tabular}
+\end{center}
+
+\def\resizeW{.5in}
+
+\begin{center}
+\begin{tabular}{>{\ttfamily}lll}
+\multicolumn{3}{>{\Large}c}{CompareMarkers.pdf (Acrobat DC)}\\
+\multicolumn{1}{l}{Name (value of \texttt{name} key)} & UI name & Stamp appearance \\
+\showStamp{CompareMarkerAdd}{Marker Add}\\
+\showStamp{CompareMarkerRemove}{Marker Remove}\\
+\showStamp{CompareMarkerChange}{Marker Change}
+\end{tabular}
+\end{center}
+
+
+\end{document}
+
+
+\showStamp{CompareMarkerAdd}{Marker Add}
+\showStamp{CompareMarkerRemove}{Marker Remove}
+\showStamp{CompareMarkerChange}{Marker Change}
+
+tightVNC
+\begin{tooltip}[optional args]{arg1}{arg2}
+\begin{equation} \label{eq1}
+x=y
+\end{equation}
+\end{tooltip}
+
+typeset document ...
+text...
+x=y (1)
+more text....
+more...
+
+Recall equation (1) (tool tip)
diff --git a/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf b/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf
new file mode 100644
index 00000000..5534dcc8
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/textbox.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/annot-pro/examples/textbox.tex b/texmf-dist/doc/latex/annot-pro/examples/textbox.tex
new file mode 100644
index 00000000..90470cec
--- /dev/null
+++ b/texmf-dist/doc/latex/annot-pro/examples/textbox.tex
@@ -0,0 +1,62 @@
+\documentclass[12pt]{article}
+\usepackage[web={tight*,designiii}]{aeb_pro}
+\usepackage[useTextBox]{annot_pro}
+
+\title{The \textsf{annot\_pro} Package\texorpdfstring{\\[2ex]}{: }The text box annotation}
+\author{D. P. Story}
+\university{Acro\negthinspace\TeX.Net}
+\email{dpstory@acrotex.net}
+\subject{Acrobat Text Box annotation}
+\keywords{AcroTeX, AeB Pro, Acrobat annotations}
+
+\DeclareInitView
+{%
+ layoutmag={mag=100},
+ windowoptions={fit}
+}
+
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\parskip6pt
+\parindent0pt
+
+\reversemarginpar
+
+\convertcolorspec{named}{webbrown}{HTML}{\htmlWebBrown}
+\setAnnotOptions{subject={AcroTeX Communiqu\'e},title={D. P. Story}}
+
+\begin{textboxpara}
+\rtpara[color=\htmlWebBrown]{para1}{\spc\spc\spc\spc Now is the time for
+ \span{style={strikeit,bold},color=ff0000}{\it{\bf{J\374rgen}}} and all
+ good men to come to the aid of \it{their} \bf{country}. Now is also the
+ \sup{time} for \span{style=italic}{all good} women to do the same.\br\spc\spc\spc\spc
+ This is a second paragraph. I hope we can all go to the AcroTeX.Net website at
+ \span{ulstyle=ul,color=0000FF}{http://www.acrotex.net}.\br\br
+ \span{size=14.5,color=000000}{\uHex{4EE4}}}
+\end{textboxpara}
+\setRVVContent{demo-para}{para1}
+
+\begin{document}
+
+\maketitle
+
+The \textsf{Text Box} annotation is a rectangular region into which the user
+can type rich text content. It can be moved around easily. The \textsf{Text
+Box} can also be pre-populated with rich text using the {\LaTeX} markup
+described in the documentation of the \textsf{annot\_pro} package. The
+\textsf{Text Box} below has a transparent background (move it on top of this
+paragraph), a cloud border, and rich text including a unicode character not
+normally available to {\LaTeX} users. The annotation version does not support
+multiple paragraphs, so I `artificially' created several `paragraphs' using
+\cs{br} and indented the `paragraphs' using the \cs{spc} command; this
+paragraph simulation is, of course, optional.
+\begin{center}
+\annotpro[title=dpstory,
+ type=textbox,borderstyle=cloud1,borderwidth=1,
+ width=3in,height=16bp*9,
+ subject=Testing the Text Box (FreeText),
+ bgcolor,bcolor=red]{richtext=demo-para}
+\end{center}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/graphicxsp/README.md b/texmf-dist/doc/latex/graphicxsp/README.md
new file mode 100644
index 00000000..bfdc6736
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/README.md
@@ -0,0 +1,41 @@
+The GraphicxSP Package
+Author: D. P. Story
+Dated: 2016/02/19
+Version: v1.0
+
+GraphicxSP is an extension of the graphicx package. GraphicxSP
+embeds the graphic in the PDF document once, and allows the document
+author to use and re-use that same graphic without significantly
+increasing the file size. Additionally, GraphicxSP supports Adobe
+transparency imaging model.
+
+GraphicxSP is useful for repeated graphics like backgrounds,
+watermarks, company/universit logos and so on. The graphics
+produced by GraphicxSP appears to be clearer at high zoom factors
+than the same graphic produced by the classic Graphic package.
+
+Restriction: This package requires that the PDF be created by Adobe
+Distiller, version 5.0 or greater for graphics without transparency,
+version 5.0 with transparency.
+
+Installation Instructions: Place the zip file in your latex search
+path and unzip. Refresh your file name database, and you are ready
+to go. Start with documentation and the demo files contained in the
+examples folder.
+
+Let me know if there are problems or suggested features. e-mail
+me at dpstory@uakron.edu or dpstory@acrotex.net
+
+I maintain a web site featuring TeX/LaTeX/PDF stuff called
+AcroTeX (www.math.uakron.edu/~dpstory/acrotex.html). There you
+will find the home web page of the GraphicxSP Bundle.
+(www.math.uakron.edu/~dpstory/graphicxsp.html).
+
+My other web site is http://blog.acrotex.net/, there you can find all my
+ruminations on AeB and PDF.
+
+Now, I simply must get back to my retirement.
+
+D. P. Story
+dpstory@uakron.edu
+2016/02/19
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/000_0151.eps b/texmf-dist/doc/latex/graphicxsp/graphics/000_0151.eps
new file mode 100644
index 00000000..09f9ba0c
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/000_0151.eps
Binary files differ
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/3Dcheck.eps b/texmf-dist/doc/latex/graphicxsp/graphics/3Dcheck.eps
new file mode 100644
index 00000000..5af887be
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/3Dcheck.eps
@@ -0,0 +1,8304 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: ADP22.tmp.pdf
+%%Creator: Adobe Acrobat 8.0
+%%For: Donald Story
+%%CreationDate: 08/05/2007, 4:27:05 PM
+%%BoundingBox: 0 0 66 60
+%%HiResBoundingBox: 0 0 65.9241 59.3510
+%%CropBox: 0 0 65.9241 59.3510
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors:
+%%DocumentCustomColors: (atend)
+%%EndComments
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
+{
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
+{
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
+{
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
+{
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
+{
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
+{
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
+{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
+{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
+}def
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
+{
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
+{
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
+{
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
+{
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
+{
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
+{
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
+{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
+{
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
+{
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+{
+ /pdfmark_5{cleartomark}bind def
+}{
+ /pdfmark_5{pdfmark}bind def
+}ifelse
+/ReadBypdfmark_5
+{
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
+{
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline pop
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
+{
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2005 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
+{
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
+}forall
+setglobal
+/AGMCORE_key_known
+{
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
+{
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
+{
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
+{
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
+{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
+{
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{aload pop setcolor}bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
+}if
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
+}if
+/test_cmyk_color_plate
+{
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
+{
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
+{
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
+{
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
+{
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
+{
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
+{
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
+{
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
+{
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
+{
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
+{
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
+{
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
+{
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
+{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
+{
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
+{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
+{
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
+{
+ /count get 0 0 put
+}def
+/paintproc_buf_next
+{
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
+{
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
+{
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
+{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
+{
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
+{
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
+}def
+/updatecolorrendering
+{
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
+{
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
+{
+ dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration
+ dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+}def
+/cpaint_gcomp
+{
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
+{
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
+{
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
+{
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
+{
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
+{
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
+{
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
+{
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
+{
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
+{
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
+{
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/driver_check_media_override
+{
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
+end
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
+%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
+%%Version: 2.31 0
+10 dict begin
+/Adobe_CoolType_Passthru currentdict def
+/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
+Adobe_CoolType_Core_Defined
+ {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
+if
+userdict/Adobe_CoolType_Core 70 dict dup begin put
+/Adobe_CoolType_Version 2.31 def
+/Level2?
+ systemdict/languagelevel known dup
+ {pop systemdict/languagelevel get 2 ge}
+ if def
+Level2? not
+ {
+ /currentglobal false def
+ /setglobal/pop load def
+ /gcheck{pop false}bind def
+ /currentpacking false def
+ /setpacking/pop load def
+ /SharedFontDirectory 0 dict def
+ }
+if
+currentpacking
+true setpacking
+currentglobal false setglobal
+userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+if
+get
+ begin
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ end
+setglobal
+currentglobal true setglobal
+userdict/Adobe_CoolType_GVMFonts known not
+ {userdict/Adobe_CoolType_GVMFonts 10 dict put}
+if
+setglobal
+currentglobal false setglobal
+userdict/Adobe_CoolType_LVMFonts known not
+ {userdict/Adobe_CoolType_LVMFonts 10 dict put}
+if
+setglobal
+/ct_VMDictPut
+ {
+ dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
+ 3 1 roll put
+ }bind def
+/ct_VMDictUndef
+ {
+ dup Adobe_CoolType_GVMFonts exch known
+ {Adobe_CoolType_GVMFonts exch undef}
+ {
+ dup Adobe_CoolType_LVMFonts exch known
+ {Adobe_CoolType_LVMFonts exch undef}
+ {pop}
+ ifelse
+ }ifelse
+ }bind def
+/ct_str1 1 string def
+/ct_xshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_yshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0 exch
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_xyshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ {_ct_na _ct_i 1 add get}stopped
+ {pop pop pop}
+ {
+ _ct_x _ct_y moveto
+ rmoveto
+ }
+ ifelse
+ }
+ ifelse
+ /_ct_i _ct_i 2 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
+/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
+/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
+currentglobal true setglobal
+/ct_T3Defs
+{
+/BuildChar
+{
+ 1 index/Encoding get exch get
+ 1 index/BuildGlyph get exec
+}bind def
+/BuildGlyph
+{
+ exch begin
+ GlyphProcs exch get exec
+ end
+}bind def
+}bind def
+setglobal
+/@_SaveStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@vmState currentglobal def false setglobal
+ @opStackCountByLevel
+ @opStackLevel
+ 2 copy known not
+ {
+ 2 copy
+ 3 dict dup/args
+ 7 index
+ 5 add array put
+ put get
+ }
+ {
+ get dup/args get dup length 3 index lt
+ {
+ dup length 5 add array exch
+ 1 index exch 0 exch putinterval
+ 1 index exch/args exch put
+ }
+ {pop}
+ ifelse
+ }
+ ifelse
+ begin
+ count 1 sub
+ 1 index lt
+ {pop count}
+ if
+ dup/argCount exch def
+ dup 0 gt
+ {
+ args exch 0 exch getinterval
+ astore pop
+ }
+ {pop}
+ ifelse
+ count
+ /restCount exch def
+ end
+ /@opStackLevel @opStackLevel 1 add def
+ countdictstack 1 sub
+ @dictStackCountByLevel exch @dictStackLevel exch put
+ /@dictStackLevel @dictStackLevel 1 add def
+ @vmState setglobal
+ end
+ }bind def
+/@_RestoreStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ @opStackCountByLevel @opStackLevel get
+ begin
+ count restCount sub dup 0 gt
+ {{pop}repeat}
+ {pop}
+ ifelse
+ args 0 argCount getinterval{}forall
+ end
+ /@dictStackLevel @dictStackLevel 1 sub def
+ @dictStackCountByLevel @dictStackLevel get
+ end
+ countdictstack exch sub dup 0 gt
+ {{end}repeat}
+ {pop}
+ ifelse
+ }bind def
+/@_PopStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ /@dictStackLevel @dictStackLevel 1 sub def
+ end
+ }bind def
+/@Raise
+ {
+ exch cvx exch errordict exch get exec
+ stop
+ }bind def
+/@ReRaise
+ {
+ cvx $error/errorname get errordict exch get exec
+ stop
+ }bind def
+/@Stopped
+ {
+ 0 @#Stopped
+ }bind def
+/@#Stopped
+ {
+ @_SaveStackLevels
+ stopped
+ {@_RestoreStackLevels true}
+ {@_PopStackLevels false}
+ ifelse
+ }bind def
+/@Arg
+ {
+ Adobe_CoolType_Data
+ begin
+ @opStackCountByLevel @opStackLevel 1 sub get
+ begin
+ args exch
+ argCount 1 sub exch sub get
+ end
+ end
+ }bind def
+currentglobal true setglobal
+/CTHasResourceForAllBug
+ Level2?
+ {
+ 1 dict dup
+ /@shouldNotDisappearDictValue true def
+ Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
+ begin
+ count @_SaveStackLevels
+ {(*){pop stop}128 string/Category resourceforall}
+ stopped pop
+ @_RestoreStackLevels
+ currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
+ {
+ /@shouldNotDisappearDictValue known
+ {
+ {
+ end
+ currentdict 1 index eq
+ {pop exit}
+ if
+ }
+ loop
+ }
+ if
+ }
+ {
+ pop
+ end
+ }
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+true setglobal
+/CTHasResourceStatusBug
+ Level2?
+ {
+ mark
+ {/steveamerige/Category resourcestatus}
+ stopped
+ {cleartomark true}
+ {cleartomark currentglobal not}
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+setglobal
+/CTResourceStatus
+ {
+ mark 3 1 roll
+ /Category findresource
+ begin
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ end
+ }bind def
+/CTWorkAroundBugs
+ {
+ Level2?
+ {
+ /cid_PreLoad/ProcSet resourcestatus
+ {
+ pop pop
+ currentglobal
+ mark
+ {
+ (*)
+ {
+ dup/CMap CTHasResourceStatusBug
+ {CTResourceStatus}
+ {resourcestatus}
+ ifelse
+ {
+ pop dup 0 eq exch 1 eq or
+ {
+ dup/CMap findresource gcheck setglobal
+ /CMap undefineresource
+ }
+ {
+ pop CTHasResourceForAllBug
+ {exit}
+ {stop}
+ ifelse
+ }
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ 128 string/CMap resourceforall
+ }
+ stopped
+ {cleartomark}
+ stopped pop
+ setglobal
+ }
+ if
+ }
+ if
+ }bind def
+/ds
+ {
+ Adobe_CoolType_Core
+ begin
+ CTWorkAroundBugs
+ /mo/moveto load def
+ /nf/newencodedfont load def
+ /msf{makefont setfont}bind def
+ /uf{dup undefinefont ct_VMDictUndef}bind def
+ /ur/undefineresource load def
+ /chp/charpath load def
+ /awsh/awidthshow load def
+ /wsh/widthshow load def
+ /ash/ashow load def
+ /@xshow/xshow load def
+ /@yshow/yshow load def
+ /@xyshow/xyshow load def
+ /@cshow/cshow load def
+ /sh/show load def
+ /rp/repeat load def
+ /.n/.notdef def
+ end
+ currentglobal false setglobal
+ userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+ if
+ get
+ begin
+ /AddWidths? false def
+ /CC 0 def
+ /charcode 2 string def
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ /InVMFontsByCMap 10 dict def
+ /InVMDeepCopiedFonts 10 dict def
+ end
+ setglobal
+ }bind def
+/dt
+ {
+ currentdict Adobe_CoolType_Core eq
+ {end}
+ if
+ }bind def
+/ps
+ {
+ Adobe_CoolType_Core begin
+ Adobe_CoolType_GVMFonts begin
+ Adobe_CoolType_LVMFonts begin
+ SharedFontDirectory begin
+ }bind def
+/pt
+ {
+ end
+ end
+ end
+ end
+ }bind def
+/unload
+ {
+ systemdict/languagelevel known
+ {
+ systemdict/languagelevel get 2 ge
+ {
+ userdict/Adobe_CoolType_Core 2 copy known
+ {undef}
+ {pop pop}
+ ifelse
+ }
+ if
+ }
+ if
+ }bind def
+/ndf
+ {
+ 1 index where
+ {pop pop pop}
+ {dup xcheck{bind}if def}
+ ifelse
+ }def
+/findfont systemdict
+ begin
+ userdict
+ begin
+ /globaldict where{/globaldict get begin}if
+ dup where pop exch get
+ /globaldict where{pop end}if
+ end
+ end
+Adobe_CoolType_Core_Defined
+ {/systemfindfont exch def}
+ {
+ /findfont 1 index def
+ /systemfindfont exch def
+ }
+ifelse
+/undefinefont
+ {pop}ndf
+/copyfont
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ dup null eq{0}{dup length}ifelse
+ 2 index length add 1 add dict
+ begin
+ exch
+ {
+ 1 index/FID eq
+ {pop pop}
+ {def}
+ ifelse
+ }
+ forall
+ dup null eq
+ {pop}
+ {{def}forall}
+ ifelse
+ currentdict
+ end
+ exch setglobal
+ }bind def
+/copyarray
+ {
+ currentglobal exch
+ dup gcheck setglobal
+ dup length array copy
+ exch setglobal
+ }bind def
+/newencodedfont
+ {
+ currentglobal
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ {
+ FontDirectory 3 index known
+ {FontDirectory 3 index get/FontReferenced known}
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ dup
+ {
+ 3 index findfont/FontReferenced get
+ 2 index dup type/nametype eq
+ {findfont}
+ if ne
+ {pop false}
+ if
+ }
+ if
+ dup
+ {
+ 1 index dup type/nametype eq
+ {findfont}
+ if
+ dup/CharStrings known
+ {
+ /CharStrings get length
+ 4 index findfont/CharStrings get length
+ ne
+ {
+ pop false
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ if
+ {
+ pop
+ 1 index findfont
+ /Encoding get exch
+ 0 1 255
+ {2 copy get 3 index 3 1 roll put}
+ for
+ pop pop pop
+ }
+ {
+ currentglobal
+ 4 1 roll
+ dup type/nametype eq
+ {findfont}
+ if
+ dup gcheck setglobal
+ dup dup maxlength 2 add dict
+ begin
+ exch
+ {
+ 1 index/FID ne
+ 2 index/Encoding ne and
+ {def}
+ {pop pop}
+ ifelse
+ }
+ forall
+ /FontReferenced exch def
+ /Encoding exch dup length array copy def
+ /FontName 1 index dup type/stringtype eq{cvn}if def dup
+ currentdict
+ end
+ definefont ct_VMDictPut
+ setglobal
+ }
+ ifelse
+ }bind def
+/SetSubstituteStrategy
+ {
+ $SubstituteFont
+ begin
+ dup type/dicttype ne
+ {0 dict}
+ if
+ currentdict/$Strategies known
+ {
+ exch $Strategies exch
+ 2 copy known
+ {
+ get
+ 2 copy maxlength exch maxlength add dict
+ begin
+ {def}forall
+ {def}forall
+ currentdict
+ dup/$Init known
+ {dup/$Init get exec}
+ if
+ end
+ /$Strategy exch def
+ }
+ {pop pop pop}
+ ifelse
+ }
+ {pop pop}
+ ifelse
+ end
+ }bind def
+/scff
+ {
+ $SubstituteFont
+ begin
+ dup type/stringtype eq
+ {dup length exch}
+ {null}
+ ifelse
+ /$sname exch def
+ /$slen exch def
+ /$inVMIndex
+ $sname null eq
+ {
+ 1 index $str cvs
+ dup length $slen sub $slen getinterval cvn
+ }
+ {$sname}
+ ifelse def
+ end
+ {findfont}
+ @Stopped
+ {
+ dup length 8 add string exch
+ 1 index 0(BadFont:)putinterval
+ 1 index exch 8 exch dup length string cvs putinterval cvn
+ {findfont}
+ @Stopped
+ {pop/Courier findfont}
+ if
+ }
+ if
+ $SubstituteFont
+ begin
+ /$sname null def
+ /$slen 0 def
+ /$inVMIndex null def
+ end
+ }bind def
+/isWidthsOnlyFont
+ {
+ dup/WidthsOnly known
+ {pop pop true}
+ {
+ dup/FDepVector known
+ {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
+ {
+ dup/FDArray known
+ {/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }bind def
+/ct_StyleDicts 4 dict dup begin
+ /Adobe-Japan1 4 dict dup begin
+ Level2?
+ {
+ /Serif
+ /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMin-W3/CIDFont resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {/Ryumin-Light}
+ ifelse
+ }
+ {/Ryumin-Light}
+ ifelse
+ }
+ ifelse
+ def
+ /SansSerif
+ /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiKakuGo-W5/CIDFont resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ ifelse
+ def
+ /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMaruGo-W4/CIDFont resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ /RoundSansSerif exch def
+ /Default Serif def
+ }
+ {
+ /Serif/Ryumin-Light def
+ /SansSerif/GothicBBB-Medium def
+ {
+ (fonts/Jun101-Light-83pv-RKSJ-H)status
+ }stopped
+ {pop}{
+ {pop pop pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ /RoundSansSerif exch def
+ }ifelse
+ /Default Serif def
+ }
+ ifelse
+ end
+ def
+ /Adobe-Korea1 4 dict dup begin
+ /Serif/HYSMyeongJo-Medium def
+ /SansSerif/HYGoThic-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-GB1 4 dict dup begin
+ /Serif/STSong-Light def
+ /SansSerif/STHeiti-Regular def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-CNS1 4 dict dup begin
+ /Serif/MKai-Medium def
+ /SansSerif/MHei-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+end
+def
+Level2?{currentglobal true setglobal}if
+/ct_BoldRomanWidthProc
+ {
+ stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
+ 0 0
+ }bind def
+/ct_Type0WidthProc
+ {
+ dup stringwidth 0 0 moveto
+ 2 index true charpath pathbbox
+ 0 -1
+ 7 index 2 div .88
+ setcachedevice2
+ pop
+ 0 0
+ }bind def
+/ct_Type0WMode1WidthProc
+ {
+ dup stringwidth
+ pop 2 div neg -0.88
+ 2 copy
+ moveto
+ 0 -1
+ 5 -1 roll true charpath pathbbox
+ setcachedevice
+ }bind def
+/cHexEncoding
+[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+/ct_BoldBaseFont
+ 11 dict begin
+ /FontType 3 def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /Encoding cHexEncoding def
+ /_setwidthProc/ct_BoldRomanWidthProc load def
+ /_bcstr1 1 string def
+ /BuildChar
+ {
+ exch begin
+ _basefont setfont
+ _bcstr1 dup 0 4 -1 roll put
+ dup
+ _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+systemdict/composefont known
+{
+/ct_DefineIdentity-H
+{
+ /Identity-H/CMap resourcestatus
+ {
+ pop pop
+ }
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+}
+def
+/ct_BoldBaseCIDFont
+ 11 dict begin
+ /CIDFontType 1 def
+ /CIDFontName/ct_BoldBaseCIDFont def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /_setwidthProc/ct_Type0WidthProc load def
+ /_bcstr2 2 string def
+ /BuildGlyph
+ {
+ exch begin
+ _basefont setfont
+ _bcstr2 1 2 index 256 mod put
+ _bcstr2 0 3 -1 roll 256 idiv put
+ _bcstr2 dup _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+}if
+Level2?{setglobal}if
+/ct_CopyFont{
+ {
+ 1 index/FID ne 2 index/UniqueID ne and
+ {def}{pop pop}ifelse
+ }forall
+}bind def
+/ct_Type0CopyFont
+{
+ exch
+ dup length dict
+ begin
+ ct_CopyFont
+ [
+ exch
+ FDepVector
+ {
+ dup/FontType get 0 eq
+ {
+ 1 index ct_Type0CopyFont
+ /_ctType0 exch definefont
+ }
+ {
+ /_ctBaseFont exch
+ 2 index exec
+ }
+ ifelse
+ exch
+ }
+ forall
+ pop
+ ]
+ /FDepVector exch def
+ currentdict
+ end
+}bind def
+/ct_MakeBoldFont
+{
+ dup/ct_SyntheticBold known
+ {
+ dup length 3 add dict begin
+ ct_CopyFont
+ /ct_StrokeWidth .03 0 FontMatrix idtransform pop def
+ /ct_SyntheticBold true def
+ currentdict
+ end
+ definefont
+ }
+ {
+ dup dup length 3 add dict
+ begin
+ ct_CopyFont
+ /PaintType 2 def
+ /StrokeWidth .03 0 FontMatrix idtransform pop def
+ /dummybold currentdict
+ end
+ definefont
+ dup/FontType get dup 9 ge exch 11 le and
+ {
+ ct_BoldBaseCIDFont
+ dup length 3 add dict copy begin
+ dup/CIDSystemInfo get/CIDSystemInfo exch def
+ ct_DefineIdentity-H
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefont exch def
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefonto exch def
+ currentdict
+ end
+ /CIDFont defineresource
+ }
+ {
+ ct_BoldBaseFont
+ dup length 3 add dict copy begin
+ /_basefont exch def
+ /_basefonto exch def
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+}bind def
+/ct_MakeBold{
+ 1 index
+ 1 index
+ findfont
+ currentglobal 5 1 roll
+ dup gcheck setglobal
+ dup
+ /FontType get 0 eq
+ {
+ dup/WMode known{dup/WMode get 1 eq}{false}ifelse
+ version length 4 ge
+ and
+ {version 0 4 getinterval cvi 2015 ge}
+ {true}
+ ifelse
+ {/ct_Type0WidthProc}
+ {/ct_Type0WMode1WidthProc}
+ ifelse
+ ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
+ {ct_MakeBoldFont}ct_Type0CopyFont definefont
+ }
+ {
+ dup/_fauxfont known not 1 index/SubstMaster known not and
+ {
+ ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
+ ct_MakeBoldFont
+ }
+ {
+ 2 index 2 index eq
+ {exch pop }
+ {
+ dup length dict begin
+ ct_CopyFont
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ pop pop pop
+ setglobal
+}bind def
+/?str1 256 string def
+/?set
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound false def
+ /$fontname 1 index def
+ /$doSmartSub false def
+ end
+ dup
+ findfont
+ $SubstituteFont
+ begin
+ $substituteFound
+ {false}
+ {
+ dup/FontName known
+ {
+ dup/FontName get $fontname eq
+ 1 index/DistillerFauxFont known not and
+ /currentdistillerparams where
+ {pop false 2 index isWidthsOnlyFont not and}
+ if
+ }
+ {false}
+ ifelse
+ }
+ ifelse
+ exch pop
+ /$doSmartSub true def
+ end
+ {
+ 5 1 roll pop pop pop pop
+ findfont
+ }
+ {
+ 1 index
+ findfont
+ dup/FontType get 3 eq
+ {
+ 6 1 roll pop pop pop pop pop false
+ }
+ {pop true}
+ ifelse
+ {
+ $SubstituteFont
+ begin
+ pop pop
+ /$styleArray 1 index def
+ /$regOrdering 2 index def
+ pop pop
+ 0 1 $styleArray length 1 sub
+ {
+ $styleArray exch get
+ ct_StyleDicts $regOrdering
+ 2 copy known
+ {
+ get
+ exch 2 copy known not
+ {pop/Default}
+ if
+ get
+ dup type/nametype eq
+ {
+ ?str1 cvs length dup 1 add exch
+ ?str1 exch(-)putinterval
+ exch dup length exch ?str1 exch 3 index exch putinterval
+ add ?str1 exch 0 exch getinterval cvn
+ }
+ {
+ pop pop/Unknown
+ }
+ ifelse
+ }
+ {
+ pop pop pop pop/Unknown
+ }
+ ifelse
+ }
+ for
+ end
+ findfont
+ }if
+ }
+ ifelse
+ currentglobal false setglobal 3 1 roll
+ null copyfont definefont pop
+ setglobal
+ }bind def
+setpacking
+userdict/$SubstituteFont 25 dict put
+1 dict
+ begin
+ /SubstituteFont
+ dup $error exch 2 copy known
+ {get}
+ {pop pop{pop/Courier}bind}
+ ifelse def
+ /currentdistillerparams where dup
+ {
+ pop pop
+ currentdistillerparams/CannotEmbedFontPolicy 2 copy known
+ {get/Error eq}
+ {pop pop false}
+ ifelse
+ }
+ if not
+ {
+ countdictstack array dictstack 0 get
+ begin
+ userdict
+ begin
+ $SubstituteFont
+ begin
+ /$str 128 string def
+ /$fontpat 128 string def
+ /$slen 0 def
+ /$sname null def
+ /$match false def
+ /$fontname null def
+ /$substituteFound false def
+ /$inVMIndex null def
+ /$doSmartSub true def
+ /$depth 0 def
+ /$fontname null def
+ /$italicangle 26.5 def
+ /$dstack null def
+ /$Strategies 10 dict dup
+ begin
+ /$Type3Underprint
+ {
+ currentglobal exch false setglobal
+ 11 dict
+ begin
+ /UseFont exch
+ $WMode 0 ne
+ {
+ dup length dict copy
+ dup/WMode $WMode put
+ /UseFont exch definefont
+ }
+ if def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /FontType 3 def
+ /FontMatrix[.001 0 0 .001 0 0]def
+ /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
+ /FontBBox[0 0 0 0]def
+ /CCInfo 7 dict dup
+ begin
+ /cc null def
+ /x 0 def
+ /y 0 def
+ end def
+ /BuildChar
+ {
+ exch
+ begin
+ CCInfo
+ begin
+ 1 string dup 0 3 index put exch pop
+ /cc exch def
+ UseFont 1000 scalefont setfont
+ cc stringwidth/y exch def/x exch def
+ x y setcharwidth
+ $SubstituteFont/$Strategy get/$Underprint get exec
+ 0 0 moveto cc show
+ x y moveto
+ end
+ end
+ }bind def
+ currentdict
+ end
+ exch setglobal
+ }bind def
+ /$GetaTint
+ 2 dict dup
+ begin
+ /$BuildFont
+ {
+ dup/WMode known
+ {dup/WMode get}
+ {0}
+ ifelse
+ /$WMode exch def
+ $fontname exch
+ dup/FontName known
+ {
+ dup/FontName get
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ exch
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index/FontName get known
+ {
+ pop
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index get
+ null copyfont
+ }
+ {$deepcopyfont}
+ ifelse
+ exch 1 index exch/FontBasedOn exch put
+ dup/FontName $fontname dup type/stringtype eq{cvn}if put
+ definefont
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ begin
+ dup/FontBasedOn get 1 index def
+ end
+ }bind def
+ /$Underprint
+ {
+ gsave
+ x abs y abs gt
+ {/y 1000 def}
+ {/x -1000 def 500 120 translate}
+ ifelse
+ Level2?
+ {
+ [/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
+ setcolorspace
+ }
+ {0 setgray}
+ ifelse
+ 10 setlinewidth
+ x .8 mul
+ [7 3]
+ {
+ y mul 8 div 120 sub x 10 div exch moveto
+ 0 y 4 div neg rlineto
+ dup 0 rlineto
+ 0 y 4 div rlineto
+ closepath
+ gsave
+ Level2?
+ {.2 setcolor}
+ {.8 setgray}
+ ifelse
+ fill grestore
+ stroke
+ }
+ forall
+ pop
+ grestore
+ }bind def
+ end def
+ /$Oblique
+ 1 dict dup
+ begin
+ /$BuildFont
+ {
+ currentglobal exch dup gcheck setglobal
+ null copyfont
+ begin
+ /FontBasedOn
+ currentdict/FontName known
+ {
+ FontName
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /currentdistillerparams where
+ {pop}
+ {
+ /FontInfo currentdict/FontInfo known
+ {FontInfo null copyfont}
+ {2 dict}
+ ifelse
+ dup
+ begin
+ /ItalicAngle $italicangle def
+ /FontMatrix FontMatrix
+ [1 0 ItalicAngle dup sin exch cos div 1 0 0]
+ matrix concatmatrix readonly
+ end
+ 4 2 roll def
+ def
+ }
+ ifelse
+ FontName currentdict
+ end
+ definefont
+ exch setglobal
+ }bind def
+ end def
+ /$None
+ 1 dict dup
+ begin
+ /$BuildFont{}bind def
+ end def
+ end def
+ /$Oblique SetSubstituteStrategy
+ /$findfontByEnum
+ {
+ dup type/stringtype eq{cvn}if
+ dup/$fontname exch def
+ $sname null eq
+ {$str cvs dup length $slen sub $slen getinterval}
+ {pop $sname}
+ ifelse
+ $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
+ /$match false def
+ $SubstituteFont/$dstack countdictstack array dictstack put
+ mark
+ {
+ $fontpat 0 $slen 7 add getinterval
+ {/$match exch def exit}
+ $str filenameforall
+ }
+ stopped
+ {
+ cleardictstack
+ currentdict
+ true
+ $SubstituteFont/$dstack get
+ {
+ exch
+ {
+ 1 index eq
+ {pop false}
+ {true}
+ ifelse
+ }
+ {begin false}
+ ifelse
+ }
+ forall
+ pop
+ }
+ if
+ cleartomark
+ /$slen 0 def
+ $match false ne
+ {$match(fonts/)anchorsearch pop pop cvn}
+ {/Courier}
+ ifelse
+ }bind def
+ /$ROS 1 dict dup
+ begin
+ /Adobe 4 dict dup
+ begin
+ /Japan1 [/Ryumin-Light/HeiseiMin-W3
+ /GothicBBB-Medium/HeiseiKakuGo-W5
+ /HeiseiMaruGo-W4/Jun101-Light]def
+ /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
+ /GB1 [/STSong-Light/STHeiti-Regular]def
+ /CNS1 [/MKai-Medium/MHei-Medium]def
+ end def
+ end def
+ /$cmapname null def
+ /$deepcopyfont
+ {
+ dup/FontType get 0 eq
+ {
+ 1 dict dup/FontName/copied put copyfont
+ begin
+ /FDepVector FDepVector copyarray
+ 0 1 2 index length 1 sub
+ {
+ 2 copy get $deepcopyfont
+ dup/FontName/copied put
+ /copied exch definefont
+ 3 copy put pop pop
+ }
+ for
+ def
+ currentdict
+ end
+ }
+ {$Strategies/$Type3Underprint get exec}
+ ifelse
+ }bind def
+ /$buildfontname
+ {
+ dup/CIDFont findresource/CIDSystemInfo get
+ begin
+ Registry length Ordering length Supplement 8 string cvs
+ 3 copy length 2 add add add string
+ dup 5 1 roll dup 0 Registry putinterval
+ dup 4 index(-)putinterval
+ dup 4 index 1 add Ordering putinterval
+ 4 2 roll add 1 add 2 copy(-)putinterval
+ end
+ 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
+ anchorsearch
+ {pop pop 3 2 roll putinterval cvn/$cmapname exch def}
+ {pop pop pop pop pop}
+ ifelse
+ length
+ $str 1 index(-)putinterval 1 add
+ $str 1 index $cmapname $fontpat cvs putinterval
+ $cmapname length add
+ $str exch 0 exch getinterval cvn
+ }bind def
+ /$findfontByROS
+ {
+ /$fontname exch def
+ $ROS Registry 2 copy known
+ {
+ get Ordering 2 copy known
+ {get}
+ {pop pop[]}
+ ifelse
+ }
+ {pop pop[]}
+ ifelse
+ false exch
+ {
+ dup/CIDFont resourcestatus
+ {
+ pop pop
+ save
+ 1 index/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get}
+ {false}
+ ifelse
+ exch pop
+ exch restore
+ {pop}
+ {exch pop true exit}
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ {$str cvs $buildfontname}
+ {
+ false(*)
+ {
+ save exch
+ dup/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get not}
+ {true}
+ ifelse
+ exch/CIDSystemInfo get
+ dup/Registry get Registry eq
+ exch/Ordering get Ordering eq and and
+ {exch restore exch pop true exit}
+ {pop restore}
+ ifelse
+ }
+ $str/CIDFont resourceforall
+ {$buildfontname}
+ {$fontname $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }bind def
+ end
+ end
+ currentdict/$error known currentdict/languagelevel known and dup
+ {pop $error/SubstituteFont known}
+ if
+ dup
+ {$error}
+ {Adobe_CoolType_Core}
+ ifelse
+ begin
+ {
+ /SubstituteFont
+ /CMap/Category resourcestatus
+ {
+ pop pop
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {
+ $sname null eq
+ {dup $str cvs dup length $slen sub $slen getinterval cvn}
+ {$sname}
+ ifelse
+ Adobe_CoolType_Data/InVMFontsByCMap get
+ 1 index 2 copy known
+ {
+ get
+ false exch
+ {
+ pop
+ currentglobal
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ {
+ FontDirectory 1 index known
+ {exch pop true exit}
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ forall
+ }
+ {pop pop false}
+ ifelse
+ {
+ exch pop exch pop
+ }
+ {
+ dup/CMap resourcestatus
+ {
+ pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ }
+ {
+ 128 string cvs
+ dup(-)search
+ {
+ 3 1 roll search
+ {
+ 3 1 roll pop
+ {dup cvi}
+ stopped
+ {pop pop pop pop pop $findfontByEnum}
+ {
+ 4 2 roll pop pop
+ exch length
+ exch
+ 2 index length
+ 2 index
+ sub
+ exch 1 sub -1 0
+ {
+ $str cvs dup length
+ 4 index
+ 0
+ 4 index
+ 4 3 roll add
+ getinterval
+ exch 1 index exch 3 index exch
+ putinterval
+ dup/CMap resourcestatus
+ {
+ pop pop
+ 4 1 roll pop pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ true exit
+ }
+ {pop}
+ ifelse
+ }
+ for
+ dup type/booleantype eq
+ {pop}
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ {pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ {//SubstituteFont exec}
+ ifelse
+ /$slen 0 def
+ end
+ }
+ }
+ {
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {$findfontByEnum}
+ {//SubstituteFont exec}
+ ifelse
+ end
+ }
+ }
+ ifelse
+ bind readonly def
+ Adobe_CoolType_Core/scfindfont/systemfindfont load put
+ }
+ {
+ /scfindfont
+ {
+ $SubstituteFont
+ begin
+ dup systemfindfont
+ dup/FontName known
+ {dup/FontName get dup 3 index ne}
+ {/noname true}
+ ifelse
+ dup
+ {
+ /$origfontnamefound 2 index def
+ /$origfontname 4 index def/$substituteFound true def
+ }
+ if
+ exch pop
+ {
+ $slen 0 gt
+ $sname null ne
+ 3 index length $slen gt or and
+ {
+ pop dup $findfontByEnum findfont
+ dup maxlength 1 add dict
+ begin
+ {1 index/FID eq{pop pop}{def}ifelse}
+ forall
+ currentdict
+ end
+ definefont
+ dup/FontName known{dup/FontName get}{null}ifelse
+ $origfontnamefound ne
+ {
+ $origfontname $str cvs print
+ ( substitution revised, using )print
+ dup/FontName known
+ {dup/FontName get}{(unspecified font)}
+ ifelse
+ $str cvs print(.\n)print
+ }
+ if
+ }
+ {exch pop}
+ ifelse
+ }
+ {exch pop}
+ ifelse
+ end
+ }bind def
+ }
+ ifelse
+ end
+ end
+ Adobe_CoolType_Core_Defined not
+ {
+ Adobe_CoolType_Core/findfont
+ {
+ $SubstituteFont
+ begin
+ $depth 0 eq
+ {
+ /$fontname 1 index dup type/stringtype ne{$str cvs}if def
+ /$substituteFound false def
+ }
+ if
+ /$depth $depth 1 add def
+ end
+ scfindfont
+ $SubstituteFont
+ begin
+ /$depth $depth 1 sub def
+ $substituteFound $depth 0 eq and
+ {
+ $inVMIndex null ne
+ {dup $inVMIndex $AddInVMFont}
+ if
+ $doSmartSub
+ {
+ currentdict/$Strategy known
+ {$Strategy/$BuildFont get exec}
+ if
+ }
+ if
+ }
+ if
+ end
+ }bind put
+ }
+ if
+ }
+ if
+ end
+/$AddInVMFont
+ {
+ exch/FontName 2 copy known
+ {
+ get
+ 1 dict dup begin exch 1 index gcheck def end exch
+ Adobe_CoolType_Data/InVMFontsByCMap get exch
+ $DictAdd
+ }
+ {pop pop pop}
+ ifelse
+ }bind def
+/$DictAdd
+ {
+ 2 copy known not
+ {2 copy 4 index length dict put}
+ if
+ Level2? not
+ {
+ 2 copy get dup maxlength exch length 4 index length add lt
+ 2 copy get dup length 4 index length add exch maxlength 1 index lt
+ {
+ 2 mul dict
+ begin
+ 2 copy get{forall}def
+ 2 copy currentdict put
+ end
+ }
+ {pop}
+ ifelse
+ }
+ if
+ get
+ begin
+ {def}
+ forall
+ end
+ }bind def
+end
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
+%%Version: 1.23 0
+systemdict/languagelevel known dup
+ {currentglobal false setglobal}
+ {false}
+ifelse
+exch
+userdict/Adobe_CoolType_Utility 2 copy known
+ {2 copy get dup maxlength 27 add dict copy}
+ {27 dict}
+ifelse put
+Adobe_CoolType_Utility
+ begin
+ /@eexecStartData
+ <BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
+ 118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
+ 4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
+ /@recognizeCIDFont null def
+ /ct_Level2? exch def
+ /ct_Clone? 1183615869 internaldict dup
+ /CCRun known not
+ exch/eCCRun known not
+ ct_Level2? and or def
+ct_Level2?
+ {globaldict begin currentglobal true setglobal}
+if
+ /ct_AddStdCIDMap
+ ct_Level2?
+ {{
+ mark
+ Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
+ {
+ ((Hex)57 StartData
+ 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
+ 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
+ d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
+ cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
+ }
+ stopped
+ {
+ cleartomark
+ Adobe_CoolType_Utility/@recognizeCIDFont get
+ countdictstack dup array dictstack
+ exch 1 sub -1 0
+ {
+ 2 copy get 3 index eq
+ {1 index length exch sub 1 sub{end}repeat exit}
+ {pop}
+ ifelse
+ }
+ for
+ pop pop
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }
+ {cleartomark}
+ ifelse
+ }}
+ {{
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }}
+ ifelse bind def
+userdict/cid_extensions known
+dup{cid_extensions/cid_UpdateDB known and}if
+ {
+ cid_extensions
+ begin
+ /cid_GetCIDSystemInfo
+ {
+ 1 index type/stringtype eq
+ {exch cvn exch}
+ if
+ cid_extensions
+ begin
+ dup load 2 index known
+ {
+ 2 copy
+ cid_GetStatusInfo
+ dup null ne
+ {
+ 1 index load
+ 3 index get
+ dup null eq
+ {pop pop cid_UpdateDB}
+ {
+ exch
+ 1 index/Created get eq
+ {exch pop exch pop}
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ ifelse
+ }
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ {cid_UpdateDB}
+ ifelse
+ end
+ }bind def
+ end
+ }
+if
+ct_Level2?
+ {end setglobal}
+if
+ /ct_UseNativeCapability? systemdict/composefont known def
+ /ct_MakeOCF 35 dict def
+ /ct_Vars 25 dict def
+ /ct_GlyphDirProcs 6 dict def
+ /ct_BuildCharDict 15 dict dup
+ begin
+ /charcode 2 string def
+ /dst_string 1500 string def
+ /nullstring()def
+ /usewidths? true def
+ end def
+ ct_Level2?{setglobal}{pop}ifelse
+ ct_GlyphDirProcs
+ begin
+ /GetGlyphDirectory
+ {
+ systemdict/languagelevel known
+ {pop/CIDFont findresource/GlyphDirectory get}
+ {
+ 1 index/CIDFont findresource/GlyphDirectory
+ get dup type/dicttype eq
+ {
+ dup dup maxlength exch length sub 2 index lt
+ {
+ dup length 2 index add dict copy 2 index
+ /CIDFont findresource/GlyphDirectory 2 index put
+ }
+ if
+ }
+ if
+ exch pop exch pop
+ }
+ ifelse
+ +
+ }def
+ /+
+ {
+ systemdict/languagelevel known
+ {
+ currentglobal false setglobal
+ 3 dict begin
+ /vm exch def
+ }
+ {1 dict begin}
+ ifelse
+ /$ exch def
+ systemdict/languagelevel known
+ {
+ vm setglobal
+ /gvm currentglobal def
+ $ gcheck setglobal
+ }
+ if
+ ?{$ begin}if
+ }def
+ /?{$ type/dicttype eq}def
+ /|{
+ userdict/Adobe_CoolType_Data known
+ {
+ Adobe_CoolType_Data/AddWidths? known
+ {
+ currentdict Adobe_CoolType_Data
+ begin
+ begin
+ AddWidths?
+ {
+ Adobe_CoolType_Data/CC 3 index put
+ ?{def}{$ 3 1 roll put}ifelse
+ CC charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore
+ currentfont/Widths get exch CC exch put
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ end
+ end
+ }
+ {?{def}{$ 3 1 roll put}ifelse} ifelse
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ }def
+ /!
+ {
+ ?{end}if
+ systemdict/languagelevel known
+ {gvm setglobal}
+ if
+ end
+ }def
+ /:{string currentfile exch readstring pop}executeonly def
+ end
+ ct_MakeOCF
+ begin
+ /ct_cHexEncoding
+ [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+ /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+ /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+ /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+ /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+ /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+ /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+ /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+ /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+ /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+ /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+ /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+ /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+ /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+ /ct_CID_STR_SIZE 8000 def
+ /ct_mkocfStr100 100 string def
+ /ct_defaultFontMtx[.001 0 0 .001 0 0]def
+ /ct_1000Mtx[1000 0 0 1000 0 0]def
+ /ct_raise{exch cvx exch errordict exch get exec stop}bind def
+ /ct_reraise
+ {cvx $error/errorname get(Error: )print dup( )cvs print
+ errordict exch get exec stop
+ }bind def
+ /ct_cvnsi
+ {
+ 1 index add 1 sub 1 exch 0 4 1 roll
+ {
+ 2 index exch get
+ exch 8 bitshift
+ add
+ }
+ for
+ exch pop
+ }bind def
+ /ct_GetInterval
+ {
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /dst_index 0 def
+ dup dst_string length gt
+ {dup string/dst_string exch def}
+ if
+ 1 index ct_CID_STR_SIZE idiv
+ /arrayIndex exch def
+ 2 index arrayIndex get
+ 2 index
+ arrayIndex ct_CID_STR_SIZE mul
+ sub
+ {
+ dup 3 index add 2 index length le
+ {
+ 2 index getinterval
+ dst_string dst_index 2 index putinterval
+ length dst_index add/dst_index exch def
+ exit
+ }
+ {
+ 1 index length 1 index sub
+ dup 4 1 roll
+ getinterval
+ dst_string dst_index 2 index putinterval
+ pop dup dst_index add/dst_index exch def
+ sub
+ /arrayIndex arrayIndex 1 add def
+ 2 index dup length arrayIndex gt
+ {arrayIndex get}
+ {
+ pop
+ exit
+ }
+ ifelse
+ 0
+ }
+ ifelse
+ }
+ loop
+ pop pop pop
+ dst_string 0 dst_index getinterval
+ end
+ }bind def
+ ct_Level2?
+ {
+ /ct_resourcestatus
+ currentglobal mark true setglobal
+ {/unknowninstancename/Category resourcestatus}
+ stopped
+ {cleartomark setglobal true}
+ {cleartomark currentglobal not exch setglobal}
+ ifelse
+ {
+ {
+ mark 3 1 roll/Category findresource
+ begin
+ ct_Vars/vm currentglobal put
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ ct_Vars/vm get setglobal
+ end
+ }
+ }
+ {{resourcestatus}}
+ ifelse bind def
+ /CIDFont/Category ct_resourcestatus
+ {pop pop}
+ {
+ currentglobal true setglobal
+ /Generic/Category findresource
+ dup length dict copy
+ dup/InstanceType/dicttype put
+ /CIDFont exch/Category defineresource pop
+ setglobal
+ }
+ ifelse
+ ct_UseNativeCapability?
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ if
+ }
+ {
+ /ct_Category 2 dict begin
+ /CIDFont 10 dict def
+ /ProcSet 2 dict def
+ currentdict
+ end
+ def
+ /defineresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ dup dup maxlength exch length eq
+ {
+ dup length 10 add dict copy
+ ct_Category 2 index 2 index put
+ }
+ if
+ 3 index 3 index put
+ pop exch pop
+ }
+ {pop pop/defineresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /findresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index 2 copy known
+ {get 3 1 roll pop pop}
+ {pop pop/findresource/undefinedresource ct_raise}
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /resourcestatus
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index known
+ exch pop exch pop
+ {
+ 0 -1 true
+ }
+ {
+ false
+ }
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /ct_resourcestatus/resourcestatus load def
+ }
+ ifelse
+ /ct_CIDInit 2 dict
+ begin
+ /ct_cidfont_stream_init
+ {
+ {
+ dup(Binary)eq
+ {
+ pop
+ null
+ currentfile
+ ct_Level2?
+ {
+ {cid_BYTE_COUNT()/SubFileDecode filter}
+ stopped
+ {pop pop pop}
+ if
+ }
+ if
+ /readstring load
+ exit
+ }
+ if
+ dup(Hex)eq
+ {
+ pop
+ currentfile
+ ct_Level2?
+ {
+ {null exch/ASCIIHexDecode filter/readstring}
+ stopped
+ {pop exch pop(>)exch/readhexstring}
+ if
+ }
+ {(>)exch/readhexstring}
+ ifelse
+ load
+ exit
+ }
+ if
+ /StartData/typecheck ct_raise
+ }
+ loop
+ cid_BYTE_COUNT ct_CID_STR_SIZE le
+ {
+ 2 copy cid_BYTE_COUNT string exch exec
+ pop
+ 1 array dup
+ 3 -1 roll
+ 0 exch put
+ }
+ {
+ cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
+ dup array exch 2 sub 0 exch 1 exch
+ {
+ 2 copy
+ 5 index
+ ct_CID_STR_SIZE
+ string
+ 6 index exec
+ pop
+ put
+ pop
+ }
+ for
+ 2 index
+ cid_BYTE_COUNT ct_CID_STR_SIZE mod string
+ 3 index exec
+ pop
+ 1 index exch
+ 1 index length 1 sub
+ exch put
+ }
+ ifelse
+ cid_CIDFONT exch/GlyphData exch put
+ 2 index null eq
+ {
+ pop pop pop
+ }
+ {
+ pop/readstring load
+ 1 string exch
+ {
+ 3 copy exec
+ pop
+ dup length 0 eq
+ {
+ pop pop pop pop pop
+ true exit
+ }
+ if
+ 4 index
+ eq
+ {
+ pop pop pop pop
+ false exit
+ }
+ if
+ }
+ loop
+ pop
+ }
+ ifelse
+ }bind def
+ /StartData
+ {
+ mark
+ {
+ currentdict
+ dup/FDArray get 0 get/FontMatrix get
+ 0 get 0.001 eq
+ {
+ dup/CDevProc known not
+ {
+ /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
+ {get}
+ {
+ pop pop
+ {pop pop pop pop pop 0 -1000 7 index 2 div 880}
+ }
+ ifelse
+ def
+ }
+ if
+ }
+ {
+ /CDevProc
+ {
+ pop pop pop pop pop
+ 0
+ 1 cid_temp/cid_CIDFONT get
+ /FDArray get 0 get
+ /FontMatrix get 0 get div
+ 7 index 2 div
+ 1 index 0.88 mul
+ }def
+ }
+ ifelse
+ /cid_temp 15 dict def
+ cid_temp
+ begin
+ /cid_CIDFONT exch def
+ 3 copy pop
+ dup/cid_BYTE_COUNT exch def 0 gt
+ {
+ ct_cidfont_stream_init
+ FDArray
+ {
+ /Private get
+ dup/SubrMapOffset known
+ {
+ begin
+ /Subrs SubrCount array def
+ Subrs
+ SubrMapOffset
+ SubrCount
+ SDBytes
+ ct_Level2?
+ {
+ currentdict dup/SubrMapOffset undef
+ dup/SubrCount undef
+ /SDBytes undef
+ }
+ if
+ end
+ /cid_SD_BYTES exch def
+ /cid_SUBR_COUNT exch def
+ /cid_SUBR_MAP_OFFSET exch def
+ /cid_SUBRS exch def
+ cid_SUBR_COUNT 0 gt
+ {
+ GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ 0 1 cid_SUBR_COUNT 1 sub
+ {
+ exch 1 index
+ 1 add
+ cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
+ GlyphData exch cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ cid_SUBRS 4 2 roll
+ GlyphData exch
+ 4 index
+ 1 index
+ sub
+ ct_GetInterval
+ dup length string copy put
+ }
+ for
+ pop
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ }
+ if
+ cleartomark pop pop
+ end
+ CIDFontName currentdict/CIDFont defineresource pop
+ end end
+ }
+ stopped
+ {cleartomark/StartData ct_reraise}
+ if
+ }bind def
+ currentdict
+ end def
+ /ct_saveCIDInit
+ {
+ /CIDInit/ProcSet ct_resourcestatus
+ {true}
+ {/CIDInitC/ProcSet ct_resourcestatus}
+ ifelse
+ {
+ pop pop
+ /CIDInit/ProcSet findresource
+ ct_UseNativeCapability?
+ {pop null}
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop}
+ ifelse
+ }
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop null}
+ ifelse
+ ct_Vars exch/ct_oldCIDInit exch put
+ }bind def
+ /ct_restoreCIDInit
+ {
+ ct_Vars/ct_oldCIDInit get dup null ne
+ {/CIDInit exch/ProcSet defineresource pop}
+ {pop}
+ ifelse
+ }bind def
+ /ct_BuildCharSetUp
+ {
+ 1 index
+ begin
+ CIDFont
+ begin
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /ct_dfCharCode exch def
+ /ct_dfDict exch def
+ CIDFirstByte ct_dfCharCode add
+ dup CIDCount ge
+ {pop 0}
+ if
+ /cid exch def
+ {
+ GlyphDirectory cid 2 copy known
+ {get}
+ {pop pop nullstring}
+ ifelse
+ dup length FDBytes sub 0 gt
+ {
+ dup
+ FDBytes 0 ne
+ {0 FDBytes ct_cvnsi}
+ {pop 0}
+ ifelse
+ /fdIndex exch def
+ dup length FDBytes sub FDBytes exch getinterval
+ /charstring exch def
+ exit
+ }
+ {
+ pop
+ cid 0 eq
+ {/charstring nullstring def exit}
+ if
+ /cid 0 def
+ }
+ ifelse
+ }
+ loop
+ }def
+ /ct_SetCacheDevice
+ {
+ 0 0 moveto
+ dup stringwidth
+ 3 -1 roll
+ true charpath
+ pathbbox
+ 0 -1000
+ 7 index 2 div 880
+ setcachedevice2
+ 0 0 moveto
+ }def
+ /ct_CloneSetCacheProc
+ {
+ 1 eq
+ {
+ stringwidth
+ pop -2 div -880
+ 0 -1000 setcharwidth
+ moveto
+ }
+ {
+ usewidths?
+ {
+ currentfont/Widths get cid
+ 2 copy known
+ {get exch pop aload pop}
+ {pop pop stringwidth}
+ ifelse
+ }
+ {stringwidth}
+ ifelse
+ setcharwidth
+ 0 0 moveto
+ }
+ ifelse
+ }def
+ /ct_Type3ShowCharString
+ {
+ ct_FDDict fdIndex 2 copy known
+ {get}
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ ct_Type1FontTemplate dup maxlength dict copy
+ begin
+ FDArray fdIndex get
+ dup/FontMatrix 2 copy known
+ {get}
+ {pop pop ct_defaultFontMtx}
+ ifelse
+ /FontMatrix exch dup length array copy def
+ /Private get
+ /Private exch def
+ /Widths rootfont/Widths get def
+ /CharStrings 1 dict dup/.notdef
+ <d841272cf18f54fc13>dup length string copy put def
+ currentdict
+ end
+ /ct_Type1Font exch definefont
+ dup 5 1 roll put
+ setglobal
+ }
+ ifelse
+ dup/CharStrings get 1 index/Encoding get
+ ct_dfCharCode get charstring put
+ rootfont/WMode 2 copy known
+ {get}
+ {pop pop 0}
+ ifelse
+ exch
+ 1000 scalefont setfont
+ ct_str1 0 ct_dfCharCode put
+ ct_str1 exch ct_dfSetCacheProc
+ ct_SyntheticBold
+ {
+ currentpoint
+ ct_str1 show
+ newpath
+ moveto
+ ct_str1 true charpath
+ ct_StrokeWidth setlinewidth
+ stroke
+ }
+ {ct_str1 show}
+ ifelse
+ }def
+ /ct_Type4ShowCharString
+ {
+ ct_dfDict ct_dfCharCode charstring
+ FDArray fdIndex get
+ dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
+ {ct_1000Mtx matrix concatmatrix concat}
+ {pop}
+ ifelse
+ /Private get
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {
+ ct_dfDict/Private
+ 3 -1 roll
+ {put}
+ 1183615869 internaldict/superexec get exec
+ }
+ if
+ 1183615869 internaldict
+ Adobe_CoolType_Utility/ct_Level2? get
+ {1 index}
+ {3 index/Private get mark 6 1 roll}
+ ifelse
+ dup/RunInt known
+ {/RunInt get}
+ {pop/CCRun}
+ ifelse
+ get exec
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {cleartomark}
+ if
+ }bind def
+ /ct_BuildCharIncremental
+ {
+ {
+ Adobe_CoolType_Utility/ct_MakeOCF get begin
+ ct_BuildCharSetUp
+ ct_ShowCharString
+ }
+ stopped
+ {stop}
+ if
+ end
+ end
+ end
+ end
+ }bind def
+ /BaseFontNameStr(BF00)def
+ /ct_Type1FontTemplate 14 dict
+ begin
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /PaintType 0 def
+ currentdict
+ end def
+ /BaseFontTemplate 11 dict
+ begin
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /BuildChar/ct_BuildCharIncremental load def
+ ct_Clone?
+ {
+ /FontType 3 def
+ /ct_ShowCharString/ct_Type3ShowCharString load def
+ /ct_dfSetCacheProc/ct_CloneSetCacheProc load def
+ /ct_SyntheticBold false def
+ /ct_StrokeWidth 1 def
+ }
+ {
+ /FontType 4 def
+ /Private 1 dict dup/lenIV 4 put def
+ /CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
+ /PaintType 0 def
+ /ct_ShowCharString/ct_Type4ShowCharString load def
+ }
+ ifelse
+ /ct_str1 1 string def
+ currentdict
+ end def
+ /BaseFontDictSize BaseFontTemplate length 5 add def
+ /ct_matrixeq
+ {
+ true 0 1 5
+ {
+ dup 4 index exch get exch 3 index exch get eq and
+ dup not
+ {exit}
+ if
+ }
+ for
+ exch pop exch pop
+ }bind def
+ /ct_makeocf
+ {
+ 15 dict
+ begin
+ exch/WMode exch def
+ exch/FontName exch def
+ /FontType 0 def
+ /FMapType 2 def
+ dup/FontMatrix known
+ {dup/FontMatrix get/FontMatrix exch def}
+ {/FontMatrix matrix def}
+ ifelse
+ /bfCount 1 index/CIDCount get 256 idiv 1 add
+ dup 256 gt{pop 256}if def
+ /Encoding
+ 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
+ bfCount 1 255{2 copy bfCount put pop}for
+ def
+ /FDepVector bfCount dup 256 lt{1 add}if array def
+ BaseFontTemplate BaseFontDictSize dict copy
+ begin
+ /CIDFont exch def
+ CIDFont/FontBBox known
+ {CIDFont/FontBBox get/FontBBox exch def}
+ if
+ CIDFont/CDevProc known
+ {CIDFont/CDevProc get/CDevProc exch def}
+ if
+ currentdict
+ end
+ BaseFontNameStr 3(0)putinterval
+ 0 1 bfCount dup 256 eq{1 sub}if
+ {
+ FDepVector exch
+ 2 index BaseFontDictSize dict copy
+ begin
+ dup/CIDFirstByte exch 256 mul def
+ FontType 3 eq
+ {/ct_FDDict 2 dict def}
+ if
+ currentdict
+ end
+ 1 index 16
+ BaseFontNameStr 2 2 getinterval cvrs pop
+ BaseFontNameStr exch definefont
+ put
+ }
+ for
+ ct_Clone?
+ {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
+ if
+ FontName
+ currentdict
+ end
+ definefont
+ ct_Clone?
+ {
+ gsave
+ dup 1000 scalefont setfont
+ ct_BuildCharDict
+ begin
+ /usewidths? false def
+ currentfont/Widths get
+ begin
+ exch/CIDFont get/GlyphDirectory get
+ {
+ pop
+ dup charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore def
+ }
+ forall
+ end
+ /usewidths? true def
+ end
+ grestore
+ }
+ {exch pop}
+ ifelse
+ }bind def
+ currentglobal true setglobal
+ /ct_ComposeFont
+ {
+ ct_UseNativeCapability?
+ {
+ 2 index/CMap ct_resourcestatus
+ {pop pop exch pop}
+ {
+ /CIDInit/ProcSet findresource
+ begin
+ 12 dict
+ begin
+ begincmap
+ /CMapName 3 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ exch/WMode exch def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {
+ dup length string copy
+ exch pop exch pop
+ }
+ {pop(Identity)}
+ ifelse
+ }
+ {pop (Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ 3 2 roll pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ setglobal
+ /ct_MakeIdentity
+ {
+ ct_UseNativeCapability?
+ {
+ 1 index/CMap ct_resourcestatus
+ {pop pop}
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CMapName 2 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {dup length string copy exch pop exch pop}
+ {pop(Identity)}
+ ifelse
+ }
+ {pop(Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ exch pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ currentdict readonly pop
+ end
+ end
+%%EndResource
+setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
+%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
+%%Version: 1.0 0
+userdict/ct_T42Dict 15 dict put
+ct_T42Dict begin
+/Is2015?
+{
+ version
+ cvi
+ 2015
+ ge
+}bind def
+/AllocGlyphStorage
+{
+ Is2015?
+ {
+ pop
+ }
+ {
+ {string}forall
+ }ifelse
+}bind def
+/Type42DictBegin
+{
+25 dict begin
+ /FontName exch def
+ /CharStrings 256 dict
+begin
+ /.notdef 0 def
+ currentdict
+end def
+ /Encoding exch def
+ /PaintType 0 def
+ /FontType 42 def
+ /FontMatrix[1 0 0 1 0 0]def
+ 4 array astore cvx/FontBBox exch def
+ /sfnts
+}bind def
+/Type42DictEnd
+{
+ currentdict dup/FontName get exch definefont end
+ct_T42Dict exch
+dup/FontName get exch put
+}bind def
+/RD{string currentfile exch readstring pop}executeonly def
+/PrepFor2015
+{
+Is2015?
+{
+ /GlyphDirectory
+ 16
+ dict def
+ sfnts 0 get
+ dup
+ 2 index
+ (glyx)
+ putinterval
+ 2 index
+ (locx)
+ putinterval
+ pop
+ pop
+}
+{
+ pop
+ pop
+}ifelse
+}bind def
+/AddT42Char
+{
+Is2015?
+{
+ /GlyphDirectory get
+ begin
+ def
+ end
+ pop
+ pop
+}
+{
+ /sfnts get
+ 4 index
+ get
+ 3 index
+ 2 index
+ putinterval
+ pop
+ pop
+ pop
+ pop
+}ifelse
+}bind def
+/T0AddT42Mtx2
+{
+/CIDFont findresource/Metrics2 get begin def end
+}bind def
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginFile: MMFauxFont.prc
+%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
+%%All Rights Reserved.
+userdict /ct_EuroDict 10 dict put
+ct_EuroDict begin
+/ct_CopyFont
+{
+ { 1 index /FID ne {def} {pop pop} ifelse} forall
+} def
+/ct_GetGlyphOutline
+{
+ gsave
+ initmatrix newpath
+ exch findfont dup
+ length 1 add dict
+ begin
+ ct_CopyFont
+ /Encoding Encoding dup length array copy
+ dup
+ 4 -1 roll
+ 0 exch put
+ def
+ currentdict
+ end
+ /ct_EuroFont exch definefont
+ 1000 scalefont setfont
+ 0 0 moveto
+ [
+ <00> stringwidth
+ <00> false charpath
+ pathbbox
+ [
+ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
+ grestore
+ counttomark 8 add
+}
+def
+/ct_MakeGlyphProc
+{
+ ] cvx
+ /ct_PSBuildGlyph cvx
+ ] cvx
+} def
+/ct_PSBuildGlyph
+{
+ gsave
+ 8 -1 roll pop
+ 7 1 roll
+ 6 -2 roll ct_FontMatrix transform 6 2 roll
+ 4 -2 roll ct_FontMatrix transform 4 2 roll
+ ct_FontMatrix transform
+ currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
+ dup 9 1 roll
+ {
+ currentdict /StrokeWidth 2 copy known
+ {
+ get 2 div
+ 0 ct_FontMatrix dtransform pop
+ 5 1 roll
+ 4 -1 roll 4 index sub
+ 4 1 roll
+ 3 -1 roll 4 index sub
+ 3 1 roll
+ exch 4 index add exch
+ 4 index add
+ 5 -1 roll pop
+ }
+ {
+ pop pop
+ }
+ ifelse
+ }
+ if
+ setcachedevice
+ ct_FontMatrix concat
+ ct_PSPathOps begin
+ exec
+ end
+ {
+ currentdict /StrokeWidth 2 copy known
+ { get }
+ { pop pop 0 }
+ ifelse
+ setlinewidth stroke
+ }
+ {
+ fill
+ }
+ ifelse
+ grestore
+} def
+/ct_PSPathOps 4 dict dup begin
+ /m {moveto} def
+ /l {lineto} def
+ /c {curveto} def
+ /cp {closepath} def
+end
+def
+/ct_matrix1000 [1000 0 0 1000 0 0] def
+/ct_AddGlyphProc
+{
+ 2 index findfont dup length 4 add dict
+ begin
+ ct_CopyFont
+ /CharStrings CharStrings dup length 1 add dict copy
+ begin
+ 3 1 roll def
+ currentdict
+ end
+ def
+ /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
+ /ct_PSBuildGlyph /ct_PSBuildGlyph load def
+ /ct_PSPathOps /ct_PSPathOps load def
+ currentdict
+ end
+ definefont pop
+}
+def
+systemdict /languagelevel known
+{
+ /ct_AddGlyphToPrinterFont {
+ 2 copy
+ ct_GetGlyphOutline 3 add -1 roll restore
+ ct_MakeGlyphProc
+ ct_AddGlyphProc
+ } def
+}
+{
+ /ct_AddGlyphToPrinterFont {
+ pop pop restore
+ Adobe_CTFauxDict /$$$FONTNAME get
+ /Euro
+ Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
+ ct_EuroDict exch get
+ ct_AddGlyphProc
+ } def
+} ifelse
+/AdobeSansMM
+{
+556 0 24 -19 541 703
+ {
+ 541 628 m
+ 510 669 442 703 354 703 c
+ 201 703 117 607 101 444 c
+ 50 444 l
+ 25 372 l
+ 97 372 l
+ 97 301 l
+ 49 301 l
+ 24 229 l
+ 103 229 l
+ 124 67 209 -19 350 -19 c
+ 435 -19 501 25 509 32 c
+ 509 131 l
+ 492 105 417 60 343 60 c
+ 267 60 204 127 197 229 c
+ 406 229 l
+ 430 301 l
+ 191 301 l
+ 191 372 l
+ 455 372 l
+ 479 444 l
+ 194 444 l
+ 201 531 245 624 348 624 c
+ 433 624 484 583 509 534 c
+ cp
+ 556 0 m
+ }
+ct_PSBuildGlyph
+} def
+/AdobeSerifMM
+{
+500 0 10 -12 484 692
+ {
+ 347 298 m
+ 171 298 l
+ 170 310 170 322 170 335 c
+ 170 362 l
+ 362 362 l
+ 374 403 l
+ 172 403 l
+ 184 580 244 642 308 642 c
+ 380 642 434 574 457 457 c
+ 481 462 l
+ 474 691 l
+ 449 691 l
+ 433 670 429 657 410 657 c
+ 394 657 360 692 299 692 c
+ 204 692 94 604 73 403 c
+ 22 403 l
+ 10 362 l
+ 70 362 l
+ 69 352 69 341 69 330 c
+ 69 319 69 308 70 298 c
+ 22 298 l
+ 10 257 l
+ 73 257 l
+ 97 57 216 -12 295 -12 c
+ 364 -12 427 25 484 123 c
+ 458 142 l
+ 425 101 384 37 316 37 c
+ 256 37 189 84 173 257 c
+ 335 257 l
+ cp
+ 500 0 m
+ }
+ct_PSBuildGlyph
+} def
+end
+%%EndFile
+setglobal
+Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
+{
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
+{
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
+{
+ end
+}def
+/dt
+{
+}def
+/AGMIMG_flushfilters
+{
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
+{
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
+}def
+/overprint_plate
+{
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}def
+/process_mask
+{
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
+{
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
+{
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource[
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
+{
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
+{
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
+{
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
+{
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
+{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
+{
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
+{
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ AGMIMG_&customcolorimage
+ }ifelse
+ }bdf
+}def
+/snap_to_device
+{
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
+}def
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
+}if
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2016 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
+Adobe_AGM_Image/ds gx
+[/NamespacePush pdfmark_5
+[/_objdef {Doc_Metadata} /type /stream /OBJ pdfmark_5
+[{Doc_Metadata} 56690 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xap:CreateDate="2007-08-05T16:26:14-05:00"
+ xap:ModifyDate="2007-08-05T16:26:14-05:00"
+ xap:CreatorTool="Illustrator"
+ dc:format="application/pdf"
+ pdf:Producer="Acrobat Distiller 8.1.0 (Windows)"
+ xapMM:DocumentID="uuid:a6d9db2d-35f0-4c0b-8553-a15f7ea00e3a"
+ xapMM:InstanceID="uuid:3dd6683a-c39b-45be-ad4d-0aa24729acf6">
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li
+ xapGImg:format="JPEG"
+ xapGImg:width="256"
+ xapGImg:height="232"
+ xapGImg:image="/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA6AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlPmPzZ5c8t2f1vXNQisYTXgJCS70pURxrydyK78Qcr&#xA;yZowFyNOXpNDm1MuHFEyP45nkPi8W82/85OuWe28q6cAoNBqF9uSNweECEU7FSz/ADXNZl7SPKA+&#xA;b2vZ/sWPq1E/82P6ZH9A+LyLW/PnnHXLuO61TWLmeWF1lgAcxpHIooHjjj4IjDxUDNfPNORsl7HT&#xA;dl6bBExx44gEUdrsdxJ3PxZl5S/5yF88aL6cGpMmuWKUBW5JW4CgEUW4UEkk9TIrnMnFr8kefqDp&#xA;df7JaXNZh+6l5fT/AKX9RD2jyl+enkHzDxhku/0TfEb21/xjUnavCapiO5oAWDH+XNli12OXP0nz&#xA;eK1/sxq9PuI+JHvjv9nP9Hm9CBBAINQdwRmY867FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYqhNV1bTNJsZL/U7qKzs4v7yeZgiCvQVPc9AOpyM5iIsmg24ME8shCAM&#xA;pHoHg/n3/nJeVmksfJsHpoKqdXukqx3IrDA2wHQhpPpQZq8/aB5Q+b3XZnseBUtSf80fpP6v9M8P&#xA;1LVdS1S8e91K6lvLuT7c87tI5psByYk0HbNZIkmy9xhwwxREYARiOg2QuBubriluuBNuxSyjyn+Z&#xA;XnPyqUXSNSkW0U1NhN+9tyOXJgI3qE5HqUoffLsWonD6S6vX9jabVf3kBxfzhtL59fjYez+Uv+cm&#xA;dFuvTt/M9k2nTGga9tQ01vWhJZo95UHYBeebLF2kDtMU8Vr/AGLyws4JcY/mnaXz5H/YvXtG17Rd&#xA;atBeaRew31saAyQOrhSRXi1N1ah6HfNhDJGYuJt4/UaXLglw5ImMvMI7JtDsVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdirsVdirsVdirzz8yvzo8ueTA9lHTUteoONhEwCxV3BuH34bbhaFjtsA&#xA;a5iajVxx7DeTv+yPZ/Nq/UfRi/nd/wDVHX38vufMXnHz35m833/1zWrsyhSTb2qVW3hBPSOOpA8O&#xA;Rqx7k5psuWUzcn0rQdm4dJDhxCu89T7z+B3MfrlTn23XFlbeKurgTbdcWVt4q6uBNt1xTaL0zVtU&#xA;0q7W80y7msrpNlngdo3oeoqpGx7jDGRBsbNWfT48seHJESj3EW9a8p/85LeZbEpB5itY9Wtxs1zE&#xA;BBcirVqeI9J+K7AcV92zPxdozH1bvJa/2MwZLOEnGe47x/WPmfc9o8pfmr5H80+nHp2oLHfSUA0+&#xA;6pDcciCeKqxpIQBv6ZbNli1eOfI7vE6/sLVaWzONx/nDeP7PjTLsyXUOxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KrZZYoYnlldY4o1LySOQqqqipJJ2AAwE0mMSTQ5vnv81v+ch3d7jQ/JknG&#xA;ID07jXF+0x6MtqOw7er168abMdXqdbe0Pm912L7MAVk1A90P+K/4n59Q8FklklkaWRy8jks7sSWZ&#xA;iakknqTmte4AAFDktxZN1wJtvFLq4ptuuBNt4pdXFNt1wJtvFLq4ptekbtuBt45EmmyEDJWWBQN9&#xA;z+GQMnIjgHV9L/8AOOnmq51Ty9faTe3Dz3OmSo0LSsXYW8q0RAWrsjRt8qjN32XmMomJ6Plntv2b&#xA;HDnhlgBGOQb1/OHP5gh65m0eIdirsVdirsVdirsVdirsVdirsVdirsVdirsVQmratpuj6bcanqdw&#xA;lrY2qGSeeQ0VVG3bcknYAbk7DfIykIizybcOGeWYhAXI8g+VPza/OzU/OMkmlabysvLaN/dVpLc8&#xA;TVXm8F2qqDau5qaU02o1RybDaL6T2L2DDSjjn6sv2R9363mGYj0beKXVwJtuuKbbxS6uBNt1xTbe&#xA;KXVwJtuuKbXpG7n4R9PbATTZDGZckSkCr1+I5UZOZDABz3VMi3uxV6H+RPmD9EfmDaQu/G31RGsp&#xA;a9OT/FF9PqKo+nMzQZODKPPb8fF5b2w0Xj6GRA9WM8X6/sJPwfVmdK+LuxV2KuxV2KuxV2KuxV2K&#xA;uxV2KuxV2KuxVL9f1/SdA0m41bVrhbaxtl5SSN38FUdWZjsAOuQyZBAWW/T6eeaYhAXIvkL80/zY&#xA;1fz1qIVgbTQ7VibHTwe+49aamzSEGngo2HVi2lz6g5D5Pp3ZHZGPRw78h5y/QPL7+vSoNmO7p2Ku&#xA;rgTbdcU23il1cC23XFlbeKurgTbYNTTviyBtExWveT/gcrlPuc3FpuskSAAKDYDoMqcwCnYpdiqr&#xA;a2l1d3CW9pC9xcSGkcMSl3Y+CqoJOEC2vJkjCJlIiMR1OwepeTPyF89XV1baheSR6GkMiTRNL+8u&#xA;AyEMrCJDtQj9plOZ+Hs/JLc+l47tX2x0UIyxwBzWCDW0fmf0AvpjOhfI3Yq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FUBr2u6VoOkXOr6rOLewtF5zSnfvQKANyzEgADqchOYiLLdp9PPNMQgLkXx7+aX5p6t&#xA;561bm/K10a2Y/o/T67Dt6klNmkYfd0HcnSZ85yGzyfT+yOysekh35DzP6B5MIyl27sVdXAm264pt&#xA;vFLq4FtuuKbbxZOxVfGjyNxUV8TkSabMcDM0EdDAsYr1bucolK3aYsAh71TIt7sVVIIJ7iZIII2m&#xA;mkIWOKNSzMT0AUbk4WE5xiDKRoDqXr3kj/nHbWNREd55mmOmWhows4uLXLA/zE1SL6anxAzZafs2&#xA;Ut5+kfb+x4btb23xYrhph4kv5x+n9cvsHm9z8s+TPLPlm2+r6NYR21RSSanKZ/8AXkarn5Vp4ZuM&#xA;OnhjHpD51r+1NRq5cWaZl5dB7hyTrLnXuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KobU9TsNL0+41HU&#xA;J1trK1jaW4nfoqKKk7bn5Dc5GUhEWeTZixSySEYi5Hk+Pfzd/NfUPPWr8Ii9v5es3P6PsiacjuPX&#xA;mA6yMDsOiDYdWLaXUag5D5PpnY/ZEdJDffJLmf0Dy+/5VAMody6uBLdcU23il2KurgTbdcU23il2&#xA;KqsELynwUdWyEpU5GDCZnyTCONUXiooMxybdvDGIiguwM3YqzDyF+V/mTzlcA2cf1bTENJ9SmB9M&#xA;eIQdZG9h9JGZOn0s8p25d7ou2faDT6CPqPFk6RHP49w/At9J+R/yz8r+T4B+j4PW1BlpNqM4DTNX&#xA;qFNKIv8Akr9Nc32n0cMXLc975L2t2/qddL94ah0iOX7T5n4UyzMp0rsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVad0RGd2CooJZiaAAdSTiSkC3yb+ef5wS+bNQbQ9Gl4+WrN95FqDdzL/uxv+K1P2F/2&#xA;R7BdPqdRxmh9L6H2F2ONPHxJj97L/Yju9/f8vfybMV6JuuBNuxZN4q7Arq4ptuuKbbxS7AqvbW7S&#xA;mp2QdT45Cc6cvTac5DZ+lMVVVUKooB0GY5Nu4jEAUG8DJ2KHtX5YfkLPfelrHmyNoLM0e30o1SWQ&#xA;dQZu6L/k/aPenfaaTs8y9U9h3Pn/ALQe2Mcd4tKbn1n0H9XvPny976AtLS1s7aO1tYkgtoVCRQxq&#xA;FRVHQKo2AzeRiIihyfMsmSU5GUiTI8yVXCwdirsVdirsVdirsVdirsVdirsVdirsVdirsVfPH/OR&#xA;X5u/33krQLk13TXrqI/9OiuP+StP9Q/trmt1eo/hHxey9neyeWfIP6o/336vn3F881zXvZ27FLsV&#xA;dirdcCbbqMU23il2KurgTaItbczNU7RjqfH2yuc6cvS6c5DZ+lMwAoAAoB0GY7uwABQdgSq2trc3&#xA;dzFbW0TTXEzCOGGMFmZmNAqgdScIFsMmSMImUjURzL6R/Kj8k7XQBDrXmFFuNb2eC1NGitT1B2qH&#xA;lH83QdvHN5o9Bw+qf1d3c+T+0ftXLU3hwHhw9T1l+qPl169z1nNo8S7FXYq7FXYq7FXYq7FXYq7F&#xA;XYq7FXYq7FXYq7FXmf54fmonkvQhZadIp8x6kjCzXZjBF9lrhl9ukdereIUjMXVZ+AUOZd52J2V+&#xA;ZycUv7uPPzPd+vy974+d3kdndi7uSzMxqSTuSSc1D6MBS3FLeKurgTbeKXYpdirdTgW264srV7W3&#xA;MzeCD7R/hkJzpytNpzkP9FNFVVUKooB0GYpNu9jERFBvAyRGn6ffajfQ2NjC1xd3DCOGGMVZmOGM&#xA;STQas+eGKBnM8MY8y+ovyp/KOx8oWwv7/hdeYJl+OYCqQKRvHFXv/M/fp069Bo9EMfql9X3PjvtF&#xA;7Sz10uCFxwDp/O8z+gPRc2DyrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSTzn5t0ryn5cu9&#xA;c1JqQWy/u4h9uWVto4k6/EzfcNzsDleXIIRsuVo9JPUZBjjzP2DvfD/mnzPqvmbX7zXNUcPeXj8m&#xA;CiiIoHFI0HZUUBR38anNJORkbL6fpdPHBjGOH0hK65Fybdil2KuxV2Kt1wJtuuKbdilVt4Gmk4jY&#xA;ftHwGRlKg3YMBySoJvHGkaBFFAMwybeix4xAUOS7AzVrOzu727hs7SJp7qdxHDCg5MzsaAADCASa&#xA;DXlyxxxM5mox3JfU35S/lVa+UNPF7fqk3mG5X9/KPiECH/dMZ/4kw6/LOh0Wj8MXL6vufG/aT2il&#xA;rp8ELGCPIfzv6R/QOnveh5nvLOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxIAqdgMVfHn56&#xA;/me/nHzIbLT5ifLuls0dmoI4zSjaS5NOvLpHX9nfYs2afU5uOW3IPovYnZn5fFxSH7yXPy8v1+fu&#xA;DzHMd3bsVdirdcCbbrim3YpdirsVXxo7uEQVY9BgJpnjgZEAc05t4FhjCjr+0fE5hTlZek0+AY40&#xA;FTIt65Ed3VEUs7EBVAqST0AGKCQBZfTn5NflPH5Zs11nWIg3mC5X4I2AP1WNh9hev7xh9o9vsjvX&#xA;f6HR8A4pfV9z5B7Ue0h1c/CxH9xH/Znv93cPj3V1HNk8c7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq8T/AOck/wAzBo2ijynpktNU1WOt861BhsyaFainxTEFab/Dyr1U5g6zNQ4Q9L7PdneJ&#xA;PxpD0x5eZ/Z975Zrmte5tuuLK3Yq7FXYq7FW64E23XFNuxSm1ja+inJh+8br7DwzEyTsu/0Wl8ON&#xA;n6iisqc92KvfvyJ/KoQpD5t1uH98456RauPsKelwwP7R/Y9vi8Kbjs/Sf5SXw/X+p8y9sPaLiJ0u&#xA;E7fxnv8A6P8AxXy73uObl87dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSXzl5r03yp5bv&#xA;td1A/ubSOqRA0aWU7RxLsd3Yge3U7DK8uQQjZcnSaWWfIMceZ+zzfDHmPX9S8w65e61qcnqXt9KZ&#xA;ZSK8RXZUSpYhEUBVFdgBmllIyNl9O0+COKAhH6YpbgbnYq3XAm264pt2KXYq7FXYqj9NteR9Zx8I&#xA;+wPE+OY+afQO17O0tnjPLomeYzvHYq9R/JP8sP8AEup/pnVIq6FYuKRsNrmYbhPdF6v93jmfodL4&#xA;krP0j7Xjvaz2g/KY/BxH99Mf6Ud/vPT5vp4AAAAUA2AGdE+PuxV2KuxV2KuxV2KuxV2KuxV2KoXV&#xA;NV07SrCbUNSuY7Syt15zTysFVR8z3PQDucjKQiLPJsxYZZJCMBcj0fMP5r/85Aal5iMukeWmk0/Q&#xA;zVJbmpS4uR33G8cZ/l6nv145qdRqzPYbRe+7I9noYKnl9WTu6D9Z/HmkflD8+/zB8uBIJLsavYJQ&#xA;fVr+sjAf5EwIkG3SpIHhlePVTh1sOZrPZ/TZ964Jd8f1cnt/lD/nI3yJrZSDU2fQr1qDjdENbkk9&#xA;rhQAPm6rmfj1sJc9nk9Z7NajFvD95Hy5/L9VvUbe5t7mBLi2lSeCQco5Y2Dow8VZag5mAgiw8/KJ&#xA;iaIoqmFi7FXyd/zkf+Y48weZR5csJSdJ0N2WYgkLLe/ZkancRbxrt15djmq1WXilQ5B7z2f0HhY/&#xA;El9c/sj+3n8njuYr0LsVdirsVdireBLq4ptvFKta27Tyheijdj4DITnwhyNLpzlnXTqnaqqqFUUU&#xA;bAZhE29PGIiKHJvAyZJ5B8lX/nDzFDpdtWOAfvL25pURQgjk3+seijxy7T4Dklwh1PbPa0NDgOSW&#xA;8uUR3n8c31/o+kafo+l22mafEIbO0QRwxjsB1J8STuT3OdRjxiEREcg+F6rUzz5JZMhucjZRmTaH&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXxn+cvnfzlrHm290fzE31NdMmMcOlRFvQUdUlFQvqF0YMHYVodgB&#xA;tmk1Epyl6n0vsTBpseISxbykOZ5+79jAcx3fOxV2Kp75Y88+bfK8/q6Hqc1mCavADzhc/wCXE/KN&#xA;vpGShklE2DTiarQYdQKyREvv+fN7X5Q/5ynjbhb+bNN4HYG/sNx4VeBzX3JV/kuZ2PXn+IPK6z2T&#xA;PPDL4S/X+z4sq/Mj88/LFj5Cm1DyxqkN5qt/W1sEjYCWF3B5TSRPxkQRruOS/a49jl+XVR4PSd3V&#xA;aHsTKc4jliYxjue4+QPLf7rfIZJJJJqTuSc1j3bq4pt1cU23il2KuxV2KuxVsAkgDcnYDAkAk0E8&#xA;s7cQQhT9s7uffMLJPiL1Ok0/hQrr1V8rcpVtbW5u7mK1to2muJ3WOGJBVmdjRVA8ScIF7NeTJGET&#xA;KRqIFkvrv8sPINt5N8uR2hCvqdzSXUrgb8pKbIp/kjGw+k986XR6bwof0jzfD/aDtmWv1Bl/k47R&#xA;Hl3+8/s6MvzLdE7FXYq7FXYq7FXYq7FXYq7FXYq7FXiX/OTP5ZjXPL4816dETq2jRkXaL1msgSzb&#xA;U+1CSX7fDy67ZiarHY4g77sTW8E/Dl9MuXv/AGvlKO4lToajwO+a4xBe0hnlHkURHeIdnHE+PUZW&#xA;cZcyGrieeyuCCKg1B6EZByhIHk3il2KtUriqxoVPTbCJNUsIPJTaNx2qPbJAtMsZCzJNbsCt1xTb&#xA;dcWVuxV2KpjpdrU+uw2GyfPxzHzz6O47M01nxD8EzzFd47FXvX/OPX5d8V/xhqUXxHlHpEbDt9l5&#xA;/p3VfpPhm37N01/vD8P1vmvtr23f+CYz5z/RH9J+Hm91zdPnDsVdirsVdirsVdirsVdirsVdirsV&#xA;dirmVWUqwBUihB3BBxV8R/nh+XB8kecpYbWMroepcrnSm3IVSf3kHI9TExp1J4lSdzmqzY+CVdHu&#xA;+zNb4+Kz9Q2P6/i88yp2K5XZTVSQcSLZRmY8kRHeEbSCo8R1ys4+5y4awj6giEmjf7Lb+HfKzEhz&#xA;IZoy5FfgbHYqqQwSStRRt3bsMjKQDdhwSyGgiLrTU+r1jFZV3r/N7ZXDMb35OXqezo+H6fqH2pRm&#xA;W8+7FXYq3XAm1W2haeVY179T4DIzlwi2/T4jlmIhP0RUQIooqigGYBNvWQgIgAcg3gZss/LPyPP5&#xA;w80QWFCunw0m1GYfswqd1B/mc/CPv7ZkabAcsxHp1dJ2/wBrx0OmM/4ztEef6hz+zq+v7a2t7W2i&#xA;traNYreBFjhiQUVUUUVQPADOojEAUOT4ZkySnIykbkdyqYWDsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVYN+cn5ex+d/JVzYRIDq1pW60mQ0B9dAf3dSV+GVaoamgNG7ZTnx8UfN2HZus8DKCfpOx/Hk+&#xA;G5I5IpGjkUpIhKujAhlYGhBB6EZq3vAVuKuxV2Kq0d1KnfkPA5EwBciGpnHzTDTzHdSFSeJUVK9z&#xA;8sx8txDt9AY55UdqTlEVFCqKAdswybejhARFDk3gZpNqdr6UvqKPgk/A5mYZ2Keb7S03BPiH0y+9&#xA;BZe6x2KuxVOtMtvSh9Rh8cm/yHbMLNOzT0vZum4IcR+qX3IzKXZLo43kdY41LyOQqIoqSTsAAO+L&#xA;GUgBZ5Prr8qPIqeUPK0VtKo/Sl5SfUn2NJCPhjBHaMbfOp750ui0/hQ3+o83w/2j7YOu1JkP7uO0&#xA;fd3/AB/UzPMx0DsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVfJH/OTf5eHQfNS+ZbGIjS9eZm&#xA;n4g8Yr0CsgJAoPWH7wVNS3PsM12px8Mr6F7HsTWeJj4D9UPu/Zy+TxfMZ3bsVdirsVVIZnhlWVDR&#xA;lNRglEEUW3DlljmJR5hlFtOk8Kyp0YdPA9xmrnExNPc6fPHLATHVUyLepzwrNE0bdD0PgfHJRlRt&#xA;pz4RkgYlj8iMjsjCjKaEZsAbFvIzgYyMTzC3CwRNhbevOAfsLu39Mqyz4Q5uh0/i5N/pHNPcwXqX&#xA;Ypevf84++Qv0rrL+Zb6OthpbUsww+GS6pUH5RD4v9YjwzZdnafjlxHlH73hvbXtjwcX5eB9eT6vK&#xA;P/Hvut9I5v3yd2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVjn5h+TLLzl5R1DQbkKJJ0LW&#xA;c7D+6uUFYpPHZtmp1Ukd8ry4+KNOVo9ScGUTHx9z4KvrK6sb24sbyJobu1keG4hbZkkjYq6n3DCm&#xA;ap9AjISAI5FQwMnYq7FXYqmOjXnozei5/dy9PZu335j6jHYvudx2PrPDnwH6Zfen+YD1rsVSzV7b&#xA;YXCjcbP/AAOZOnn0dH2tpv8AKD4pXXMp0Vp/YW/oW4BHxt8T/PwzAyz4i9ZodP4WMXzO5RGVuajd&#xA;F0e+1nVrTSrFPUu7yVYol7VY9W8FUbk9hkoQMiAOZcfV6qGDFLLM1GIsvs3yv5dsfLmg2ejWQpDa&#xA;RhS9KF3O7yN7sxJzqsGIY4CIfAu0NdPVZ5ZZ85H5DoPgE1y1w3Yq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq+Wv+cqPIB0/XLfzjZpSz1XjbagB+zdxoeD9f92xJ2HVSTu2a/VY6N971nYWr&#xA;4oHEeceXu/YXguYr0DsVdirsVdirJdMu/rNsCx/eJ8L/AD8fpzXZsfDLye17N1fjYrP1DYovKXYN&#xA;OiuhRhVWFCMINMJwEgQeRSm0sGF8yuKpCeVfH+XMvJl9O3V0Gk0JGciXKH4Cb5hvROxV75/zjj5I&#xA;CRT+bryP4pOVtpYYdFG00o+Z+AfJs3HZmn/jPwfNPbntayNLA8vVP/ej9Pye55uXzl2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVIPP3lWHzX5O1XQJeIa9gZbd3rRJ0+OFzTf4ZFUnK8&#xA;sOKJDk6TUHDljPuP2dXwLeWlzZXk9ldxmG6tpGhnifZkkRirKfcEZqqfQYzBFjkVHAydirsVdiqL&#xA;027+rXIYn923wv8ALx+jKs2Pii5/Z2q8HKCfpOxZLmte1dil2KHYpTXyt5evPMXmCx0a0/vryUIX&#xA;pUIg3dz7IgLZZjxmchEcy4XaOthpcEs0uUR8z0HxOz7Q0rTLPS9NtdNsk9O0tIlhhTwVBQV8Se5z&#xA;qscBCIiOQfAdRqJ5skskzcpGyism0uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux&#xA;V8o/85S+Qf0V5lg81WcXGx1r93ecR8KXka9TQUHqoK+5DHNfqcdSvvet7D1fHj8M84/d+z9Tw3MZ&#xA;3jq4ptvAyt2KuxVkOj3frW3psf3kW3zXtmBqIUb73ruyNV4mPhP1R+7oj8x3buxV2KvoL/nHDyZ6&#xA;Fjc+a7uP97d1ttOqOkSn97IP9ZxxH+qfHNz2Xg5zPuH4/HV8w9uu1eKcdNE7R9Uvf0HwG/xD23Nw&#xA;+euxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksb/MXyba+cfJ2o6DNxWS4j5W&#xA;krf7ruE+KJ60JpyFGp+zUZXlhxRpytHqThyifz9z4g80+RPN3lW49DX9LnsakqkzLyhcj+SZeUbf&#xA;Q2ayUSOb3GDU48ouBBSHIt7sVbrim264ptEWNyba5WT9no49j1yvLDijTmaHU+DlEunX3MoBBAIN&#xA;Qdwc1b3IIIsOxSmPl3Q7vXddsdHtBWe9lWJTSvEHdnPsi1Y+wyeOBlIRHMuJrtXHTYZZZcoC/wBQ&#xA;+J2faek6XaaVpdpplmvC1s4kghXvxRQoJ9zTc51eOAhERHR8A1OolmySyT+qRJPxReTaHYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXVra3du9tdQpcW8o4ywyqHRh4MrAgj&#xA;AQDsUxkYmwaLyXzn/wA4yeQdc9S40gPoF824NsOdsWrWrQMRT5IyjMeelieWzuNN23lhtL1j7fm8&#xA;H86f84/fmN5Y9ScWX6X05Kn65p/KWijerxUEq0HX4So8cxJ4ZR5h32m7Vw5dr4T3F5sylSVYUYbE&#xA;HqDlTsmsVbxVkGiXfq25hY/HFsPde33ZganHRvveu7F1XiY+A84/cmOYzunuH/ONflT1bu/8z3CV&#xA;S3H1OxJH+7HAaVh7qvFf9kc23ZeG5GZ6fj8e9879vO0ajDTRPP1S938I+dn4B7/m7fMnYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxHzl+U/kPzervrGlxm8Yba&#xA;hB+5uQegJkT7dPB6jKp4Yyc3TdoZsP0nbuPL8e54P50/5xQ8wWXqXPlS/TVLcVK2V1xguQK7Kr/3&#xA;Tmnc8PlmJPSyHLd32m7dhLbIOE9/Mfr+94prfl/XNCvWstZsJ9Pul/3VcRtGSPFaj4h7jbMciubu&#xA;8eWMxcSCEPY3JtrlJf2ejjxU9cryw4o052h1Jw5RLp19zLIY3nkjjhUyPKQsaruWLGgA+eaunujM&#xA;CPFe3N9n+RfLMXlrypp2jKB6lvEDcsP2p3+OVq/65NPbOp02Hw8Yi+B9r686vUzynlI7e4bD7E+y&#xA;91rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQWsaHo&#xA;2tWTWOr2UF/aP1guI1kWtKVAYGh32I3yMoiXNsx5ZQNxJBeL+dP+cUvLGoepc+V7yTR7k1ItJqz2&#xA;pPYAk+rHv35N8sxp6Ufwu703bs47ZBxDv5H9X3JL+U/5KebdF892o8zWaix0pWure8icSQTOhCwq&#xA;rCjAhm5UdQaLmFj0R8YEjbm9FrfafHPs04oH95L0+fCef/E/F9H5uHz52KuxV2KuxV2KuxV2KuxV&#xA;2KuxV2KuxV2KuxV2KuxV2KuxV//Z"/>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">Untitled-2</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>D. P Story</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?>
+
+
+% &end XMP packet& %
+
+[{Doc_Metadata} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark_5
+[/Document 1 dict begin /Metadata {Doc_Metadata} def currentdict end /BDC pdfmark_5
+[/NamespacePop pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
+%%Page: 1 1
+%%EndPageComments
+%%BeginPageSetup
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+Adobe_AGM_Core/ps gx
+gsave
+<< /0
+[/CIEBasedABC 20 dict
+dup /CreationDate (19980209064900) put
+dup /RenderingIntent (RelativeColorimetric) put
+dup /Description (sRGB IEC61966-2.1) put
+dup /ColorSpace (RGB ) put
+dup /Copyright (Copyright (c) 1998 Hewlett-Packard Company) put
+dup /ProfileID <1D3FDA2EDB4A89AB60A23C5F7C7D81DD> put
+dup /DecodeABC [
+{{0 0.00031 0.00061 0.0009 0.0012 0.00151 0.00181 0.00212 0.00242 0.00271
+0.00302 0.00334 0.00366 0.00401 0.00437 0.00476 0.00515 0.00558 0.00602 0.00648
+0.00696 0.00745 0.00798 0.00852 0.00908 0.00966 0.01027 0.01089 0.01153 0.0122
+0.0129 0.01362 0.01435 0.01511 0.01589 0.0167 0.01752 0.01837 0.01925 0.02015
+0.02107 0.02203 0.02299 0.02399 0.02501 0.02606 0.02713 0.02822 0.02934 0.03049
+0.03166 0.03287 0.03409 0.03533 0.03662 0.03792 0.03925 0.04061 0.04199 0.04341
+0.04484 0.04631 0.04781 0.04933 0.05088 0.05245 0.05406 0.05569 0.05736 0.05904
+0.06077 0.06252 0.0643 0.06611 0.06794 0.06981 0.0717 0.07363 0.07558 0.07756
+0.07959 0.08162 0.0837 0.08581 0.08795 0.09011 0.09231 0.09454 0.0968 0.09909
+0.10142 0.10376 0.10616 0.10857 0.11102 0.11351 0.11602 0.11856 0.12114 0.12376
+0.12639 0.12907 0.13178 0.13452 0.13729 0.14009 0.14294 0.14581 0.14873 0.15166
+0.15463 0.15765 0.16068 0.16376 0.16687 0.17001 0.17319 0.17641 0.17965 0.18293
+0.18625 0.1896 0.19299 0.19641 0.19987 0.20335 0.20688 0.21045 0.21405 0.21767
+0.22134 0.22505 0.22879 0.23257 0.23638 0.24023 0.24411 0.24804 0.25199 0.25599
+0.26002 0.26409 0.2682 0.27234 0.27651 0.28073 0.28499 0.28928 0.29361 0.29798
+0.30238 0.30683 0.3113 0.31582 0.32038 0.32497 0.3296 0.33428 0.33898 0.34372
+0.34851 0.35333 0.3582 0.3631 0.36804 0.37302 0.37804 0.3831 0.38819 0.39333
+0.3985 0.40372 0.40898 0.41427 0.41961 0.42498 0.43039 0.43585 0.44134 0.44688
+0.45245 0.45806 0.46372 0.46942 0.47516 0.48094 0.48675 0.49261 0.49851 0.50445
+0.51043 0.51646 0.52253 0.52863 0.53477 0.54097 0.54719 0.55347 0.55979 0.56613
+0.57253 0.57897 0.58545 0.59198 0.59855 0.60515 0.6118 0.61849 0.62524 0.63201
+0.63884 0.6457 0.6526 0.65955 0.66654 0.67357 0.68066 0.68778 0.69495 0.70215
+0.7094 0.71669 0.72404 0.73142 0.73885 0.74632 0.75383 0.76138 0.76899 0.77663
+0.78433 0.79206 0.79983 0.80765 0.81552 0.82343 0.83139 0.8394 0.84744 0.85554
+0.86367 0.87185 0.88007 0.88835 0.89666 0.90503 0.91343 0.92189 0.93038 0.93892
+0.94751 0.95614 0.96482 0.97355 0.98232 0.99114 1}
+dup 3 -1 roll 0 1 3 copy 3 -1 roll exch ge
+{pop pop pop pop pop 256 get}
+{pop 3 copy pop le {pop pop pop pop 0 get}
+{exch dup 4 -1 roll exch sub 3 1 roll sub div 256 mul dup
+floor dup 3 1 roll sub exch cvi dup 1 add 4 -1 roll exch
+get 4 -1 roll 3 -1 roll get dup 4 1 roll sub mul add}
+ifelse} ifelse
+} bind
+dup
+dup
+] put
+dup /MatrixABC [
+0.2180189128 0.1112492942 0.0069565698
+0.1925612492 0.358452993 0.0485281768
+0.0715286348 0.0303053423 0.3569742448
+] put
+dup /MatrixLMN [1.9999694824 0 0 0 1.9999694824 0 0 0 1.9999694824] put
+dup /BlackPoint [0 0 0] put
+dup /WhitePoint [0.9642028809 1 0.8249053955] put]
+
+/CSA add_res
+/CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+grestore
+Adobe_AGM_Core/pt gx
+%%EndPageSetup
+1 -1 scale 0 -59.351 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 59.351 li
+65.924 59.351 li
+65.924 0 li
+cp
+clp
+[1 0 0 1 0 0 ]ct
+25.845 59.351 mo
+10.354 52.9115 li
+7.946 48.125 li
+23.437 54.5658 li
+25.845 59.351 li
+false sop
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.5451 .007843 .019608 colr
+f
+gsave
+25.547 47.702 mo
+10.057 41.262 li
+15.122 30.971 28.748 7.02 48.918 -3.8147e-6 cv
+64.409 6.44 li
+44.239 13.459 30.613 37.411 25.547 47.702 cv
+clp
+25.547 47.702 mo
+10.056 41.262 li
+10.527 40.306 11.071 39.231 11.688 38.064 cv
+27.179 44.504 li
+26.563 45.672 26.018 46.746 25.547 47.702 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.61961 .039216 .058824 colr
+f
+27.18 44.504 mo
+11.689 38.065 li
+12.624 36.294 13.725 34.31 14.987 32.195 cv
+30.478 38.636 li
+29.217 40.749 28.115 42.735 27.18 44.504 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.63137 .047059 .062745 colr
+f
+30.478 38.636 mo
+14.987 32.196 li
+15.964 30.56 17.037 28.846 18.203 27.095 cv
+33.694 33.535 li
+32.527 35.286 31.455 36.999 30.478 38.636 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.64706 .05098 .070588 colr
+f
+33.694 33.535 mo
+18.203 27.095 li
+19.14 25.689 20.136 24.259 21.193 22.824 cv
+36.684 29.264 li
+35.628 30.698 34.631 32.129 33.694 33.535 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.66275 .054902 .07451 colr
+f
+36.684 29.264 mo
+21.193 22.823 li
+22.088 21.608 23.025 20.39 24.003 19.182 cv
+39.494 25.621 li
+38.515 26.829 37.579 28.048 36.684 29.264 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.67843 .058824 .078431 colr
+f
+39.494 25.622 mo
+24.003 19.183 li
+24.839 18.15 25.704 17.126 26.6 16.116 cv
+42.091 22.556 li
+41.196 23.565 40.33 24.591 39.494 25.622 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.6902 .062745 .086275 colr
+f
+42.091 22.555 mo
+26.6 16.116 li
+27.398 15.215 28.22 14.326 29.066 13.456 cv
+44.557 19.896 li
+43.711 20.767 42.889 21.656 42.091 22.555 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.7098 .070588 .094118 colr
+f
+44.557 19.896 mo
+29.066 13.457 li
+29.833 12.666 30.62 11.889 31.425 11.131 cv
+46.916 17.571 li
+46.111 18.329 45.324 19.106 44.557 19.896 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.72549 .07451 .098039 colr
+f
+46.916 17.571 mo
+31.425 11.132 li
+32.17 10.43 32.932 9.745 33.709 9.078 cv
+49.2 15.518 li
+48.422 16.184 47.661 16.87 46.916 17.571 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.74118 .078431 .10196 colr
+f
+49.2 15.518 mo
+33.709 9.078 li
+34.446 8.446 35.197 7.831 35.963 7.237 cv
+51.454 13.677 li
+50.688 14.272 49.937 14.886 49.2 15.518 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.75294 .078431 .10588 colr
+f
+51.454 13.677 mo
+35.963 7.237 li
+36.705 6.659 37.461 6.102 38.23 5.565 cv
+53.721 12.005 li
+52.952 12.541 52.196 13.1 51.454 13.677 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.76863 .082353 .1098 colr
+f
+53.72 12.005 mo
+38.229 5.565 li
+38.994 5.03 39.773 4.517 40.565 4.026 cv
+56.056 10.467 li
+55.264 10.956 54.486 11.47 53.72 12.005 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.78431 .086275 .11373 colr
+f
+56.056 10.467 mo
+40.565 4.027 li
+41.375 3.525 42.2 3.048 43.037 2.598 cv
+58.528 9.038 li
+57.69 9.488 56.867 9.965 56.056 10.467 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.8 .090196 .11765 colr
+f
+58.528 9.038 mo
+43.037 2.598 li
+43.959 2.103 44.896 1.642 45.849 1.217 cv
+61.341 7.657 li
+60.387 8.082 59.449 8.543 58.528 9.038 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.81176 .094118 .12157 colr
+f
+61.34 7.658 mo
+45.849 1.218 li
+46.854 .768997 47.877 .361996 48.918 .000995636 cv
+64.409 6.44 li
+63.368 6.803 62.345 7.21 61.34 7.658 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.82745 .094118 .12549 colr
+f
+grestore
+gsave
+.060001 -3.8147e-6 mo
+65.924 -3.8147e-6 li
+65.924 59.351 li
+.060001 59.351 li
+cp
+clp
+15.491 40.564 mo
+0 34.125 li
+4.004 31.028 li
+19.495 37.467 li
+15.491 40.564 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.7098 .070588 .094118 colr
+f
+grestore
+gsave
+23.437 54.5658 mo
+7.9458 48.125 li
+2.9463 38.194 .030762 34.164 0 34.124 cv
+15.491 40.564 li
+15.522 40.605 18.438 44.634 23.437 54.5658 cv
+clp
+gsave
+.060001 -3.8147e-6 mo
+65.924 -3.8147e-6 li
+65.924 59.351 li
+.060001 59.351 li
+cp
+clp
+23.437 54.5658 mo
+7.946 48.1258 li
+2.946 38.1938 .0310001 34.1648 0 34.1248 cv
+15.491 40.5638 li
+15.522 40.6048 18.437 44.6338 23.437 54.5658 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.56078 .015686 .027451 colr
+f
+grestore
+grestore
+64.409 6.44 mo
+65.924 11.234 li
+42.721 19.311 28.082 53.977 27.935 54.323 cv
+25.845 59.351 li
+23.437 54.566 li
+18.437 44.634 15.522 40.605 15.49 40.564 cv
+19.494 37.467 li
+19.599 37.614 21.757 40.595 25.547 47.703 cv
+30.613 37.412 44.239 13.46 64.409 6.44 cv
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.91765 .1098 .14118 colr
+f
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%Trailer
+Adobe_AGM_Utils begin
+[/EMC pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
+Adobe_AGM_Core/dt get exec
+%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentCustomColors:
+%%CMYKCustomColor:
+%%RGBCustomColor:
+%%EOF
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/3Dx.eps b/texmf-dist/doc/latex/graphicxsp/graphics/3Dx.eps
new file mode 100644
index 00000000..779c8294
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/3Dx.eps
@@ -0,0 +1,8164 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: ADP25.tmp.pdf
+%%Creator: Adobe Acrobat 8.0
+%%For: Donald Story
+%%CreationDate: 08/05/2007, 4:28:42 PM
+%%BoundingBox: 0 0 62 58
+%%HiResBoundingBox: 0 0 61.6881 57.9760
+%%CropBox: 0 0 61.6881 57.9760
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors:
+%%DocumentCustomColors: (atend)
+%%EndComments
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
+{
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
+{
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
+{
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
+{
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
+{
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
+{
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
+{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
+{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
+}def
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
+{
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
+{
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
+{
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
+{
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
+{
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
+{
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
+{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
+{
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
+{
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+{
+ /pdfmark_5{cleartomark}bind def
+}{
+ /pdfmark_5{pdfmark}bind def
+}ifelse
+/ReadBypdfmark_5
+{
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
+{
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline pop
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
+{
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2005 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
+{
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
+}forall
+setglobal
+/AGMCORE_key_known
+{
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
+{
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
+{
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
+{
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
+{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
+{
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{aload pop setcolor}bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
+}if
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
+}if
+/test_cmyk_color_plate
+{
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
+{
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
+{
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
+{
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
+{
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
+{
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
+{
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
+{
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
+{
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
+{
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
+{
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
+{
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
+{
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
+{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
+{
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
+{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
+{
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
+{
+ /count get 0 0 put
+}def
+/paintproc_buf_next
+{
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
+{
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
+{
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
+{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
+{
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
+{
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
+}def
+/updatecolorrendering
+{
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
+{
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
+{
+ dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration
+ dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+}def
+/cpaint_gcomp
+{
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
+{
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
+{
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
+{
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
+{
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
+{
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
+{
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
+{
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
+{
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
+{
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
+{
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/driver_check_media_override
+{
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
+end
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
+%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
+%%Version: 2.31 0
+10 dict begin
+/Adobe_CoolType_Passthru currentdict def
+/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
+Adobe_CoolType_Core_Defined
+ {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
+if
+userdict/Adobe_CoolType_Core 70 dict dup begin put
+/Adobe_CoolType_Version 2.31 def
+/Level2?
+ systemdict/languagelevel known dup
+ {pop systemdict/languagelevel get 2 ge}
+ if def
+Level2? not
+ {
+ /currentglobal false def
+ /setglobal/pop load def
+ /gcheck{pop false}bind def
+ /currentpacking false def
+ /setpacking/pop load def
+ /SharedFontDirectory 0 dict def
+ }
+if
+currentpacking
+true setpacking
+currentglobal false setglobal
+userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+if
+get
+ begin
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ end
+setglobal
+currentglobal true setglobal
+userdict/Adobe_CoolType_GVMFonts known not
+ {userdict/Adobe_CoolType_GVMFonts 10 dict put}
+if
+setglobal
+currentglobal false setglobal
+userdict/Adobe_CoolType_LVMFonts known not
+ {userdict/Adobe_CoolType_LVMFonts 10 dict put}
+if
+setglobal
+/ct_VMDictPut
+ {
+ dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
+ 3 1 roll put
+ }bind def
+/ct_VMDictUndef
+ {
+ dup Adobe_CoolType_GVMFonts exch known
+ {Adobe_CoolType_GVMFonts exch undef}
+ {
+ dup Adobe_CoolType_LVMFonts exch known
+ {Adobe_CoolType_LVMFonts exch undef}
+ {pop}
+ ifelse
+ }ifelse
+ }bind def
+/ct_str1 1 string def
+/ct_xshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_yshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0 exch
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_xyshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ {_ct_na _ct_i 1 add get}stopped
+ {pop pop pop}
+ {
+ _ct_x _ct_y moveto
+ rmoveto
+ }
+ ifelse
+ }
+ ifelse
+ /_ct_i _ct_i 2 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
+/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
+/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
+currentglobal true setglobal
+/ct_T3Defs
+{
+/BuildChar
+{
+ 1 index/Encoding get exch get
+ 1 index/BuildGlyph get exec
+}bind def
+/BuildGlyph
+{
+ exch begin
+ GlyphProcs exch get exec
+ end
+}bind def
+}bind def
+setglobal
+/@_SaveStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@vmState currentglobal def false setglobal
+ @opStackCountByLevel
+ @opStackLevel
+ 2 copy known not
+ {
+ 2 copy
+ 3 dict dup/args
+ 7 index
+ 5 add array put
+ put get
+ }
+ {
+ get dup/args get dup length 3 index lt
+ {
+ dup length 5 add array exch
+ 1 index exch 0 exch putinterval
+ 1 index exch/args exch put
+ }
+ {pop}
+ ifelse
+ }
+ ifelse
+ begin
+ count 1 sub
+ 1 index lt
+ {pop count}
+ if
+ dup/argCount exch def
+ dup 0 gt
+ {
+ args exch 0 exch getinterval
+ astore pop
+ }
+ {pop}
+ ifelse
+ count
+ /restCount exch def
+ end
+ /@opStackLevel @opStackLevel 1 add def
+ countdictstack 1 sub
+ @dictStackCountByLevel exch @dictStackLevel exch put
+ /@dictStackLevel @dictStackLevel 1 add def
+ @vmState setglobal
+ end
+ }bind def
+/@_RestoreStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ @opStackCountByLevel @opStackLevel get
+ begin
+ count restCount sub dup 0 gt
+ {{pop}repeat}
+ {pop}
+ ifelse
+ args 0 argCount getinterval{}forall
+ end
+ /@dictStackLevel @dictStackLevel 1 sub def
+ @dictStackCountByLevel @dictStackLevel get
+ end
+ countdictstack exch sub dup 0 gt
+ {{end}repeat}
+ {pop}
+ ifelse
+ }bind def
+/@_PopStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ /@dictStackLevel @dictStackLevel 1 sub def
+ end
+ }bind def
+/@Raise
+ {
+ exch cvx exch errordict exch get exec
+ stop
+ }bind def
+/@ReRaise
+ {
+ cvx $error/errorname get errordict exch get exec
+ stop
+ }bind def
+/@Stopped
+ {
+ 0 @#Stopped
+ }bind def
+/@#Stopped
+ {
+ @_SaveStackLevels
+ stopped
+ {@_RestoreStackLevels true}
+ {@_PopStackLevels false}
+ ifelse
+ }bind def
+/@Arg
+ {
+ Adobe_CoolType_Data
+ begin
+ @opStackCountByLevel @opStackLevel 1 sub get
+ begin
+ args exch
+ argCount 1 sub exch sub get
+ end
+ end
+ }bind def
+currentglobal true setglobal
+/CTHasResourceForAllBug
+ Level2?
+ {
+ 1 dict dup
+ /@shouldNotDisappearDictValue true def
+ Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
+ begin
+ count @_SaveStackLevels
+ {(*){pop stop}128 string/Category resourceforall}
+ stopped pop
+ @_RestoreStackLevels
+ currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
+ {
+ /@shouldNotDisappearDictValue known
+ {
+ {
+ end
+ currentdict 1 index eq
+ {pop exit}
+ if
+ }
+ loop
+ }
+ if
+ }
+ {
+ pop
+ end
+ }
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+true setglobal
+/CTHasResourceStatusBug
+ Level2?
+ {
+ mark
+ {/steveamerige/Category resourcestatus}
+ stopped
+ {cleartomark true}
+ {cleartomark currentglobal not}
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+setglobal
+/CTResourceStatus
+ {
+ mark 3 1 roll
+ /Category findresource
+ begin
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ end
+ }bind def
+/CTWorkAroundBugs
+ {
+ Level2?
+ {
+ /cid_PreLoad/ProcSet resourcestatus
+ {
+ pop pop
+ currentglobal
+ mark
+ {
+ (*)
+ {
+ dup/CMap CTHasResourceStatusBug
+ {CTResourceStatus}
+ {resourcestatus}
+ ifelse
+ {
+ pop dup 0 eq exch 1 eq or
+ {
+ dup/CMap findresource gcheck setglobal
+ /CMap undefineresource
+ }
+ {
+ pop CTHasResourceForAllBug
+ {exit}
+ {stop}
+ ifelse
+ }
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ 128 string/CMap resourceforall
+ }
+ stopped
+ {cleartomark}
+ stopped pop
+ setglobal
+ }
+ if
+ }
+ if
+ }bind def
+/ds
+ {
+ Adobe_CoolType_Core
+ begin
+ CTWorkAroundBugs
+ /mo/moveto load def
+ /nf/newencodedfont load def
+ /msf{makefont setfont}bind def
+ /uf{dup undefinefont ct_VMDictUndef}bind def
+ /ur/undefineresource load def
+ /chp/charpath load def
+ /awsh/awidthshow load def
+ /wsh/widthshow load def
+ /ash/ashow load def
+ /@xshow/xshow load def
+ /@yshow/yshow load def
+ /@xyshow/xyshow load def
+ /@cshow/cshow load def
+ /sh/show load def
+ /rp/repeat load def
+ /.n/.notdef def
+ end
+ currentglobal false setglobal
+ userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+ if
+ get
+ begin
+ /AddWidths? false def
+ /CC 0 def
+ /charcode 2 string def
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ /InVMFontsByCMap 10 dict def
+ /InVMDeepCopiedFonts 10 dict def
+ end
+ setglobal
+ }bind def
+/dt
+ {
+ currentdict Adobe_CoolType_Core eq
+ {end}
+ if
+ }bind def
+/ps
+ {
+ Adobe_CoolType_Core begin
+ Adobe_CoolType_GVMFonts begin
+ Adobe_CoolType_LVMFonts begin
+ SharedFontDirectory begin
+ }bind def
+/pt
+ {
+ end
+ end
+ end
+ end
+ }bind def
+/unload
+ {
+ systemdict/languagelevel known
+ {
+ systemdict/languagelevel get 2 ge
+ {
+ userdict/Adobe_CoolType_Core 2 copy known
+ {undef}
+ {pop pop}
+ ifelse
+ }
+ if
+ }
+ if
+ }bind def
+/ndf
+ {
+ 1 index where
+ {pop pop pop}
+ {dup xcheck{bind}if def}
+ ifelse
+ }def
+/findfont systemdict
+ begin
+ userdict
+ begin
+ /globaldict where{/globaldict get begin}if
+ dup where pop exch get
+ /globaldict where{pop end}if
+ end
+ end
+Adobe_CoolType_Core_Defined
+ {/systemfindfont exch def}
+ {
+ /findfont 1 index def
+ /systemfindfont exch def
+ }
+ifelse
+/undefinefont
+ {pop}ndf
+/copyfont
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ dup null eq{0}{dup length}ifelse
+ 2 index length add 1 add dict
+ begin
+ exch
+ {
+ 1 index/FID eq
+ {pop pop}
+ {def}
+ ifelse
+ }
+ forall
+ dup null eq
+ {pop}
+ {{def}forall}
+ ifelse
+ currentdict
+ end
+ exch setglobal
+ }bind def
+/copyarray
+ {
+ currentglobal exch
+ dup gcheck setglobal
+ dup length array copy
+ exch setglobal
+ }bind def
+/newencodedfont
+ {
+ currentglobal
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ {
+ FontDirectory 3 index known
+ {FontDirectory 3 index get/FontReferenced known}
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ dup
+ {
+ 3 index findfont/FontReferenced get
+ 2 index dup type/nametype eq
+ {findfont}
+ if ne
+ {pop false}
+ if
+ }
+ if
+ dup
+ {
+ 1 index dup type/nametype eq
+ {findfont}
+ if
+ dup/CharStrings known
+ {
+ /CharStrings get length
+ 4 index findfont/CharStrings get length
+ ne
+ {
+ pop false
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ if
+ {
+ pop
+ 1 index findfont
+ /Encoding get exch
+ 0 1 255
+ {2 copy get 3 index 3 1 roll put}
+ for
+ pop pop pop
+ }
+ {
+ currentglobal
+ 4 1 roll
+ dup type/nametype eq
+ {findfont}
+ if
+ dup gcheck setglobal
+ dup dup maxlength 2 add dict
+ begin
+ exch
+ {
+ 1 index/FID ne
+ 2 index/Encoding ne and
+ {def}
+ {pop pop}
+ ifelse
+ }
+ forall
+ /FontReferenced exch def
+ /Encoding exch dup length array copy def
+ /FontName 1 index dup type/stringtype eq{cvn}if def dup
+ currentdict
+ end
+ definefont ct_VMDictPut
+ setglobal
+ }
+ ifelse
+ }bind def
+/SetSubstituteStrategy
+ {
+ $SubstituteFont
+ begin
+ dup type/dicttype ne
+ {0 dict}
+ if
+ currentdict/$Strategies known
+ {
+ exch $Strategies exch
+ 2 copy known
+ {
+ get
+ 2 copy maxlength exch maxlength add dict
+ begin
+ {def}forall
+ {def}forall
+ currentdict
+ dup/$Init known
+ {dup/$Init get exec}
+ if
+ end
+ /$Strategy exch def
+ }
+ {pop pop pop}
+ ifelse
+ }
+ {pop pop}
+ ifelse
+ end
+ }bind def
+/scff
+ {
+ $SubstituteFont
+ begin
+ dup type/stringtype eq
+ {dup length exch}
+ {null}
+ ifelse
+ /$sname exch def
+ /$slen exch def
+ /$inVMIndex
+ $sname null eq
+ {
+ 1 index $str cvs
+ dup length $slen sub $slen getinterval cvn
+ }
+ {$sname}
+ ifelse def
+ end
+ {findfont}
+ @Stopped
+ {
+ dup length 8 add string exch
+ 1 index 0(BadFont:)putinterval
+ 1 index exch 8 exch dup length string cvs putinterval cvn
+ {findfont}
+ @Stopped
+ {pop/Courier findfont}
+ if
+ }
+ if
+ $SubstituteFont
+ begin
+ /$sname null def
+ /$slen 0 def
+ /$inVMIndex null def
+ end
+ }bind def
+/isWidthsOnlyFont
+ {
+ dup/WidthsOnly known
+ {pop pop true}
+ {
+ dup/FDepVector known
+ {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
+ {
+ dup/FDArray known
+ {/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }bind def
+/ct_StyleDicts 4 dict dup begin
+ /Adobe-Japan1 4 dict dup begin
+ Level2?
+ {
+ /Serif
+ /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMin-W3/CIDFont resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {/Ryumin-Light}
+ ifelse
+ }
+ {/Ryumin-Light}
+ ifelse
+ }
+ ifelse
+ def
+ /SansSerif
+ /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiKakuGo-W5/CIDFont resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ ifelse
+ def
+ /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMaruGo-W4/CIDFont resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ /RoundSansSerif exch def
+ /Default Serif def
+ }
+ {
+ /Serif/Ryumin-Light def
+ /SansSerif/GothicBBB-Medium def
+ {
+ (fonts/Jun101-Light-83pv-RKSJ-H)status
+ }stopped
+ {pop}{
+ {pop pop pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ /RoundSansSerif exch def
+ }ifelse
+ /Default Serif def
+ }
+ ifelse
+ end
+ def
+ /Adobe-Korea1 4 dict dup begin
+ /Serif/HYSMyeongJo-Medium def
+ /SansSerif/HYGoThic-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-GB1 4 dict dup begin
+ /Serif/STSong-Light def
+ /SansSerif/STHeiti-Regular def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-CNS1 4 dict dup begin
+ /Serif/MKai-Medium def
+ /SansSerif/MHei-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+end
+def
+Level2?{currentglobal true setglobal}if
+/ct_BoldRomanWidthProc
+ {
+ stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
+ 0 0
+ }bind def
+/ct_Type0WidthProc
+ {
+ dup stringwidth 0 0 moveto
+ 2 index true charpath pathbbox
+ 0 -1
+ 7 index 2 div .88
+ setcachedevice2
+ pop
+ 0 0
+ }bind def
+/ct_Type0WMode1WidthProc
+ {
+ dup stringwidth
+ pop 2 div neg -0.88
+ 2 copy
+ moveto
+ 0 -1
+ 5 -1 roll true charpath pathbbox
+ setcachedevice
+ }bind def
+/cHexEncoding
+[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+/ct_BoldBaseFont
+ 11 dict begin
+ /FontType 3 def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /Encoding cHexEncoding def
+ /_setwidthProc/ct_BoldRomanWidthProc load def
+ /_bcstr1 1 string def
+ /BuildChar
+ {
+ exch begin
+ _basefont setfont
+ _bcstr1 dup 0 4 -1 roll put
+ dup
+ _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+systemdict/composefont known
+{
+/ct_DefineIdentity-H
+{
+ /Identity-H/CMap resourcestatus
+ {
+ pop pop
+ }
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+}
+def
+/ct_BoldBaseCIDFont
+ 11 dict begin
+ /CIDFontType 1 def
+ /CIDFontName/ct_BoldBaseCIDFont def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /_setwidthProc/ct_Type0WidthProc load def
+ /_bcstr2 2 string def
+ /BuildGlyph
+ {
+ exch begin
+ _basefont setfont
+ _bcstr2 1 2 index 256 mod put
+ _bcstr2 0 3 -1 roll 256 idiv put
+ _bcstr2 dup _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+}if
+Level2?{setglobal}if
+/ct_CopyFont{
+ {
+ 1 index/FID ne 2 index/UniqueID ne and
+ {def}{pop pop}ifelse
+ }forall
+}bind def
+/ct_Type0CopyFont
+{
+ exch
+ dup length dict
+ begin
+ ct_CopyFont
+ [
+ exch
+ FDepVector
+ {
+ dup/FontType get 0 eq
+ {
+ 1 index ct_Type0CopyFont
+ /_ctType0 exch definefont
+ }
+ {
+ /_ctBaseFont exch
+ 2 index exec
+ }
+ ifelse
+ exch
+ }
+ forall
+ pop
+ ]
+ /FDepVector exch def
+ currentdict
+ end
+}bind def
+/ct_MakeBoldFont
+{
+ dup/ct_SyntheticBold known
+ {
+ dup length 3 add dict begin
+ ct_CopyFont
+ /ct_StrokeWidth .03 0 FontMatrix idtransform pop def
+ /ct_SyntheticBold true def
+ currentdict
+ end
+ definefont
+ }
+ {
+ dup dup length 3 add dict
+ begin
+ ct_CopyFont
+ /PaintType 2 def
+ /StrokeWidth .03 0 FontMatrix idtransform pop def
+ /dummybold currentdict
+ end
+ definefont
+ dup/FontType get dup 9 ge exch 11 le and
+ {
+ ct_BoldBaseCIDFont
+ dup length 3 add dict copy begin
+ dup/CIDSystemInfo get/CIDSystemInfo exch def
+ ct_DefineIdentity-H
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefont exch def
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefonto exch def
+ currentdict
+ end
+ /CIDFont defineresource
+ }
+ {
+ ct_BoldBaseFont
+ dup length 3 add dict copy begin
+ /_basefont exch def
+ /_basefonto exch def
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+}bind def
+/ct_MakeBold{
+ 1 index
+ 1 index
+ findfont
+ currentglobal 5 1 roll
+ dup gcheck setglobal
+ dup
+ /FontType get 0 eq
+ {
+ dup/WMode known{dup/WMode get 1 eq}{false}ifelse
+ version length 4 ge
+ and
+ {version 0 4 getinterval cvi 2015 ge}
+ {true}
+ ifelse
+ {/ct_Type0WidthProc}
+ {/ct_Type0WMode1WidthProc}
+ ifelse
+ ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
+ {ct_MakeBoldFont}ct_Type0CopyFont definefont
+ }
+ {
+ dup/_fauxfont known not 1 index/SubstMaster known not and
+ {
+ ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
+ ct_MakeBoldFont
+ }
+ {
+ 2 index 2 index eq
+ {exch pop }
+ {
+ dup length dict begin
+ ct_CopyFont
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ pop pop pop
+ setglobal
+}bind def
+/?str1 256 string def
+/?set
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound false def
+ /$fontname 1 index def
+ /$doSmartSub false def
+ end
+ dup
+ findfont
+ $SubstituteFont
+ begin
+ $substituteFound
+ {false}
+ {
+ dup/FontName known
+ {
+ dup/FontName get $fontname eq
+ 1 index/DistillerFauxFont known not and
+ /currentdistillerparams where
+ {pop false 2 index isWidthsOnlyFont not and}
+ if
+ }
+ {false}
+ ifelse
+ }
+ ifelse
+ exch pop
+ /$doSmartSub true def
+ end
+ {
+ 5 1 roll pop pop pop pop
+ findfont
+ }
+ {
+ 1 index
+ findfont
+ dup/FontType get 3 eq
+ {
+ 6 1 roll pop pop pop pop pop false
+ }
+ {pop true}
+ ifelse
+ {
+ $SubstituteFont
+ begin
+ pop pop
+ /$styleArray 1 index def
+ /$regOrdering 2 index def
+ pop pop
+ 0 1 $styleArray length 1 sub
+ {
+ $styleArray exch get
+ ct_StyleDicts $regOrdering
+ 2 copy known
+ {
+ get
+ exch 2 copy known not
+ {pop/Default}
+ if
+ get
+ dup type/nametype eq
+ {
+ ?str1 cvs length dup 1 add exch
+ ?str1 exch(-)putinterval
+ exch dup length exch ?str1 exch 3 index exch putinterval
+ add ?str1 exch 0 exch getinterval cvn
+ }
+ {
+ pop pop/Unknown
+ }
+ ifelse
+ }
+ {
+ pop pop pop pop/Unknown
+ }
+ ifelse
+ }
+ for
+ end
+ findfont
+ }if
+ }
+ ifelse
+ currentglobal false setglobal 3 1 roll
+ null copyfont definefont pop
+ setglobal
+ }bind def
+setpacking
+userdict/$SubstituteFont 25 dict put
+1 dict
+ begin
+ /SubstituteFont
+ dup $error exch 2 copy known
+ {get}
+ {pop pop{pop/Courier}bind}
+ ifelse def
+ /currentdistillerparams where dup
+ {
+ pop pop
+ currentdistillerparams/CannotEmbedFontPolicy 2 copy known
+ {get/Error eq}
+ {pop pop false}
+ ifelse
+ }
+ if not
+ {
+ countdictstack array dictstack 0 get
+ begin
+ userdict
+ begin
+ $SubstituteFont
+ begin
+ /$str 128 string def
+ /$fontpat 128 string def
+ /$slen 0 def
+ /$sname null def
+ /$match false def
+ /$fontname null def
+ /$substituteFound false def
+ /$inVMIndex null def
+ /$doSmartSub true def
+ /$depth 0 def
+ /$fontname null def
+ /$italicangle 26.5 def
+ /$dstack null def
+ /$Strategies 10 dict dup
+ begin
+ /$Type3Underprint
+ {
+ currentglobal exch false setglobal
+ 11 dict
+ begin
+ /UseFont exch
+ $WMode 0 ne
+ {
+ dup length dict copy
+ dup/WMode $WMode put
+ /UseFont exch definefont
+ }
+ if def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /FontType 3 def
+ /FontMatrix[.001 0 0 .001 0 0]def
+ /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
+ /FontBBox[0 0 0 0]def
+ /CCInfo 7 dict dup
+ begin
+ /cc null def
+ /x 0 def
+ /y 0 def
+ end def
+ /BuildChar
+ {
+ exch
+ begin
+ CCInfo
+ begin
+ 1 string dup 0 3 index put exch pop
+ /cc exch def
+ UseFont 1000 scalefont setfont
+ cc stringwidth/y exch def/x exch def
+ x y setcharwidth
+ $SubstituteFont/$Strategy get/$Underprint get exec
+ 0 0 moveto cc show
+ x y moveto
+ end
+ end
+ }bind def
+ currentdict
+ end
+ exch setglobal
+ }bind def
+ /$GetaTint
+ 2 dict dup
+ begin
+ /$BuildFont
+ {
+ dup/WMode known
+ {dup/WMode get}
+ {0}
+ ifelse
+ /$WMode exch def
+ $fontname exch
+ dup/FontName known
+ {
+ dup/FontName get
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ exch
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index/FontName get known
+ {
+ pop
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index get
+ null copyfont
+ }
+ {$deepcopyfont}
+ ifelse
+ exch 1 index exch/FontBasedOn exch put
+ dup/FontName $fontname dup type/stringtype eq{cvn}if put
+ definefont
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ begin
+ dup/FontBasedOn get 1 index def
+ end
+ }bind def
+ /$Underprint
+ {
+ gsave
+ x abs y abs gt
+ {/y 1000 def}
+ {/x -1000 def 500 120 translate}
+ ifelse
+ Level2?
+ {
+ [/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
+ setcolorspace
+ }
+ {0 setgray}
+ ifelse
+ 10 setlinewidth
+ x .8 mul
+ [7 3]
+ {
+ y mul 8 div 120 sub x 10 div exch moveto
+ 0 y 4 div neg rlineto
+ dup 0 rlineto
+ 0 y 4 div rlineto
+ closepath
+ gsave
+ Level2?
+ {.2 setcolor}
+ {.8 setgray}
+ ifelse
+ fill grestore
+ stroke
+ }
+ forall
+ pop
+ grestore
+ }bind def
+ end def
+ /$Oblique
+ 1 dict dup
+ begin
+ /$BuildFont
+ {
+ currentglobal exch dup gcheck setglobal
+ null copyfont
+ begin
+ /FontBasedOn
+ currentdict/FontName known
+ {
+ FontName
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /currentdistillerparams where
+ {pop}
+ {
+ /FontInfo currentdict/FontInfo known
+ {FontInfo null copyfont}
+ {2 dict}
+ ifelse
+ dup
+ begin
+ /ItalicAngle $italicangle def
+ /FontMatrix FontMatrix
+ [1 0 ItalicAngle dup sin exch cos div 1 0 0]
+ matrix concatmatrix readonly
+ end
+ 4 2 roll def
+ def
+ }
+ ifelse
+ FontName currentdict
+ end
+ definefont
+ exch setglobal
+ }bind def
+ end def
+ /$None
+ 1 dict dup
+ begin
+ /$BuildFont{}bind def
+ end def
+ end def
+ /$Oblique SetSubstituteStrategy
+ /$findfontByEnum
+ {
+ dup type/stringtype eq{cvn}if
+ dup/$fontname exch def
+ $sname null eq
+ {$str cvs dup length $slen sub $slen getinterval}
+ {pop $sname}
+ ifelse
+ $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
+ /$match false def
+ $SubstituteFont/$dstack countdictstack array dictstack put
+ mark
+ {
+ $fontpat 0 $slen 7 add getinterval
+ {/$match exch def exit}
+ $str filenameforall
+ }
+ stopped
+ {
+ cleardictstack
+ currentdict
+ true
+ $SubstituteFont/$dstack get
+ {
+ exch
+ {
+ 1 index eq
+ {pop false}
+ {true}
+ ifelse
+ }
+ {begin false}
+ ifelse
+ }
+ forall
+ pop
+ }
+ if
+ cleartomark
+ /$slen 0 def
+ $match false ne
+ {$match(fonts/)anchorsearch pop pop cvn}
+ {/Courier}
+ ifelse
+ }bind def
+ /$ROS 1 dict dup
+ begin
+ /Adobe 4 dict dup
+ begin
+ /Japan1 [/Ryumin-Light/HeiseiMin-W3
+ /GothicBBB-Medium/HeiseiKakuGo-W5
+ /HeiseiMaruGo-W4/Jun101-Light]def
+ /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
+ /GB1 [/STSong-Light/STHeiti-Regular]def
+ /CNS1 [/MKai-Medium/MHei-Medium]def
+ end def
+ end def
+ /$cmapname null def
+ /$deepcopyfont
+ {
+ dup/FontType get 0 eq
+ {
+ 1 dict dup/FontName/copied put copyfont
+ begin
+ /FDepVector FDepVector copyarray
+ 0 1 2 index length 1 sub
+ {
+ 2 copy get $deepcopyfont
+ dup/FontName/copied put
+ /copied exch definefont
+ 3 copy put pop pop
+ }
+ for
+ def
+ currentdict
+ end
+ }
+ {$Strategies/$Type3Underprint get exec}
+ ifelse
+ }bind def
+ /$buildfontname
+ {
+ dup/CIDFont findresource/CIDSystemInfo get
+ begin
+ Registry length Ordering length Supplement 8 string cvs
+ 3 copy length 2 add add add string
+ dup 5 1 roll dup 0 Registry putinterval
+ dup 4 index(-)putinterval
+ dup 4 index 1 add Ordering putinterval
+ 4 2 roll add 1 add 2 copy(-)putinterval
+ end
+ 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
+ anchorsearch
+ {pop pop 3 2 roll putinterval cvn/$cmapname exch def}
+ {pop pop pop pop pop}
+ ifelse
+ length
+ $str 1 index(-)putinterval 1 add
+ $str 1 index $cmapname $fontpat cvs putinterval
+ $cmapname length add
+ $str exch 0 exch getinterval cvn
+ }bind def
+ /$findfontByROS
+ {
+ /$fontname exch def
+ $ROS Registry 2 copy known
+ {
+ get Ordering 2 copy known
+ {get}
+ {pop pop[]}
+ ifelse
+ }
+ {pop pop[]}
+ ifelse
+ false exch
+ {
+ dup/CIDFont resourcestatus
+ {
+ pop pop
+ save
+ 1 index/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get}
+ {false}
+ ifelse
+ exch pop
+ exch restore
+ {pop}
+ {exch pop true exit}
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ {$str cvs $buildfontname}
+ {
+ false(*)
+ {
+ save exch
+ dup/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get not}
+ {true}
+ ifelse
+ exch/CIDSystemInfo get
+ dup/Registry get Registry eq
+ exch/Ordering get Ordering eq and and
+ {exch restore exch pop true exit}
+ {pop restore}
+ ifelse
+ }
+ $str/CIDFont resourceforall
+ {$buildfontname}
+ {$fontname $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }bind def
+ end
+ end
+ currentdict/$error known currentdict/languagelevel known and dup
+ {pop $error/SubstituteFont known}
+ if
+ dup
+ {$error}
+ {Adobe_CoolType_Core}
+ ifelse
+ begin
+ {
+ /SubstituteFont
+ /CMap/Category resourcestatus
+ {
+ pop pop
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {
+ $sname null eq
+ {dup $str cvs dup length $slen sub $slen getinterval cvn}
+ {$sname}
+ ifelse
+ Adobe_CoolType_Data/InVMFontsByCMap get
+ 1 index 2 copy known
+ {
+ get
+ false exch
+ {
+ pop
+ currentglobal
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ {
+ FontDirectory 1 index known
+ {exch pop true exit}
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ forall
+ }
+ {pop pop false}
+ ifelse
+ {
+ exch pop exch pop
+ }
+ {
+ dup/CMap resourcestatus
+ {
+ pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ }
+ {
+ 128 string cvs
+ dup(-)search
+ {
+ 3 1 roll search
+ {
+ 3 1 roll pop
+ {dup cvi}
+ stopped
+ {pop pop pop pop pop $findfontByEnum}
+ {
+ 4 2 roll pop pop
+ exch length
+ exch
+ 2 index length
+ 2 index
+ sub
+ exch 1 sub -1 0
+ {
+ $str cvs dup length
+ 4 index
+ 0
+ 4 index
+ 4 3 roll add
+ getinterval
+ exch 1 index exch 3 index exch
+ putinterval
+ dup/CMap resourcestatus
+ {
+ pop pop
+ 4 1 roll pop pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ true exit
+ }
+ {pop}
+ ifelse
+ }
+ for
+ dup type/booleantype eq
+ {pop}
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ {pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ {//SubstituteFont exec}
+ ifelse
+ /$slen 0 def
+ end
+ }
+ }
+ {
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {$findfontByEnum}
+ {//SubstituteFont exec}
+ ifelse
+ end
+ }
+ }
+ ifelse
+ bind readonly def
+ Adobe_CoolType_Core/scfindfont/systemfindfont load put
+ }
+ {
+ /scfindfont
+ {
+ $SubstituteFont
+ begin
+ dup systemfindfont
+ dup/FontName known
+ {dup/FontName get dup 3 index ne}
+ {/noname true}
+ ifelse
+ dup
+ {
+ /$origfontnamefound 2 index def
+ /$origfontname 4 index def/$substituteFound true def
+ }
+ if
+ exch pop
+ {
+ $slen 0 gt
+ $sname null ne
+ 3 index length $slen gt or and
+ {
+ pop dup $findfontByEnum findfont
+ dup maxlength 1 add dict
+ begin
+ {1 index/FID eq{pop pop}{def}ifelse}
+ forall
+ currentdict
+ end
+ definefont
+ dup/FontName known{dup/FontName get}{null}ifelse
+ $origfontnamefound ne
+ {
+ $origfontname $str cvs print
+ ( substitution revised, using )print
+ dup/FontName known
+ {dup/FontName get}{(unspecified font)}
+ ifelse
+ $str cvs print(.\n)print
+ }
+ if
+ }
+ {exch pop}
+ ifelse
+ }
+ {exch pop}
+ ifelse
+ end
+ }bind def
+ }
+ ifelse
+ end
+ end
+ Adobe_CoolType_Core_Defined not
+ {
+ Adobe_CoolType_Core/findfont
+ {
+ $SubstituteFont
+ begin
+ $depth 0 eq
+ {
+ /$fontname 1 index dup type/stringtype ne{$str cvs}if def
+ /$substituteFound false def
+ }
+ if
+ /$depth $depth 1 add def
+ end
+ scfindfont
+ $SubstituteFont
+ begin
+ /$depth $depth 1 sub def
+ $substituteFound $depth 0 eq and
+ {
+ $inVMIndex null ne
+ {dup $inVMIndex $AddInVMFont}
+ if
+ $doSmartSub
+ {
+ currentdict/$Strategy known
+ {$Strategy/$BuildFont get exec}
+ if
+ }
+ if
+ }
+ if
+ end
+ }bind put
+ }
+ if
+ }
+ if
+ end
+/$AddInVMFont
+ {
+ exch/FontName 2 copy known
+ {
+ get
+ 1 dict dup begin exch 1 index gcheck def end exch
+ Adobe_CoolType_Data/InVMFontsByCMap get exch
+ $DictAdd
+ }
+ {pop pop pop}
+ ifelse
+ }bind def
+/$DictAdd
+ {
+ 2 copy known not
+ {2 copy 4 index length dict put}
+ if
+ Level2? not
+ {
+ 2 copy get dup maxlength exch length 4 index length add lt
+ 2 copy get dup length 4 index length add exch maxlength 1 index lt
+ {
+ 2 mul dict
+ begin
+ 2 copy get{forall}def
+ 2 copy currentdict put
+ end
+ }
+ {pop}
+ ifelse
+ }
+ if
+ get
+ begin
+ {def}
+ forall
+ end
+ }bind def
+end
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
+%%Version: 1.23 0
+systemdict/languagelevel known dup
+ {currentglobal false setglobal}
+ {false}
+ifelse
+exch
+userdict/Adobe_CoolType_Utility 2 copy known
+ {2 copy get dup maxlength 27 add dict copy}
+ {27 dict}
+ifelse put
+Adobe_CoolType_Utility
+ begin
+ /@eexecStartData
+ <BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
+ 118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
+ 4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
+ /@recognizeCIDFont null def
+ /ct_Level2? exch def
+ /ct_Clone? 1183615869 internaldict dup
+ /CCRun known not
+ exch/eCCRun known not
+ ct_Level2? and or def
+ct_Level2?
+ {globaldict begin currentglobal true setglobal}
+if
+ /ct_AddStdCIDMap
+ ct_Level2?
+ {{
+ mark
+ Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
+ {
+ ((Hex)57 StartData
+ 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
+ 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
+ d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
+ cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
+ }
+ stopped
+ {
+ cleartomark
+ Adobe_CoolType_Utility/@recognizeCIDFont get
+ countdictstack dup array dictstack
+ exch 1 sub -1 0
+ {
+ 2 copy get 3 index eq
+ {1 index length exch sub 1 sub{end}repeat exit}
+ {pop}
+ ifelse
+ }
+ for
+ pop pop
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }
+ {cleartomark}
+ ifelse
+ }}
+ {{
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }}
+ ifelse bind def
+userdict/cid_extensions known
+dup{cid_extensions/cid_UpdateDB known and}if
+ {
+ cid_extensions
+ begin
+ /cid_GetCIDSystemInfo
+ {
+ 1 index type/stringtype eq
+ {exch cvn exch}
+ if
+ cid_extensions
+ begin
+ dup load 2 index known
+ {
+ 2 copy
+ cid_GetStatusInfo
+ dup null ne
+ {
+ 1 index load
+ 3 index get
+ dup null eq
+ {pop pop cid_UpdateDB}
+ {
+ exch
+ 1 index/Created get eq
+ {exch pop exch pop}
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ ifelse
+ }
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ {cid_UpdateDB}
+ ifelse
+ end
+ }bind def
+ end
+ }
+if
+ct_Level2?
+ {end setglobal}
+if
+ /ct_UseNativeCapability? systemdict/composefont known def
+ /ct_MakeOCF 35 dict def
+ /ct_Vars 25 dict def
+ /ct_GlyphDirProcs 6 dict def
+ /ct_BuildCharDict 15 dict dup
+ begin
+ /charcode 2 string def
+ /dst_string 1500 string def
+ /nullstring()def
+ /usewidths? true def
+ end def
+ ct_Level2?{setglobal}{pop}ifelse
+ ct_GlyphDirProcs
+ begin
+ /GetGlyphDirectory
+ {
+ systemdict/languagelevel known
+ {pop/CIDFont findresource/GlyphDirectory get}
+ {
+ 1 index/CIDFont findresource/GlyphDirectory
+ get dup type/dicttype eq
+ {
+ dup dup maxlength exch length sub 2 index lt
+ {
+ dup length 2 index add dict copy 2 index
+ /CIDFont findresource/GlyphDirectory 2 index put
+ }
+ if
+ }
+ if
+ exch pop exch pop
+ }
+ ifelse
+ +
+ }def
+ /+
+ {
+ systemdict/languagelevel known
+ {
+ currentglobal false setglobal
+ 3 dict begin
+ /vm exch def
+ }
+ {1 dict begin}
+ ifelse
+ /$ exch def
+ systemdict/languagelevel known
+ {
+ vm setglobal
+ /gvm currentglobal def
+ $ gcheck setglobal
+ }
+ if
+ ?{$ begin}if
+ }def
+ /?{$ type/dicttype eq}def
+ /|{
+ userdict/Adobe_CoolType_Data known
+ {
+ Adobe_CoolType_Data/AddWidths? known
+ {
+ currentdict Adobe_CoolType_Data
+ begin
+ begin
+ AddWidths?
+ {
+ Adobe_CoolType_Data/CC 3 index put
+ ?{def}{$ 3 1 roll put}ifelse
+ CC charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore
+ currentfont/Widths get exch CC exch put
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ end
+ end
+ }
+ {?{def}{$ 3 1 roll put}ifelse} ifelse
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ }def
+ /!
+ {
+ ?{end}if
+ systemdict/languagelevel known
+ {gvm setglobal}
+ if
+ end
+ }def
+ /:{string currentfile exch readstring pop}executeonly def
+ end
+ ct_MakeOCF
+ begin
+ /ct_cHexEncoding
+ [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+ /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+ /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+ /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+ /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+ /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+ /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+ /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+ /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+ /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+ /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+ /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+ /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+ /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+ /ct_CID_STR_SIZE 8000 def
+ /ct_mkocfStr100 100 string def
+ /ct_defaultFontMtx[.001 0 0 .001 0 0]def
+ /ct_1000Mtx[1000 0 0 1000 0 0]def
+ /ct_raise{exch cvx exch errordict exch get exec stop}bind def
+ /ct_reraise
+ {cvx $error/errorname get(Error: )print dup( )cvs print
+ errordict exch get exec stop
+ }bind def
+ /ct_cvnsi
+ {
+ 1 index add 1 sub 1 exch 0 4 1 roll
+ {
+ 2 index exch get
+ exch 8 bitshift
+ add
+ }
+ for
+ exch pop
+ }bind def
+ /ct_GetInterval
+ {
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /dst_index 0 def
+ dup dst_string length gt
+ {dup string/dst_string exch def}
+ if
+ 1 index ct_CID_STR_SIZE idiv
+ /arrayIndex exch def
+ 2 index arrayIndex get
+ 2 index
+ arrayIndex ct_CID_STR_SIZE mul
+ sub
+ {
+ dup 3 index add 2 index length le
+ {
+ 2 index getinterval
+ dst_string dst_index 2 index putinterval
+ length dst_index add/dst_index exch def
+ exit
+ }
+ {
+ 1 index length 1 index sub
+ dup 4 1 roll
+ getinterval
+ dst_string dst_index 2 index putinterval
+ pop dup dst_index add/dst_index exch def
+ sub
+ /arrayIndex arrayIndex 1 add def
+ 2 index dup length arrayIndex gt
+ {arrayIndex get}
+ {
+ pop
+ exit
+ }
+ ifelse
+ 0
+ }
+ ifelse
+ }
+ loop
+ pop pop pop
+ dst_string 0 dst_index getinterval
+ end
+ }bind def
+ ct_Level2?
+ {
+ /ct_resourcestatus
+ currentglobal mark true setglobal
+ {/unknowninstancename/Category resourcestatus}
+ stopped
+ {cleartomark setglobal true}
+ {cleartomark currentglobal not exch setglobal}
+ ifelse
+ {
+ {
+ mark 3 1 roll/Category findresource
+ begin
+ ct_Vars/vm currentglobal put
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ ct_Vars/vm get setglobal
+ end
+ }
+ }
+ {{resourcestatus}}
+ ifelse bind def
+ /CIDFont/Category ct_resourcestatus
+ {pop pop}
+ {
+ currentglobal true setglobal
+ /Generic/Category findresource
+ dup length dict copy
+ dup/InstanceType/dicttype put
+ /CIDFont exch/Category defineresource pop
+ setglobal
+ }
+ ifelse
+ ct_UseNativeCapability?
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ if
+ }
+ {
+ /ct_Category 2 dict begin
+ /CIDFont 10 dict def
+ /ProcSet 2 dict def
+ currentdict
+ end
+ def
+ /defineresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ dup dup maxlength exch length eq
+ {
+ dup length 10 add dict copy
+ ct_Category 2 index 2 index put
+ }
+ if
+ 3 index 3 index put
+ pop exch pop
+ }
+ {pop pop/defineresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /findresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index 2 copy known
+ {get 3 1 roll pop pop}
+ {pop pop/findresource/undefinedresource ct_raise}
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /resourcestatus
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index known
+ exch pop exch pop
+ {
+ 0 -1 true
+ }
+ {
+ false
+ }
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /ct_resourcestatus/resourcestatus load def
+ }
+ ifelse
+ /ct_CIDInit 2 dict
+ begin
+ /ct_cidfont_stream_init
+ {
+ {
+ dup(Binary)eq
+ {
+ pop
+ null
+ currentfile
+ ct_Level2?
+ {
+ {cid_BYTE_COUNT()/SubFileDecode filter}
+ stopped
+ {pop pop pop}
+ if
+ }
+ if
+ /readstring load
+ exit
+ }
+ if
+ dup(Hex)eq
+ {
+ pop
+ currentfile
+ ct_Level2?
+ {
+ {null exch/ASCIIHexDecode filter/readstring}
+ stopped
+ {pop exch pop(>)exch/readhexstring}
+ if
+ }
+ {(>)exch/readhexstring}
+ ifelse
+ load
+ exit
+ }
+ if
+ /StartData/typecheck ct_raise
+ }
+ loop
+ cid_BYTE_COUNT ct_CID_STR_SIZE le
+ {
+ 2 copy cid_BYTE_COUNT string exch exec
+ pop
+ 1 array dup
+ 3 -1 roll
+ 0 exch put
+ }
+ {
+ cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
+ dup array exch 2 sub 0 exch 1 exch
+ {
+ 2 copy
+ 5 index
+ ct_CID_STR_SIZE
+ string
+ 6 index exec
+ pop
+ put
+ pop
+ }
+ for
+ 2 index
+ cid_BYTE_COUNT ct_CID_STR_SIZE mod string
+ 3 index exec
+ pop
+ 1 index exch
+ 1 index length 1 sub
+ exch put
+ }
+ ifelse
+ cid_CIDFONT exch/GlyphData exch put
+ 2 index null eq
+ {
+ pop pop pop
+ }
+ {
+ pop/readstring load
+ 1 string exch
+ {
+ 3 copy exec
+ pop
+ dup length 0 eq
+ {
+ pop pop pop pop pop
+ true exit
+ }
+ if
+ 4 index
+ eq
+ {
+ pop pop pop pop
+ false exit
+ }
+ if
+ }
+ loop
+ pop
+ }
+ ifelse
+ }bind def
+ /StartData
+ {
+ mark
+ {
+ currentdict
+ dup/FDArray get 0 get/FontMatrix get
+ 0 get 0.001 eq
+ {
+ dup/CDevProc known not
+ {
+ /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
+ {get}
+ {
+ pop pop
+ {pop pop pop pop pop 0 -1000 7 index 2 div 880}
+ }
+ ifelse
+ def
+ }
+ if
+ }
+ {
+ /CDevProc
+ {
+ pop pop pop pop pop
+ 0
+ 1 cid_temp/cid_CIDFONT get
+ /FDArray get 0 get
+ /FontMatrix get 0 get div
+ 7 index 2 div
+ 1 index 0.88 mul
+ }def
+ }
+ ifelse
+ /cid_temp 15 dict def
+ cid_temp
+ begin
+ /cid_CIDFONT exch def
+ 3 copy pop
+ dup/cid_BYTE_COUNT exch def 0 gt
+ {
+ ct_cidfont_stream_init
+ FDArray
+ {
+ /Private get
+ dup/SubrMapOffset known
+ {
+ begin
+ /Subrs SubrCount array def
+ Subrs
+ SubrMapOffset
+ SubrCount
+ SDBytes
+ ct_Level2?
+ {
+ currentdict dup/SubrMapOffset undef
+ dup/SubrCount undef
+ /SDBytes undef
+ }
+ if
+ end
+ /cid_SD_BYTES exch def
+ /cid_SUBR_COUNT exch def
+ /cid_SUBR_MAP_OFFSET exch def
+ /cid_SUBRS exch def
+ cid_SUBR_COUNT 0 gt
+ {
+ GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ 0 1 cid_SUBR_COUNT 1 sub
+ {
+ exch 1 index
+ 1 add
+ cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
+ GlyphData exch cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ cid_SUBRS 4 2 roll
+ GlyphData exch
+ 4 index
+ 1 index
+ sub
+ ct_GetInterval
+ dup length string copy put
+ }
+ for
+ pop
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ }
+ if
+ cleartomark pop pop
+ end
+ CIDFontName currentdict/CIDFont defineresource pop
+ end end
+ }
+ stopped
+ {cleartomark/StartData ct_reraise}
+ if
+ }bind def
+ currentdict
+ end def
+ /ct_saveCIDInit
+ {
+ /CIDInit/ProcSet ct_resourcestatus
+ {true}
+ {/CIDInitC/ProcSet ct_resourcestatus}
+ ifelse
+ {
+ pop pop
+ /CIDInit/ProcSet findresource
+ ct_UseNativeCapability?
+ {pop null}
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop}
+ ifelse
+ }
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop null}
+ ifelse
+ ct_Vars exch/ct_oldCIDInit exch put
+ }bind def
+ /ct_restoreCIDInit
+ {
+ ct_Vars/ct_oldCIDInit get dup null ne
+ {/CIDInit exch/ProcSet defineresource pop}
+ {pop}
+ ifelse
+ }bind def
+ /ct_BuildCharSetUp
+ {
+ 1 index
+ begin
+ CIDFont
+ begin
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /ct_dfCharCode exch def
+ /ct_dfDict exch def
+ CIDFirstByte ct_dfCharCode add
+ dup CIDCount ge
+ {pop 0}
+ if
+ /cid exch def
+ {
+ GlyphDirectory cid 2 copy known
+ {get}
+ {pop pop nullstring}
+ ifelse
+ dup length FDBytes sub 0 gt
+ {
+ dup
+ FDBytes 0 ne
+ {0 FDBytes ct_cvnsi}
+ {pop 0}
+ ifelse
+ /fdIndex exch def
+ dup length FDBytes sub FDBytes exch getinterval
+ /charstring exch def
+ exit
+ }
+ {
+ pop
+ cid 0 eq
+ {/charstring nullstring def exit}
+ if
+ /cid 0 def
+ }
+ ifelse
+ }
+ loop
+ }def
+ /ct_SetCacheDevice
+ {
+ 0 0 moveto
+ dup stringwidth
+ 3 -1 roll
+ true charpath
+ pathbbox
+ 0 -1000
+ 7 index 2 div 880
+ setcachedevice2
+ 0 0 moveto
+ }def
+ /ct_CloneSetCacheProc
+ {
+ 1 eq
+ {
+ stringwidth
+ pop -2 div -880
+ 0 -1000 setcharwidth
+ moveto
+ }
+ {
+ usewidths?
+ {
+ currentfont/Widths get cid
+ 2 copy known
+ {get exch pop aload pop}
+ {pop pop stringwidth}
+ ifelse
+ }
+ {stringwidth}
+ ifelse
+ setcharwidth
+ 0 0 moveto
+ }
+ ifelse
+ }def
+ /ct_Type3ShowCharString
+ {
+ ct_FDDict fdIndex 2 copy known
+ {get}
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ ct_Type1FontTemplate dup maxlength dict copy
+ begin
+ FDArray fdIndex get
+ dup/FontMatrix 2 copy known
+ {get}
+ {pop pop ct_defaultFontMtx}
+ ifelse
+ /FontMatrix exch dup length array copy def
+ /Private get
+ /Private exch def
+ /Widths rootfont/Widths get def
+ /CharStrings 1 dict dup/.notdef
+ <d841272cf18f54fc13>dup length string copy put def
+ currentdict
+ end
+ /ct_Type1Font exch definefont
+ dup 5 1 roll put
+ setglobal
+ }
+ ifelse
+ dup/CharStrings get 1 index/Encoding get
+ ct_dfCharCode get charstring put
+ rootfont/WMode 2 copy known
+ {get}
+ {pop pop 0}
+ ifelse
+ exch
+ 1000 scalefont setfont
+ ct_str1 0 ct_dfCharCode put
+ ct_str1 exch ct_dfSetCacheProc
+ ct_SyntheticBold
+ {
+ currentpoint
+ ct_str1 show
+ newpath
+ moveto
+ ct_str1 true charpath
+ ct_StrokeWidth setlinewidth
+ stroke
+ }
+ {ct_str1 show}
+ ifelse
+ }def
+ /ct_Type4ShowCharString
+ {
+ ct_dfDict ct_dfCharCode charstring
+ FDArray fdIndex get
+ dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
+ {ct_1000Mtx matrix concatmatrix concat}
+ {pop}
+ ifelse
+ /Private get
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {
+ ct_dfDict/Private
+ 3 -1 roll
+ {put}
+ 1183615869 internaldict/superexec get exec
+ }
+ if
+ 1183615869 internaldict
+ Adobe_CoolType_Utility/ct_Level2? get
+ {1 index}
+ {3 index/Private get mark 6 1 roll}
+ ifelse
+ dup/RunInt known
+ {/RunInt get}
+ {pop/CCRun}
+ ifelse
+ get exec
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {cleartomark}
+ if
+ }bind def
+ /ct_BuildCharIncremental
+ {
+ {
+ Adobe_CoolType_Utility/ct_MakeOCF get begin
+ ct_BuildCharSetUp
+ ct_ShowCharString
+ }
+ stopped
+ {stop}
+ if
+ end
+ end
+ end
+ end
+ }bind def
+ /BaseFontNameStr(BF00)def
+ /ct_Type1FontTemplate 14 dict
+ begin
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /PaintType 0 def
+ currentdict
+ end def
+ /BaseFontTemplate 11 dict
+ begin
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /BuildChar/ct_BuildCharIncremental load def
+ ct_Clone?
+ {
+ /FontType 3 def
+ /ct_ShowCharString/ct_Type3ShowCharString load def
+ /ct_dfSetCacheProc/ct_CloneSetCacheProc load def
+ /ct_SyntheticBold false def
+ /ct_StrokeWidth 1 def
+ }
+ {
+ /FontType 4 def
+ /Private 1 dict dup/lenIV 4 put def
+ /CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
+ /PaintType 0 def
+ /ct_ShowCharString/ct_Type4ShowCharString load def
+ }
+ ifelse
+ /ct_str1 1 string def
+ currentdict
+ end def
+ /BaseFontDictSize BaseFontTemplate length 5 add def
+ /ct_matrixeq
+ {
+ true 0 1 5
+ {
+ dup 4 index exch get exch 3 index exch get eq and
+ dup not
+ {exit}
+ if
+ }
+ for
+ exch pop exch pop
+ }bind def
+ /ct_makeocf
+ {
+ 15 dict
+ begin
+ exch/WMode exch def
+ exch/FontName exch def
+ /FontType 0 def
+ /FMapType 2 def
+ dup/FontMatrix known
+ {dup/FontMatrix get/FontMatrix exch def}
+ {/FontMatrix matrix def}
+ ifelse
+ /bfCount 1 index/CIDCount get 256 idiv 1 add
+ dup 256 gt{pop 256}if def
+ /Encoding
+ 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
+ bfCount 1 255{2 copy bfCount put pop}for
+ def
+ /FDepVector bfCount dup 256 lt{1 add}if array def
+ BaseFontTemplate BaseFontDictSize dict copy
+ begin
+ /CIDFont exch def
+ CIDFont/FontBBox known
+ {CIDFont/FontBBox get/FontBBox exch def}
+ if
+ CIDFont/CDevProc known
+ {CIDFont/CDevProc get/CDevProc exch def}
+ if
+ currentdict
+ end
+ BaseFontNameStr 3(0)putinterval
+ 0 1 bfCount dup 256 eq{1 sub}if
+ {
+ FDepVector exch
+ 2 index BaseFontDictSize dict copy
+ begin
+ dup/CIDFirstByte exch 256 mul def
+ FontType 3 eq
+ {/ct_FDDict 2 dict def}
+ if
+ currentdict
+ end
+ 1 index 16
+ BaseFontNameStr 2 2 getinterval cvrs pop
+ BaseFontNameStr exch definefont
+ put
+ }
+ for
+ ct_Clone?
+ {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
+ if
+ FontName
+ currentdict
+ end
+ definefont
+ ct_Clone?
+ {
+ gsave
+ dup 1000 scalefont setfont
+ ct_BuildCharDict
+ begin
+ /usewidths? false def
+ currentfont/Widths get
+ begin
+ exch/CIDFont get/GlyphDirectory get
+ {
+ pop
+ dup charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore def
+ }
+ forall
+ end
+ /usewidths? true def
+ end
+ grestore
+ }
+ {exch pop}
+ ifelse
+ }bind def
+ currentglobal true setglobal
+ /ct_ComposeFont
+ {
+ ct_UseNativeCapability?
+ {
+ 2 index/CMap ct_resourcestatus
+ {pop pop exch pop}
+ {
+ /CIDInit/ProcSet findresource
+ begin
+ 12 dict
+ begin
+ begincmap
+ /CMapName 3 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ exch/WMode exch def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {
+ dup length string copy
+ exch pop exch pop
+ }
+ {pop(Identity)}
+ ifelse
+ }
+ {pop (Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ 3 2 roll pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ setglobal
+ /ct_MakeIdentity
+ {
+ ct_UseNativeCapability?
+ {
+ 1 index/CMap ct_resourcestatus
+ {pop pop}
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CMapName 2 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {dup length string copy exch pop exch pop}
+ {pop(Identity)}
+ ifelse
+ }
+ {pop(Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ exch pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ currentdict readonly pop
+ end
+ end
+%%EndResource
+setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
+%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
+%%Version: 1.0 0
+userdict/ct_T42Dict 15 dict put
+ct_T42Dict begin
+/Is2015?
+{
+ version
+ cvi
+ 2015
+ ge
+}bind def
+/AllocGlyphStorage
+{
+ Is2015?
+ {
+ pop
+ }
+ {
+ {string}forall
+ }ifelse
+}bind def
+/Type42DictBegin
+{
+25 dict begin
+ /FontName exch def
+ /CharStrings 256 dict
+begin
+ /.notdef 0 def
+ currentdict
+end def
+ /Encoding exch def
+ /PaintType 0 def
+ /FontType 42 def
+ /FontMatrix[1 0 0 1 0 0]def
+ 4 array astore cvx/FontBBox exch def
+ /sfnts
+}bind def
+/Type42DictEnd
+{
+ currentdict dup/FontName get exch definefont end
+ct_T42Dict exch
+dup/FontName get exch put
+}bind def
+/RD{string currentfile exch readstring pop}executeonly def
+/PrepFor2015
+{
+Is2015?
+{
+ /GlyphDirectory
+ 16
+ dict def
+ sfnts 0 get
+ dup
+ 2 index
+ (glyx)
+ putinterval
+ 2 index
+ (locx)
+ putinterval
+ pop
+ pop
+}
+{
+ pop
+ pop
+}ifelse
+}bind def
+/AddT42Char
+{
+Is2015?
+{
+ /GlyphDirectory get
+ begin
+ def
+ end
+ pop
+ pop
+}
+{
+ /sfnts get
+ 4 index
+ get
+ 3 index
+ 2 index
+ putinterval
+ pop
+ pop
+ pop
+ pop
+}ifelse
+}bind def
+/T0AddT42Mtx2
+{
+/CIDFont findresource/Metrics2 get begin def end
+}bind def
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginFile: MMFauxFont.prc
+%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
+%%All Rights Reserved.
+userdict /ct_EuroDict 10 dict put
+ct_EuroDict begin
+/ct_CopyFont
+{
+ { 1 index /FID ne {def} {pop pop} ifelse} forall
+} def
+/ct_GetGlyphOutline
+{
+ gsave
+ initmatrix newpath
+ exch findfont dup
+ length 1 add dict
+ begin
+ ct_CopyFont
+ /Encoding Encoding dup length array copy
+ dup
+ 4 -1 roll
+ 0 exch put
+ def
+ currentdict
+ end
+ /ct_EuroFont exch definefont
+ 1000 scalefont setfont
+ 0 0 moveto
+ [
+ <00> stringwidth
+ <00> false charpath
+ pathbbox
+ [
+ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
+ grestore
+ counttomark 8 add
+}
+def
+/ct_MakeGlyphProc
+{
+ ] cvx
+ /ct_PSBuildGlyph cvx
+ ] cvx
+} def
+/ct_PSBuildGlyph
+{
+ gsave
+ 8 -1 roll pop
+ 7 1 roll
+ 6 -2 roll ct_FontMatrix transform 6 2 roll
+ 4 -2 roll ct_FontMatrix transform 4 2 roll
+ ct_FontMatrix transform
+ currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
+ dup 9 1 roll
+ {
+ currentdict /StrokeWidth 2 copy known
+ {
+ get 2 div
+ 0 ct_FontMatrix dtransform pop
+ 5 1 roll
+ 4 -1 roll 4 index sub
+ 4 1 roll
+ 3 -1 roll 4 index sub
+ 3 1 roll
+ exch 4 index add exch
+ 4 index add
+ 5 -1 roll pop
+ }
+ {
+ pop pop
+ }
+ ifelse
+ }
+ if
+ setcachedevice
+ ct_FontMatrix concat
+ ct_PSPathOps begin
+ exec
+ end
+ {
+ currentdict /StrokeWidth 2 copy known
+ { get }
+ { pop pop 0 }
+ ifelse
+ setlinewidth stroke
+ }
+ {
+ fill
+ }
+ ifelse
+ grestore
+} def
+/ct_PSPathOps 4 dict dup begin
+ /m {moveto} def
+ /l {lineto} def
+ /c {curveto} def
+ /cp {closepath} def
+end
+def
+/ct_matrix1000 [1000 0 0 1000 0 0] def
+/ct_AddGlyphProc
+{
+ 2 index findfont dup length 4 add dict
+ begin
+ ct_CopyFont
+ /CharStrings CharStrings dup length 1 add dict copy
+ begin
+ 3 1 roll def
+ currentdict
+ end
+ def
+ /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
+ /ct_PSBuildGlyph /ct_PSBuildGlyph load def
+ /ct_PSPathOps /ct_PSPathOps load def
+ currentdict
+ end
+ definefont pop
+}
+def
+systemdict /languagelevel known
+{
+ /ct_AddGlyphToPrinterFont {
+ 2 copy
+ ct_GetGlyphOutline 3 add -1 roll restore
+ ct_MakeGlyphProc
+ ct_AddGlyphProc
+ } def
+}
+{
+ /ct_AddGlyphToPrinterFont {
+ pop pop restore
+ Adobe_CTFauxDict /$$$FONTNAME get
+ /Euro
+ Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
+ ct_EuroDict exch get
+ ct_AddGlyphProc
+ } def
+} ifelse
+/AdobeSansMM
+{
+556 0 24 -19 541 703
+ {
+ 541 628 m
+ 510 669 442 703 354 703 c
+ 201 703 117 607 101 444 c
+ 50 444 l
+ 25 372 l
+ 97 372 l
+ 97 301 l
+ 49 301 l
+ 24 229 l
+ 103 229 l
+ 124 67 209 -19 350 -19 c
+ 435 -19 501 25 509 32 c
+ 509 131 l
+ 492 105 417 60 343 60 c
+ 267 60 204 127 197 229 c
+ 406 229 l
+ 430 301 l
+ 191 301 l
+ 191 372 l
+ 455 372 l
+ 479 444 l
+ 194 444 l
+ 201 531 245 624 348 624 c
+ 433 624 484 583 509 534 c
+ cp
+ 556 0 m
+ }
+ct_PSBuildGlyph
+} def
+/AdobeSerifMM
+{
+500 0 10 -12 484 692
+ {
+ 347 298 m
+ 171 298 l
+ 170 310 170 322 170 335 c
+ 170 362 l
+ 362 362 l
+ 374 403 l
+ 172 403 l
+ 184 580 244 642 308 642 c
+ 380 642 434 574 457 457 c
+ 481 462 l
+ 474 691 l
+ 449 691 l
+ 433 670 429 657 410 657 c
+ 394 657 360 692 299 692 c
+ 204 692 94 604 73 403 c
+ 22 403 l
+ 10 362 l
+ 70 362 l
+ 69 352 69 341 69 330 c
+ 69 319 69 308 70 298 c
+ 22 298 l
+ 10 257 l
+ 73 257 l
+ 97 57 216 -12 295 -12 c
+ 364 -12 427 25 484 123 c
+ 458 142 l
+ 425 101 384 37 316 37 c
+ 256 37 189 84 173 257 c
+ 335 257 l
+ cp
+ 500 0 m
+ }
+ct_PSBuildGlyph
+} def
+end
+%%EndFile
+setglobal
+Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
+{
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
+{
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
+{
+ end
+}def
+/dt
+{
+}def
+/AGMIMG_flushfilters
+{
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
+{
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
+}def
+/overprint_plate
+{
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}def
+/process_mask
+{
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
+{
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
+{
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource[
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
+{
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
+{
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
+{
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
+{
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
+{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
+{
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
+{
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ AGMIMG_&customcolorimage
+ }ifelse
+ }bdf
+}def
+/snap_to_device
+{
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
+}def
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
+}if
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2016 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
+Adobe_AGM_Image/ds gx
+[/NamespacePush pdfmark_5
+[/_objdef {Doc_Metadata} /type /stream /OBJ pdfmark_5
+[{Doc_Metadata} 51106 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xap:CreateDate="2007-08-05T16:27:57-05:00"
+ xap:ModifyDate="2007-08-05T16:27:57-05:00"
+ xap:CreatorTool="Illustrator"
+ dc:format="application/pdf"
+ pdf:Producer="Acrobat Distiller 8.1.0 (Windows)"
+ xapMM:DocumentID="uuid:6a5534dc-b702-434a-ac72-50ae253587cf"
+ xapMM:InstanceID="uuid:6ea3b764-8f15-41a8-bee6-74717ce38d5c">
+ <xap:Thumbnails>
+ <rdf:Alt>
+ <rdf:li
+ xapGImg:format="JPEG"
+ xapGImg:width="256"
+ xapGImg:height="244"
+ xapGImg:image="/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA9AEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq84/OnzX+jtFXRbZ6XmpA+tTqtsDRv+Rh+H5VyjPOhTVllQp5j5d/&#xA;MrzboXGOC7NzaL/x63VZUp4KSQ6/7FhlEchDVGZD0/y7+dnl2/4w6rG+mXB29Q1lgJ/1lHJfpWg8&#xA;cvjnB5tsco6vQbS8tLyBbi0mjuIH3SWJg6H5MpIy4G20FVwq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqpXl3b2drNd3LiO3t0aWaQ9FRBVj9wwE0pL5d81+&#xA;YLjzBr13qk1QJmpDGf2Il2RfoXr75gylZtxJGzaU5Fi7FUdpGu6xo8/r6ZeS2snf02orU/mU/Cw+&#xA;YwgkckgkPSfLv57XcfGHX7MTpsDd21Ef5tGfhb6CuXRznq2xy971Dy/5r0HX4DLpd2s/H+8iNVkX&#xA;/WRqH6emXxmDybRIFNsmydirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVeV/nf5r+r2cPl22ek1zSa9IPSIH4EP+swqfYe+Y+efRpyy6PFsxmh2KuxV2KtqrMwVRVmNA&#xA;B1JOKvWfLOmHR9NhiQ8Ln+8mkU0PqHrQjw6ZiynZtoMt7Zppnm+4ipHfL6yf79WgcfMdDmTi1hG0&#xA;t2/HqSObKLS+tLyP1LaUSL3p1HzHUZnwyCQsOXGYlyV8mydirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirsVdirsVdiqE1bU7XS9NudRu2429rG0kh7mg2A9ydh74JGhaCafLeu6xdazq91qd&#xA;0azXUhcitQq9FQeyrQDMAmzbiE2UDgQ7FXYq7FWT+RdG+t6gb6VawWhBSvQynp/wPX7sqyyoUwyH&#xA;Z6LmO0OxVUguJ7eQSwOY5B0ZTTDGRBsJEiOTJdM84DaPUF9vXQf8SX+n3ZnYtZ0k5ePU/wA5ksFx&#xA;BPGJYXWSM9GU1GZ0ZAiw5QIPJfhS7FXYq7FXYq7FXYqhNV1bTtJsXvtRnW3tYyoeVqkAsQo2AJ6n&#xA;AZAblBNL7DUbDULdbmxuI7m3bpLEwdflUd8QQeSg2iMKXYq7FXYq7FXYq7FXYq7FXYq7FXj354+a&#xA;+Tw+W7Z9k43F+Qf2v91xn5D4z9GY2efRoyy6PI8x2l2KuxV2KroYpJpUijXlJIwVFHUkmgGBXrmi&#xA;6ZHpmmw2iUJQVkcftOd2OYkpWXHkbKOwMXYq7FXYqr2d/d2cnqW0hjbuB0PzB2OThMxNhlGZjyZj&#xA;oGvvqRaKSHjLGvJnX7BHTvuDmx0+o49iN3Ow5uLZOcym92KuxV2KuxV2KvEfzt82fXNSi8v2r1t7&#xA;EiS7p0adhsv+wU/eT4Zi5p2acfLLo870zV9U0u4Fxp11LaTd3iYrUeDU2I9jlIJHJrBp6P5e/PTU&#xA;7fjFrtqt5H0NzBSOX5lP7tvo45dHOerbHKer07y/548sa+FGnXqNOetrJ+7mH+wbr/sajL45AW0T&#xA;BT3JsnYq7FXYq7FXYq7FXYqlvmPXLXQ9Fu9UuT+7tkLKnd3OyIP9ZiBkZSoWiRoW+XNR1C61G/uL&#xA;66bncXMjSyt/lMa7e3hmATbiE2h8UOxV2KuxVl/kDRvVuX1OVfgg+CCvQuR8R/2IynLLo15D0Z7l&#xA;DS7FXYq7FXYq7FWe+XdM+o6evMUnm+OXxHgv0DNtpsXDHzLscMOGKaZkNzsVdirsVdiqS+cfMcPl&#xA;3y/danJQyIvC2jP7cz7IvyrufYHITlwi2MpUHzBcXE9zcS3E7mSeZ2klkbcszGrE/M5guIp4q7FX&#xA;AkEEGhG4I61xVmXl381/N2j8Y3uP0haLt6F1VyB/kyfbH0kj2yyOWQZxyEPYvKH5gaf5hslnkgfT&#xA;5GJULKylGINDwcUr9IGXR1ESaOxbY5ok0ynL212KuxV2KuxV2KvEfzt82fXNSj0C2ettYn1LunRp&#xA;2Gy/7BT95PhmLmnZpx8st6eYZQ1OxV2KuxVVtLWa7uYraEcpZWCqPc4CaUl69pthDYWMNpD9iJaV&#xA;8T1J+k75iE2XGJtE4EOxV2KuxV2Kpv5Z0365qAkcVgt6O/gW/ZX+OZGmxcUvIN+CHFL3M6zbOwdi&#xA;rsVdirsVdirwT85PNZ1TXv0TbvWy0slGodnuD9s/7D7I+nxzDzTs042SVl57lTW7FXYq7FUTpthN&#xA;f30NpD9uVqV7AdSx+Q3wE0LQTT120tYbW2itoRxiiUKg9hmGTbjkpzpnmDULCiBvVgH+6n3A/wBU&#xA;9Rl+LUSh7m2GaUWWaZ5g0+/oqt6U5/3S+xJ/yT3zYYtRGfvcyGaMkyy9tdirsVSXzj5jh8u+XrrU&#xA;3oZEHC2jP7cz7Ivy7n2ByE5cItjKVB8wXFxPc3EtxO5knmdpJZG3LMxqxPzOYLiKeKuxV2KuxVm3&#xA;5f6N9vVZV8Y7av3O3/Gv35Rll0ash6M2ylqdirsVdirsVcAWIUCpOwA8cUvQtE04WGnpCR+9b45j&#xA;/lHt9HTNxgx8EadlihwxpH5c2OxV2KuxV2Ksb/MDzSvlzy3cXaMPrsv7myU95WH2qeCD4sryT4Qw&#xA;nKg+Z2ZmYsxLMxqzHcknMJxWsVdirsVdirPfIGjejbPqcq/vJ/ggr2QHc/7I5j5ZdGrIejL8qanY&#xA;q7FU60zzTfWlI5v9IgG1GPxgezf1zJxaqUee4cjHqCOe7K9P1ewv1rBJ8feJtnH0f0zYY80Z8nLh&#xA;kEuSMy1seCfnJ5r/AErrw0q3etlpZKMQdnuD9s/7D7P3+OYeadmnGySsvPcqa3Yq7FXYqidNsJr+&#xA;+htIftytSvYDqWPyG+AmhaCaeu2lrDa20VtCvGKJQqD2GYZNuOSrYodirsVdirsVT3ynpn1i8N1I&#xA;Kw2+6+8nb7uuZWkxcUr6ByNPCzfczTNo57sVdirsVdirsVfO/wCa/mv9O+ZHhgflp+nVgt6dGf8A&#xA;3a/0sKD2AzCyzsuNklZYVlbW7FXYq7FUdoumSanqUNolQrmsrD9lBux/z75GUqCJGg9biijhiSKN&#xA;eMcahUUdAAKAZiOOvxQ7FXYq7FW0dkYMhKsNwwNCMQUppJ5s1tNMuIIeEl40bLazyEjg5FAzUB5U&#xA;+WZcNXICju5EdQRzeE6npuo2NwUvomSRiSHbcP4kN3xEgVBtCZJLsVdirsVZ95A0f0bZ9SlH7yf4&#xA;IAe0YO5/2RH4Zj5ZdGrIejLsqanYq7FXYq7FV0cbySLGg5O5Cqo7k7DCBeyQLei6XYJY2MdutKqK&#xA;yMO7nqc3OLHwRp2eOHCKRWWM3Yq7FXYq7FXYq8081/klo9/zudBk/Rt2an6u1XtmJJPTd4+v7NVH&#xA;ZconhB5NUsQPJ495g8ua55eufq+sWj23I0in+1DJT+SQfCfl1zHlAjm0mJCWggio3GRYt4q7FXov&#xA;kXRvqmnm9lWk93QrXqIh9n/guv3ZjZZWaaZy3ZPlbW7FXYq7FXYq7FXYqpXNtb3MLQ3EayxN1RxU&#xA;Yg0kFh+s/l+p5TaU/E9fq0h2/wBi/wDX78ujl72yOTvYbdWl1aTGG5iaGVequKH55cDbaCpYVR2i&#xA;6XJqepQ2iVCsaysP2UH2jkZSoIkaD1uKKOGJIo14xxqFRR0AAoBmI46/FDsVdirsVdirIvKGmerO&#xA;19IPgi+GKvdz1P0DMzR4rPEejlaaFm2X5snNdirsVdirsVdirsVdiqje2NnfWz2t5AlzbSikkMqh&#xA;0Ye4O2Ai1IeT+bvyIgk53fla4+qy9Tp07Foj/qSGrL8mr8xlE8Pc1SxdzyTVbDV9GvDZaxZyWlwv&#xA;7LigYVpyU9GX3U0ygxIaTGkb5Z0wavqkUANYF/eXBHZAdx9PTK5yoMJGg9aVVVQqiigUAHQAZiOM&#xA;3irsVdirsVdirsVdirsVdiqGv9Osb+Ew3cKyp2r1HupG4+jCCQkGmFaz5BuYeU2mP68fUwPQSD5H&#xA;o2XRy97bHJ3px5I0N7Cye6uIyl1cGnFhRljU7AjtU7/dkMkrLGcrZNlbW7FXYq7FXYqqW8ElxPHD&#xA;GKySMFUe5wxiSaCQLNPRrG0js7SK2j+zGtK+J6k/Sc3WOAiKDtIR4RSvk2TsVdirsVdirsVdirsV&#xA;dirsVQOsaHpGs2bWeqWkd3bt+xIKkHxVh8Sn3U1wGIPNBFvIvMv5Iarpkzal5OvHYpVvqUjcJQOv&#xA;GOTZXH+S1Pmcx54O5pliY/p3n68sbk6d5mtJLa5jPF5eBRwf+LIiAfpX7swp4e5xZYu5mdpe2l5A&#xA;s9rMk0LdHQgj5fPKCKaiKV8CHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqyjydpn29QkHikH&#xA;/Gzfw+/M/R4v4i5mmh/EynM9y3Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FUn8yeUfL3mO29DVrNJ+Ip&#xA;FMPhlT/UkHxD5dPHIygDzQYgvINe/KPzd5ZnfUPKty99aD4mt1oJwB2aP7Mo+W/+TmNkwfFoniQO&#xA;jfmLbvJ9U1qI2V0h4NJQ8OQ2IZT8SHMKWEjk4ssXczGKWKWNZInWSNxVXUhlI8QRlLWvxQ7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYqrWVpLd3UdvH9qQ0r4DufoGShAyNBlGPEaej29vFbwRwRCkcahVHy&#xA;zdRiIig7SIoUqZJLsVdirsVdirsVdirsVdirsVdirsVdirsVdirGvNv5eeWPM8ZN/bCO8pRL6GiT&#xA;DwqejgeDA5CWMFjKALyLWPy/8/eSZHutJkOp6SDVvSUtQdf3sFSR/rIfpGYuTA488StoP5haTqHG&#xA;G8pY3R2HM1iY+z9v9lmHLERycaWMhlQIIBBqDuCMqa28VdirsVdirsVdirsVdirsVdirsVZP5Njs&#xA;w8srSKbo/CkZ+0F6kivj7ZnaMRsnq5emA+LKs2DmOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxV4n+eum+VoJrQW1okOu3JM080PwAwiorIg+FmZ+jddsxs1D3tGWg870bzLruikJBJ9YtB1&#xA;tpKlQP8AJ7r9GYsoAtEogs/0Lzro+q8Yuf1W8O31eU0qf8hujfr9sx5YyGmUCGQZBg7FXYq7FXYq&#xA;7FXYq7FXYq7FXAlSCpoRuCOuKU+0zzZd29I7sfWIhty/3YB8/wBr6cy8WrkNjuHIx6gjnuyqx1Oy&#xA;vk5W0gYjdk6MPmMz8eWM+TlwmJckTljN2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVQvr22sbKe&#xA;9uX4W9vG0srnsqCpwE0EE0+XPM2vXOva5d6pcVDXD1jjrXhGNkQf6qjMCUrNuJI2bSzAhY8Ub/aF&#xA;ffviqfaL5w1jTOMUj/XbQf7qlPxqP8iTc/QcrljBYygCzzR/MulaqoFvJwnpVreT4XHyHRvmuUSg&#xA;Q0mJCa5Fi7FXYq7FXYq7FXYq7FXYq7FV0UssTiSJyjrurKaEfSMIJHJINMj0zzhKlI79fUX/AH8g&#xA;AYfNehzMxawjaTlQ1P8AOZNa3ltdRCW3kWRD3Hb5jqMz4TEhYcqMgeStkmTsVdirsVdirsVdirsV&#xA;dirsVdirsVdiryf88PNfp28Plu2f45uM9/Q9EBrHGfmRyPyHjmPnn0acsujxrMZodirsVdiq6ISG&#xA;VBFX1eQ9Pj9rlXalO+BXr+l29zb6fBDdSme4RB6sjGpLHc796dMxJHdxjzReBDsVdirsVdirsVdi&#xA;rsVdirsVdiqrbXdzayiW3kaNx3X+I75KMjE2GUZEcmTaZ5wjakd+vBunrIKj/ZL2+jM7FrOknKhq&#xA;f5zJIpopoxJE4kjboymoP3ZmiQIsOUCDyXYUuxV2KuxV2KuxV2KuxV2KuxVB6zq1ppGlXWpXbcbe&#xA;1jMj+JPRVHuzUAwSNC0E0Hy1rOq3er6pdaldtyuLqQyP4CvRR7KKAZgE2bcQm0HgQ7FXYq7FWU+Q&#xA;9G+s3zahKv7m12jr0MpH/Go3+7KssqFNeQ9HoeY7S7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUTY&#xA;6je2UnO2lKV+0vVT8wdsnDJKJ2ZxmY8mU6Z5ttJ6R3YFvL05/wC6z9P7P05n4tWDtLZy4agHnsny&#xA;srKGUgqdwRuCMzAXJbxV2KuxV2KuxV2KuxV2KvGfzw81+rcw+XLZ/ggpNf07uRWND/qqeR+Y8Mxc&#xA;8+jRll0eUZQ0uxV2KuxVfBBLcTxwRLyllYIijuSaDASr13SNNi03TobOPf0x8bfzOd2b6TmJI2bc&#xA;YmyjMCHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjtO1m/sGHoyVj7xNup+jt9GW480ocmyG&#xA;Ux5Mr0zzPYXlElP1ec/sufhPyb+ubDFqoy57FzIZxLyTjMlvdirsVdirsVdiqV+Z9ettB0O71S43&#xA;WBP3cfd5G2RB82ORnKhaJGhb5cvr25vrya8unMlxcO0krnuzGpzAJcQlRxQ7FXYq7FWY/l/o3qTP&#xA;qky/BFWO3r/OR8TfQNspyy6NeQ9Gd5Q0uxV2KuxV2KuxVI/Onlb8xtOu01rS63NisSh7SCrugpVv&#xA;UhP2tz9pan5ZmjTER3DljBQ3SzQvzE068Kwakosbr7PI19In5n7H+y+/MeWIjk0yxkcmXKyuoZSG&#xA;VhVWG4IOVNTeKuxV2KuxV2KuxV2KuxV2Kpp5d0369qChxWCH45fA06L9Jy/T4uOXk3YYcUme5t3Y&#xA;uxV2KuxV2KuxV4Z+dfmv6/q8eh2z1tdOPK4IOzXDDp/zzU0+ZOYmadmnHyys081ylqdirsVdiqtZ&#xA;Wc15dxWsIrJMwVfavc+wwE0pNPXrCyhsbOG0hFI4VCj3Pcn3J3zEJsuMTaIwIdirsVdirsVTnyvp&#xA;n1u/E0i1gt6Ma9C/7I/jmTpcXFK+gb8ELN9zOM2rsGI+cPyv8r+Zg808H1TUW6X1uArk/wDFi/Zk&#xA;+nf3yuWMFhKALyXVfKn5g+QmeaD/AHI6KhJMsYZ4gvWskf2oj4kbe5zEyYO9x54kz0Lz3o+qcYpW&#xA;+p3bbelIfhJ/yX2B+mhzEliIceWMhkmVtbsVdirsVdirsVdirsVZ/oGm/UNPRWFJ5Pjm8anoPoGb&#xA;fT4uCPm7LDDhimWXtrsVdirsVdiqRedvM0Xlzy7c6ixBuKenaRn9qZ/sj5D7R9hkMkuEWxnKg+YZ&#xA;ppZpXmlYvLIxeR23JZjUk/M5guItxV2KuxV2Ks4/L/RuKSapKu71jtwfD9pvp6fflGWXRqyHozTK&#xA;Wp2KuxV2KuxVtVZmCqKsxoAO5OKXoejacthYRwUHqH4pSO7nr93TNzhx8EadlihwxpG5a2OxV3XY&#xA;4qwDzj+TXlnXudzZKNK1FtzLAo9Jz/lxbD6VofGuVSxA8muWMF5je2/n/wAhSiLU4DeaUCFScEyQ&#xA;0rQBJaVjPgrj6Mw8mBx54mRaH5u0bWAFhl9K5I3tpPhf/Y9m+jMWWMhx5QITrIMHYq7FXYq7FU58&#xA;r6Z9bvxNItYLejGvQv8Asj+OZOlxcUr6BvwQs33M4zauwdirsVdirsVdir5//ODzX+mPMJ0+3flY&#xA;aWWiFOjTn+9b6KcR8j45h5p2XGySssCyprdirsVdiqL0rT5dR1CG0j6ytRm/lUbs30DIyNBBNB65&#xA;bW8Vtbx28I4xRKEQewFMxCXHKrih2KuxV2KuxVP/AClpnr3Zu5B+6t/sV7yH/mnrmXpMVyvucnTw&#xA;s33MyzZuc7FXYq7FXYqtlhimiaKZFkicFXjcBlYHqCDscVeZ+a/yK0LUZGutDmOk3e7eiAXt2bqK&#xA;LUNH/sdvbKZYQeTXLGOjD7iH8xPJ/wAGt2LalpabfXYSZaDx5gcgP+Mij55h5NO408Kd6P5g0nV4&#xA;+dlOGcCrwt8Mi/NT+sbZiyiRzccxITLIsXYq2qszBVFWY0AHcnFL0PR9OWwsI4NvU+1KR3c9fu6Z&#xA;ucOPgjTssUOEUjctbHYq7FXYq7FWL/mN5rHlzy1NcRNS/uf3FkO4kYbv/sF3+dMryz4QwnKg+aiS&#xA;SSTUnck9a5hOK7FXYq7FXYq9A8haN9Xs21GVaS3Pww17Rg9f9kRmPll0ach6MsyprdirsVdirsVX&#xA;RRSSypFGOTuQqqO5OECzSQLejabYpY2UVsm/AfE3ix3J+/Nzihwxp2cIcIpE5YzdirsVdirsVdir&#xA;sVdirE9f/K/ylq8n1kWx07UBul9Yn0JA3iQo4MfcivvlcsUSwljBY5ceU/OWj7fDr1ivSaECG7VR&#xA;/NEx4Sf7FuR8MwsmkPRxp6fuUILmGbkEJEiGksTqUkQ+DowDKfmMw5RI5uMYkc2SeUtM9e7N5IP3&#xA;Vv8AYr3c/wDNPXMrSYrlZ6N+nhZvuZlmzc52KuxV2KuxV2KvOfzT/L7X/Mk0N9pt0kn1WPgmmyfA&#xA;CSSzuklSvJvhFGAG32spy4zLcNWSBLw/UNPv9Nu2s9Qt5LS6TrDMpRqeIr9oeBG2YpBDQRShgQ7F&#xA;XYqj9C0p9T1OG1X7BPKZh2jX7R/hkZSoIkaD1uONI41jjUKiAKijoABQDMRx12KHYq7FXYq7FWSe&#xA;T9M5ytfyD4Y/gh92P2j9AzN0eKzxFy9NDqy3Ni5jsVdirsVdirsVdirsVdirsVdiqDv9I0zUAPrd&#xA;usrKKJJusiitaLItHWvehyMoCXMMZRB5qlhYw2NqltDUolfianIkmtTQDBCAiKCxiIigiMmydirs&#xA;VdirsVdirsVS7XPLmia7aG01azjuod+PMfGhPdHFGU/I5GUQeaCAXjvm38j9XsOd35bmN/bCrGxm&#xA;IE6jr8DbK/4H55jzw9zTLF3PM5jLbzvbXcT21xGeMkUqlWU+BBAI+nKSGqmwQRUbjAh6R5H0b6np&#xA;v1uVaXF3RhXqI/2R9PXMbJKy0zNlkuVtbsVdirsVdiqra20tzcRwRCskjBV/rkoxMjQZRjZp6NZ2&#xA;sVpax28Q+CMUHue5+k5uoQERQdnGNClbJMnYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYqkXmfyT5b8zQenqtorygUjuk+CdP8AVcb09jUe2RlAHmxMQXivmz8l/MuhO15o5Ora&#xA;eh5FEX9+or0aIfb+afcMxp4iGmWMquh/mJYXBFtqkf1G5X4S+/pVG1DXdPp+/MKWIjk4ssZ6MvR0&#xA;dA6MGRhVWU1BB7gjKWtdih2KuxV2Ksq8naZRX1CQbtVIPl+038Mz9Hi/iLmaaH8TJ8z3LdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYx5o/Lfyl5k5SX1mI7xv+P2&#xA;3Ppzf7IgcX/2YOQljBYmALzy7/Kvzx5ZdpvLV6mq2IJY2E37t6dfsk8D81YE+GY2TTW0TwWpWHm2&#xA;3a5+oatbyaRqY2NtdKUB/wBVmC9fentmFPEQ4ssZCfZU1uxVXsLOS8u4raPrIaE+A6k/QMnjgZEA&#xA;M4R4jT0eCGOCFIYxSONQqj2GbqMQBQdmBQpfhS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYqgdX0PR9YtjbapZxXkPZZVDEe6nqp9xgMQeaCAWH3H5ZT6fVvL&#xA;t+yQDppl8WlhA/limFZIx8w+YuTSg8mienB5JdPbahaME1C1e0kJoC1GiYnYcJVqhr2Gze2YOTDK&#xA;PNxJ4pR5su8oaZ6Vu17IP3k3wx17ID1/2RzM0eKhxHq5WmhQtkOZrkuxV2KuxV2KuxV2KuxV2Kux&#xA;V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVbL6XpP63H0uJ9TnTjxpvyrtSm&#xA;JVq39D0I/q/H0OK+j6dOHCnw8abUp0pgFVsgL8KXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FX/9k="/>
+ </rdf:Alt>
+ </xap:Thumbnails>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">3Dcheck.eps</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li>D. P Story</rdf:li>
+ </rdf:Seq>
+ </dc:creator>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?>
+
+
+% &end XMP packet& %
+
+[{Doc_Metadata} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark_5
+[/Document 1 dict begin /Metadata {Doc_Metadata} def currentdict end /BDC pdfmark_5
+[/NamespacePop pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
+%%Page: 1 1
+%%EndPageComments
+%%BeginPageSetup
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+Adobe_AGM_Core/ps gx
+gsave
+<< /0
+[/CIEBasedABC 20 dict
+dup /CreationDate (19980209064900) put
+dup /RenderingIntent (RelativeColorimetric) put
+dup /Description (sRGB IEC61966-2.1) put
+dup /ColorSpace (RGB ) put
+dup /Copyright (Copyright (c) 1998 Hewlett-Packard Company) put
+dup /ProfileID <1D3FDA2EDB4A89AB60A23C5F7C7D81DD> put
+dup /DecodeABC [
+{{0 0.00031 0.00061 0.0009 0.0012 0.00151 0.00181 0.00212 0.00242 0.00271
+0.00302 0.00334 0.00366 0.00401 0.00437 0.00476 0.00515 0.00558 0.00602 0.00648
+0.00696 0.00745 0.00798 0.00852 0.00908 0.00966 0.01027 0.01089 0.01153 0.0122
+0.0129 0.01362 0.01435 0.01511 0.01589 0.0167 0.01752 0.01837 0.01925 0.02015
+0.02107 0.02203 0.02299 0.02399 0.02501 0.02606 0.02713 0.02822 0.02934 0.03049
+0.03166 0.03287 0.03409 0.03533 0.03662 0.03792 0.03925 0.04061 0.04199 0.04341
+0.04484 0.04631 0.04781 0.04933 0.05088 0.05245 0.05406 0.05569 0.05736 0.05904
+0.06077 0.06252 0.0643 0.06611 0.06794 0.06981 0.0717 0.07363 0.07558 0.07756
+0.07959 0.08162 0.0837 0.08581 0.08795 0.09011 0.09231 0.09454 0.0968 0.09909
+0.10142 0.10376 0.10616 0.10857 0.11102 0.11351 0.11602 0.11856 0.12114 0.12376
+0.12639 0.12907 0.13178 0.13452 0.13729 0.14009 0.14294 0.14581 0.14873 0.15166
+0.15463 0.15765 0.16068 0.16376 0.16687 0.17001 0.17319 0.17641 0.17965 0.18293
+0.18625 0.1896 0.19299 0.19641 0.19987 0.20335 0.20688 0.21045 0.21405 0.21767
+0.22134 0.22505 0.22879 0.23257 0.23638 0.24023 0.24411 0.24804 0.25199 0.25599
+0.26002 0.26409 0.2682 0.27234 0.27651 0.28073 0.28499 0.28928 0.29361 0.29798
+0.30238 0.30683 0.3113 0.31582 0.32038 0.32497 0.3296 0.33428 0.33898 0.34372
+0.34851 0.35333 0.3582 0.3631 0.36804 0.37302 0.37804 0.3831 0.38819 0.39333
+0.3985 0.40372 0.40898 0.41427 0.41961 0.42498 0.43039 0.43585 0.44134 0.44688
+0.45245 0.45806 0.46372 0.46942 0.47516 0.48094 0.48675 0.49261 0.49851 0.50445
+0.51043 0.51646 0.52253 0.52863 0.53477 0.54097 0.54719 0.55347 0.55979 0.56613
+0.57253 0.57897 0.58545 0.59198 0.59855 0.60515 0.6118 0.61849 0.62524 0.63201
+0.63884 0.6457 0.6526 0.65955 0.66654 0.67357 0.68066 0.68778 0.69495 0.70215
+0.7094 0.71669 0.72404 0.73142 0.73885 0.74632 0.75383 0.76138 0.76899 0.77663
+0.78433 0.79206 0.79983 0.80765 0.81552 0.82343 0.83139 0.8394 0.84744 0.85554
+0.86367 0.87185 0.88007 0.88835 0.89666 0.90503 0.91343 0.92189 0.93038 0.93892
+0.94751 0.95614 0.96482 0.97355 0.98232 0.99114 1}
+dup 3 -1 roll 0 1 3 copy 3 -1 roll exch ge
+{pop pop pop pop pop 256 get}
+{pop 3 copy pop le {pop pop pop pop 0 get}
+{exch dup 4 -1 roll exch sub 3 1 roll sub div 256 mul dup
+floor dup 3 1 roll sub exch cvi dup 1 add 4 -1 roll exch
+get 4 -1 roll 3 -1 roll get dup 4 1 roll sub mul add}
+ifelse} ifelse
+} bind
+dup
+dup
+] put
+dup /MatrixABC [
+0.2180189128 0.1112492942 0.0069565698
+0.1925612492 0.358452993 0.0485281768
+0.0715286348 0.0303053423 0.3569742448
+] put
+dup /MatrixLMN [1.9999694824 0 0 0 1.9999694824 0 0 0 1.9999694824] put
+dup /BlackPoint [0 0 0] put
+dup /WhitePoint [0.9642028809 1 0.8249053955] put]
+
+/CSA add_res
+/CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+grestore
+Adobe_AGM_Core/pt gx
+%%EndPageSetup
+1 -1 scale 0 -57.976 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 57.976 li
+61.688 57.976 li
+61.688 0 li
+cp
+clp
+[1 0 0 1 0 0 ]ct
+56.216 48.7856 mo
+47.364 45.1046 li
+28.635 34.9446 li
+37.487 38.6256 li
+56.216 48.7856 li
+false sop
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.38039 .50196 .40392 colr
+f
+gsave
+0 .0159988 mo
+61.68 .0159988 li
+61.68 57.976 li
+0 57.976 li
+cp
+clp
+33.052 23.03 mo
+24.2 19.35 li
+34.543 .000999451 li
+43.395 3.68 li
+33.052 23.03 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.42353 .55294 .44706 colr
+f
+grestore
+17.236 52.6029 mo
+8.384 48.9223 li
+18.728 29.5719 li
+27.58 33.2519 li
+17.236 52.6029 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.42353 .55294 .44706 colr
+f
+27.144 57.976 mo
+18.292 54.2953 li
+8.385 48.9223 li
+17.237 52.6029 li
+27.144 57.976 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.38039 .50196 .40392 colr
+f
+8.8521 23.101 mo
+0 19.421 li
+5.4712 9.191 li
+14.3231 12.871 li
+8.8521 23.101 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.42353 .55294 .44706 colr
+f
+27.58 33.252 mo
+18.728 29.571 li
+0 19.421 li
+8.852 23.101 li
+27.58 33.252 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.38039 .50196 .40392 colr
+f
+43.396 3.68 mo
+53.303 9.054 li
+42.96 28.403 li
+61.688 38.554 li
+56.217 48.785 li
+37.488 38.625 li
+27.144 57.976 li
+17.237 52.603 li
+27.581 33.252 li
+8.853 23.101 li
+14.324 12.87 li
+33.053 23.03 li
+43.396 3.68 li
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+.65882 .83529 .67059 colr
+f
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%Trailer
+Adobe_AGM_Utils begin
+[/EMC pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
+Adobe_AGM_Core/dt get exec
+%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentCustomColors:
+%%CMYKCustomColor:
+%%RGBCustomColor:
+%%EOF
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon.eps b/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon.eps
new file mode 100644
index 00000000..d081c029
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon.eps
@@ -0,0 +1,8346 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: AdobeDon.pdf
+%%Creator: Adobe Acrobat 8.0
+%%For: Donald Story
+%%CreationDate: 07/29/2007, 7:32:28 PM
+%%BoundingBox: 0 0 197 186
+%%HiResBoundingBox: 0 0 196.8400 185.6870
+%%CropBox: 0 0 196.8400 185.6870
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors:
+%%DocumentCustomColors: (atend)
+%%EndComments
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
+{
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
+{
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
+{
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
+{
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
+{
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
+{
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
+{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
+{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
+}def
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
+{
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
+{
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
+{
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
+{
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
+{
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
+{
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
+{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
+{
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
+{
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+{
+ /pdfmark_5{cleartomark}bind def
+}{
+ /pdfmark_5{pdfmark}bind def
+}ifelse
+/ReadBypdfmark_5
+{
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
+{
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline pop
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
+{
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2005 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
+{
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
+}forall
+setglobal
+/AGMCORE_key_known
+{
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
+{
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
+{
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
+{
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
+{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
+{
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{aload pop setcolor}bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
+}if
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
+}if
+/test_cmyk_color_plate
+{
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
+{
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
+{
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
+{
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
+{
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
+{
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
+{
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
+{
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
+{
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
+{
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
+{
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
+{
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
+{
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
+{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
+{
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
+{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
+{
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
+{
+ /count get 0 0 put
+}def
+/paintproc_buf_next
+{
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
+{
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
+{
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
+{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
+{
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
+{
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
+}def
+/updatecolorrendering
+{
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
+{
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
+{
+ dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration
+ dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+}def
+/cpaint_gcomp
+{
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
+{
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
+{
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
+{
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
+{
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
+{
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
+{
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
+{
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
+{
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
+{
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
+{
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/driver_check_media_override
+{
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
+end
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
+%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
+%%Version: 2.31 0
+10 dict begin
+/Adobe_CoolType_Passthru currentdict def
+/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
+Adobe_CoolType_Core_Defined
+ {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
+if
+userdict/Adobe_CoolType_Core 70 dict dup begin put
+/Adobe_CoolType_Version 2.31 def
+/Level2?
+ systemdict/languagelevel known dup
+ {pop systemdict/languagelevel get 2 ge}
+ if def
+Level2? not
+ {
+ /currentglobal false def
+ /setglobal/pop load def
+ /gcheck{pop false}bind def
+ /currentpacking false def
+ /setpacking/pop load def
+ /SharedFontDirectory 0 dict def
+ }
+if
+currentpacking
+true setpacking
+currentglobal false setglobal
+userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+if
+get
+ begin
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ end
+setglobal
+currentglobal true setglobal
+userdict/Adobe_CoolType_GVMFonts known not
+ {userdict/Adobe_CoolType_GVMFonts 10 dict put}
+if
+setglobal
+currentglobal false setglobal
+userdict/Adobe_CoolType_LVMFonts known not
+ {userdict/Adobe_CoolType_LVMFonts 10 dict put}
+if
+setglobal
+/ct_VMDictPut
+ {
+ dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
+ 3 1 roll put
+ }bind def
+/ct_VMDictUndef
+ {
+ dup Adobe_CoolType_GVMFonts exch known
+ {Adobe_CoolType_GVMFonts exch undef}
+ {
+ dup Adobe_CoolType_LVMFonts exch known
+ {Adobe_CoolType_LVMFonts exch undef}
+ {pop}
+ ifelse
+ }ifelse
+ }bind def
+/ct_str1 1 string def
+/ct_xshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_yshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0 exch
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_xyshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ {_ct_na _ct_i 1 add get}stopped
+ {pop pop pop}
+ {
+ _ct_x _ct_y moveto
+ rmoveto
+ }
+ ifelse
+ }
+ ifelse
+ /_ct_i _ct_i 2 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
+/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
+/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
+currentglobal true setglobal
+/ct_T3Defs
+{
+/BuildChar
+{
+ 1 index/Encoding get exch get
+ 1 index/BuildGlyph get exec
+}bind def
+/BuildGlyph
+{
+ exch begin
+ GlyphProcs exch get exec
+ end
+}bind def
+}bind def
+setglobal
+/@_SaveStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@vmState currentglobal def false setglobal
+ @opStackCountByLevel
+ @opStackLevel
+ 2 copy known not
+ {
+ 2 copy
+ 3 dict dup/args
+ 7 index
+ 5 add array put
+ put get
+ }
+ {
+ get dup/args get dup length 3 index lt
+ {
+ dup length 5 add array exch
+ 1 index exch 0 exch putinterval
+ 1 index exch/args exch put
+ }
+ {pop}
+ ifelse
+ }
+ ifelse
+ begin
+ count 1 sub
+ 1 index lt
+ {pop count}
+ if
+ dup/argCount exch def
+ dup 0 gt
+ {
+ args exch 0 exch getinterval
+ astore pop
+ }
+ {pop}
+ ifelse
+ count
+ /restCount exch def
+ end
+ /@opStackLevel @opStackLevel 1 add def
+ countdictstack 1 sub
+ @dictStackCountByLevel exch @dictStackLevel exch put
+ /@dictStackLevel @dictStackLevel 1 add def
+ @vmState setglobal
+ end
+ }bind def
+/@_RestoreStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ @opStackCountByLevel @opStackLevel get
+ begin
+ count restCount sub dup 0 gt
+ {{pop}repeat}
+ {pop}
+ ifelse
+ args 0 argCount getinterval{}forall
+ end
+ /@dictStackLevel @dictStackLevel 1 sub def
+ @dictStackCountByLevel @dictStackLevel get
+ end
+ countdictstack exch sub dup 0 gt
+ {{end}repeat}
+ {pop}
+ ifelse
+ }bind def
+/@_PopStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ /@dictStackLevel @dictStackLevel 1 sub def
+ end
+ }bind def
+/@Raise
+ {
+ exch cvx exch errordict exch get exec
+ stop
+ }bind def
+/@ReRaise
+ {
+ cvx $error/errorname get errordict exch get exec
+ stop
+ }bind def
+/@Stopped
+ {
+ 0 @#Stopped
+ }bind def
+/@#Stopped
+ {
+ @_SaveStackLevels
+ stopped
+ {@_RestoreStackLevels true}
+ {@_PopStackLevels false}
+ ifelse
+ }bind def
+/@Arg
+ {
+ Adobe_CoolType_Data
+ begin
+ @opStackCountByLevel @opStackLevel 1 sub get
+ begin
+ args exch
+ argCount 1 sub exch sub get
+ end
+ end
+ }bind def
+currentglobal true setglobal
+/CTHasResourceForAllBug
+ Level2?
+ {
+ 1 dict dup
+ /@shouldNotDisappearDictValue true def
+ Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
+ begin
+ count @_SaveStackLevels
+ {(*){pop stop}128 string/Category resourceforall}
+ stopped pop
+ @_RestoreStackLevels
+ currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
+ {
+ /@shouldNotDisappearDictValue known
+ {
+ {
+ end
+ currentdict 1 index eq
+ {pop exit}
+ if
+ }
+ loop
+ }
+ if
+ }
+ {
+ pop
+ end
+ }
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+true setglobal
+/CTHasResourceStatusBug
+ Level2?
+ {
+ mark
+ {/steveamerige/Category resourcestatus}
+ stopped
+ {cleartomark true}
+ {cleartomark currentglobal not}
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+setglobal
+/CTResourceStatus
+ {
+ mark 3 1 roll
+ /Category findresource
+ begin
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ end
+ }bind def
+/CTWorkAroundBugs
+ {
+ Level2?
+ {
+ /cid_PreLoad/ProcSet resourcestatus
+ {
+ pop pop
+ currentglobal
+ mark
+ {
+ (*)
+ {
+ dup/CMap CTHasResourceStatusBug
+ {CTResourceStatus}
+ {resourcestatus}
+ ifelse
+ {
+ pop dup 0 eq exch 1 eq or
+ {
+ dup/CMap findresource gcheck setglobal
+ /CMap undefineresource
+ }
+ {
+ pop CTHasResourceForAllBug
+ {exit}
+ {stop}
+ ifelse
+ }
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ 128 string/CMap resourceforall
+ }
+ stopped
+ {cleartomark}
+ stopped pop
+ setglobal
+ }
+ if
+ }
+ if
+ }bind def
+/ds
+ {
+ Adobe_CoolType_Core
+ begin
+ CTWorkAroundBugs
+ /mo/moveto load def
+ /nf/newencodedfont load def
+ /msf{makefont setfont}bind def
+ /uf{dup undefinefont ct_VMDictUndef}bind def
+ /ur/undefineresource load def
+ /chp/charpath load def
+ /awsh/awidthshow load def
+ /wsh/widthshow load def
+ /ash/ashow load def
+ /@xshow/xshow load def
+ /@yshow/yshow load def
+ /@xyshow/xyshow load def
+ /@cshow/cshow load def
+ /sh/show load def
+ /rp/repeat load def
+ /.n/.notdef def
+ end
+ currentglobal false setglobal
+ userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+ if
+ get
+ begin
+ /AddWidths? false def
+ /CC 0 def
+ /charcode 2 string def
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ /InVMFontsByCMap 10 dict def
+ /InVMDeepCopiedFonts 10 dict def
+ end
+ setglobal
+ }bind def
+/dt
+ {
+ currentdict Adobe_CoolType_Core eq
+ {end}
+ if
+ }bind def
+/ps
+ {
+ Adobe_CoolType_Core begin
+ Adobe_CoolType_GVMFonts begin
+ Adobe_CoolType_LVMFonts begin
+ SharedFontDirectory begin
+ }bind def
+/pt
+ {
+ end
+ end
+ end
+ end
+ }bind def
+/unload
+ {
+ systemdict/languagelevel known
+ {
+ systemdict/languagelevel get 2 ge
+ {
+ userdict/Adobe_CoolType_Core 2 copy known
+ {undef}
+ {pop pop}
+ ifelse
+ }
+ if
+ }
+ if
+ }bind def
+/ndf
+ {
+ 1 index where
+ {pop pop pop}
+ {dup xcheck{bind}if def}
+ ifelse
+ }def
+/findfont systemdict
+ begin
+ userdict
+ begin
+ /globaldict where{/globaldict get begin}if
+ dup where pop exch get
+ /globaldict where{pop end}if
+ end
+ end
+Adobe_CoolType_Core_Defined
+ {/systemfindfont exch def}
+ {
+ /findfont 1 index def
+ /systemfindfont exch def
+ }
+ifelse
+/undefinefont
+ {pop}ndf
+/copyfont
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ dup null eq{0}{dup length}ifelse
+ 2 index length add 1 add dict
+ begin
+ exch
+ {
+ 1 index/FID eq
+ {pop pop}
+ {def}
+ ifelse
+ }
+ forall
+ dup null eq
+ {pop}
+ {{def}forall}
+ ifelse
+ currentdict
+ end
+ exch setglobal
+ }bind def
+/copyarray
+ {
+ currentglobal exch
+ dup gcheck setglobal
+ dup length array copy
+ exch setglobal
+ }bind def
+/newencodedfont
+ {
+ currentglobal
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ {
+ FontDirectory 3 index known
+ {FontDirectory 3 index get/FontReferenced known}
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ dup
+ {
+ 3 index findfont/FontReferenced get
+ 2 index dup type/nametype eq
+ {findfont}
+ if ne
+ {pop false}
+ if
+ }
+ if
+ dup
+ {
+ 1 index dup type/nametype eq
+ {findfont}
+ if
+ dup/CharStrings known
+ {
+ /CharStrings get length
+ 4 index findfont/CharStrings get length
+ ne
+ {
+ pop false
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ if
+ {
+ pop
+ 1 index findfont
+ /Encoding get exch
+ 0 1 255
+ {2 copy get 3 index 3 1 roll put}
+ for
+ pop pop pop
+ }
+ {
+ currentglobal
+ 4 1 roll
+ dup type/nametype eq
+ {findfont}
+ if
+ dup gcheck setglobal
+ dup dup maxlength 2 add dict
+ begin
+ exch
+ {
+ 1 index/FID ne
+ 2 index/Encoding ne and
+ {def}
+ {pop pop}
+ ifelse
+ }
+ forall
+ /FontReferenced exch def
+ /Encoding exch dup length array copy def
+ /FontName 1 index dup type/stringtype eq{cvn}if def dup
+ currentdict
+ end
+ definefont ct_VMDictPut
+ setglobal
+ }
+ ifelse
+ }bind def
+/SetSubstituteStrategy
+ {
+ $SubstituteFont
+ begin
+ dup type/dicttype ne
+ {0 dict}
+ if
+ currentdict/$Strategies known
+ {
+ exch $Strategies exch
+ 2 copy known
+ {
+ get
+ 2 copy maxlength exch maxlength add dict
+ begin
+ {def}forall
+ {def}forall
+ currentdict
+ dup/$Init known
+ {dup/$Init get exec}
+ if
+ end
+ /$Strategy exch def
+ }
+ {pop pop pop}
+ ifelse
+ }
+ {pop pop}
+ ifelse
+ end
+ }bind def
+/scff
+ {
+ $SubstituteFont
+ begin
+ dup type/stringtype eq
+ {dup length exch}
+ {null}
+ ifelse
+ /$sname exch def
+ /$slen exch def
+ /$inVMIndex
+ $sname null eq
+ {
+ 1 index $str cvs
+ dup length $slen sub $slen getinterval cvn
+ }
+ {$sname}
+ ifelse def
+ end
+ {findfont}
+ @Stopped
+ {
+ dup length 8 add string exch
+ 1 index 0(BadFont:)putinterval
+ 1 index exch 8 exch dup length string cvs putinterval cvn
+ {findfont}
+ @Stopped
+ {pop/Courier findfont}
+ if
+ }
+ if
+ $SubstituteFont
+ begin
+ /$sname null def
+ /$slen 0 def
+ /$inVMIndex null def
+ end
+ }bind def
+/isWidthsOnlyFont
+ {
+ dup/WidthsOnly known
+ {pop pop true}
+ {
+ dup/FDepVector known
+ {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
+ {
+ dup/FDArray known
+ {/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }bind def
+/ct_StyleDicts 4 dict dup begin
+ /Adobe-Japan1 4 dict dup begin
+ Level2?
+ {
+ /Serif
+ /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMin-W3/CIDFont resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {/Ryumin-Light}
+ ifelse
+ }
+ {/Ryumin-Light}
+ ifelse
+ }
+ ifelse
+ def
+ /SansSerif
+ /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiKakuGo-W5/CIDFont resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ ifelse
+ def
+ /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMaruGo-W4/CIDFont resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ /RoundSansSerif exch def
+ /Default Serif def
+ }
+ {
+ /Serif/Ryumin-Light def
+ /SansSerif/GothicBBB-Medium def
+ {
+ (fonts/Jun101-Light-83pv-RKSJ-H)status
+ }stopped
+ {pop}{
+ {pop pop pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ /RoundSansSerif exch def
+ }ifelse
+ /Default Serif def
+ }
+ ifelse
+ end
+ def
+ /Adobe-Korea1 4 dict dup begin
+ /Serif/HYSMyeongJo-Medium def
+ /SansSerif/HYGoThic-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-GB1 4 dict dup begin
+ /Serif/STSong-Light def
+ /SansSerif/STHeiti-Regular def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-CNS1 4 dict dup begin
+ /Serif/MKai-Medium def
+ /SansSerif/MHei-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+end
+def
+Level2?{currentglobal true setglobal}if
+/ct_BoldRomanWidthProc
+ {
+ stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
+ 0 0
+ }bind def
+/ct_Type0WidthProc
+ {
+ dup stringwidth 0 0 moveto
+ 2 index true charpath pathbbox
+ 0 -1
+ 7 index 2 div .88
+ setcachedevice2
+ pop
+ 0 0
+ }bind def
+/ct_Type0WMode1WidthProc
+ {
+ dup stringwidth
+ pop 2 div neg -0.88
+ 2 copy
+ moveto
+ 0 -1
+ 5 -1 roll true charpath pathbbox
+ setcachedevice
+ }bind def
+/cHexEncoding
+[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+/ct_BoldBaseFont
+ 11 dict begin
+ /FontType 3 def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /Encoding cHexEncoding def
+ /_setwidthProc/ct_BoldRomanWidthProc load def
+ /_bcstr1 1 string def
+ /BuildChar
+ {
+ exch begin
+ _basefont setfont
+ _bcstr1 dup 0 4 -1 roll put
+ dup
+ _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+systemdict/composefont known
+{
+/ct_DefineIdentity-H
+{
+ /Identity-H/CMap resourcestatus
+ {
+ pop pop
+ }
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+}
+def
+/ct_BoldBaseCIDFont
+ 11 dict begin
+ /CIDFontType 1 def
+ /CIDFontName/ct_BoldBaseCIDFont def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /_setwidthProc/ct_Type0WidthProc load def
+ /_bcstr2 2 string def
+ /BuildGlyph
+ {
+ exch begin
+ _basefont setfont
+ _bcstr2 1 2 index 256 mod put
+ _bcstr2 0 3 -1 roll 256 idiv put
+ _bcstr2 dup _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+}if
+Level2?{setglobal}if
+/ct_CopyFont{
+ {
+ 1 index/FID ne 2 index/UniqueID ne and
+ {def}{pop pop}ifelse
+ }forall
+}bind def
+/ct_Type0CopyFont
+{
+ exch
+ dup length dict
+ begin
+ ct_CopyFont
+ [
+ exch
+ FDepVector
+ {
+ dup/FontType get 0 eq
+ {
+ 1 index ct_Type0CopyFont
+ /_ctType0 exch definefont
+ }
+ {
+ /_ctBaseFont exch
+ 2 index exec
+ }
+ ifelse
+ exch
+ }
+ forall
+ pop
+ ]
+ /FDepVector exch def
+ currentdict
+ end
+}bind def
+/ct_MakeBoldFont
+{
+ dup/ct_SyntheticBold known
+ {
+ dup length 3 add dict begin
+ ct_CopyFont
+ /ct_StrokeWidth .03 0 FontMatrix idtransform pop def
+ /ct_SyntheticBold true def
+ currentdict
+ end
+ definefont
+ }
+ {
+ dup dup length 3 add dict
+ begin
+ ct_CopyFont
+ /PaintType 2 def
+ /StrokeWidth .03 0 FontMatrix idtransform pop def
+ /dummybold currentdict
+ end
+ definefont
+ dup/FontType get dup 9 ge exch 11 le and
+ {
+ ct_BoldBaseCIDFont
+ dup length 3 add dict copy begin
+ dup/CIDSystemInfo get/CIDSystemInfo exch def
+ ct_DefineIdentity-H
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefont exch def
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefonto exch def
+ currentdict
+ end
+ /CIDFont defineresource
+ }
+ {
+ ct_BoldBaseFont
+ dup length 3 add dict copy begin
+ /_basefont exch def
+ /_basefonto exch def
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+}bind def
+/ct_MakeBold{
+ 1 index
+ 1 index
+ findfont
+ currentglobal 5 1 roll
+ dup gcheck setglobal
+ dup
+ /FontType get 0 eq
+ {
+ dup/WMode known{dup/WMode get 1 eq}{false}ifelse
+ version length 4 ge
+ and
+ {version 0 4 getinterval cvi 2015 ge}
+ {true}
+ ifelse
+ {/ct_Type0WidthProc}
+ {/ct_Type0WMode1WidthProc}
+ ifelse
+ ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
+ {ct_MakeBoldFont}ct_Type0CopyFont definefont
+ }
+ {
+ dup/_fauxfont known not 1 index/SubstMaster known not and
+ {
+ ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
+ ct_MakeBoldFont
+ }
+ {
+ 2 index 2 index eq
+ {exch pop }
+ {
+ dup length dict begin
+ ct_CopyFont
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ pop pop pop
+ setglobal
+}bind def
+/?str1 256 string def
+/?set
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound false def
+ /$fontname 1 index def
+ /$doSmartSub false def
+ end
+ dup
+ findfont
+ $SubstituteFont
+ begin
+ $substituteFound
+ {false}
+ {
+ dup/FontName known
+ {
+ dup/FontName get $fontname eq
+ 1 index/DistillerFauxFont known not and
+ /currentdistillerparams where
+ {pop false 2 index isWidthsOnlyFont not and}
+ if
+ }
+ {false}
+ ifelse
+ }
+ ifelse
+ exch pop
+ /$doSmartSub true def
+ end
+ {
+ 5 1 roll pop pop pop pop
+ findfont
+ }
+ {
+ 1 index
+ findfont
+ dup/FontType get 3 eq
+ {
+ 6 1 roll pop pop pop pop pop false
+ }
+ {pop true}
+ ifelse
+ {
+ $SubstituteFont
+ begin
+ pop pop
+ /$styleArray 1 index def
+ /$regOrdering 2 index def
+ pop pop
+ 0 1 $styleArray length 1 sub
+ {
+ $styleArray exch get
+ ct_StyleDicts $regOrdering
+ 2 copy known
+ {
+ get
+ exch 2 copy known not
+ {pop/Default}
+ if
+ get
+ dup type/nametype eq
+ {
+ ?str1 cvs length dup 1 add exch
+ ?str1 exch(-)putinterval
+ exch dup length exch ?str1 exch 3 index exch putinterval
+ add ?str1 exch 0 exch getinterval cvn
+ }
+ {
+ pop pop/Unknown
+ }
+ ifelse
+ }
+ {
+ pop pop pop pop/Unknown
+ }
+ ifelse
+ }
+ for
+ end
+ findfont
+ }if
+ }
+ ifelse
+ currentglobal false setglobal 3 1 roll
+ null copyfont definefont pop
+ setglobal
+ }bind def
+setpacking
+userdict/$SubstituteFont 25 dict put
+1 dict
+ begin
+ /SubstituteFont
+ dup $error exch 2 copy known
+ {get}
+ {pop pop{pop/Courier}bind}
+ ifelse def
+ /currentdistillerparams where dup
+ {
+ pop pop
+ currentdistillerparams/CannotEmbedFontPolicy 2 copy known
+ {get/Error eq}
+ {pop pop false}
+ ifelse
+ }
+ if not
+ {
+ countdictstack array dictstack 0 get
+ begin
+ userdict
+ begin
+ $SubstituteFont
+ begin
+ /$str 128 string def
+ /$fontpat 128 string def
+ /$slen 0 def
+ /$sname null def
+ /$match false def
+ /$fontname null def
+ /$substituteFound false def
+ /$inVMIndex null def
+ /$doSmartSub true def
+ /$depth 0 def
+ /$fontname null def
+ /$italicangle 26.5 def
+ /$dstack null def
+ /$Strategies 10 dict dup
+ begin
+ /$Type3Underprint
+ {
+ currentglobal exch false setglobal
+ 11 dict
+ begin
+ /UseFont exch
+ $WMode 0 ne
+ {
+ dup length dict copy
+ dup/WMode $WMode put
+ /UseFont exch definefont
+ }
+ if def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /FontType 3 def
+ /FontMatrix[.001 0 0 .001 0 0]def
+ /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
+ /FontBBox[0 0 0 0]def
+ /CCInfo 7 dict dup
+ begin
+ /cc null def
+ /x 0 def
+ /y 0 def
+ end def
+ /BuildChar
+ {
+ exch
+ begin
+ CCInfo
+ begin
+ 1 string dup 0 3 index put exch pop
+ /cc exch def
+ UseFont 1000 scalefont setfont
+ cc stringwidth/y exch def/x exch def
+ x y setcharwidth
+ $SubstituteFont/$Strategy get/$Underprint get exec
+ 0 0 moveto cc show
+ x y moveto
+ end
+ end
+ }bind def
+ currentdict
+ end
+ exch setglobal
+ }bind def
+ /$GetaTint
+ 2 dict dup
+ begin
+ /$BuildFont
+ {
+ dup/WMode known
+ {dup/WMode get}
+ {0}
+ ifelse
+ /$WMode exch def
+ $fontname exch
+ dup/FontName known
+ {
+ dup/FontName get
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ exch
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index/FontName get known
+ {
+ pop
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index get
+ null copyfont
+ }
+ {$deepcopyfont}
+ ifelse
+ exch 1 index exch/FontBasedOn exch put
+ dup/FontName $fontname dup type/stringtype eq{cvn}if put
+ definefont
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ begin
+ dup/FontBasedOn get 1 index def
+ end
+ }bind def
+ /$Underprint
+ {
+ gsave
+ x abs y abs gt
+ {/y 1000 def}
+ {/x -1000 def 500 120 translate}
+ ifelse
+ Level2?
+ {
+ [/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
+ setcolorspace
+ }
+ {0 setgray}
+ ifelse
+ 10 setlinewidth
+ x .8 mul
+ [7 3]
+ {
+ y mul 8 div 120 sub x 10 div exch moveto
+ 0 y 4 div neg rlineto
+ dup 0 rlineto
+ 0 y 4 div rlineto
+ closepath
+ gsave
+ Level2?
+ {.2 setcolor}
+ {.8 setgray}
+ ifelse
+ fill grestore
+ stroke
+ }
+ forall
+ pop
+ grestore
+ }bind def
+ end def
+ /$Oblique
+ 1 dict dup
+ begin
+ /$BuildFont
+ {
+ currentglobal exch dup gcheck setglobal
+ null copyfont
+ begin
+ /FontBasedOn
+ currentdict/FontName known
+ {
+ FontName
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /currentdistillerparams where
+ {pop}
+ {
+ /FontInfo currentdict/FontInfo known
+ {FontInfo null copyfont}
+ {2 dict}
+ ifelse
+ dup
+ begin
+ /ItalicAngle $italicangle def
+ /FontMatrix FontMatrix
+ [1 0 ItalicAngle dup sin exch cos div 1 0 0]
+ matrix concatmatrix readonly
+ end
+ 4 2 roll def
+ def
+ }
+ ifelse
+ FontName currentdict
+ end
+ definefont
+ exch setglobal
+ }bind def
+ end def
+ /$None
+ 1 dict dup
+ begin
+ /$BuildFont{}bind def
+ end def
+ end def
+ /$Oblique SetSubstituteStrategy
+ /$findfontByEnum
+ {
+ dup type/stringtype eq{cvn}if
+ dup/$fontname exch def
+ $sname null eq
+ {$str cvs dup length $slen sub $slen getinterval}
+ {pop $sname}
+ ifelse
+ $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
+ /$match false def
+ $SubstituteFont/$dstack countdictstack array dictstack put
+ mark
+ {
+ $fontpat 0 $slen 7 add getinterval
+ {/$match exch def exit}
+ $str filenameforall
+ }
+ stopped
+ {
+ cleardictstack
+ currentdict
+ true
+ $SubstituteFont/$dstack get
+ {
+ exch
+ {
+ 1 index eq
+ {pop false}
+ {true}
+ ifelse
+ }
+ {begin false}
+ ifelse
+ }
+ forall
+ pop
+ }
+ if
+ cleartomark
+ /$slen 0 def
+ $match false ne
+ {$match(fonts/)anchorsearch pop pop cvn}
+ {/Courier}
+ ifelse
+ }bind def
+ /$ROS 1 dict dup
+ begin
+ /Adobe 4 dict dup
+ begin
+ /Japan1 [/Ryumin-Light/HeiseiMin-W3
+ /GothicBBB-Medium/HeiseiKakuGo-W5
+ /HeiseiMaruGo-W4/Jun101-Light]def
+ /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
+ /GB1 [/STSong-Light/STHeiti-Regular]def
+ /CNS1 [/MKai-Medium/MHei-Medium]def
+ end def
+ end def
+ /$cmapname null def
+ /$deepcopyfont
+ {
+ dup/FontType get 0 eq
+ {
+ 1 dict dup/FontName/copied put copyfont
+ begin
+ /FDepVector FDepVector copyarray
+ 0 1 2 index length 1 sub
+ {
+ 2 copy get $deepcopyfont
+ dup/FontName/copied put
+ /copied exch definefont
+ 3 copy put pop pop
+ }
+ for
+ def
+ currentdict
+ end
+ }
+ {$Strategies/$Type3Underprint get exec}
+ ifelse
+ }bind def
+ /$buildfontname
+ {
+ dup/CIDFont findresource/CIDSystemInfo get
+ begin
+ Registry length Ordering length Supplement 8 string cvs
+ 3 copy length 2 add add add string
+ dup 5 1 roll dup 0 Registry putinterval
+ dup 4 index(-)putinterval
+ dup 4 index 1 add Ordering putinterval
+ 4 2 roll add 1 add 2 copy(-)putinterval
+ end
+ 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
+ anchorsearch
+ {pop pop 3 2 roll putinterval cvn/$cmapname exch def}
+ {pop pop pop pop pop}
+ ifelse
+ length
+ $str 1 index(-)putinterval 1 add
+ $str 1 index $cmapname $fontpat cvs putinterval
+ $cmapname length add
+ $str exch 0 exch getinterval cvn
+ }bind def
+ /$findfontByROS
+ {
+ /$fontname exch def
+ $ROS Registry 2 copy known
+ {
+ get Ordering 2 copy known
+ {get}
+ {pop pop[]}
+ ifelse
+ }
+ {pop pop[]}
+ ifelse
+ false exch
+ {
+ dup/CIDFont resourcestatus
+ {
+ pop pop
+ save
+ 1 index/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get}
+ {false}
+ ifelse
+ exch pop
+ exch restore
+ {pop}
+ {exch pop true exit}
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ {$str cvs $buildfontname}
+ {
+ false(*)
+ {
+ save exch
+ dup/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get not}
+ {true}
+ ifelse
+ exch/CIDSystemInfo get
+ dup/Registry get Registry eq
+ exch/Ordering get Ordering eq and and
+ {exch restore exch pop true exit}
+ {pop restore}
+ ifelse
+ }
+ $str/CIDFont resourceforall
+ {$buildfontname}
+ {$fontname $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }bind def
+ end
+ end
+ currentdict/$error known currentdict/languagelevel known and dup
+ {pop $error/SubstituteFont known}
+ if
+ dup
+ {$error}
+ {Adobe_CoolType_Core}
+ ifelse
+ begin
+ {
+ /SubstituteFont
+ /CMap/Category resourcestatus
+ {
+ pop pop
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {
+ $sname null eq
+ {dup $str cvs dup length $slen sub $slen getinterval cvn}
+ {$sname}
+ ifelse
+ Adobe_CoolType_Data/InVMFontsByCMap get
+ 1 index 2 copy known
+ {
+ get
+ false exch
+ {
+ pop
+ currentglobal
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ {
+ FontDirectory 1 index known
+ {exch pop true exit}
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ forall
+ }
+ {pop pop false}
+ ifelse
+ {
+ exch pop exch pop
+ }
+ {
+ dup/CMap resourcestatus
+ {
+ pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ }
+ {
+ 128 string cvs
+ dup(-)search
+ {
+ 3 1 roll search
+ {
+ 3 1 roll pop
+ {dup cvi}
+ stopped
+ {pop pop pop pop pop $findfontByEnum}
+ {
+ 4 2 roll pop pop
+ exch length
+ exch
+ 2 index length
+ 2 index
+ sub
+ exch 1 sub -1 0
+ {
+ $str cvs dup length
+ 4 index
+ 0
+ 4 index
+ 4 3 roll add
+ getinterval
+ exch 1 index exch 3 index exch
+ putinterval
+ dup/CMap resourcestatus
+ {
+ pop pop
+ 4 1 roll pop pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ true exit
+ }
+ {pop}
+ ifelse
+ }
+ for
+ dup type/booleantype eq
+ {pop}
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ {pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ {//SubstituteFont exec}
+ ifelse
+ /$slen 0 def
+ end
+ }
+ }
+ {
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {$findfontByEnum}
+ {//SubstituteFont exec}
+ ifelse
+ end
+ }
+ }
+ ifelse
+ bind readonly def
+ Adobe_CoolType_Core/scfindfont/systemfindfont load put
+ }
+ {
+ /scfindfont
+ {
+ $SubstituteFont
+ begin
+ dup systemfindfont
+ dup/FontName known
+ {dup/FontName get dup 3 index ne}
+ {/noname true}
+ ifelse
+ dup
+ {
+ /$origfontnamefound 2 index def
+ /$origfontname 4 index def/$substituteFound true def
+ }
+ if
+ exch pop
+ {
+ $slen 0 gt
+ $sname null ne
+ 3 index length $slen gt or and
+ {
+ pop dup $findfontByEnum findfont
+ dup maxlength 1 add dict
+ begin
+ {1 index/FID eq{pop pop}{def}ifelse}
+ forall
+ currentdict
+ end
+ definefont
+ dup/FontName known{dup/FontName get}{null}ifelse
+ $origfontnamefound ne
+ {
+ $origfontname $str cvs print
+ ( substitution revised, using )print
+ dup/FontName known
+ {dup/FontName get}{(unspecified font)}
+ ifelse
+ $str cvs print(.\n)print
+ }
+ if
+ }
+ {exch pop}
+ ifelse
+ }
+ {exch pop}
+ ifelse
+ end
+ }bind def
+ }
+ ifelse
+ end
+ end
+ Adobe_CoolType_Core_Defined not
+ {
+ Adobe_CoolType_Core/findfont
+ {
+ $SubstituteFont
+ begin
+ $depth 0 eq
+ {
+ /$fontname 1 index dup type/stringtype ne{$str cvs}if def
+ /$substituteFound false def
+ }
+ if
+ /$depth $depth 1 add def
+ end
+ scfindfont
+ $SubstituteFont
+ begin
+ /$depth $depth 1 sub def
+ $substituteFound $depth 0 eq and
+ {
+ $inVMIndex null ne
+ {dup $inVMIndex $AddInVMFont}
+ if
+ $doSmartSub
+ {
+ currentdict/$Strategy known
+ {$Strategy/$BuildFont get exec}
+ if
+ }
+ if
+ }
+ if
+ end
+ }bind put
+ }
+ if
+ }
+ if
+ end
+/$AddInVMFont
+ {
+ exch/FontName 2 copy known
+ {
+ get
+ 1 dict dup begin exch 1 index gcheck def end exch
+ Adobe_CoolType_Data/InVMFontsByCMap get exch
+ $DictAdd
+ }
+ {pop pop pop}
+ ifelse
+ }bind def
+/$DictAdd
+ {
+ 2 copy known not
+ {2 copy 4 index length dict put}
+ if
+ Level2? not
+ {
+ 2 copy get dup maxlength exch length 4 index length add lt
+ 2 copy get dup length 4 index length add exch maxlength 1 index lt
+ {
+ 2 mul dict
+ begin
+ 2 copy get{forall}def
+ 2 copy currentdict put
+ end
+ }
+ {pop}
+ ifelse
+ }
+ if
+ get
+ begin
+ {def}
+ forall
+ end
+ }bind def
+end
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
+%%Version: 1.23 0
+systemdict/languagelevel known dup
+ {currentglobal false setglobal}
+ {false}
+ifelse
+exch
+userdict/Adobe_CoolType_Utility 2 copy known
+ {2 copy get dup maxlength 27 add dict copy}
+ {27 dict}
+ifelse put
+Adobe_CoolType_Utility
+ begin
+ /@eexecStartData
+ <BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
+ 118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
+ 4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
+ /@recognizeCIDFont null def
+ /ct_Level2? exch def
+ /ct_Clone? 1183615869 internaldict dup
+ /CCRun known not
+ exch/eCCRun known not
+ ct_Level2? and or def
+ct_Level2?
+ {globaldict begin currentglobal true setglobal}
+if
+ /ct_AddStdCIDMap
+ ct_Level2?
+ {{
+ mark
+ Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
+ {
+ ((Hex)57 StartData
+ 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
+ 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
+ d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
+ cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
+ }
+ stopped
+ {
+ cleartomark
+ Adobe_CoolType_Utility/@recognizeCIDFont get
+ countdictstack dup array dictstack
+ exch 1 sub -1 0
+ {
+ 2 copy get 3 index eq
+ {1 index length exch sub 1 sub{end}repeat exit}
+ {pop}
+ ifelse
+ }
+ for
+ pop pop
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }
+ {cleartomark}
+ ifelse
+ }}
+ {{
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }}
+ ifelse bind def
+userdict/cid_extensions known
+dup{cid_extensions/cid_UpdateDB known and}if
+ {
+ cid_extensions
+ begin
+ /cid_GetCIDSystemInfo
+ {
+ 1 index type/stringtype eq
+ {exch cvn exch}
+ if
+ cid_extensions
+ begin
+ dup load 2 index known
+ {
+ 2 copy
+ cid_GetStatusInfo
+ dup null ne
+ {
+ 1 index load
+ 3 index get
+ dup null eq
+ {pop pop cid_UpdateDB}
+ {
+ exch
+ 1 index/Created get eq
+ {exch pop exch pop}
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ ifelse
+ }
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ {cid_UpdateDB}
+ ifelse
+ end
+ }bind def
+ end
+ }
+if
+ct_Level2?
+ {end setglobal}
+if
+ /ct_UseNativeCapability? systemdict/composefont known def
+ /ct_MakeOCF 35 dict def
+ /ct_Vars 25 dict def
+ /ct_GlyphDirProcs 6 dict def
+ /ct_BuildCharDict 15 dict dup
+ begin
+ /charcode 2 string def
+ /dst_string 1500 string def
+ /nullstring()def
+ /usewidths? true def
+ end def
+ ct_Level2?{setglobal}{pop}ifelse
+ ct_GlyphDirProcs
+ begin
+ /GetGlyphDirectory
+ {
+ systemdict/languagelevel known
+ {pop/CIDFont findresource/GlyphDirectory get}
+ {
+ 1 index/CIDFont findresource/GlyphDirectory
+ get dup type/dicttype eq
+ {
+ dup dup maxlength exch length sub 2 index lt
+ {
+ dup length 2 index add dict copy 2 index
+ /CIDFont findresource/GlyphDirectory 2 index put
+ }
+ if
+ }
+ if
+ exch pop exch pop
+ }
+ ifelse
+ +
+ }def
+ /+
+ {
+ systemdict/languagelevel known
+ {
+ currentglobal false setglobal
+ 3 dict begin
+ /vm exch def
+ }
+ {1 dict begin}
+ ifelse
+ /$ exch def
+ systemdict/languagelevel known
+ {
+ vm setglobal
+ /gvm currentglobal def
+ $ gcheck setglobal
+ }
+ if
+ ?{$ begin}if
+ }def
+ /?{$ type/dicttype eq}def
+ /|{
+ userdict/Adobe_CoolType_Data known
+ {
+ Adobe_CoolType_Data/AddWidths? known
+ {
+ currentdict Adobe_CoolType_Data
+ begin
+ begin
+ AddWidths?
+ {
+ Adobe_CoolType_Data/CC 3 index put
+ ?{def}{$ 3 1 roll put}ifelse
+ CC charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore
+ currentfont/Widths get exch CC exch put
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ end
+ end
+ }
+ {?{def}{$ 3 1 roll put}ifelse} ifelse
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ }def
+ /!
+ {
+ ?{end}if
+ systemdict/languagelevel known
+ {gvm setglobal}
+ if
+ end
+ }def
+ /:{string currentfile exch readstring pop}executeonly def
+ end
+ ct_MakeOCF
+ begin
+ /ct_cHexEncoding
+ [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+ /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+ /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+ /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+ /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+ /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+ /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+ /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+ /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+ /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+ /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+ /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+ /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+ /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+ /ct_CID_STR_SIZE 8000 def
+ /ct_mkocfStr100 100 string def
+ /ct_defaultFontMtx[.001 0 0 .001 0 0]def
+ /ct_1000Mtx[1000 0 0 1000 0 0]def
+ /ct_raise{exch cvx exch errordict exch get exec stop}bind def
+ /ct_reraise
+ {cvx $error/errorname get(Error: )print dup( )cvs print
+ errordict exch get exec stop
+ }bind def
+ /ct_cvnsi
+ {
+ 1 index add 1 sub 1 exch 0 4 1 roll
+ {
+ 2 index exch get
+ exch 8 bitshift
+ add
+ }
+ for
+ exch pop
+ }bind def
+ /ct_GetInterval
+ {
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /dst_index 0 def
+ dup dst_string length gt
+ {dup string/dst_string exch def}
+ if
+ 1 index ct_CID_STR_SIZE idiv
+ /arrayIndex exch def
+ 2 index arrayIndex get
+ 2 index
+ arrayIndex ct_CID_STR_SIZE mul
+ sub
+ {
+ dup 3 index add 2 index length le
+ {
+ 2 index getinterval
+ dst_string dst_index 2 index putinterval
+ length dst_index add/dst_index exch def
+ exit
+ }
+ {
+ 1 index length 1 index sub
+ dup 4 1 roll
+ getinterval
+ dst_string dst_index 2 index putinterval
+ pop dup dst_index add/dst_index exch def
+ sub
+ /arrayIndex arrayIndex 1 add def
+ 2 index dup length arrayIndex gt
+ {arrayIndex get}
+ {
+ pop
+ exit
+ }
+ ifelse
+ 0
+ }
+ ifelse
+ }
+ loop
+ pop pop pop
+ dst_string 0 dst_index getinterval
+ end
+ }bind def
+ ct_Level2?
+ {
+ /ct_resourcestatus
+ currentglobal mark true setglobal
+ {/unknowninstancename/Category resourcestatus}
+ stopped
+ {cleartomark setglobal true}
+ {cleartomark currentglobal not exch setglobal}
+ ifelse
+ {
+ {
+ mark 3 1 roll/Category findresource
+ begin
+ ct_Vars/vm currentglobal put
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ ct_Vars/vm get setglobal
+ end
+ }
+ }
+ {{resourcestatus}}
+ ifelse bind def
+ /CIDFont/Category ct_resourcestatus
+ {pop pop}
+ {
+ currentglobal true setglobal
+ /Generic/Category findresource
+ dup length dict copy
+ dup/InstanceType/dicttype put
+ /CIDFont exch/Category defineresource pop
+ setglobal
+ }
+ ifelse
+ ct_UseNativeCapability?
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ if
+ }
+ {
+ /ct_Category 2 dict begin
+ /CIDFont 10 dict def
+ /ProcSet 2 dict def
+ currentdict
+ end
+ def
+ /defineresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ dup dup maxlength exch length eq
+ {
+ dup length 10 add dict copy
+ ct_Category 2 index 2 index put
+ }
+ if
+ 3 index 3 index put
+ pop exch pop
+ }
+ {pop pop/defineresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /findresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index 2 copy known
+ {get 3 1 roll pop pop}
+ {pop pop/findresource/undefinedresource ct_raise}
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /resourcestatus
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index known
+ exch pop exch pop
+ {
+ 0 -1 true
+ }
+ {
+ false
+ }
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /ct_resourcestatus/resourcestatus load def
+ }
+ ifelse
+ /ct_CIDInit 2 dict
+ begin
+ /ct_cidfont_stream_init
+ {
+ {
+ dup(Binary)eq
+ {
+ pop
+ null
+ currentfile
+ ct_Level2?
+ {
+ {cid_BYTE_COUNT()/SubFileDecode filter}
+ stopped
+ {pop pop pop}
+ if
+ }
+ if
+ /readstring load
+ exit
+ }
+ if
+ dup(Hex)eq
+ {
+ pop
+ currentfile
+ ct_Level2?
+ {
+ {null exch/ASCIIHexDecode filter/readstring}
+ stopped
+ {pop exch pop(>)exch/readhexstring}
+ if
+ }
+ {(>)exch/readhexstring}
+ ifelse
+ load
+ exit
+ }
+ if
+ /StartData/typecheck ct_raise
+ }
+ loop
+ cid_BYTE_COUNT ct_CID_STR_SIZE le
+ {
+ 2 copy cid_BYTE_COUNT string exch exec
+ pop
+ 1 array dup
+ 3 -1 roll
+ 0 exch put
+ }
+ {
+ cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
+ dup array exch 2 sub 0 exch 1 exch
+ {
+ 2 copy
+ 5 index
+ ct_CID_STR_SIZE
+ string
+ 6 index exec
+ pop
+ put
+ pop
+ }
+ for
+ 2 index
+ cid_BYTE_COUNT ct_CID_STR_SIZE mod string
+ 3 index exec
+ pop
+ 1 index exch
+ 1 index length 1 sub
+ exch put
+ }
+ ifelse
+ cid_CIDFONT exch/GlyphData exch put
+ 2 index null eq
+ {
+ pop pop pop
+ }
+ {
+ pop/readstring load
+ 1 string exch
+ {
+ 3 copy exec
+ pop
+ dup length 0 eq
+ {
+ pop pop pop pop pop
+ true exit
+ }
+ if
+ 4 index
+ eq
+ {
+ pop pop pop pop
+ false exit
+ }
+ if
+ }
+ loop
+ pop
+ }
+ ifelse
+ }bind def
+ /StartData
+ {
+ mark
+ {
+ currentdict
+ dup/FDArray get 0 get/FontMatrix get
+ 0 get 0.001 eq
+ {
+ dup/CDevProc known not
+ {
+ /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
+ {get}
+ {
+ pop pop
+ {pop pop pop pop pop 0 -1000 7 index 2 div 880}
+ }
+ ifelse
+ def
+ }
+ if
+ }
+ {
+ /CDevProc
+ {
+ pop pop pop pop pop
+ 0
+ 1 cid_temp/cid_CIDFONT get
+ /FDArray get 0 get
+ /FontMatrix get 0 get div
+ 7 index 2 div
+ 1 index 0.88 mul
+ }def
+ }
+ ifelse
+ /cid_temp 15 dict def
+ cid_temp
+ begin
+ /cid_CIDFONT exch def
+ 3 copy pop
+ dup/cid_BYTE_COUNT exch def 0 gt
+ {
+ ct_cidfont_stream_init
+ FDArray
+ {
+ /Private get
+ dup/SubrMapOffset known
+ {
+ begin
+ /Subrs SubrCount array def
+ Subrs
+ SubrMapOffset
+ SubrCount
+ SDBytes
+ ct_Level2?
+ {
+ currentdict dup/SubrMapOffset undef
+ dup/SubrCount undef
+ /SDBytes undef
+ }
+ if
+ end
+ /cid_SD_BYTES exch def
+ /cid_SUBR_COUNT exch def
+ /cid_SUBR_MAP_OFFSET exch def
+ /cid_SUBRS exch def
+ cid_SUBR_COUNT 0 gt
+ {
+ GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ 0 1 cid_SUBR_COUNT 1 sub
+ {
+ exch 1 index
+ 1 add
+ cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
+ GlyphData exch cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ cid_SUBRS 4 2 roll
+ GlyphData exch
+ 4 index
+ 1 index
+ sub
+ ct_GetInterval
+ dup length string copy put
+ }
+ for
+ pop
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ }
+ if
+ cleartomark pop pop
+ end
+ CIDFontName currentdict/CIDFont defineresource pop
+ end end
+ }
+ stopped
+ {cleartomark/StartData ct_reraise}
+ if
+ }bind def
+ currentdict
+ end def
+ /ct_saveCIDInit
+ {
+ /CIDInit/ProcSet ct_resourcestatus
+ {true}
+ {/CIDInitC/ProcSet ct_resourcestatus}
+ ifelse
+ {
+ pop pop
+ /CIDInit/ProcSet findresource
+ ct_UseNativeCapability?
+ {pop null}
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop}
+ ifelse
+ }
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop null}
+ ifelse
+ ct_Vars exch/ct_oldCIDInit exch put
+ }bind def
+ /ct_restoreCIDInit
+ {
+ ct_Vars/ct_oldCIDInit get dup null ne
+ {/CIDInit exch/ProcSet defineresource pop}
+ {pop}
+ ifelse
+ }bind def
+ /ct_BuildCharSetUp
+ {
+ 1 index
+ begin
+ CIDFont
+ begin
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /ct_dfCharCode exch def
+ /ct_dfDict exch def
+ CIDFirstByte ct_dfCharCode add
+ dup CIDCount ge
+ {pop 0}
+ if
+ /cid exch def
+ {
+ GlyphDirectory cid 2 copy known
+ {get}
+ {pop pop nullstring}
+ ifelse
+ dup length FDBytes sub 0 gt
+ {
+ dup
+ FDBytes 0 ne
+ {0 FDBytes ct_cvnsi}
+ {pop 0}
+ ifelse
+ /fdIndex exch def
+ dup length FDBytes sub FDBytes exch getinterval
+ /charstring exch def
+ exit
+ }
+ {
+ pop
+ cid 0 eq
+ {/charstring nullstring def exit}
+ if
+ /cid 0 def
+ }
+ ifelse
+ }
+ loop
+ }def
+ /ct_SetCacheDevice
+ {
+ 0 0 moveto
+ dup stringwidth
+ 3 -1 roll
+ true charpath
+ pathbbox
+ 0 -1000
+ 7 index 2 div 880
+ setcachedevice2
+ 0 0 moveto
+ }def
+ /ct_CloneSetCacheProc
+ {
+ 1 eq
+ {
+ stringwidth
+ pop -2 div -880
+ 0 -1000 setcharwidth
+ moveto
+ }
+ {
+ usewidths?
+ {
+ currentfont/Widths get cid
+ 2 copy known
+ {get exch pop aload pop}
+ {pop pop stringwidth}
+ ifelse
+ }
+ {stringwidth}
+ ifelse
+ setcharwidth
+ 0 0 moveto
+ }
+ ifelse
+ }def
+ /ct_Type3ShowCharString
+ {
+ ct_FDDict fdIndex 2 copy known
+ {get}
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ ct_Type1FontTemplate dup maxlength dict copy
+ begin
+ FDArray fdIndex get
+ dup/FontMatrix 2 copy known
+ {get}
+ {pop pop ct_defaultFontMtx}
+ ifelse
+ /FontMatrix exch dup length array copy def
+ /Private get
+ /Private exch def
+ /Widths rootfont/Widths get def
+ /CharStrings 1 dict dup/.notdef
+ <d841272cf18f54fc13>dup length string copy put def
+ currentdict
+ end
+ /ct_Type1Font exch definefont
+ dup 5 1 roll put
+ setglobal
+ }
+ ifelse
+ dup/CharStrings get 1 index/Encoding get
+ ct_dfCharCode get charstring put
+ rootfont/WMode 2 copy known
+ {get}
+ {pop pop 0}
+ ifelse
+ exch
+ 1000 scalefont setfont
+ ct_str1 0 ct_dfCharCode put
+ ct_str1 exch ct_dfSetCacheProc
+ ct_SyntheticBold
+ {
+ currentpoint
+ ct_str1 show
+ newpath
+ moveto
+ ct_str1 true charpath
+ ct_StrokeWidth setlinewidth
+ stroke
+ }
+ {ct_str1 show}
+ ifelse
+ }def
+ /ct_Type4ShowCharString
+ {
+ ct_dfDict ct_dfCharCode charstring
+ FDArray fdIndex get
+ dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
+ {ct_1000Mtx matrix concatmatrix concat}
+ {pop}
+ ifelse
+ /Private get
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {
+ ct_dfDict/Private
+ 3 -1 roll
+ {put}
+ 1183615869 internaldict/superexec get exec
+ }
+ if
+ 1183615869 internaldict
+ Adobe_CoolType_Utility/ct_Level2? get
+ {1 index}
+ {3 index/Private get mark 6 1 roll}
+ ifelse
+ dup/RunInt known
+ {/RunInt get}
+ {pop/CCRun}
+ ifelse
+ get exec
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {cleartomark}
+ if
+ }bind def
+ /ct_BuildCharIncremental
+ {
+ {
+ Adobe_CoolType_Utility/ct_MakeOCF get begin
+ ct_BuildCharSetUp
+ ct_ShowCharString
+ }
+ stopped
+ {stop}
+ if
+ end
+ end
+ end
+ end
+ }bind def
+ /BaseFontNameStr(BF00)def
+ /ct_Type1FontTemplate 14 dict
+ begin
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /PaintType 0 def
+ currentdict
+ end def
+ /BaseFontTemplate 11 dict
+ begin
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /BuildChar/ct_BuildCharIncremental load def
+ ct_Clone?
+ {
+ /FontType 3 def
+ /ct_ShowCharString/ct_Type3ShowCharString load def
+ /ct_dfSetCacheProc/ct_CloneSetCacheProc load def
+ /ct_SyntheticBold false def
+ /ct_StrokeWidth 1 def
+ }
+ {
+ /FontType 4 def
+ /Private 1 dict dup/lenIV 4 put def
+ /CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
+ /PaintType 0 def
+ /ct_ShowCharString/ct_Type4ShowCharString load def
+ }
+ ifelse
+ /ct_str1 1 string def
+ currentdict
+ end def
+ /BaseFontDictSize BaseFontTemplate length 5 add def
+ /ct_matrixeq
+ {
+ true 0 1 5
+ {
+ dup 4 index exch get exch 3 index exch get eq and
+ dup not
+ {exit}
+ if
+ }
+ for
+ exch pop exch pop
+ }bind def
+ /ct_makeocf
+ {
+ 15 dict
+ begin
+ exch/WMode exch def
+ exch/FontName exch def
+ /FontType 0 def
+ /FMapType 2 def
+ dup/FontMatrix known
+ {dup/FontMatrix get/FontMatrix exch def}
+ {/FontMatrix matrix def}
+ ifelse
+ /bfCount 1 index/CIDCount get 256 idiv 1 add
+ dup 256 gt{pop 256}if def
+ /Encoding
+ 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
+ bfCount 1 255{2 copy bfCount put pop}for
+ def
+ /FDepVector bfCount dup 256 lt{1 add}if array def
+ BaseFontTemplate BaseFontDictSize dict copy
+ begin
+ /CIDFont exch def
+ CIDFont/FontBBox known
+ {CIDFont/FontBBox get/FontBBox exch def}
+ if
+ CIDFont/CDevProc known
+ {CIDFont/CDevProc get/CDevProc exch def}
+ if
+ currentdict
+ end
+ BaseFontNameStr 3(0)putinterval
+ 0 1 bfCount dup 256 eq{1 sub}if
+ {
+ FDepVector exch
+ 2 index BaseFontDictSize dict copy
+ begin
+ dup/CIDFirstByte exch 256 mul def
+ FontType 3 eq
+ {/ct_FDDict 2 dict def}
+ if
+ currentdict
+ end
+ 1 index 16
+ BaseFontNameStr 2 2 getinterval cvrs pop
+ BaseFontNameStr exch definefont
+ put
+ }
+ for
+ ct_Clone?
+ {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
+ if
+ FontName
+ currentdict
+ end
+ definefont
+ ct_Clone?
+ {
+ gsave
+ dup 1000 scalefont setfont
+ ct_BuildCharDict
+ begin
+ /usewidths? false def
+ currentfont/Widths get
+ begin
+ exch/CIDFont get/GlyphDirectory get
+ {
+ pop
+ dup charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore def
+ }
+ forall
+ end
+ /usewidths? true def
+ end
+ grestore
+ }
+ {exch pop}
+ ifelse
+ }bind def
+ currentglobal true setglobal
+ /ct_ComposeFont
+ {
+ ct_UseNativeCapability?
+ {
+ 2 index/CMap ct_resourcestatus
+ {pop pop exch pop}
+ {
+ /CIDInit/ProcSet findresource
+ begin
+ 12 dict
+ begin
+ begincmap
+ /CMapName 3 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ exch/WMode exch def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {
+ dup length string copy
+ exch pop exch pop
+ }
+ {pop(Identity)}
+ ifelse
+ }
+ {pop (Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ 3 2 roll pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ setglobal
+ /ct_MakeIdentity
+ {
+ ct_UseNativeCapability?
+ {
+ 1 index/CMap ct_resourcestatus
+ {pop pop}
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CMapName 2 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {dup length string copy exch pop exch pop}
+ {pop(Identity)}
+ ifelse
+ }
+ {pop(Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ exch pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ currentdict readonly pop
+ end
+ end
+%%EndResource
+setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
+%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
+%%Version: 1.0 0
+userdict/ct_T42Dict 15 dict put
+ct_T42Dict begin
+/Is2015?
+{
+ version
+ cvi
+ 2015
+ ge
+}bind def
+/AllocGlyphStorage
+{
+ Is2015?
+ {
+ pop
+ }
+ {
+ {string}forall
+ }ifelse
+}bind def
+/Type42DictBegin
+{
+25 dict begin
+ /FontName exch def
+ /CharStrings 256 dict
+begin
+ /.notdef 0 def
+ currentdict
+end def
+ /Encoding exch def
+ /PaintType 0 def
+ /FontType 42 def
+ /FontMatrix[1 0 0 1 0 0]def
+ 4 array astore cvx/FontBBox exch def
+ /sfnts
+}bind def
+/Type42DictEnd
+{
+ currentdict dup/FontName get exch definefont end
+ct_T42Dict exch
+dup/FontName get exch put
+}bind def
+/RD{string currentfile exch readstring pop}executeonly def
+/PrepFor2015
+{
+Is2015?
+{
+ /GlyphDirectory
+ 16
+ dict def
+ sfnts 0 get
+ dup
+ 2 index
+ (glyx)
+ putinterval
+ 2 index
+ (locx)
+ putinterval
+ pop
+ pop
+}
+{
+ pop
+ pop
+}ifelse
+}bind def
+/AddT42Char
+{
+Is2015?
+{
+ /GlyphDirectory get
+ begin
+ def
+ end
+ pop
+ pop
+}
+{
+ /sfnts get
+ 4 index
+ get
+ 3 index
+ 2 index
+ putinterval
+ pop
+ pop
+ pop
+ pop
+}ifelse
+}bind def
+/T0AddT42Mtx2
+{
+/CIDFont findresource/Metrics2 get begin def end
+}bind def
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginFile: MMFauxFont.prc
+%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
+%%All Rights Reserved.
+userdict /ct_EuroDict 10 dict put
+ct_EuroDict begin
+/ct_CopyFont
+{
+ { 1 index /FID ne {def} {pop pop} ifelse} forall
+} def
+/ct_GetGlyphOutline
+{
+ gsave
+ initmatrix newpath
+ exch findfont dup
+ length 1 add dict
+ begin
+ ct_CopyFont
+ /Encoding Encoding dup length array copy
+ dup
+ 4 -1 roll
+ 0 exch put
+ def
+ currentdict
+ end
+ /ct_EuroFont exch definefont
+ 1000 scalefont setfont
+ 0 0 moveto
+ [
+ <00> stringwidth
+ <00> false charpath
+ pathbbox
+ [
+ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
+ grestore
+ counttomark 8 add
+}
+def
+/ct_MakeGlyphProc
+{
+ ] cvx
+ /ct_PSBuildGlyph cvx
+ ] cvx
+} def
+/ct_PSBuildGlyph
+{
+ gsave
+ 8 -1 roll pop
+ 7 1 roll
+ 6 -2 roll ct_FontMatrix transform 6 2 roll
+ 4 -2 roll ct_FontMatrix transform 4 2 roll
+ ct_FontMatrix transform
+ currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
+ dup 9 1 roll
+ {
+ currentdict /StrokeWidth 2 copy known
+ {
+ get 2 div
+ 0 ct_FontMatrix dtransform pop
+ 5 1 roll
+ 4 -1 roll 4 index sub
+ 4 1 roll
+ 3 -1 roll 4 index sub
+ 3 1 roll
+ exch 4 index add exch
+ 4 index add
+ 5 -1 roll pop
+ }
+ {
+ pop pop
+ }
+ ifelse
+ }
+ if
+ setcachedevice
+ ct_FontMatrix concat
+ ct_PSPathOps begin
+ exec
+ end
+ {
+ currentdict /StrokeWidth 2 copy known
+ { get }
+ { pop pop 0 }
+ ifelse
+ setlinewidth stroke
+ }
+ {
+ fill
+ }
+ ifelse
+ grestore
+} def
+/ct_PSPathOps 4 dict dup begin
+ /m {moveto} def
+ /l {lineto} def
+ /c {curveto} def
+ /cp {closepath} def
+end
+def
+/ct_matrix1000 [1000 0 0 1000 0 0] def
+/ct_AddGlyphProc
+{
+ 2 index findfont dup length 4 add dict
+ begin
+ ct_CopyFont
+ /CharStrings CharStrings dup length 1 add dict copy
+ begin
+ 3 1 roll def
+ currentdict
+ end
+ def
+ /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
+ /ct_PSBuildGlyph /ct_PSBuildGlyph load def
+ /ct_PSPathOps /ct_PSPathOps load def
+ currentdict
+ end
+ definefont pop
+}
+def
+systemdict /languagelevel known
+{
+ /ct_AddGlyphToPrinterFont {
+ 2 copy
+ ct_GetGlyphOutline 3 add -1 roll restore
+ ct_MakeGlyphProc
+ ct_AddGlyphProc
+ } def
+}
+{
+ /ct_AddGlyphToPrinterFont {
+ pop pop restore
+ Adobe_CTFauxDict /$$$FONTNAME get
+ /Euro
+ Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
+ ct_EuroDict exch get
+ ct_AddGlyphProc
+ } def
+} ifelse
+/AdobeSansMM
+{
+556 0 24 -19 541 703
+ {
+ 541 628 m
+ 510 669 442 703 354 703 c
+ 201 703 117 607 101 444 c
+ 50 444 l
+ 25 372 l
+ 97 372 l
+ 97 301 l
+ 49 301 l
+ 24 229 l
+ 103 229 l
+ 124 67 209 -19 350 -19 c
+ 435 -19 501 25 509 32 c
+ 509 131 l
+ 492 105 417 60 343 60 c
+ 267 60 204 127 197 229 c
+ 406 229 l
+ 430 301 l
+ 191 301 l
+ 191 372 l
+ 455 372 l
+ 479 444 l
+ 194 444 l
+ 201 531 245 624 348 624 c
+ 433 624 484 583 509 534 c
+ cp
+ 556 0 m
+ }
+ct_PSBuildGlyph
+} def
+/AdobeSerifMM
+{
+500 0 10 -12 484 692
+ {
+ 347 298 m
+ 171 298 l
+ 170 310 170 322 170 335 c
+ 170 362 l
+ 362 362 l
+ 374 403 l
+ 172 403 l
+ 184 580 244 642 308 642 c
+ 380 642 434 574 457 457 c
+ 481 462 l
+ 474 691 l
+ 449 691 l
+ 433 670 429 657 410 657 c
+ 394 657 360 692 299 692 c
+ 204 692 94 604 73 403 c
+ 22 403 l
+ 10 362 l
+ 70 362 l
+ 69 352 69 341 69 330 c
+ 69 319 69 308 70 298 c
+ 22 298 l
+ 10 257 l
+ 73 257 l
+ 97 57 216 -12 295 -12 c
+ 364 -12 427 25 484 123 c
+ 458 142 l
+ 425 101 384 37 316 37 c
+ 256 37 189 84 173 257 c
+ 335 257 l
+ cp
+ 500 0 m
+ }
+ct_PSBuildGlyph
+} def
+end
+%%EndFile
+setglobal
+Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
+{
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
+{
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
+{
+ end
+}def
+/dt
+{
+}def
+/AGMIMG_flushfilters
+{
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
+{
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
+}def
+/overprint_plate
+{
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}def
+/process_mask
+{
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
+{
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
+{
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource[
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
+{
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
+{
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
+{
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
+{
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
+{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
+{
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
+{
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ AGMIMG_&customcolorimage
+ }ifelse
+ }bdf
+}def
+/snap_to_device
+{
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
+}def
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
+}if
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2016 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
+Adobe_AGM_Image/ds gx
+[/NamespacePush pdfmark_5
+[/_objdef {Doc_Metadata} /type /stream /OBJ pdfmark_5
+[{Doc_Metadata} 4738 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xap:CreateDate="2007-07-25T22:43:32-05:00"
+ xap:ModifyDate="2007-07-26T08:59:19-05:00"
+ xap:MetadataDate="2007-07-26T08:59:19-05:00"
+ xap:CreatorTool="Adobe Acrobat 7.0"
+ xapMM:DocumentID="uuid:CF961FDF97E2D911A70AAD12FD385CA9"
+ xapMM:InstanceID="uuid:179f88f1-8587-48b0-a6e4-16c2e68590fd"
+ dc:format="application/pdf"
+ pdf:Producer="Acrobat Distiller 8.1.0 (Windows)">
+ <xapMM:DerivedFrom
+ stRef:instanceID="uuid:48187d1b-38b3-4940-92b8-f695543b8750"
+ stRef:documentID="uuid:859136f0-1e7e-4882-a2de-4628c24f5142"/>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">Acr2A.tmp</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?>
+
+
+% &end XMP packet& %
+
+[{Doc_Metadata} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark_5
+[/Document 1 dict begin /Metadata {Doc_Metadata} def currentdict end /BDC pdfmark_5
+[/NamespacePop pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
+%%Page: 1 1
+%%EndPageComments
+%%BeginPageSetup
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+Adobe_AGM_Core/ps gx
+gsave
+<< /0
+[/CIEBasedABC 20 dict
+dup /CreationDate (19980209064900) put
+dup /RenderingIntent (RelativeColorimetric) put
+dup /Description (sRGB IEC61966-2.1) put
+dup /ColorSpace (RGB ) put
+dup /Copyright (Copyright (c) 1998 Hewlett-Packard Company) put
+dup /ProfileID <1D3FDA2EDB4A89AB60A23C5F7C7D81DD> put
+dup /DecodeABC [
+{{0 0.00031 0.00061 0.0009 0.0012 0.00151 0.00181 0.00212 0.00242 0.00271
+0.00302 0.00334 0.00366 0.00401 0.00437 0.00476 0.00515 0.00558 0.00602 0.00648
+0.00696 0.00745 0.00798 0.00852 0.00908 0.00966 0.01027 0.01089 0.01153 0.0122
+0.0129 0.01362 0.01435 0.01511 0.01589 0.0167 0.01752 0.01837 0.01925 0.02015
+0.02107 0.02203 0.02299 0.02399 0.02501 0.02606 0.02713 0.02822 0.02934 0.03049
+0.03166 0.03287 0.03409 0.03533 0.03662 0.03792 0.03925 0.04061 0.04199 0.04341
+0.04484 0.04631 0.04781 0.04933 0.05088 0.05245 0.05406 0.05569 0.05736 0.05904
+0.06077 0.06252 0.0643 0.06611 0.06794 0.06981 0.0717 0.07363 0.07558 0.07756
+0.07959 0.08162 0.0837 0.08581 0.08795 0.09011 0.09231 0.09454 0.0968 0.09909
+0.10142 0.10376 0.10616 0.10857 0.11102 0.11351 0.11602 0.11856 0.12114 0.12376
+0.12639 0.12907 0.13178 0.13452 0.13729 0.14009 0.14294 0.14581 0.14873 0.15166
+0.15463 0.15765 0.16068 0.16376 0.16687 0.17001 0.17319 0.17641 0.17965 0.18293
+0.18625 0.1896 0.19299 0.19641 0.19987 0.20335 0.20688 0.21045 0.21405 0.21767
+0.22134 0.22505 0.22879 0.23257 0.23638 0.24023 0.24411 0.24804 0.25199 0.25599
+0.26002 0.26409 0.2682 0.27234 0.27651 0.28073 0.28499 0.28928 0.29361 0.29798
+0.30238 0.30683 0.3113 0.31582 0.32038 0.32497 0.3296 0.33428 0.33898 0.34372
+0.34851 0.35333 0.3582 0.3631 0.36804 0.37302 0.37804 0.3831 0.38819 0.39333
+0.3985 0.40372 0.40898 0.41427 0.41961 0.42498 0.43039 0.43585 0.44134 0.44688
+0.45245 0.45806 0.46372 0.46942 0.47516 0.48094 0.48675 0.49261 0.49851 0.50445
+0.51043 0.51646 0.52253 0.52863 0.53477 0.54097 0.54719 0.55347 0.55979 0.56613
+0.57253 0.57897 0.58545 0.59198 0.59855 0.60515 0.6118 0.61849 0.62524 0.63201
+0.63884 0.6457 0.6526 0.65955 0.66654 0.67357 0.68066 0.68778 0.69495 0.70215
+0.7094 0.71669 0.72404 0.73142 0.73885 0.74632 0.75383 0.76138 0.76899 0.77663
+0.78433 0.79206 0.79983 0.80765 0.81552 0.82343 0.83139 0.8394 0.84744 0.85554
+0.86367 0.87185 0.88007 0.88835 0.89666 0.90503 0.91343 0.92189 0.93038 0.93892
+0.94751 0.95614 0.96482 0.97355 0.98232 0.99114 1}
+dup 3 -1 roll 0 1 3 copy 3 -1 roll exch ge
+{pop pop pop pop pop 256 get}
+{pop 3 copy pop le {pop pop pop pop 0 get}
+{exch dup 4 -1 roll exch sub 3 1 roll sub div 256 mul dup
+floor dup 3 1 roll sub exch cvi dup 1 add 4 -1 roll exch
+get 4 -1 roll 3 -1 roll get dup 4 1 roll sub mul add}
+ifelse} ifelse
+} bind
+dup
+dup
+] put
+dup /MatrixABC [
+0.2180189128 0.1112492942 0.0069565698
+0.1925612492 0.358452993 0.0485281768
+0.0715286348 0.0303053423 0.3569742448
+] put
+dup /MatrixLMN [1.9999694824 0 0 0 1.9999694824 0 0 0 1.9999694824] put
+dup /BlackPoint [0 0 0] put
+dup /WhitePoint [0.9642028809 1 0.8249053955] put]
+
+/CSA add_res
+/CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+grestore
+Adobe_AGM_Core/pt gx
+%%EndPageSetup
+1 -1 scale 0 -185.687 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 185.687 li
+196.84 185.687 li
+196.84 0 li
+cp
+clp
+[1 0 0 1 0 0 ]ct
+gsave
+0 .0469971 mo
+196.8 .0469971 li
+196.8 185.687 li
+0 185.687 li
+cp
+clp
+-1.1197 186.742 mo
+198.08 186.742 li
+198.08 -.938004 li
+-1.1197 -.938004 li
+cp
+false sop
+gsave
+<< /CSA /0 get_csa_by_name
+/Intent /RelativeColorimetric
+>> csacrd
+/0 /CSA get_res setcolorspace
+clp
+[1 0 0 -1 0 185.687 ]ct
+[199.2 0 0 187.68 -1.1197 -1.05501 ]ct
+snap_to_device
+<<
+/T 1
+/W 415
+/H 391
+/M[415 0 0 -391 0 391 ]
+/BC 8
+/D[0 1 0 1 0 1 ]
+/DS [cf /ASCII85Decode fl dup/DCTDecode fl]
+/O 2
+>>
+%%BeginBinary: 1
+img
+s4IA>!"M;*Ddm8XA:OX[!!3,S!/(=\#RC\B#Rh"G$kWjS$P=*a$k*X](_[Pt',)3!&el#o'G;2u)]Tn=
+)]'bF-RU/b2)@$E2*3l]4$,Mc4$,M)%1<OQ%LisZ%M0<a%h99f&.oKc'HIl%'bh?&,oRR9(Ddu9+<qpK
+*[;dU-m^/f-o*P31,:pQ4$,Mc4$,Mcs1eUH#Q]\]T*#*<!!3`5!tbS6_uW(&!!*6(!<E3%!<<*"!!!!!
+!rr?'"9eu7#RLhG!<<-(!<E3%!<E0#!!!!!!!*'$!sAc3#7(VC$P3:="9AT+"9J`3"pbA7$o7na!YGM;
++VHL55uD&(,&r/h"r*2nYsKZ\'iMkW1Gj-(d6e-bP#Ll/nRHVt(8A*e-:F%sA4=A1F>ar`<T7T\Z\66F
+FlW'_-^:E\[$ASZjRf:V`RX)C<b?N0QDV+1f&lZb7os>ILR4pJa4KMK&HDk6!<NB,!sAc3#6tG:2$![Y
+&Ha12&d1Kt@<!J)"YtXk'VVcu,Jd:*n1u>!iGsO56W4_0F#<D5"r<r=K*N_\_U:i9<217?79)6fA`E9e
+KYu8]j7>a)UkQ1@`73l?V7":mjn2YdG(u<[[`6n\p*Vdh=(c`4Q`%=5s4RG]!s&B'&H`UF560CU-\1Fa
+BU5<h$74qVi*%La5C[2jn9g&uP_jA[8aM43NPPP`P`aLXT')@m1e[n&j2!"Dk]$j==oo?+:4efRI&A02
+#ED]FH14?H`+kI""J63^E[/CE!dG7h;XOH*MEq*#+#Mmd\MQnS0a9r6Pa&nnIOX*IGb-o%ocq[+KnL;j
+5Bo^Fb">JbVh1-GRm9.D`hH@2YGVqn&YMe,890l[!%41NT#nVB;m`sNYp?9D6ko1G_'mh[.7q9F-9S7d
+kld6PX^>:[>`n,37^lD["PQOmP*2%B!Y^\9-/n!L$J[!LO+L6)Ud0JQ1mF][P()YC4:6$S&!BI[8>h9.
+U-_GJJoolZ';U>T-f@dUA:RGrr";W>>uQE`nC9*g;M\(m$-:[2,__G8POZL^=K)fF^aB_g8l=2>\MN01
+-UdJH1m7IKBJi<`^]D;t74BXI?p1A$!!2d(!dR26I7=]7lA$IXZ::\0,r4%6F;uZGUe-UmJKd?Sd,%P]
+OAb"4BM&oeHk_7ZM()`IFJa<i*Bn0]MZ&-JfcUE=.<:SS!MoK:0d\c2JoRi?.4J0uOlDsFifjrL'S%1I
+Ul&Dm!0jkp/ea48o0(Moh1Bn!+pOgP3[`rS+XJNIpSZusS85$5];29a%Y1+O@pBu^&iE5#aRYO;)Y0&Z
+R0J!b3pI@<KYtAn?4SMcqlCh[$8_9OXc>:@!=n`#i^BT=m6@L^n<G%8VfWp6lo]Z]Mt/@#!So@Ag[dhM
+VLGfB:&BClf1*L*]uTVV8Mo]Y0bNnXeb/p$?luMV^"`ttRm26d]iEQe!N*kA1lkAuFT+[ib\/j'.Dh$p
+TcucY4Js9Q8u:!tU7"O^!UhHdDSs:M*6Lt5K?3JJp.5\"0qr,;:TS9`+o,#9-jU-pR7j,>,W+I*/<Y+*
+eKlhm"YT'"7(]7kU.RggOl\c\,q9$CP%9fu-_D+cb*40LS0^]SbefJ>;I%AZVV`R1E$&c&_Eps8O,A/G
+P4nDg'U56pWPC8O+Z+\V8k]L^9D@%uaj4Wn8WNk8@$0>7Pdgo@3"V0*QL5A`i$[6EKfD-6MFphs2i]jk
+HkIZ"i0"n<I/HsPLs[muMLP0TP#_fim[SkjVYL)g#md(`UnqiV7LqVY#>%*.oTB7_;##DOP()KGp=,,e
+3Q"aXR;tDf"::J'S_<\AA`8;cjJl@r7J5+^%^"(VD42DK4BgSQ>TuhDlWQB2R\?)"E3V6@_p5n4,``/:
+(Oa,@fi`O4d<jZgkrA$O]AmDr"S`.$S:&Q$\X71I<Bg<::;Q,'a`6kWZ4'a4F>Np(AWV<Qgh)"NMg`Y(
+*O"B:7@Et>-f4`;-aVSqFoG"IH@JH#pZ,HBmcE"^D$TormIO#p1GVP.$A"1%e*S"XrhZAX\@[0i\4:0q
+]KE6TJfO/9ZEe-+m8LKlH8++?/UrD5diSQp[IN`@DId?i?'n.2pM?nk1^NR6SJoZF=14^91>tGO$=$0L
+Ir!<!H:4&]43(^NU@IJ14A/p=/20Tg/W?m5=)IUbRch#E0AZF2`P8>(Nq1p4lYudV)F4X\4/e&V#>Y`n
+7p!T9@ra_YLD=>YGTY[V3.:+>#OA!X^)NBUMZ"jFQa$Ji<coKA`&`f[AZlS.alhf_=itF]NPkL;T:.eV
+1Cj`@/%V5&/>_a>[qaMR<p6Dj8Mf4M00&40<r>TXnLSf@IW[Oj@3-N%]5EtdZ+>a,92-9,6)aU'#J(VR
+^l<P[`k68PK@qq(G)q\5j@DjN$61>RLB%k(3#]Y$KTrY217f*sV'I&o<A#4:1K2EW,aCtXnjr>AJ3me3
+8s5:d+;9=+85TC3!^hY$Qq9->O+MB/<.L$uIjC9M@Qm(M5Va"gKSZ!%-$JS4YAg=VoTo[WW\'=knHr@t
+!(`_-Pcbp#_*>iKBeZ(Ik)u-++,Y%VH$Cb2;B-sY^hGO)-I?E`:*sVi4(F$kV8RR->'AN:5QWsr:(gHX
+CTe'*Gej]BNDm8ZpX(9>2+t^'.#=E>-/X@iUX-nDDha+\cZJ/<8Hj.kh__t2a)[B&a;i-ZP,Xe6f']Z3
+imS)oHSm("CpJ+tTqG2m@T>KRfo[#?e?W_#qIFmH-`r>@D3+GDj.f0'O7#Fp%m\lrMgp02cgk!@AVdLK
+@>r@<>i0N@4kd85a-6$r@CBfUAk@'CUe=Fcrc.JLB7Tb/%'6.<]bZZHcrjK2a]:D&RqeqI]'p3mo#;a^
+MEnJc'H8dGDCo7rVJ9CL"3n`M+8%+aqM'/d]aP+X&]Ka`!!Di&g<&p9>e[4t40H3Oa_;=G:[h=8b1OOk
+NZ-XIIbb;pb!t%a[V$Zu%^PDmp:SFmSE?6AK_[^o'Ac`1IJ/"lA-eAT"6>2&R<QnO=)\\*P#f[ECn6PS
+N#nihhX:J,#Ok)D17!Oc4fplgNDWn[KL%\(j>?\3[^uX8V7oD(nOn^&hh@c*>>,s@/-']/>X+*-qOVi$
+g[5m0gfiAUi96Fb28jBP+HBrb3-NcLFM_9T(l)iknB3\15kl`7]tdW^'?a[t<aT'T!Wa?.8(.V*pNK8e
+?IMZlS-ITP&_r2so2<W;g0EI:G1Ps,8V-@U<GC"MBEW2TOmt]BXfjJO:N#'1,"tnQp,ree%&UIkS5#M2
+jD+.BGV.co4Lb*h1<-olCKgSY3%k*'B<sf/QOftND2k.I^Wd^5A]MZ)cj0&8eJ=PUOWFhIM":nW0>L.3
+;Fq%6rrBkh:Yd=#l(BD\.7>;TZlVed';c&/I1ce$.$UK4&lS4^;(9jjc*?YU+;l8`8\:Ja[8#o8F;fN?
+S9P[umJ*EdG3\IA.HD#g\'-#_]PF:W&'1#sEH#uf6"ndp1E7i6gkOQ#GWum3RGlWSP*P.]n>&/[F/!`O
+,c/:;pa7;0ZS7m2U^RBkeT';AbI5Wl*_FAA,c(r<PiG'lPRkGek?e@V[/$LTm[m:;$%*@`KZMSh;Ec4k
+#D(ftOAj(8#G"'NPgSe;7@6&p[E!'<d0IG`Q>QuA]e6salZQLAmI)\`dJ"J\]me#p?G2EJlS.3nN8;\o
+B]JXr\$MUe?W1su"]\X;PJI+9IG1AHJF9ufUD>o7[mRirrm6%;fB.k=Z99pJ//s4iUlOW/g7i"5`/@pf
+SMpKJ=;NGiU"<W*CBa/jgj8-KceibOh3oQf%stBAPsu.gHi*`+[SopB&[924T$i'mTN@+Z4.Ts/P;;NN
+-l,#%bBH)8a)B@AEg%mee&oD[Rl<=Cr6RG)6*2_V]^mMCR_+a&0r*1t%O\iddCf@;F/i9nKEVF`)^]qm
+<Z>QTqiJUcU*(mcA:PoM:b:-kMVL`X+FV>)NH7@,+,U.fS2E>2A[R+/m[<PNUnEGqXCqVU5^,p"I?*)$
+8N\hY0T=-SG2ocZk`.s_41iH>>'+Hs+E,f+OT;&CcLPEa3%ID%mV$>0TY@-1M/ajgcZ;V[*[aoG0GYMR
+$GL:h#'h]3e[Aq/n3fi;+LKC?Jalo,(TCVkA");Lk`PA,mo;^tC%ikl%h9-NjZF;0R)'JCmgD"`2)OM:
+H%g8A/lSTWQ57';80:F"FVVK'#Dj,gVZUgYi*pDeJog"B<;m0).L/a+iA:fcEhs>)e[q[63_:c+ds"QK
+6`Q@aV#_i@\-_7N914paF9O#WcO)d[W=W:316P_jJu0Ta4o;'$KTs4)h8k8hMZ3Z5_(!=%1`]Im!EH8\
+dQGrAW&h;r&Z"hZJs;H_81>C[Bcr*mlmb<gNC$i"G:?^[da4RIKcdW[Z_PW$V/plBFpP&pD$"]2L4*Zp
+F!Q"+/HBMk5tOI1nd,s@I$?cp*Xm:m["=1"%j_T9_+$;KSHBd8IRpA2G`LW2-gOLpX.eT6BO.tUR=mLK
+H*=8,qYpOt+.Zf39pXQuD(P\e^Fd[!SSRi*T5/8@'qR_!mXO(uYeI1n^M8+>6*ct!*te^*.oOREgN)Kh
+AbFa_n_E'k_@`0bq(K`EF@3N>-o0ABMr*n,\F0OfBHK(_Z+-l^S-Q01%XSDl!?*cT'6L-uR5[7E@6>Q<
+=.na7X*$Q$c-C/Im7DB3b)2TVoGYuTm1u&A!PO7.Hkk4Bf="dI,CgM$).S?37e>Pu>?`W5ctD?r3"6kj
+qmO!G<CVLd]R88"QFYH<*=$.]Vq[q]C'-q%G>(=G!,3>m8k`qC@UTgKl"Q0)-#:u8T5N5q#DH`R(]\aA
+1dc+USe[Ot&2]HEk+aFP=)2&2Q\!bA7Z[hVPMIpCA8"6XWE""F":[==/2iO?2KpuJJ5LAkn[JR3P[do=
+j0Zjn`<GnE]LiJ>HRTr"=mXa^E3.g^)dOR0`n'OFC2dM/YV^^%<&l8Z@mt+U%N>%@ltdQ2'B2k3.DO<g
+[ips.ES>kWWPu@\YkIdOP2e:afL(Ct7%XY4ik'-*?oshFl/8p/M!JrOk>`ZfEh[[9;:qco<;*?^Y8VU\
+amr+eVaX$br;;`g'9O7[MHb8.SKJT_86mt17,]DUTe`-^9Up;u+i)e:&gOuRdJ:G!Pp*;f>>V_21>NQP
+n3l=;IS%?B$!OH]DORISLMc08WG1-`_'X^Q+.?62=u6KTVi<(C82b_RE"i.;*oSD!fBE"-!WnT3#)HHK
+Nr@Isj#j0F*m);bi>Y\R`Xd1f&Z?#/']9+N9&>P&4@1.C=:Brsis>#6'M&h5LKQo6bteHX^.4\E0<QNB
+FE`<_NdGs^i!SZK+E?mRT3<(Jkgt>KN&hOTMOl2gh.o':D.]W_a):9gn5c]sbj$e\SW>%gR?@51V25ok
+k"HOof#Nm_Bh#\NpGMC89cI>b5iF]fDs5B'C%_BEr"o2M1>C!Ie:-*G:\Ul3Rb_SR:>g3SMihLbl+#5n
++L49t]`/!+.-!%@`UsN2=ST#4+ED,WU[_rWG/:D;NS`(YXc7dC0=PWgK*S\0ZqHo^O:@f@>K<1HB#ZEV
+J34H<:Ll@;!MYu$h(Ca<'d1k0(u6G$8f$(u$;"HD6k!UcA<.q"DIG`NJbd8eXmM9nF@Qt=,h`Zm2_[NE
+,Eo')D7)@f?mKpc;i9EnCZ;+$2,=ggDZ/Olj@[g.+k-rpNa`[QmH.2_P-*q<k7E(iZ6LB'0OVp+KF18t
+SVG.s(-3)5mVn?W'P6\pESt73e(bc]Efts\SHQi(PW'2jjE:himNre"k+_"m)E2C*KNBljT"tDY8!-;b
+43?$j;5T%5[CM5>r/Tum[#i!@5qWfjC#dA"0H0]F3kqCZ\VJB[*#:NEcJ'La4Z0s<3Q>2$!,Qln_N\rd
+jpS92LK<#e#S7Rl9`>;SO;JhlU<dNK,*$4s(7AGj"JIk);FM_"&lR)>FHTP<81'#K-!HreSMl<Sgd*`j
+Rn8emJ:`r!(N-tjQoc#":)'LU$/m.`rr>&-4cY(FGt87kpIRenjeO8e:Pruj>TOMK>Y:5Q@+Z^?37SM=
+<'kO\9bF+>U]aN(d4%b:PPfMo/$nID#+*I*Jg@'E*T2Ar%1q_#;H!"bFXhjhK7,,6Z+t`s:W6KuW0+S*
+n-ja9P+O0U/T7M2"G[L)h>YBdp9<n**R)pfA/"kU?D1]LbN`Js/9(DY.g(7Y>hK73mti5\I#-1>$jj3A
+WI%ohU;jW"J4/l@`RH^KZk=l#*S]Y/FeY#*B_Ol9r^[^u:`/,5*!jtgFMK_FLi'cRI_#`O/bl"ELBnef
+KifoYUlm*W4I'MnidPVtg;Ys?$X-_>UHt+75e?hCA$Q@LCQGhDj3-AYFJ$s4%d4#WSbOhY+f3r%2B(BO
+*bf?=1+/c:Dp-6Do(S^46rjM`Hn"+S@!-%_aV)UV$eYZJIGHZ`F9`?Z7t?bJe>YClp)D<Hmn*Em1e@Gd
+O1@K4"AoR?Na\lQg6.K*dqs>JWZ+'Q1ZYsK/uI5!NlJdnNHt:OF#TbL_%f7r8-Vl0<crYT1qm/Z-uf+H
+&cn%)LBJ.1<QC>;@t%3il?:?\kOD5],KpW)a6A"V/@i.M]6M\KYQ=QM(@:H-)34q@UJ.>O/ZSb#)JFCk
+CD!L"iY8!5l88&<el@m\"S;-LS%@W0V`_6k!(pm)+;:rC.HKT#e#V7K^\WYLG@/5t+;-pd9Q5f=4VVK4
+k+*_/4hH@T6bfpSHRue?m;<M0DKc=^X4>akl2b[Q[FRIh`[Ph"B/BYFkdiieec6s$r[VeA0r(u"J?_-M
+N>K)q/T@7ECJi^O/n`!9[V][9:51XT@;4;>r"\-S,/rg7EO!;m@TLkFlnhLr?=R!bZmmXJO",TMb>q1[
+OB4jr;FmOiE0<LJ8IC.8P"@8GT:1j6IS"8,0l#Z-f:EWc'9,D)U87p<I$D0(o@ZME5"\PuNp.uZH`%j\
+dWI;&SZ*oSFjiacT*2M)+@4rfRp>/HM;u0Xi=M$MK]g0,6@5MoFbk>_:9O+5'#15sboZlb,*J@;6HH^)
+op_O]XONko.FV:Vos*t(6GI5kg-/E#k*5EqL?E]k77V,EH^rMJoMJ88O2lMLbm#3JX7S:h3j!6;1^=b0
+jID]UB_OC&%tI"oo\\`r5kpX@`\2SH"7!C88WP]UCgjq^"Hn/]j1EjL`+VM+%g%[S15=)dcX<'GR=*L$
+jhF)cFD;@q*,#?&0sfDZj.SRo_%[+cHr"l&/Vo8uf55u1h&PZ/G$hHX`5%Agrq1$=B=ApJ)KmGCIT&h"
+$kqB[!OJsu%9g;j:;J,eJZbd9#refgUUJp[WSm^aLI'u.ZdDoF2Gq3NmsIJ1UI4WU*CSW<V/*YmI>#,C
+_h1_Ac.ZGJ7:HjcdArll>^Fl+cED$;*6UKKNfDoD_W!S4d2Itd/TD8:5PH1oI$$UhiSSQLb8F9;E%GsF
+9t5)r>J!`s&]1`:e%H,^BdD79g>T3`ql,bk]brhXLF5REWu]p0%LYcAcQG&kRiX[C'$QXu3W@JI/O#G^
+\EquURYjI,g!"QHm?6'&Fk?%YaiQ-9JEW))ihq.U)LN&[--kD;PC:_n24(Na"EsC$1$Z'J;TG_;Ff._p
+NnqjO?V%Tfl'OWKhMIMGPW+$=8_jhgID!BW-&pG*^=L\,0Bk$4ASr=O54(W0[B1>glGNgUd=X9[nGtC^
+5O8Tc]klE]aFJhk6tJRE30qUr4F8:5fp.D6V^[qj>gblKi`\g?M]"*2,-9hYq^U3]*<-!A32R1^,9@^3
+!%Brjm&'K,-*7b,`;CD2*(_K*a1&lsFNeanETO'>nQOFPQbLJKkr=F,kMPc&/6QX.-UXb3?^#!@d@ppA
+n?oe/c_$(!4u6nh!sG#VE\M-YP`ZkAA8JP6HrKic.$4H/P&TXG67?,!;;C%N]gr]Z+XJOi^aUU_+XJag
+P"9fI+l+FJ-\R6],d+9kViM!7a$d_754n$u"=>]sJ9C>651r,*Oq@$li04iO&dhlZV\#G-cRF_#:NVC9
+\pVn'o;q_bi?90TM#RHa$0\l^\5#&;dR]E%JK,0A>,dZR2#1qC5@dZbSkLF8Z=lH*Ojtab99_?[p\[l<
+*oo4okP3?$-$)582qGH.7CYFG(4l4^R.4:.>M*6/hHG&;RSa/`ViU(D)RBOXm<9U4XZE_g!kSt$HfrVS
+9NN"jej4pLI+Lk`;[+YQfp4U\'68`EUS5fQoji4l"[GrN^Na^;&NWRmQ!5Qqg_rc6$'%2@?'=$iCIbep
+5X:KKP#<Yri]aYq>I?Em-W/]'`rXKR8XTJaPsfJAh-IuCY+EEqN9o1Y2Qj$uJWKjVR?^4B#':M4XqU(k
+qgd+'.^>L2Nud9!V?9I\NHX6fgmFZJ\iNElB<">BB5)\rT+)g8,to47c%gLDG1P6fPG=5@aDXf,RFZL1
+WblAB!5Z#r!62F\6+Ug:23YT3meT0i9%M1oLRjDN`:=-]FnGAtX(Hkg!:rBfnb6CNU,E+qWK?X[=Or*6
+&6(@j%Y<:T+GNp&qqN[NQuFJ`6!aY>hbi`$n.(>@9uqGr.;[QA/gErZ`EJUoK02c.:p=,1?TlG=KFJ!i
+K#=ZEh,9+[Y)c'K>n!ooa<OT1o[-LNl$7OlmC0*%g=]%-FdA3R&Qmc<Y]6<DTZ5ft=?pqWML2VnGkrP8
+j/a\!D@oTWo$EW&f^`]uN/tD)e<@S<RUUC6Pu"5Sn0#j):Af@Ze2=Ljfse`87]^XbbLh!H,f4K0.'ah#
+<G:T<g=dKVND)oL#>`BM:T=Q0T=n\*i-e)r_#d26,n)A@2$<rR$1ZVFdE[//0]6XWT_JZi!!IuQ]-Z,j
+JT+A[VpMBS7Sf'o1IdE>Pfmi<AB(iudM%;u.?;H/$=YOk;(?!6d1oPBcufnq*7![\Opu>]8>SlDQDojO
+nKZtYVX`I,P+5YBSYoW[8-qBm^'EX2/I[ShVZX5.(d9CEkS!?a<YVSP]LQq:">g8;k%-/%9%:LgSk8`)
+&k[G0H_e/$"GJ#F_*pIY.-emAq'7pmR+$`X,=7Pn"R6=k,N+Y/Hie<U"qSg+;^tR,8e'2A8+.nV+J479
+qK@?jU")eiT@^"Z*@E.m*p0]:I$TMY$5U,#VTQ^N9dAa*WUc-<2E76q46Etl5=jMqCUC;P*arVjenVqA
+gca2N*"S"1*h"0^<Jq!u_DsXmh^:!e*r;Tf3iedk*Q+$$.09O5F[`NPaEa3?T@<LZW/7tDA%LU7!$)fs
+c@Jh79EGt*S)MD0,fgqT1i340<]2eMSJ<:l2:NhYpk.PJLomE)%@q]YfVlA="ODoQ[Cs"&5ij-.`"=:@
+?Z["A1g'(65Qe7YV4!Frf<V_8,@9TP4+JG>=ku^4:]j1i+W\fUC3=3%>$U"-e%n42A<A6n>jnrVa+M7U
+a(Blo/H[RM!;^XCTl'G'"ABPANG0;oTm"l?*N2]/Uo%o8+lI]CA5_=oFs"[mK&]t*!2NgC'+2ZhXX(oX
+.NeqImK\?-X77s5mtR-g8:g:YPX=%a*=e]C-16:%ciB[u>mhJf^u#<Zokq:[[`Hkbg>@NQqc:;62@aV7
+F$=B^8Hb/c<M.O6&HOc,7ZPoeBG0U,-OGui<4[%<\jM\n\k+0)QfU8eVb%@FY^ErS#sSuo?Xm>"\)O4<
+=XR#n`C?_FS/tT0gi/l\h"OB4f=*2Ehk)0Ib#@_"9=,dr`?GWW_Hi>O!To8RGr#d"*tINJS9^io%8)*G
+lC%rgLR*`oR2oa4_)r8=OXZcqpJU1=PeB2E!R(HtVc3p!<*LF4M@*=In_HYKTV%AsI.QZ82:^9[%/fT9
+n*;#oYW!I=et$*BWh":YZ`E2+R1CNL!2G+7kRc1ji"'Ao7$r^X>9mW5`MJ=:B;^l%6-qY)>8q_D!O)/;
+lX5_?-WEFr&>:;=-kJiA=:)E&]oVeZl4l4t4=bOd[M*5X=h_oYWK.cPDfHB0F;nGthUQB^V?HTe2+\`G
+YoBUQ_--IcH,cklD[c_)NcgB2mm2b]9.*j9\:@sR_p.')d`W&RJI>B1r@t^>0(W6AD&51E(pJ5qb+0;=
+`fShT`eSF3%T0L:fF(s5+EE$=XeN9c`\lgHLK!uCS30KB#NP5`dC=pur"I0>UFLB*:*F0;H\bWV/?OpT
+&6a<#'i-$4XD5r9BJ%\"$$7=NU&/+uH&Zt+;W-(*NfNNBSui"e)AGQLVc\tq;nt"s6cIch9!n=^^!q)Y
+!)b<eG7oSlPMJguR6:8;^*\)d;2A3FHJX>2SLT3M$bl:`ZEJg]Y6uA'o4r:%!e1qm.g'E.7c\sK$$[eg
+an/,t<ukHXW8"B,U_4#4EUc_m,-Hk%P"?pbW$b5+NsREG8Kkrq8Hm'D"@5T1;kcM\0_8'B`Y<)jm/I's
+jO80DD3-i50rG4TK9!:>"I+hq*"YD6Bkculn4tVY8GK-@lZ:,g`,nX:,k)+mgP$;HNBYh$.$m*.QGb(a
+8i_pR!2/'b80n+trYgHl8j/q;jW[9LdQcBI]!H'@Qr.t@Np4GL%hm)W8RKsELiMi-cW*$hGUaZGmeENW
+AHT5'G_sn#b!SU]e[hr^>H5_"B+AnA%d8IYEIP1bbT!nED0PAo^RX&Wo&XIpFR2V>?L2Y0m/WK?1\+Qd
+gL#agFIOhc='.M$5FqT]ZR^%[p>f7Z)Xh>Ao9qMkIO/,.![tLS+7heScFU%u%SEXR8>W*U7\O"emXhE3
+C0c37d2s^UJ4HP3q$e'Ui49F&>-E!N!7H=B-:sFT>>0n$>],\[=0*G?^]dttO>VWb4VV&,jQRa42?Mp3
+3b]ZM+'$iJcC`7HKQ#Q]pfQ\Ehmr4'N,OT$@pt78,@JgP4fpc\)UCOG\JWl%YIY$W?od@0RF)NmlNT#H
+8X>pn'@27OIo9lJ3N92<GIbY:FrD`aX:iTFV_9@!CQ"jI=re/MN;ik\p_f-&Qq34=L]#IJh2ZWbR!^`H
+0Ht*k4pZ7>j(#C8D\$p-31VoUjGK\EA!oBNc*@$))Y\/g]@/.AP92&VT7U>2"p33tF$P;sM,iGfmI8_[
+"*B34*:/DtWMRYb,>Le_Y*7iXTh?_D'6NFFT1d@QDW1\aiXs@b&4ud7LK8>j>XnMi`.9ZD,uH6F1!ZRb
+KIC@K1#rudm^(Ud,j7?Q<*7%Z_]!sl+g(O15Di5>OW:Em%\Hh&djNmQoa(Ps0\mV+5bA:a!!0L?2aBL!
+3aMacfDTqf<JMikX7OJQ2$#XM"Zq0p.4Wu@D#gR/;#^M$I$E&ZW?d[\Q-jW68L[5Gl'%qM,tYsMP\Q@$
+8Cu&*_*=:GQikRsfdZ9_;W13F;t*MZAF8R@MO:h18P>UD^VM7:o29N-8d\f_pnunH7_6HBo[h&-Z7W0K
+2*M>[&K\t)jHnep-Nu5_S&g\Wk(qj\Eg^nZ#_]V`J``,_28d?H\.d[O9!WR4PfBb-1bq0).dG9n9INZ=
+-\,*1aD`aC,soeTWNWVE(tQfK4Dc(7d8]:Om\k)EgKf9pMi9BcR-oDr-E9`(HYdf;c#><(\_dMjA,:pk
+SP$uV4#,FdOnmllV+kNO'@6EPZ&0;o,?d(`XgSI<FK6FrRlUIeSQlhNb^j+pWueK1F>q'H;uZhsQV_tJ
+/udP]5BDe(3fh@eZSS]-Z%9bBA@\FI=%&[s9dp)WLm).ZE:diV_:.>De7$_)iY[&eE!k-s/N]HVQrN1Z
+X,BLZ%2*=pnQ)Z3&60l]F?>1t(s@\dN^9$J^`T(.*^2(147n`>Wj->`9PN;tNc8fX;3[VSA[FV'g*]<j
+ltk>*gFnOSlO(FPBq9Y#P"68W6qDu0O+&B=VN(K$oE.Lj:Vga/JF-,gpS#0R`f6?JVhs-d_rT9X<q76o
+n54/<VB@mo\Q>fRY(qA?O?$,t9J&:^LNcKhdb6m[g/#"MQAA5UI9(hSAGm?.e[Ii3!.HCKX)l,3_B@:^
+OM*6TMps=r4%#(n*:iijCWViYcLlsloOOQ9^*RpipAl;"S)43"Br7mmP._^-N'um\FL77XRb@P@:@*o0
+-ecRWrr>9mbA+pI1'#p3"SZ2Gebid\FOiF-Fn9%6#CR3YHbO4H`iNG#l4r.'ND,#p'1r#jOAe0q(J`k`
+R6+([8IRi#3DDf.]Uoo]P*mX',a&m*eDifA:sSJoPqYcC&<`C1+HfY0.<L_!,a@:Ij!f/8fcYe$PT:HQ
+>tLY[7&O\G!@99"%XXHo#uPB_q%BJ_8KiRu@g+f5k<b>5$.<K[\3qKgH\b9b9u5pQ5s;pfW$sf=C,lV3
+ZF50?!TL05S.:fCGOgcN<Md-?&MJY^PJC<!I`%L<`1f0"O&Flrp]OYZb<MM@a=;D@([W+AffVW4&eJ&A
+)TK1X"u'n1Gq2-#\n_W^B*<V0g;BVVP*q9o?@V9))iIj`h*BBf!5W`Aep$`bjle_7T5)<N+&1$%hhYM[
+U%ICaD$@,F`&N-+VG4IRe\XFQ'F6:^<g,dfK>]>+K0uM_XU="Na==in4CWkV4g(d]:8$keXBS/E-HN8S
+,fFZ&;#Q[[Gk"FGNFH\8[+Cq5Rr)k`M!h6BE%r\:"2pSe71"l!NJ"2QC'l)'+qHd:n5]EQ3ZjMB:ZS)S
+'UD.o%s`c$be/*(1m1H#:j[Dn]<L?E1Dk@X_Jl>NHEk'T4$_U`QpPS&0)%;<5Fi/+Pd#!:%[9%'G1l!b
++GA,*YHu^ZE'E.jOUPn+*=@>P`rHU)paNlE*.3l=$A65iC8YX>i+`L-(Jcf\pON;N1*Ch8<`(&"m+poN
+0$hdZ"5:bcpK@BpD^BSr!88>0#68pL*?-$o1i=Wm[N+fNVdOuHW8,u1h>usd:Dh\R-^`+*4[)`<D'V10
+A,%fTAN;jn&Req-UtoTN88-F<9'D/=+*o:V2%&A^Jt@fBE0kZu8L\Z$8p^\m>,8#e,aW&)Uk2m8*$g:N
+'?:F",r>bqUJgs`-YLm8+\A:s,c(uVi@+hW8U#Bt+Hi&t*E,Lc4=;C2(DF3/\OMgn.Ee/?e'1j@CI="o
+)paRU')QL-@JOp=&J6J>[/@Mh@@s?>Opg`hnd3r2!Z1o&$-5o$4.qm$-^21%T0Sr0pnrq$>8RM-o0IlT
+q2(AE*akYSLKRA@YQ@Rk3[7ZQ<$m5I`Gbl,AJ</:ZK=?V@![*Wb\6qqK4U1ug26`=;KW>]:rO;3m]G=?
+q"?/C()_'eL1'Xud*3hZp6"JP\r;/!6hHpRNGeSd,TlJR@mG.,'iOHhNh`UU6"\Pf.[00[Mdc]gQirQX
+nrt,OgiXb8'S4eN_?LfW@.9'/J4D:['4*t[&J04_6[9^Yd_JE=g)"^.Q<5-Z#G+t#:9c4+^LnkuMJ8'Q
+'A$;Zfs1)l40+bC;5W_C(.0jWGV\6]"W"b*K*DVKWbI(E5o[Dd=&l*#D_bhI"!f]/*oE"cXa*!;8Q("9
+Ca$'\ZA/b?O>K&'YRNgP$+I\qO1Vt:XD[5+ItAE%P'0bVH/K-(FCIk?O9)<ggL(NF%_SnbObETQgq.[1
+^Hnd.+5E]HclMJ^0UXWR=QFj1\8K-i#QR4^QcW@MN"&FLb]?fEA+aKU#'nhh83F9MU<PNZl9[@B>.n$[
+Jk(^'<cMQu_8EK,W;rfH&Hh0HLeYJRjje!g-aKs^'qZ=F0rH9eE)k+unlb23,fd=1pnjEZTm%0Cc_;,M
+6&$66!Yk9$;W/nV-g["_$.MnLQ-tn[8IP5`3c,L.LaTc2.>K30$8jF=GEh.P%uQ0<&%I!b;PkH&MKoO>
+ZF2dJbX'cZ[jBTG[:nG35d\sdZIrC7_7BN]XQ',bZ??*%aYL()]_<n%.0NXe6U9"4*J0V!;u!8U&jYP@
+"f7FsY6i9)VQ"DgjkuXf>m)N!fRQJ&iKMQZ'f!'98&V4_>XWND7B*A,DGVpJp`(dq!RVD.l3Qc+.18V:
+IF27`'`lMf4OG&Ur"2FuX_sS],0=O(6,`Sp$j<G(89"F?:E&:M7lT[n&_U^"bm3#_!kR]$f//6nBomdZ
+RErl4\!HPgO0ki@_l.]</G;%KFW3&KLB71L4Dk9>njBFmm3B?,VVlnJ\q]lr&`'F'512hp_,_lL0NO*d
+PM$/_K=0Z#8S"J(Tr%#TjG:ttGmWA)5rH3M7\dd?(l0?Feml@>S+@OG3:t8"A$M2t1%#BtYo<T)/d=I:
+)Fn7,bb;VRdSHn,nkjPiZ.H:B^#Tk!IjuZ=Xc\XZ=_8Xa#0WgZl+0=n(tFCm]&sB@Nj1a5-VUAFjFZ@e
+3el\bm'lh"F-uOW"*#f<ERNP\eBRL>cBEBh_*ImR.5[ZZ8_o7K7\^%dj28GOe9NIR2T\iE5o_(J_?+2D
+U>`83.bKu=PO[`uM7euP7BoU)Ps\?[%`N-ZI<MtXL1cUQN2VXdXhiPTFRYZ*OXHe,7&7]!K:4Q!62&")
+Kl&Mq2dEjA8jO_e\<Ptd!1,,`QRO6fdSks#&p-cKi@TD4$8jGkAj^@o>u9q&%bf-iL$;1aj!U3iN)IXL
+m]aD&:C)NE!!%PF":4Nh8-0*"KV4RseF88E"Zht(!7H*!6EkPS.=cPl_I1u9;*odB5"]Ha,I_dsf`XWR
+\]rU-8P0GI:YqrfW?FIY&dh#g84cKJ:W5We-41o\VqR;qD(9D]0`k:X#XnoaKeP\_+DR_R"U0\bE2dsg
+6'jlGqEn;F#:$Og7ZrL:GCWL6`A1qkN.crEj;]5]QLI1l,JS>(XF_g[lU.a^3NkFD])H[HM_%9^paVGd
+&fo1V7S!gfk1M;bg@431eduFMnjEN!:d,QK&]<<'*;8nr)D@tEO"F8^&"9&rpj5eg$Qa)-]GU!7M[JU?
+aSDL]aUuCqlg'N95!`.pbMAi=3\5=QJ7t#EpnAG0Us=L*5Di0R*PB$bmZl9#h3#8%d7FN%pQ&q4aZ'Yb
+a"fBfaL4,e:T]B7["l;[Z+_HhQU=2jQ#1Erl[2`UcEeT@gUB]:al%=ejKE%S3VC(h"i7h_7l)(+Z-ZF;
+1.eh&31_AQV$H(UIBR]^]4llc*@4B$C&Ega@Q+`%lr'qQDS1ZN!t[KloK%pkbsZ<TRJ0D9rM6<0"A2'u
+V1@%60aHX#7!oMUSY>-pUoWFJn709o8aopb,U:=P38)NJn<<Ht^J2t\]A'5spb%!fHE>gqTSGAu&?TDP
+4cU"iVn5l>/1q-tRJA9Tf(!,Y*RPR:PU/t/iC,l)V+R(c&=k+,AEb9\Ei[rV*:mBZm]1IMlGL:R#o9,M
+>njOoE3'`FO,mfr)q@NJ=D6<Y'eLe>'7^(D"G9tH!)eIbM:Y$W8o5$0G)*:q1itNNieSk#':.@2Bc7KG
+5T56:pEnYQP-'t9SpZaGa(-PSNBrUO&GJ$-i0(''Z_EAI]0r'#G6?j%5k%35KX4EQ`IRQS:dSAVE0:s^
+$)09,3!YS]m%8Ha&5"+Inf^([d7BmO7Z"a1OBKc=Lf/br![&p?CqOGSk(4)#EfgYR'Gf6ael_<Dg_J&j
+N;RJJa)NjFP3X67i2X>4GkW601m.Dr#>mY^'R:k?1i79Ga0\Ar_HqYD`3efl!4iI`H!5B5B@[0ijkri#
+,#@]-lslLD*7>kdU8o[ZSO9<95!5GdqDE'uNuo*?`u'U9^1tooE0,TP9=Dcl6"Sh/I6GRm$/uO95TGe!
+Tg3"JYEBjs1E<;!/`7_/>1XAQXh11l)SsN@_#1FJSt4?bK8.TXG<C5TGjbS2!--A2/8g<#r/REk7'_>L
+?0D$aUNn#UEo';t4u#CZhKF*,*lp*?bI"JbdD>E?AN:L<1bc[acnn;gT*8f$F8%bIfaB/FfbQIEXgO&L
+F"2XSl2BYgAKY^.daht*:Mr64qlV[VCD+uhUNN)M8*S]>0-A^r'tb12f/nm]mD9sBf!I06L48?.O1U68
+[C4NDOc9g"0<N:In,/%;-W$Y0:5_dVp!F%sbGKB)Yb=ihVT5.m@A;b2S$PC%:DtG3"jJ:hPA&c#Z?Eg&
+8n#AORpV%l>\&"KW%\^EOW^OO/HA2<5bnmE5&#sNM>0AB=?N-<.@TXaSi';UOmuGWCc-rMa:A=/!f.Vm
+F_]*J:(J8Mr?eWrmq%IgA%)Qr@(#$=Lcg&"MJY477]\_+*29qZDFmS7C*DsSXNO5'FciW]0lffV6e*4b
+>J#QQnGPQanMfMe/[J>:J`a?Y?pL91I#rR)d*V7g0FUQ8FTaToD]q^t5m4>!Qp&'W-Gq&t2j**]0%m:5
+OkiWh/(tR9BjNsN1di<T:nGaf7111Oi/Ypi.7Um^P(?QB$&_+#<5'fV_'Gar$ZuV7D3(KKAi3G,",E79
+Pg=;mFT2=u?Yc.2/TuB8d0udU&qUIVl%fn@)*nEF]M=/;6/i,\-\=jMm%>VS8kNYE@15bqT#i=I"YZ<P
+2?!o`Znpp*cTF'2/GB@!??GN=-co=.7ih%T>h;nl^S/)!hA]`C46===&kR)uH'Jd%oiT4h\W3fOb1tDk
+XqSTi,J#b,=0BRW[\DTQo6CH+-4mJOgR/Oe)W<ITp\=rtBZeN#Q"3([MO5S0=6X5;c3MGp]e9]=1&"O\
+HT'-eHs:4FTu%:nE1)QmkZW0%a,6DPhCTuD6.KV0>505d"<@bPNl:37+/6?V*M6JM^2@Wo<O/"j_7<RO
+Vk9Z%4.&S/NYGFRoK5?JG6^<\>ag]@E?YnQ)Xr;fS&]ClnZI]BeEW[jfJ^@0mI<I6SUJbVYniGI^I_6-
+S#8c:4=3>X<p]clU%R@?NtCX&n*GX0dJR%'JN=;?.RB^]0p'tn!7Bm/1%pFlk,eYZ-<]k6;XVI]:Qp/?
+U.k)>WAUBB7k*A:T<ejS&SAf7U?]Q)#JQ:YGtL=a9VlF"\Z9d=*l.LCC#e3M`]:+0/hbtsNi-43M#pVI
+,I0S6A#G+,-FtKJ4qa5!5sqAud\(h77$<uc&k^/Vnu3ZD:GL"+,ntK#p`9%X<3e'Lf(0)pmM2Yu*s(E\
+U8q*<f4=gr7/T:u`C2+8^Hg4i.`3>UD]T7n52*o%$pl*`VqaB)OV_c@r]X!?G33NM/bgnYDf(IDDfpk3
+"F!;4+k4,FIGQRG;&D%imHAg%Md)u#j54.dgqtE.4:sE,r"B_708J1-:B(<7SSaJS8F_8jLT?sTjk<Ln
+24u^[`rVl/2-=s1?D'=!T?TlAG3BKP"gAr_3%6#/_%'CXOJ)Pp;IW1'!ch(oD.OnK8O5V)SM62gQF"L?
+"I!Vm&d]D9MJ+FhWr=//?meJVVlE<d;27,Ur6[lr8-e4E#iPn3nf?)qJm7sq]^Z<a`/[/VlC`53U`cAT
+l8tp$q4gi5782M-4fj62O(:DX-?i7-m:[RTa\j<\V-=/pU^<*C.PV0h\O_+rlD;Q,SdK*hc6Ik2HkI^#
+VBF3lJ>HgN]!G[o=kn0ok3A.:k3-pk/#=%4.h?ED$X?D=q5\dnqm'4.Ru60s]$LJWVa9@Y/#'>X?!1kC
+*&a'P*u%cM5'IVA5"t#-VFgiN/tnmZ0du(J1U0XJ6&iNj5;2P*@qS`?EF61pn#DK05q1=#9+iJ1']Zk$
+Ue.*i,K1o_d$5mt'YG&.[O7J73TW2W5m:_l$qQ't_b!LqQtnlW2E*rjM:BCNUPIr$U3a#CBnZ?/MJ56%
+6";[u&,PKiH:R3Q-^+$"!)aEaH&i(8%%!S&r]l:q9ZYr:i@9#h9_+rl3tAsQcKaC$;`^F>Ju6t(po=!K
+COkAH+-e`f,SjA8AN"I8pl?/l?<\tScYq6A9:Xn(XE`?Mm=*JV:8AFkOjPl$'u6N^BakSs,ot4da1&C,
+A)KT$Fp^r-iT-d8@5a#TQVu7Y%8VgLT6HWD$r'q!p'r2iadp,.9.8/>nk]I@!;W?!Hr/XoV$(p4WCf9N
+Bp?"S,sVLJGnN5d,aaE\e@G@%r)/mnRuJfVS4ZCWAP"]kQDkS$+<QJM%-UTQ.23Jj4B!"bUJcFd4=(Rf
+TaR=ZX$2l%-$fl>#9M"In484o\C@G);ee9eI(j;uJ5f+f,9oUa:-jPr`?5kIFO`,Q=*2f%7-Sne989"T
+_!"U7pCSZiVY:\(n\k4%eCM(:Nu_+[.8C#*1ddkj_Ci/"6.l^a$'_OqDIGV[!=<K7-Thl:.L^DiSJ-3>
+;GtGtUngr/RKPqb*E!,/RX'LO%4#tG6P>c,&tNP#$%?iSQq*m^W0el$<:>Z<WCS/:!aY?CQ!T"MT'!nk
+'K?-2YaI]i6@'oe*JQ[T<9XEUe*Jbb.j]`\1UX@qgba^o[g+U$,Tte/A:pn0@S8s8*L%2H45ckSqk=1o
+*Y_0>%g:7Bb"4XJ2R?QG!cd35P:\2VX,%nOjRWZD1.dOaYCk*6<]g(,29?&!.HmFI0q^!3'LO\;'0D0d
+6M3nO6n&ul"U5Sa_+m[s;AReCK?f<AV(!^.3)WHo3/!Nj;^ZS_'2RVNP`ek71eA*H;UI3j,UtnXIA!A=
+r'Gfu8c_bSM99"G8Li+J-fgbW'MG>lP0SR0U3r.<^eQ%!/Zu*!Pp7<68kNN.QAp6JQ",=EN<a#m__FBg
+5:X$G&bGo-8"p?He0mFo'T7h-'OD&+TG4U:bkcD:7oR9hrer%#(`ARG:YJ`<0Tq_N&pB(&dM-9o6n#3)
+M'n>+:*c(B+k8l09e]M2&p6^=R;N/+QYN$=Qj:GQ(*o&8B#+ci&Mp>:!O^W=UL+^#=%:BZ[O:"6]tpi#
++u.LH-<5(+r.<d/4!F`q<4hd141^G6[bBliFY1Bi54=YeL<P0mgbnl%h&T^^,rE`)"G,%H/]os8RD>CV
+'-.B(LuCl9#7:tho0RKK[KICOJ)La@8bu0L$E&PIYBU:J:rl]edcU_g,,Ll9?)J"QO?r9NN4XG)gaN?&
+]TeWt[Up+r#XH:iB111Y5fiFgT<_ridSbl>-dX4@&`F%T'U5eQ6bK3.P`W?o,q7bBj@hl7,c)j9Hm(OK
+P,VWLi^.8TGtqos0?8@&dM#"q0Q\`iOHP!T(7EW>J2!QO16Rrkq'Qg^"HOZ.Pc#6/</QNqOq?7nmg/g(
+TV,H(4p].QiPHsR.V*p)GD^*cU..[>78cCu3$bmg_!k)-K<1kF)"rbZ";LG?UG>_C<SoshHRTt)WKIT=
+8L,X)PKsQU.@i5ZC6>h/,cI;W.Sb/Y"=TTSiXnO$.PBc++[.=m7Z`AL^dpN\<GC"&aS>sn3]W8?=/i%(
+[!m#UUD4L93-"^B;Vb[YjShOsrgXJSeD0g&J4ujhZ7[Hn'B2sIiXKF6#=,1e6&aDoh%(b+NPM(nO-)^1
+G10a.H[-u%Jf>`gFRrBXKZ2300VW*]"\B8\gTeH&GD>BAb`@@]njVpte_T8Ni<^cR;stO<\36:EURF4<
+VD8\?]HJPXT6G1U'?>\QLgC:K#nOb2_)-G@"%`X0q^MLp^f!a"^M&tQGR?uq55q=\A`--&<;YrfQ$<p5
++nt@O7-hW$8M@gn+-.qfdRd6L$'-@-Y5q3@55sD:4Ke`V+K++RnPD$pGTo\354)teHkE)BVD\A7i+XH9
+qqdil.St<P=+MWI6gn3SdWJk'P!pPgY3J4m=+d<3]"[`7Fn>D^#Y?/5qnA4R:]uk,616>@dS$TmmUqLj
+p"cY<"Hb/e\<uWX-XA]<+He*`#MJPi+SbM[\FCJ^_XZ]NKcn+O=V,**NDA&mS^1UlP"L/5gP@tK5dZY@
+_:1t$Gf!#sX6k&>lju$D,^=(:3@*(bi;WfWfa7~>
+%%EndBinary
+grestore
+np
+grestore
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%Trailer
+Adobe_AGM_Utils begin
+[/EMC pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
+Adobe_AGM_Core/dt get exec
+%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentCustomColors:
+%%CMYKCustomColor:
+%%RGBCustomColor:
+%%EOF
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon_full.eps b/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon_full.eps
new file mode 100644
index 00000000..54282b1d
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/AdobeDon_full.eps
@@ -0,0 +1,10414 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%ADO_DSC_Encoding: Windows Roman
+%%Title: AdobeDon.pdf
+%%Creator: Adobe Acrobat 8.0
+%%For: Donald Story
+%%CreationDate: 08/08/2007, 4:14:44 PM
+%%BoundingBox: 0 0 286 420
+%%HiResBoundingBox: 0 0 285.6001 419.0401
+%%CropBox: 0 0 285.6001 419.0401
+%%LanguageLevel: 2
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentNeededFeatures: (atend)
+%%DocumentSuppliedFeatures: (atend)
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%DocumentProcessColors:
+%%DocumentCustomColors: (atend)
+%%EndComments
+%%BeginDefaults
+%%ViewingOrientation: 1 0 0 1
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset Adobe_AGM_Utils 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{currentpacking true setpacking}if
+userdict/Adobe_AGM_Utils 75 dict dup begin put
+/bdf
+{bind def}bind def
+/nd{null def}bdf
+/xdf
+{exch def}bdf
+/ldf
+{load def}bdf
+/ddf
+{put}bdf
+/xddf
+{3 -1 roll put}bdf
+/xpt
+{exch put}bdf
+/ndf
+{
+ exch dup where{
+ pop pop pop
+ }{
+ xdf
+ }ifelse
+}def
+/cdndf
+{
+ exch dup currentdict exch known{
+ pop pop
+ }{
+ exch def
+ }ifelse
+}def
+/gx
+{get exec}bdf
+/ps_level
+ /languagelevel where{
+ pop systemdict/languagelevel gx
+ }{
+ 1
+ }ifelse
+def
+/level2
+ ps_level 2 ge
+def
+/level3
+ ps_level 3 ge
+def
+/ps_version
+ {version cvr}stopped{-1}if
+def
+/set_gvm
+{currentglobal exch setglobal}bdf
+/reset_gvm
+{setglobal}bdf
+/makereadonlyarray
+{
+ /packedarray where{pop packedarray
+ }{
+ array astore readonly}ifelse
+}bdf
+/map_reserved_ink_name
+{
+ dup type/stringtype eq{
+ dup/Red eq{
+ pop(_Red_)
+ }{
+ dup/Green eq{
+ pop(_Green_)
+ }{
+ dup/Blue eq{
+ pop(_Blue_)
+ }{
+ dup()cvn eq{
+ pop(Process)
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+}bdf
+/AGMUTIL_GSTATE 22 dict def
+/get_gstate
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_clr_spc currentcolorspace def
+ /AGMUTIL_GSTATE_clr_indx 0 def
+ /AGMUTIL_GSTATE_clr_comps 12 array def
+ mark currentcolor counttomark
+ {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop
+ /AGMUTIL_GSTATE_fnt rootfont def
+ /AGMUTIL_GSTATE_lw currentlinewidth def
+ /AGMUTIL_GSTATE_lc currentlinecap def
+ /AGMUTIL_GSTATE_lj currentlinejoin def
+ /AGMUTIL_GSTATE_ml currentmiterlimit def
+ currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf
+ /AGMUTIL_GSTATE_sa currentstrokeadjust def
+ /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def
+ /AGMUTIL_GSTATE_op currentoverprint def
+ /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def
+ /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def
+ currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf
+ cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf
+ /AGMUTIL_GSTATE_ht currenthalftone def
+ /AGMUTIL_GSTATE_flt currentflat def
+ end
+}def
+/set_gstate
+{
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_clr_spc setcolorspace
+ AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get
+ /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor
+ AGMUTIL_GSTATE_fnt setfont
+ AGMUTIL_GSTATE_lw setlinewidth
+ AGMUTIL_GSTATE_lc setlinecap
+ AGMUTIL_GSTATE_lj setlinejoin
+ AGMUTIL_GSTATE_ml setmiterlimit
+ AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash
+ AGMUTIL_GSTATE_sa setstrokeadjust
+ AGMUTIL_GSTATE_clr_rnd setcolorrendering
+ AGMUTIL_GSTATE_op setoverprint
+ AGMUTIL_GSTATE_bg cvx setblackgeneration
+ AGMUTIL_GSTATE_ucr cvx setundercolorremoval
+ AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx
+ AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer
+ AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or
+ {
+ currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne
+ {
+ mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark
+ }if
+ }{
+ AGMUTIL_GSTATE_ht sethalftone
+ }ifelse
+ AGMUTIL_GSTATE_flt setflat
+ end
+}def
+/get_gstate_and_matrix
+{
+ AGMUTIL_GSTATE begin
+ /AGMUTIL_GSTATE_ctm matrix currentmatrix def
+ end
+ get_gstate
+}def
+/set_gstate_and_matrix
+{
+ set_gstate
+ AGMUTIL_GSTATE begin
+ AGMUTIL_GSTATE_ctm setmatrix
+ end
+}def
+/AGMUTIL_str256 256 string def
+/AGMUTIL_src256 256 string def
+/AGMUTIL_dst64 64 string def
+/AGMUTIL_srcLen nd
+/AGMUTIL_ndx nd
+/AGMUTIL_cpd nd
+/capture_cpd{
+ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf
+}def
+/thold_halftone
+{
+ level3
+ {sethalftone currenthalftone}
+ {
+ dup/HalftoneType get 3 eq
+ {
+ sethalftone currenthalftone
+ }{
+ begin
+ Width Height mul{
+ Thresholds read{pop}if
+ }repeat
+ end
+ currenthalftone
+ }ifelse
+ }ifelse
+}def
+/rdcmntline
+{
+ currentfile AGMUTIL_str256 readline pop
+ (%)anchorsearch{pop}if
+}bdf
+/filter_cmyk
+{
+ dup type/filetype ne{
+ exch()/SubFileDecode filter
+ }{
+ exch pop
+ }
+ ifelse
+ [
+ exch
+ {
+ AGMUTIL_src256 readstring pop
+ dup length/AGMUTIL_srcLen exch def
+ /AGMUTIL_ndx 0 def
+ AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{
+ 1 index exch get
+ AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put
+ /AGMUTIL_ndx AGMUTIL_ndx 1 add def
+ }for
+ pop
+ AGMUTIL_dst64 0 AGMUTIL_ndx getinterval
+ }
+ bind
+ /exec cvx
+ ]cvx
+}bdf
+/filter_indexed_devn
+{
+ cvi Names length mul names_index add Lookup exch get
+}bdf
+/filter_devn
+{
+ 4 dict begin
+ /srcStr xdf
+ /dstStr xdf
+ dup type/filetype ne{
+ 0()/SubFileDecode filter
+ }if
+ [
+ exch
+ [
+ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx
+ currentdict/srcStr get/readstring cvx/pop cvx
+ /dup cvx/length cvx 0/gt cvx[
+ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx
+ names_index Names length currentdict/srcStr get length 1 sub{
+ 1/index cvx/exch cvx/get cvx
+ currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx
+ Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx
+ }for
+ currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx
+ ]cvx/if cvx
+ /end cvx
+ ]cvx
+ bind
+ /exec cvx
+ ]cvx
+ end
+}bdf
+/AGMUTIL_imagefile nd
+/read_image_file
+{
+ AGMUTIL_imagefile 0 setfileposition
+ 10 dict begin
+ /imageDict xdf
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ /imbufIdx 0 def
+ /origDataSource imageDict/DataSource get def
+ /origMultipleDataSources imageDict/MultipleDataSources get def
+ /origDecode imageDict/Decode get def
+ /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def
+ imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ {
+ /imbufCnt imageDict/DataSource get length def
+ /imbufs imbufCnt array def
+ 0 1 imbufCnt 1 sub{
+ /imbufIdx xdf
+ imbufs imbufIdx imbufLen string put
+ imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put
+ }for
+ DeviceN_PS2{
+ imageDict begin
+ /DataSource[DataSource/devn_sep_datasource cvx]cvx def
+ /MultipleDataSources false def
+ /Decode[0 1]def
+ end
+ }if
+ }{
+ /imbuf imbufLen string def
+ Indexed_DeviceN level3 not and DeviceN_NoneName or{
+ /srcDataStrs[imageDict begin
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi string
+ }repeat
+ end]def
+ imageDict begin
+ /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def
+ /Decode[0 1]def
+ end
+ }{
+ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put
+ imageDict/Decode[0 1]put
+ }ifelse
+ }ifelse
+ imageDict exch
+ load exec
+ imageDict/DataSource origDataSource put
+ imageDict/MultipleDataSources origMultipleDataSources put
+ imageDict/Decode origDecode put
+ end
+}bdf
+/write_image_file
+{
+ begin
+ {(AGMUTIL_imagefile)(w+)file}stopped{
+ false
+ }{
+ Adobe_AGM_Utils/AGMUTIL_imagefile xddf
+ 2 dict begin
+ /imbufLen Width BitsPerComponent mul 7 add 8 idiv def
+ MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{
+ /imbuf imbufLen string def
+ }if
+ 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{
+ pop
+ MultipleDataSources{
+ 0 1 DataSource length 1 sub{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exch gx
+ }{
+ /filetype eq{
+ DataSource exch get imbuf readstring pop
+ }{
+ DataSource exch get
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }for
+ }{
+ DataSource type dup
+ /arraytype eq{
+ pop DataSource exec
+ }{
+ /filetype eq{
+ DataSource imbuf readstring pop
+ }{
+ DataSource
+ }ifelse
+ }ifelse
+ AGMUTIL_imagefile exch writestring
+ }ifelse
+ }for
+ end
+ true
+ }ifelse
+ end
+}bdf
+/close_image_file
+{
+ AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile
+}def
+statusdict/product known userdict/AGMP_current_show known not and{
+ /pstr statusdict/product get def
+ pstr(HP LaserJet 2200)eq
+ pstr(HP LaserJet 4000 Series)eq or
+ pstr(HP LaserJet 4050 Series )eq or
+ pstr(HP LaserJet 8000 Series)eq or
+ pstr(HP LaserJet 8100 Series)eq or
+ pstr(HP LaserJet 8150 Series)eq or
+ pstr(HP LaserJet 5000 Series)eq or
+ pstr(HP LaserJet 5100 Series)eq or
+ pstr(HP Color LaserJet 4500)eq or
+ pstr(HP Color LaserJet 4600)eq or
+ pstr(HP LaserJet 5Si)eq or
+ pstr(HP LaserJet 1200 Series)eq or
+ pstr(HP LaserJet 1300 Series)eq or
+ pstr(HP LaserJet 4100 Series)eq or
+ {
+ userdict/AGMP_current_show/show load put
+ userdict/show{
+ currentcolorspace 0 get
+ /Pattern eq
+ {false charpath f}
+ {AGMP_current_show}ifelse
+ }put
+ }if
+ currentdict/pstr undef
+}if
+/consumeimagedata
+{
+ begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known not
+ {/MultipleDataSources false def}if
+ MultipleDataSources
+ {
+ DataSource 0 get type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width cvi string def
+ 1 1 Height cvi
+ {
+ pop
+ 0 1 DataSource length 1 sub
+ {
+ DataSource exch get
+ flushbuffer readstring pop pop
+ }for
+ }for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and
+ {
+ Width Height mul cvi
+ {
+ 0 1 DataSource length 1 sub
+ {dup DataSource exch gx length exch 0 ne{pop}if}for
+ dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }
+ {
+ /DataSource load type
+ dup/filetype eq
+ {
+ 1 dict begin
+ /flushbuffer Width Decode length 2 idiv mul cvi string def
+ 1 1 Height{pop DataSource flushbuffer readstring pop pop}for
+ end
+ }if
+ dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and
+ {
+ Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul
+ {
+ DataSource length dup 0 eq
+ {pop exit}if
+ sub dup 0 le
+ {exit}if
+ }loop
+ pop
+ }if
+ }ifelse
+ end
+}bdf
+/addprocs
+{
+ 2{/exec load}repeat
+ 3 1 roll
+ [5 1 roll]bind cvx
+}def
+/modify_halftone_xfer
+{
+ currenthalftone dup length dict copy begin
+ currentdict 2 index known{
+ 1 index load dup length dict copy begin
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end def
+ currentdict end sethalftone
+ }{
+ currentdict/TransferFunction known{
+ /TransferFunction load
+ }{
+ currenttransfer
+ }ifelse
+ addprocs/TransferFunction xdf
+ currentdict end sethalftone
+ pop
+ }ifelse
+}def
+/clonearray
+{
+ dup xcheck exch
+ dup length array exch
+ Adobe_AGM_Core/AGMCORE_tmp -1 ddf
+ {
+ Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf
+ dup type/dicttype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get
+ exch
+ clonedict
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ dup type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_tmp get exch
+ clonearray
+ Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf
+ }if
+ exch dup
+ Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put
+ }forall
+ exch{cvx}if
+}bdf
+/clonedict
+{
+ dup length dict
+ begin
+ {
+ dup type/dicttype eq
+ {clonedict}if
+ dup type/arraytype eq
+ {clonearray}if
+ def
+ }forall
+ currentdict
+ end
+}bdf
+/DeviceN_PS2
+{
+ /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and
+}bdf
+/Indexed_DeviceN
+{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne{
+ dup/CSDBase known{
+ /CSDBase get/CSD get_res/Names known
+ }{
+ pop false
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}bdf
+/DeviceN_NoneName
+{
+ /Names where{
+ pop
+ false Names
+ {
+ (None)eq or
+ }forall
+ }{
+ false
+ }ifelse
+}bdf
+/DeviceN_PS2_inRip_seps
+{
+ /AGMCORE_in_rip_sep where
+ {
+ pop dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and
+ {
+ /currentcolorspace exch AGMCORE_gput
+ false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+}bdf
+/base_colorspace_type
+{
+ dup type/arraytype eq{0 get}if
+}bdf
+/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+{
+ /pdfmark_5{cleartomark}bind def
+}{
+ /pdfmark_5{pdfmark}bind def
+}ifelse
+/ReadBypdfmark_5
+{
+ currentfile exch 0 exch/SubFileDecode filter
+ /currentdistillerparams where
+ {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse
+ {flushfile cleartomark}
+ {/PUT pdfmark}ifelse
+}bdf
+/ReadBypdfmark_5_string
+{
+ 2 dict begin
+ /makerString exch def string/tmpString exch def
+ {
+ currentfile tmpString readline pop
+ makerString anchorsearch
+ {
+ pop pop cleartomark exit
+ }{
+ 3 copy/PUT pdfmark_5 pop 2 copy(\n)/PUT pdfmark_5
+ }ifelse
+ }loop
+ end
+}bdf
+/xpdfm
+{
+ {
+ dup 0 get/Label eq
+ {
+ aload length[exch 1 add 1 roll/PAGELABEL
+ }{
+ aload pop
+ [{ThisPage}<<5 -2 roll>>/PUT
+ }ifelse
+ pdfmark_5
+ }forall
+}bdf
+/lmt{
+ dup 2 index le{exch}if pop dup 2 index ge{exch}if pop
+}bdf
+/int{
+ dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop
+}bdf
+/ds{
+ Adobe_AGM_Utils begin
+}bdf
+/dt{
+ currentdict Adobe_AGM_Utils eq{
+ end
+ }if
+}bdf
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright(C)1997-2005 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Core 209 dict dup begin put
+/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen[currentscreen]cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_&setgray nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&setcmykcolor nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_distilling nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_err_strings 4 dict def
+/AGMCORE_cur_err nd
+/AGMCORE_current_spot_alias false def
+/AGMCORE_inverting false def
+/AGMCORE_feature_dictCount nd
+/AGMCORE_feature_opCount nd
+/AGMCORE_feature_ctm nd
+/AGMCORE_ConvertToProcess false def
+/AGMCORE_Default_CTM matrix def
+/AGMCORE_Default_PageSize nd
+/AGMCORE_Default_flatness nd
+/AGMCORE_currentbg nd
+/AGMCORE_currentucr nd
+/AGMCORE_pattern_paint_type 0 def
+/knockout_unitsq nd
+currentglobal true setglobal
+[/CSA/Gradient/Procedure]
+{
+ /Generic/Category findresource dup length dict copy/Category defineresource pop
+}forall
+setglobal
+/AGMCORE_key_known
+{
+ where{
+ /Adobe_AGM_Core_Id known
+ }{
+ false
+ }ifelse
+}ndf
+/flushinput
+{
+ save
+ 2 dict begin
+ /CompareBuffer 3 -1 roll def
+ /readbuffer 256 string def
+ mark
+ {
+ currentfile readbuffer{readline}stopped
+ {cleartomark mark}
+ {
+ not
+ {pop exit}
+ if
+ CompareBuffer eq
+ {exit}
+ if
+ }ifelse
+ }loop
+ cleartomark
+ end
+ restore
+}bdf
+/getspotfunction
+{
+ AGMCORE_screen exch pop exch pop
+ dup type/dicttype eq{
+ dup/HalftoneType get 1 eq{
+ /SpotFunction get
+ }{
+ dup/HalftoneType get 2 eq{
+ /GraySpotFunction get
+ }{
+ pop
+ {
+ abs exch abs 2 copy add 1 gt{
+ 1 sub dup mul exch 1 sub dup mul add 1 sub
+ }{
+ dup mul exch dup mul add 1 exch sub
+ }ifelse
+ }bind
+ }ifelse
+ }ifelse
+ }if
+}def
+/np
+{newpath}bdf
+/clp_npth
+{clip np}def
+/eoclp_npth
+{eoclip np}def
+/npth_clp
+{np clip}def
+/graphic_setup
+{
+ /AGMCORE_graphicsave save store
+ concat
+ 0 setgray
+ 0 setlinecap
+ 0 setlinejoin
+ 1 setlinewidth
+ []0 setdash
+ 10 setmiterlimit
+ np
+ false setoverprint
+ false setstrokeadjust
+ //Adobe_AGM_Core/spot_alias gx
+ /Adobe_AGM_Image where{
+ pop
+ Adobe_AGM_Image/spot_alias 2 copy known{
+ gx
+ }{
+ pop pop
+ }ifelse
+ }if
+ /sep_colorspace_dict null AGMCORE_gput
+ 100 dict begin
+ /dictstackcount countdictstack def
+ /showpage{}def
+ mark
+}def
+/graphic_cleanup
+{
+ cleartomark
+ dictstackcount 1 countdictstack 1 sub{end}for
+ end
+ AGMCORE_graphicsave restore
+}def
+/compose_error_msg
+{
+ grestoreall initgraphics
+ /Helvetica findfont 10 scalefont setfont
+ /AGMCORE_deltaY 100 def
+ /AGMCORE_deltaX 310 def
+ clippath pathbbox np pop pop 36 add exch 36 add exch moveto
+ 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+ 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+ 0 AGMCORE_&setgray
+ gsave 1 AGMCORE_&setgray fill grestore
+ 1 setlinewidth gsave stroke grestore
+ currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+ /AGMCORE_deltaY 12 def
+ /AGMCORE_tmp 0 def
+ AGMCORE_err_strings exch get
+ {
+ dup 32 eq
+ {
+ pop
+ AGMCORE_str256 0 AGMCORE_tmp getinterval
+ stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+ {
+ currentpoint AGMCORE_deltaY sub exch pop
+ clippath pathbbox pop pop pop 44 add exch moveto
+ }if
+ AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show
+ 0 1 AGMCORE_str256 length 1 sub
+ {
+ AGMCORE_str256 exch 0 put
+ }for
+ /AGMCORE_tmp 0 def
+ }{
+ AGMCORE_str256 exch AGMCORE_tmp xpt
+ /AGMCORE_tmp AGMCORE_tmp 1 add def
+ }ifelse
+ }forall
+}bdf
+/AGMCORE_CMYKDeviceNColorspaces[
+ [/Separation/None/DeviceCMYK{0 0 0}]
+ [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind]
+ [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind]
+ [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind]
+ [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind]
+ [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind]
+ [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind]
+ [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind]
+ [/Separation(Cyan)/DeviceCMYK{0 0 0}]
+ [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind]
+ [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind]
+ [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind]
+ [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}]
+ [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind]
+ [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}]
+ [/DeviceCMYK]
+]def
+/ds{
+ Adobe_AGM_Core begin
+ /currentdistillerparams where
+ {
+ pop currentdistillerparams/CoreDistVersion get 5000 lt
+ {<</DetectBlends false>>setdistillerparams}if
+ }if
+ /AGMCORE_ps_version xdf
+ /AGMCORE_ps_level xdf
+ errordict/AGM_handleerror known not{
+ errordict/AGM_handleerror errordict/handleerror get put
+ errordict/handleerror{
+ Adobe_AGM_Core begin
+ $error/newerror get AGMCORE_cur_err null ne and{
+ $error/newerror false put
+ AGMCORE_cur_err compose_error_msg
+ }if
+ $error/newerror true put
+ end
+ errordict/AGM_handleerror get exec
+ }bind put
+ }if
+ /AGMCORE_environ_ok
+ ps_level AGMCORE_ps_level ge
+ ps_version AGMCORE_ps_version ge and
+ AGMCORE_ps_level -1 eq or
+ def
+ AGMCORE_environ_ok not
+ {/AGMCORE_cur_err/AGMCORE_bad_environ def}if
+ /AGMCORE_&setgray systemdict/setgray get def
+ level2{
+ /AGMCORE_&setcolor systemdict/setcolor get def
+ /AGMCORE_&setcolorspace systemdict/setcolorspace get def
+ }if
+ /AGMCORE_currentbg currentblackgeneration def
+ /AGMCORE_currentucr currentundercolorremoval def
+ /AGMCORE_Default_flatness currentflat def
+ /AGMCORE_distilling
+ /product where{
+ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and
+ }{
+ false
+ }ifelse
+ def
+ /AGMCORE_GSTATE AGMCORE_key_known not{
+ /AGMCORE_GSTATE 21 dict def
+ /AGMCORE_tmpmatrix matrix def
+ /AGMCORE_gstack 32 array def
+ /AGMCORE_gstackptr 0 def
+ /AGMCORE_gstacksaveptr 0 def
+ /AGMCORE_gstackframekeys 14 def
+ /AGMCORE_&gsave/gsave ldf
+ /AGMCORE_&grestore/grestore ldf
+ /AGMCORE_&grestoreall/grestoreall ldf
+ /AGMCORE_&save/save ldf
+ /AGMCORE_&setoverprint/setoverprint ldf
+ /AGMCORE_gdictcopy{
+ begin
+ {def}forall
+ end
+ }def
+ /AGMCORE_gput{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ 3 1 roll
+ put
+ }def
+ /AGMCORE_gget{
+ AGMCORE_gstack AGMCORE_gstackptr get
+ exch
+ get
+ }def
+ /gsave{
+ AGMCORE_&gsave
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /grestore{
+ AGMCORE_&grestore
+ AGMCORE_gstackptr 1 sub
+ dup AGMCORE_gstacksaveptr lt{1 add}if
+ dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known
+ {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse
+ /AGMCORE_gstackptr exch store
+ }def
+ /grestoreall{
+ AGMCORE_&grestoreall
+ /AGMCORE_gstackptr AGMCORE_gstacksaveptr store
+ }def
+ /save{
+ AGMCORE_&save
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gstackptr 1 add
+ dup 32 ge{limitcheck}if
+ /AGMCORE_gstackptr exch store
+ /AGMCORE_gstacksaveptr AGMCORE_gstackptr store
+ AGMCORE_gstack AGMCORE_gstackptr get
+ AGMCORE_gdictcopy
+ }def
+ /setoverprint{
+ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint
+ }def
+ 0 1 AGMCORE_gstack length 1 sub{
+ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+ }for
+ }if
+ level3/AGMCORE_&sysshfill AGMCORE_key_known not and
+ {
+ /AGMCORE_&sysshfill systemdict/shfill get def
+ /AGMCORE_&sysmakepattern systemdict/makepattern get def
+ /AGMCORE_&usrmakepattern/makepattern load def
+ }if
+ /currentcmykcolor[0 0 0 0]AGMCORE_gput
+ /currentstrokeadjust false AGMCORE_gput
+ /currentcolorspace[/DeviceGray]AGMCORE_gput
+ /sep_tint 0 AGMCORE_gput
+ /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput
+ /sep_colorspace_dict null AGMCORE_gput
+ /devicen_colorspace_dict null AGMCORE_gput
+ /indexed_colorspace_dict null AGMCORE_gput
+ /currentcolor_intent()AGMCORE_gput
+ /customcolor_tint 1 AGMCORE_gput
+ /absolute_colorimetric_crd null AGMCORE_gput
+ /relative_colorimetric_crd null AGMCORE_gput
+ /saturation_crd null AGMCORE_gput
+ /perceptual_crd null AGMCORE_gput
+ currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf
+ cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf
+ <<
+ /MaxPatternItem currentsystemparams/MaxPatternCache get
+ >>
+ setuserparams
+ end
+}def
+/ps
+{
+ /setcmykcolor where{
+ pop
+ Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put
+ }if
+ Adobe_AGM_Core begin
+ /setcmykcolor
+ {
+ 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput
+ 1 sub 4 1 roll
+ 3{
+ 3 index add neg dup 0 lt{
+ pop 0
+ }if
+ 3 1 roll
+ }repeat
+ setrgbcolor pop
+ }ndf
+ /currentcmykcolor
+ {
+ /currentcmykcolor AGMCORE_gget aload pop
+ }ndf
+ /setoverprint
+ {pop}ndf
+ /currentoverprint
+ {false}ndf
+ /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+ /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+ /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+ /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+ /AGMCORE_plate_ndx
+ AGMCORE_cyan_plate{
+ 0
+ }{
+ AGMCORE_magenta_plate{
+ 1
+ }{
+ AGMCORE_yellow_plate{
+ 2
+ }{
+ AGMCORE_black_plate{
+ 3
+ }{
+ 4
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_have_reported_unsupported_color_space false def
+ /AGMCORE_report_unsupported_color_space
+ {
+ AGMCORE_have_reported_unsupported_color_space false eq
+ {
+ (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)==
+ Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf
+ }if
+ }def
+ /AGMCORE_composite_job
+ AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+ /AGMCORE_in_rip_sep
+ /AGMCORE_in_rip_sep where{
+ pop AGMCORE_in_rip_sep
+ }{
+ AGMCORE_distilling
+ {
+ false
+ }{
+ userdict/Adobe_AGM_OnHost_Seps known{
+ false
+ }{
+ level2{
+ currentpagedevice/Separations 2 copy known{
+ get
+ }{
+ pop pop false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+ /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+ /AGM_preserve_spots
+ /AGM_preserve_spots where{
+ pop AGM_preserve_spots
+ }{
+ AGMCORE_distilling AGMCORE_producing_seps or
+ }ifelse
+ def
+ /AGM_is_distiller_preserving_spotimages
+ {
+ currentdistillerparams/PreserveOverprintSettings known
+ {
+ currentdistillerparams/PreserveOverprintSettings get
+ {
+ currentdistillerparams/ColorConversionStrategy known
+ {
+ currentdistillerparams/ColorConversionStrategy get
+ /sRGB ne
+ }{
+ true
+ }ifelse
+ }{
+ false
+ }ifelse
+ }{
+ false
+ }ifelse
+ }def
+ /convert_spot_to_process where{pop}{
+ /convert_spot_to_process
+ {
+ //Adobe_AGM_Core begin
+ dup map_alias{
+ /Name get exch pop
+ }if
+ dup dup(None)eq exch(All)eq or
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ gsave
+ 1 0 0 0 setcmykcolor currentgray 1 exch sub
+ 0 1 0 0 setcmykcolor currentgray 1 exch sub
+ 0 0 1 0 setcmykcolor currentgray 1 exch sub
+ 0 0 0 1 setcmykcolor currentgray 1 exch sub
+ add add add 0 eq
+ {
+ pop false
+ }{
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ }ifelse
+ grestore
+ }{
+ AGMCORE_distilling
+ {
+ pop AGM_is_distiller_preserving_spotimages not
+ }{
+ //Adobe_AGM_Core/AGMCORE_name xddf
+ false
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq
+ AGMUTIL_cpd/OverrideSeparations known and
+ {
+ AGMUTIL_cpd/OverrideSeparations get
+ {
+ /HqnSpots/ProcSet resourcestatus
+ {
+ pop pop pop true
+ }if
+ }if
+ }if
+ {
+ AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not
+ }{
+ gsave
+ [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace
+ false
+ AGMUTIL_cpd/SeparationColorNames 2 copy known
+ {
+ get
+ {AGMCORE_name eq or}forall
+ not
+ }{
+ pop pop pop true
+ }ifelse
+ grestore
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ }ifelse
+ /convert_to_process where{pop}{
+ /convert_to_process
+ {
+ dup length 0 eq
+ {
+ pop false
+ }{
+ AGMCORE_host_sep
+ {
+ dup true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process and}ifelse
+ }
+ forall
+ {
+ true exch
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ (Black)eq or and
+ }forall
+ not
+ }{pop false}ifelse
+ }{
+ false exch
+ {
+ /PhotoshopDuotoneList where{pop false}{true}ifelse
+ {
+ dup(Cyan)eq exch
+ dup(Magenta)eq 3 -1 roll or exch
+ dup(Yellow)eq 3 -1 roll or exch
+ dup(Black)eq 3 -1 roll or
+ {pop}
+ {convert_spot_to_process or}ifelse
+ }
+ {
+ convert_spot_to_process or
+ }
+ ifelse
+ }
+ forall
+ }ifelse
+ }ifelse
+ }def
+ }ifelse
+ /AGMCORE_avoid_L2_sep_space
+ version cvr 2012 lt
+ level2 and
+ AGMCORE_producing_seps not and
+ def
+ /AGMCORE_is_cmyk_sep
+ AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+ def
+ /AGM_avoid_0_cmyk where{
+ pop AGM_avoid_0_cmyk
+ }{
+ AGM_preserve_spots
+ userdict/Adobe_AGM_OnHost_Seps known
+ userdict/Adobe_AGM_InRip_Seps known or
+ not and
+ }ifelse
+ {
+ /setcmykcolor[
+ {
+ 4 copy add add add 0 eq currentoverprint and{
+ pop 0.0005
+ }if
+ }/exec cvx
+ /AGMCORE_&setcmykcolor load dup type/operatortype ne{
+ /exec cvx
+ }if
+ ]cvx def
+ }if
+ /AGMCORE_IsSeparationAProcessColor
+ {
+ dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or
+ }def
+ AGMCORE_host_sep{
+ /setcolortransfer
+ {
+ AGMCORE_cyan_plate{
+ pop pop pop
+ }{
+ AGMCORE_magenta_plate{
+ 4 3 roll pop pop pop
+ }{
+ AGMCORE_yellow_plate{
+ 4 2 roll pop pop pop
+ }{
+ 4 1 roll pop pop pop
+ }ifelse
+ }ifelse
+ }ifelse
+ settransfer
+ }
+ def
+ /AGMCORE_get_ink_data
+ AGMCORE_cyan_plate{
+ {pop pop pop}
+ }{
+ AGMCORE_magenta_plate{
+ {4 3 roll pop pop pop}
+ }{
+ AGMCORE_yellow_plate{
+ {4 2 roll pop pop pop}
+ }{
+ {4 1 roll pop pop pop}
+ }ifelse
+ }ifelse
+ }ifelse
+ def
+ /AGMCORE_RemoveProcessColorNames
+ {
+ 1 dict begin
+ /filtername
+ {
+ dup/Cyan eq 1 index(Cyan)eq or
+ {pop(_cyan_)}if
+ dup/Magenta eq 1 index(Magenta)eq or
+ {pop(_magenta_)}if
+ dup/Yellow eq 1 index(Yellow)eq or
+ {pop(_yellow_)}if
+ dup/Black eq 1 index(Black)eq or
+ {pop(_black_)}if
+ }def
+ dup type/arraytype eq
+ {[exch{filtername}forall]}
+ {filtername}ifelse
+ end
+ }def
+ level3{
+ /AGMCORE_IsCurrentColor
+ {
+ dup AGMCORE_IsSeparationAProcessColor
+ {
+ AGMCORE_plate_ndx 0 eq
+ {dup(Cyan)eq exch/Cyan eq or}if
+ AGMCORE_plate_ndx 1 eq
+ {dup(Magenta)eq exch/Magenta eq or}if
+ AGMCORE_plate_ndx 2 eq
+ {dup(Yellow)eq exch/Yellow eq or}if
+ AGMCORE_plate_ndx 3 eq
+ {dup(Black)eq exch/Black eq or}if
+ AGMCORE_plate_ndx 4 eq
+ {pop false}if
+ }{
+ gsave
+ false setoverprint
+ current_spot_alias false set_spot_alias
+ 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor
+ set_spot_alias
+ currentgray 1 ne
+ grestore
+ }ifelse
+ }def
+ /AGMCORE_filter_functiondatasource
+ {
+ 5 dict begin
+ /data_in xdf
+ data_in type/stringtype eq
+ {
+ /ncomp xdf
+ /comp xdf
+ /string_out data_in length ncomp idiv string def
+ 0 ncomp data_in length 1 sub
+ {
+ string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put
+ }for
+ string_out
+ }{
+ string/string_in xdf
+ /string_out 1 string def
+ /component xdf
+ [
+ data_in string_in/readstring cvx
+ [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx
+ [/pop cvx()]cvx/ifelse cvx
+ ]cvx/ReusableStreamDecode filter
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingFunction
+ {
+ 2 dict begin
+ /paint? xdf
+ /channel xdf
+ dup type/dicttype eq
+ {
+ begin
+ FunctionType 0 eq
+ {
+ /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def
+ currentdict/Decode known
+ {/Decode Decode channel 2 mul 2 getinterval def}if
+ paint? not
+ {/Decode[1 1]def}if
+ }if
+ FunctionType 2 eq
+ {
+ paint?
+ {
+ /C0[C0 channel get 1 exch sub]def
+ /C1[C1 channel get 1 exch sub]def
+ }{
+ /C0[1]def
+ /C1[1]def
+ }ifelse
+ }if
+ FunctionType 3 eq
+ {
+ /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def
+ }if
+ currentdict/Range known
+ {/Range[0 1]def}if
+ currentdict
+ end}{
+ channel get 0 paint? AGMCORE_separateShadingFunction
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShading
+ {
+ 3 -1 roll begin
+ currentdict/Function known
+ {
+ currentdict/Background known
+ {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if
+ Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf
+ /ColorSpace[/DeviceGray]def
+ }{
+ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }{
+ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put
+ }ifelse
+ ColorSpace 0 get/Separation eq
+ {
+ {
+ [1/exch cvx/sub cvx]cvx
+ }{
+ [/pop cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll put
+ pop
+ }{
+ {
+ [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx
+ }{
+ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx
+ }ifelse
+ ColorSpace 3 3 -1 roll bind put
+ }ifelse
+ ColorSpace 2/DeviceGray put
+ }ifelse
+ end
+ }def
+ /AGMCORE_separateShadingDict
+ {
+ dup/ColorSpace get
+ dup type/arraytype ne
+ {[exch]}if
+ dup 0 get/DeviceCMYK eq
+ {
+ exch begin
+ currentdict
+ AGMCORE_cyan_plate
+ {0 true}if
+ AGMCORE_magenta_plate
+ {1 true}if
+ AGMCORE_yellow_plate
+ {2 true}if
+ AGMCORE_black_plate
+ {3 true}if
+ AGMCORE_plate_ndx 4 eq
+ {0 false}if
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ currentdict
+ end exch
+ }if
+ dup 0 get/Separation eq
+ {
+ exch begin
+ ColorSpace 1 get dup/None ne exch/All ne and
+ {
+ ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /Separation
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }ifelse
+ }{
+ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor
+ 0 exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ }if
+ currentdict
+ end exch
+ }if
+ dup 0 get/DeviceN eq
+ {
+ exch begin
+ ColorSpace 1 get convert_to_process
+ {
+ ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq
+ {
+ /ColorSpace
+ [
+ /DeviceN
+ ColorSpace 1 get
+ /DeviceGray
+ [
+ ColorSpace 3 get/exec cvx
+ 4 AGMCORE_plate_ndx sub -1/roll cvx
+ 4 1/roll cvx
+ 3[/pop cvx]cvx/repeat cvx
+ 1/exch cvx/sub cvx
+ ]cvx
+ ]def
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ currentdict 0 false AGMCORE_separateShading
+ /ColorSpace[/DeviceGray]def
+ }if
+ }ifelse
+ }{
+ currentdict
+ false -1 ColorSpace 1 get
+ {
+ AGMCORE_IsCurrentColor
+ {
+ 1 add
+ exch pop true exch exit
+ }if
+ 1 add
+ }forall
+ exch
+ dup not currentoverprint and
+ {/AGMCORE_ignoreshade true def}if
+ AGMCORE_separateShading
+ }ifelse
+ currentdict
+ end exch
+ }if
+ dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not
+ {
+ exch begin
+ ColorSpace dup type/arraytype eq
+ {0 get}if
+ /DeviceGray ne
+ {
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate not
+ {
+ ColorSpace 0 get/CIEBasedA eq
+ {
+ /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def
+ }if
+ ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or
+ {
+ /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def
+ }if
+ ColorSpace 0 get/CIEBasedDEFG eq
+ {
+ /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def
+ }if
+ currentdict 0 false AGMCORE_separateShading
+ }if
+ }if
+ currentdict
+ end exch
+ }if
+ pop
+ dup/AGMCORE_ignoreshade known
+ {
+ begin
+ /ColorSpace[/Separation(None)/DeviceGray{}]def
+ currentdict end
+ }if
+ }def
+ /shfill
+ {
+ AGMCORE_separateShadingDict
+ dup/AGMCORE_ignoreshade known
+ {pop}
+ {AGMCORE_&sysshfill}ifelse
+ }def
+ /makepattern
+ {
+ exch
+ dup/PatternType get 2 eq
+ {
+ clonedict
+ begin
+ /Shading Shading AGMCORE_separateShadingDict def
+ Shading/AGMCORE_ignoreshade known
+ currentdict end exch
+ {pop<</PatternType 1/PaintProc{pop}/BBox[0 0 1 1]/XStep 1/YStep 1/PaintType 1/TilingType 3>>}if
+ exch AGMCORE_&sysmakepattern
+ }{
+ exch AGMCORE_&usrmakepattern
+ }ifelse
+ }def
+ }if
+ }if
+ AGMCORE_in_rip_sep{
+ /setcustomcolor
+ {
+ exch aload pop
+ dup 7 1 roll inRip_spot_has_ink not {
+ 4{4 index mul 4 1 roll}
+ repeat
+ /DeviceCMYK setcolorspace
+ 6 -2 roll pop pop
+ }{
+ //Adobe_AGM_Core begin
+ /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf
+ end
+ [/Separation 4 -1 roll/DeviceCMYK
+ {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+ ]
+ setcolorspace
+ }ifelse
+ setcolor
+ }ndf
+ /setseparationgray
+ {
+ [/Separation(All)/DeviceGray{}]setcolorspace_opt
+ 1 exch sub setcolor
+ }ndf
+ }{
+ /setseparationgray
+ {
+ AGMCORE_&setgray
+ }ndf
+ }ifelse
+ /findcmykcustomcolor
+ {
+ 5 makereadonlyarray
+ }ndf
+ /setcustomcolor
+ {
+ exch aload pop pop
+ 4{4 index mul 4 1 roll}repeat
+ setcmykcolor pop
+ }ndf
+ /has_color
+ /colorimage where{
+ AGMCORE_producing_seps{
+ pop true
+ }{
+ systemdict eq
+ }ifelse
+ }{
+ false
+ }ifelse
+ def
+ /map_index
+ {
+ 1 index mul exch getinterval{255 div}forall
+ }bdf
+ /map_indexed_devn
+ {
+ Lookup Names length 3 -1 roll cvi map_index
+ }bdf
+ /n_color_components
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop 1
+ }{
+ /DeviceCMYK eq{
+ 4
+ }{
+ 3
+ }ifelse
+ }ifelse
+ }bdf
+ level2{
+ /mo/moveto ldf
+ /li/lineto ldf
+ /cv/curveto ldf
+ /knockout_unitsq
+ {
+ 1 setgray
+ 0 0 1 1 rectfill
+ }def
+ level2/setcolorspace AGMCORE_key_known not and{
+ /AGMCORE_&&&setcolorspace/setcolorspace ldf
+ /AGMCORE_ReplaceMappedColor
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ dup 0 get dup/Separation eq
+ {
+ pop
+ dup length array copy
+ dup dup 1 get
+ current_spot_alias
+ {
+ dup map_alias
+ {
+ false set_spot_alias
+ dup 1 exch setsepcolorspace
+ true set_spot_alias
+ begin
+ /sep_colorspace_dict currentdict AGMCORE_gput
+ pop pop pop
+ [
+ /Separation Name
+ CSA map_csa
+ MappedCSA
+ /sep_colorspace_proc load
+ ]
+ dup Name
+ end
+ }if
+ }if
+ map_reserved_ink_name 1 xpt
+ }{
+ /DeviceN eq
+ {
+ dup length array copy
+ dup dup 1 get[
+ exch{
+ current_spot_alias{
+ dup map_alias{
+ /Name get exch pop
+ }if
+ }if
+ map_reserved_ink_name
+ }forall
+ ]1 xpt
+ }if
+ }ifelse
+ end
+ }if
+ }if
+ }def
+ /setcolorspace
+ {
+ dup type dup/arraytype eq exch/packedarraytype eq or
+ {
+ dup 0 get/Indexed eq
+ {
+ AGMCORE_distilling
+ {
+ /PhotoshopDuotoneList where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }{
+ true
+ }ifelse
+ {
+ aload pop 3 -1 roll
+ AGMCORE_ReplaceMappedColor
+ 3 1 roll 4 array astore
+ }if
+ }{
+ AGMCORE_ReplaceMappedColor
+ }ifelse
+ }if
+ DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if
+ }def
+ }if
+ }{
+ /adj
+ {
+ currentstrokeadjust{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ }if
+ }def
+ /mo{
+ adj moveto
+ }def
+ /li{
+ adj lineto
+ }def
+ /cv{
+ 6 2 roll adj
+ 6 2 roll adj
+ 6 2 roll adj curveto
+ }def
+ /knockout_unitsq
+ {
+ 1 setgray
+ 8 8 1[8 0 0 8 0 0]{<ffffffffffffffff>}image
+ }def
+ /currentstrokeadjust{
+ /currentstrokeadjust AGMCORE_gget
+ }def
+ /setstrokeadjust{
+ /currentstrokeadjust exch AGMCORE_gput
+ }def
+ /setcolorspace
+ {
+ /currentcolorspace exch AGMCORE_gput
+ }def
+ /currentcolorspace
+ {
+ /currentcolorspace AGMCORE_gget
+ }def
+ /setcolor_devicecolor
+ {
+ base_colorspace_type
+ dup/DeviceGray eq{
+ pop setgray
+ }{
+ /DeviceCMYK eq{
+ setcmykcolor
+ }{
+ setrgbcolor
+ }ifelse
+ }ifelse
+ }def
+ /setcolor
+ {
+ currentcolorspace 0 get
+ dup/DeviceGray ne{
+ dup/DeviceCMYK ne{
+ dup/DeviceRGB ne{
+ dup/Separation eq{
+ pop
+ currentcolorspace 3 gx
+ currentcolorspace 2 get
+ }{
+ dup/Indexed eq{
+ pop
+ currentcolorspace 3 get dup type/stringtype eq{
+ currentcolorspace 1 get n_color_components
+ 3 -1 roll map_index
+ }{
+ exec
+ }ifelse
+ currentcolorspace 1 get
+ }{
+ /AGMCORE_cur_err/AGMCORE_invalid_color_space def
+ AGMCORE_invalid_color_space
+ }ifelse
+ }ifelse
+ }if
+ }if
+ }if
+ setcolor_devicecolor
+ }def
+ }ifelse
+ /sop/setoverprint ldf
+ /lw/setlinewidth ldf
+ /lc/setlinecap ldf
+ /lj/setlinejoin ldf
+ /ml/setmiterlimit ldf
+ /dsh/setdash ldf
+ /sadj/setstrokeadjust ldf
+ /gry/setgray ldf
+ /rgb/setrgbcolor ldf
+ /cmyk[
+ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx
+ /setcmykcolor load dup type/operatortype ne{/exec cvx}if
+ ]cvx bdf
+ level3 AGMCORE_host_sep not and{
+ /nzopmsc{
+ 6 dict begin
+ /kk exch def
+ /yy exch def
+ /mm exch def
+ /cc exch def
+ /sum 0 def
+ cc 0 ne{/sum sum 2#1000 or def cc}if
+ mm 0 ne{/sum sum 2#0100 or def mm}if
+ yy 0 ne{/sum sum 2#0010 or def yy}if
+ kk 0 ne{/sum sum 2#0001 or def kk}if
+ AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace
+ sum 0 eq{0}if
+ end
+ setcolor
+ }bdf
+ }{
+ /nzopmsc/cmyk ldf
+ }ifelse
+ /sep/setsepcolor ldf
+ /devn/setdevicencolor ldf
+ /idx/setindexedcolor ldf
+ /colr/setcolor ldf
+ /csacrd/set_csa_crd ldf
+ /sepcs/setsepcolorspace ldf
+ /devncs/setdevicencolorspace ldf
+ /idxcs/setindexedcolorspace ldf
+ /cp/closepath ldf
+ /clp/clp_npth ldf
+ /eclp/eoclp_npth ldf
+ /f/fill ldf
+ /ef/eofill ldf
+ /@/stroke ldf
+ /nclp/npth_clp ldf
+ /gset/graphic_setup ldf
+ /gcln/graphic_cleanup ldf
+ /ct/concat ldf
+ /cf/currentfile ldf
+ /fl/filter ldf
+ /rs/readstring ldf
+ /AGMCORE_def_ht currenthalftone def
+ /clonedict Adobe_AGM_Utils begin/clonedict load end def
+ /clonearray Adobe_AGM_Utils begin/clonearray load end def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+ /getrampcolor
+ {
+ /indx exch def
+ 0 1 NumComp 1 sub
+ {
+ dup
+ Samples exch get
+ dup type/stringtype eq{indx get}if
+ exch
+ Scaling exch get aload pop
+ 3 1 roll
+ mul add
+ }for
+ ColorSpaceFamily/Separation eq
+ {sep}
+ {
+ ColorSpaceFamily/DeviceN eq
+ {devn}{setcolor}ifelse
+ }ifelse
+ }bdf
+ /sssetbackground{aload pop setcolor}bdf
+ /RadialShade
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /r2 xdf
+ /c2y xdf
+ /c2x xdf
+ /r1 xdf
+ /c1y xdf
+ /c1x xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ c1x c2x eq
+ {
+ c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope c2y c1y sub c2x c1x sub div def
+ /theta slope 1 atan def
+ c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if
+ c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if
+ }ifelse
+ gsave
+ clippath
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax xdf
+ /xMax xdf
+ /yMin xdf
+ /xMin xdf
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ /max{2 copy gt{pop}{exch pop}ifelse}bdf
+ /min{2 copy lt{pop}{exch pop}ifelse}bdf
+ rampdict begin
+ 40 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ c1x c1y translate
+ theta rotate
+ -90 rotate
+ /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+ /c1y 0 def
+ /c1x 0 def
+ /c2x 0 def
+ ext0
+ {
+ 0 getrampcolor
+ c2y r2 add r1 sub 0.0001 lt
+ {
+ c1x c1y r1 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2y r1 add r2 le
+ {
+ c1x c1y r1 0 360 arc
+ fill
+ }
+ {
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r1 neg def
+ /p1y c1y def
+ /p2x r1 def
+ /p2y c1y def
+ p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y p1x SS1 div neg def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y p2x SS2 div neg def
+ r1 r2 gt
+ {
+ /L1maxX p1x yMin p1y sub SS1 div add def
+ /L2maxX p2x yMin p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ c1x c2x sub dup mul
+ c1y c2y sub dup mul
+ add 0.5 exp
+ 0 dtransform
+ dup mul exch dup mul add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ /hires xdf
+ hires mul
+ /numpix xdf
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ /xInc c2x c1x sub numsteps div def
+ /yInc c2y c1y sub numsteps div def
+ /rInc r2 r1 sub numsteps div def
+ /cx c1x def
+ /cy c1y def
+ /radius r1 def
+ np
+ xInc 0 eq yInc 0 eq rInc 0 eq and and
+ {
+ 0 getrampcolor
+ cx cy radius 0 360 arc
+ stroke
+ NumSamples 1 sub getrampcolor
+ cx cy radius 72 hires div add 0 360 arc
+ 0 setlinewidth
+ stroke
+ }{
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ cx cy radius 0 360 arc
+ /cx cx xInc add def
+ /cy cy yInc add def
+ /radius radius rInc add def
+ cx cy radius 360 0 arcn
+ eofill
+ rampIndxInc add
+ }repeat
+ pop
+ }ifelse
+ ext1
+ {
+ c2y r2 add r1 lt
+ {
+ c2x c2y r2 0 360 arc
+ fill
+ }{
+ c2y r1 add r2 sub 0.0001 le
+ {
+ c2x c2y r2 360 0 arcn
+ pathbbox
+ /aymax exch def
+ /axmax exch def
+ /aymin exch def
+ /axmin exch def
+ /bxMin xMin axmin min def
+ /byMin yMin aymin min def
+ /bxMax xMax axmax max def
+ /byMax yMax aymax max def
+ bxMin byMin moveto
+ bxMax byMin lineto
+ bxMax byMax lineto
+ bxMin byMax lineto
+ bxMin byMin lineto
+ eofill
+ }{
+ c2x c2y r2 0 360 arc fill
+ r1 r2 eq
+ {
+ /p1x r2 neg def
+ /p1y c2y def
+ /p2x r2 def
+ /p2y c2y def
+ p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+ fill
+ }{
+ /AA r2 r1 sub c2y div def
+ AA -1 eq
+ {/theta 89.99 def}
+ {/theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ ifelse
+ /SS1 90 theta add dup sin exch cos div def
+ /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+ /p1y c2y p1x SS1 div sub def
+ /SS2 90 theta sub dup sin exch cos div def
+ /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+ /p2y c2y p2x SS2 div sub def
+ r1 r2 lt
+ {
+ /L1maxX p1x yMax p1y sub SS1 div add def
+ /L2maxX p2x yMax p2y sub SS2 div add def
+ }{
+ /L1maxX 0 def
+ /L2maxX 0 def
+ }ifelse
+ p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+ L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+ fill
+ }ifelse
+ }ifelse
+ }ifelse
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+ /GenStrips
+ {
+ 40 dict begin
+ /ColorSpaceFamily xdf
+ /background xdf
+ /ext1 xdf
+ /ext0 xdf
+ /BBox xdf
+ /y2 xdf
+ /x2 xdf
+ /y1 xdf
+ /x1 xdf
+ /rampdict xdf
+ /setinkoverprint where{pop/setinkoverprint{pop}def}if
+ gsave
+ BBox length 0 gt
+ {
+ np
+ BBox 0 get BBox 1 get moveto
+ BBox 2 get BBox 0 get sub 0 rlineto
+ 0 BBox 3 get BBox 1 get sub rlineto
+ BBox 2 get BBox 0 get sub neg 0 rlineto
+ closepath
+ clip
+ np
+ }if
+ x1 x2 eq
+ {
+ y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse
+ }{
+ /slope y2 y1 sub x2 x1 sub div def
+ /theta slope 1 atan def
+ x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if
+ x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if
+ }
+ ifelse
+ gsave
+ clippath
+ x1 y1 translate
+ theta rotate
+ {pathbbox}stopped
+ {0 0 0 0}if
+ /yMax exch def
+ /xMax exch def
+ /yMin exch def
+ /xMin exch def
+ grestore
+ xMax xMin eq yMax yMin eq or
+ {
+ grestore
+ end
+ }{
+ rampdict begin
+ 20 dict begin
+ background length 0 gt{background sssetbackground gsave clippath fill grestore}if
+ gsave
+ x1 y1 translate
+ theta rotate
+ /xStart 0 def
+ /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+ /ySpan yMax yMin sub def
+ /numsteps NumSamples def
+ /rampIndxInc 1 def
+ /subsampling false def
+ xStart 0 transform
+ xEnd 0 transform
+ 3 -1 roll
+ sub dup mul
+ 3 1 roll
+ sub dup mul
+ add 0.5 exp 72 div
+ 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+ 1 index 1 index lt{exch}if pop
+ mul
+ /numpix xdf
+ numpix 0 ne
+ {
+ NumSamples numpix div 0.5 gt
+ {
+ /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def
+ /rampIndxInc NumSamples 1 sub numsteps div def
+ /subsampling true def
+ }if
+ }if
+ ext0
+ {
+ 0 getrampcolor
+ xMin xStart lt
+ {
+ xMin yMin xMin neg ySpan rectfill
+ }if
+ }if
+ /xInc xEnd xStart sub numsteps div def
+ /x xStart def
+ 0
+ numsteps
+ {
+ dup
+ subsampling{round cvi}if
+ getrampcolor
+ x yMin xInc ySpan rectfill
+ /x x xInc add def
+ rampIndxInc add
+ }repeat
+ pop
+ ext1{
+ xMax xEnd gt
+ {
+ xEnd yMin xMax xEnd sub ySpan rectfill
+ }if
+ }if
+ grestore
+ grestore
+ end
+ end
+ end
+ }ifelse
+ }bdf
+}def
+/pt
+{
+ end
+}def
+/dt{
+}def
+/pgsv{
+ //Adobe_AGM_Core/AGMCORE_save save put
+}def
+/pgrs{
+ //Adobe_AGM_Core/AGMCORE_save get restore
+}def
+systemdict/findcolorrendering known{
+ /findcolorrendering systemdict/findcolorrendering get def
+}if
+systemdict/setcolorrendering known{
+ /setcolorrendering systemdict/setcolorrendering get def
+}if
+/test_cmyk_color_plate
+{
+ gsave
+ setcmykcolor currentgray 1 ne
+ grestore
+}def
+/inRip_spot_has_ink
+{
+ dup//Adobe_AGM_Core/AGMCORE_name xddf
+ convert_spot_to_process not
+}def
+/map255_to_range
+{
+ 1 index sub
+ 3 -1 roll 255 div mul add
+}def
+/set_csa_crd
+{
+ /sep_colorspace_dict null AGMCORE_gput
+ begin
+ CSA get_csa_by_name setcolorspace_opt
+ set_crd
+ end
+}
+def
+/map_csa
+{
+ currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse
+ {pop}{get_csa_by_name/MappedCSA xdf}ifelse
+}def
+/setsepcolor
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ dup/sep_tint exch AGMCORE_gput
+ TintProc
+ end
+}def
+/setdevicencolor
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ Names length copy
+ Names length 1 sub -1 0
+ {
+ /devicen_tints AGMCORE_gget 3 1 roll xpt
+ }for
+ TintProc
+ end
+}def
+/sep_colorspace_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ currentdict/Components known{
+ Components aload pop
+ TintMethod/Lab eq{
+ 2{AGMCORE_tmp mul NComponents 1 roll}repeat
+ LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll
+ }{
+ TintMethod/Subtractive eq{
+ NComponents{
+ AGMCORE_tmp mul NComponents 1 roll
+ }repeat
+ }{
+ NComponents{
+ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll
+ }repeat
+ }ifelse
+ }ifelse
+ }{
+ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+ aload pop
+ }ifelse
+ end
+}def
+/sep_colorspace_gray_proc
+{
+ /AGMCORE_tmp exch store
+ /sep_colorspace_dict AGMCORE_gget begin
+ GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+ end
+}def
+/sep_proc_name
+{
+ dup 0 get
+ dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{
+ pop[/DeviceGray]
+ /sep_colorspace_gray_proc
+ }{
+ /sep_colorspace_proc
+ }ifelse
+}def
+/setsepcolorspace
+{
+ current_spot_alias{
+ dup begin
+ Name map_alias{
+ exch pop
+ }if
+ end
+ }if
+ dup/sep_colorspace_dict exch AGMCORE_gput
+ begin
+ CSA map_csa
+ /AGMCORE_sep_special Name dup()eq exch(All)eq or store
+ AGMCORE_avoid_L2_sep_space{
+ [/Indexed MappedCSA sep_proc_name 255 exch
+ {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx
+ ]setcolorspace_opt
+ /TintProc{
+ 255 mul round cvi setcolor
+ }bdf
+ }{
+ MappedCSA 0 get/DeviceCMYK eq
+ currentdict/Components known and
+ AGMCORE_sep_special not and{
+ /TintProc[
+ Components aload pop Name findcmykcustomcolor
+ /exch cvx/setcustomcolor cvx
+ ]cvx bdf
+ }{
+ AGMCORE_host_sep Name(All)eq and{
+ /TintProc{
+ 1 exch sub setseparationgray
+ }bdf
+ }{
+ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and
+ AGMCORE_host_sep or
+ Name()eq and{
+ /TintProc[
+ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{
+ cvx/setcmykcolor cvx
+ }{
+ cvx/setgray cvx
+ }ifelse
+ ]cvx bdf
+ }{
+ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{
+ /TintProc[
+ /dup cvx
+ MappedCSA sep_proc_name cvx exch
+ 0 get/DeviceGray eq{
+ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx
+ }if
+ /Name cvx/findcmykcustomcolor cvx/exch cvx
+ AGMCORE_host_sep{
+ AGMCORE_is_cmyk_sep
+ /Name cvx
+ /AGMCORE_IsSeparationAProcessColor load/exec cvx
+ /not cvx/and cvx
+ }{
+ Name inRip_spot_has_ink not
+ }ifelse
+ [
+ /pop cvx 1
+ ]cvx/if cvx
+ /setcustomcolor cvx
+ ]cvx bdf
+ }{
+ /TintProc{setcolor}bdf
+ [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ set_crd
+ setsepcolor
+ end
+}def
+/additive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1
+ 0 1 numarrays 1 sub
+ {
+ 1 exch add/index cvx
+ c1/get cvx/mul cvx
+ }for
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/subtractive_blend
+{
+ 3 dict begin
+ /numarrays xdf
+ /numcolors xdf
+ 0 1 numcolors 1 sub
+ {
+ /c1 xdf
+ 1 1
+ 0 1 numarrays 1 sub
+ {
+ 1 3 3 -1 roll add/index cvx
+ c1/get cvx/sub cvx/mul cvx
+ }for
+ /sub cvx
+ numarrays 1 add 1/roll cvx
+ }for
+ numarrays[/pop cvx]cvx/repeat cvx
+ end
+}def
+/exec_tint_transform
+{
+ /TintProc[
+ /TintTransform cvx/setcolor cvx
+ ]cvx bdf
+ MappedCSA setcolorspace_opt
+}bdf
+/devn_makecustomcolor
+{
+ 2 dict begin
+ /names_index xdf
+ /Names xdf
+ 1 1 1 1 Names names_index get findcmykcustomcolor
+ /devicen_tints AGMCORE_gget names_index get setcustomcolor
+ Names length{pop}repeat
+ end
+}bdf
+/setdevicencolorspace
+{
+ dup/AliasedColorants known{false}{true}ifelse
+ current_spot_alias and{
+ 7 dict begin
+ /names_index 0 def
+ dup/names_len exch/Names get length def
+ /new_names names_len array def
+ /new_LookupTables names_len array def
+ /alias_cnt 0 def
+ dup/Names get
+ {
+ dup map_alias{
+ exch pop
+ dup/ColorLookup known{
+ dup begin
+ new_LookupTables names_index ColorLookup put
+ end
+ }{
+ dup/Components known{
+ dup begin
+ new_LookupTables names_index Components put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ new_names names_index 3 -1 roll/Name get put
+ /alias_cnt alias_cnt 1 add def
+ }{
+ /name xdf
+ new_names names_index name put
+ dup/LookupTables known{
+ dup begin
+ new_LookupTables names_index LookupTables names_index get put
+ end
+ }{
+ dup begin
+ new_LookupTables names_index[null null null null]put
+ end
+ }ifelse
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ alias_cnt 0 gt{
+ /AliasedColorants true def
+ /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def
+ 0 1 names_len 1 sub{
+ /names_index xdf
+ new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{
+ /AliasedColorants false def
+ exit
+ }{
+ new_LookupTables names_index get 0 get null eq{
+ dup/Names get names_index get/name xdf
+ name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq
+ or or or not{
+ /AliasedColorants false def
+ exit
+ }if
+ }if
+ }ifelse
+ }for
+ lut_entry_len 1 eq{
+ /AliasedColorants false def
+ }if
+ AliasedColorants{
+ dup begin
+ /Names new_names def
+ /LookupTables new_LookupTables def
+ /AliasedColorants true def
+ /NComponents lut_entry_len def
+ /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def
+ /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def
+ currentdict/TTTablesIdx known not{
+ /TTTablesIdx -1 def
+ }if
+ end
+ }if
+ }if
+ end
+ }if
+ dup/devicen_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/AliasedColorants known{
+ AliasedColorants
+ }{
+ false
+ }ifelse
+ dup not{
+ CSA map_csa
+ }if
+ /TintTransform load type/nulltype eq or{
+ /TintTransform[
+ 0 1 Names length 1 sub
+ {
+ /TTTablesIdx TTTablesIdx 1 add def
+ dup LookupTables exch get dup 0 get null eq
+ {
+ 1 index
+ Names exch get
+ dup(Cyan)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0
+ }
+ {
+ dup(Magenta)eq
+ {
+ pop exch
+ LookupTables length exch sub
+ /index cvx
+ 0/exch cvx 0 0
+ }{
+ (Yellow)eq
+ {
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 3 -1/roll cvx 0
+ }{
+ exch
+ LookupTables length exch sub
+ /index cvx
+ 0 0 0 4 -1/roll cvx
+ }ifelse
+ }ifelse
+ }ifelse
+ 5 -1/roll cvx/astore cvx
+ }{
+ dup length 1 sub
+ LookupTables length 4 -1 roll sub 1 add
+ /index cvx/mul cvx/round cvx/cvi cvx/get cvx
+ }ifelse
+ Names length TTTablesIdx add 1 add 1/roll cvx
+ }for
+ Names length[/pop cvx]cvx/repeat cvx
+ NComponents Names length
+ TintMethod/Subtractive eq
+ {
+ subtractive_blend
+ }{
+ additive_blend
+ }ifelse
+ ]cvx bdf
+ }if
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ exec_tint_transform
+ }
+ {
+ currentdict/AliasedColorants known{
+ AliasedColorants not
+ }{
+ false
+ }ifelse
+ 5 dict begin
+ /AvoidAliasedColorants xdf
+ /painted? false def
+ /names_index 0 def
+ /names_len Names length def
+ AvoidAliasedColorants{
+ /currentspotalias current_spot_alias def
+ false set_spot_alias
+ }if
+ Names{
+ AGMCORE_is_cmyk_sep{
+ dup(Cyan)eq AGMCORE_cyan_plate and exch
+ dup(Magenta)eq AGMCORE_magenta_plate and exch
+ dup(Yellow)eq AGMCORE_yellow_plate and exch
+ (Black)eq AGMCORE_black_plate and or or or{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ }if
+ painted?{exit}if
+ }{
+ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ Names names_index/devn_makecustomcolor cvx
+ ]cvx ddf
+ /painted? true def
+ exit
+ }if
+ }ifelse
+ /names_index names_index 1 add def
+ }forall
+ AvoidAliasedColorants{
+ currentspotalias set_spot_alias
+ }if
+ painted?{
+ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put
+ }{
+ /devicen_colorspace_dict AGMCORE_gget/TintProc[
+ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx
+ 0 0 0 0/setcmykcolor cvx
+ ]cvx ddf
+ }ifelse
+ end
+ }ifelse
+ }
+ {
+ AGMCORE_in_rip_sep{
+ Names convert_to_process not
+ }{
+ level3
+ }ifelse
+ {
+ [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt
+ /TintProc level3 not AGMCORE_in_rip_sep and{
+ [
+ Names/length cvx[/pop cvx]cvx/repeat cvx
+ ]cvx bdf
+ }{
+ {setcolor}bdf
+ }ifelse
+ }{
+ exec_tint_transform
+ }ifelse
+ }ifelse
+ set_crd
+ /AliasedColorants false def
+ end
+}def
+/setindexedcolorspace
+{
+ dup/indexed_colorspace_dict exch AGMCORE_gput
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ currentdict devncs
+ }{
+ 1 currentdict sepcs
+ }ifelse
+ AGMCORE_host_sep{
+ 4 dict begin
+ /compCnt/Names where{pop Names length}{1}ifelse def
+ /NewLookup HiVal 1 add string def
+ 0 1 HiVal{
+ /tableIndex xdf
+ Lookup dup type/stringtype eq{
+ compCnt tableIndex map_index
+ }{
+ exec
+ }ifelse
+ /Names where{
+ pop setdevicencolor
+ }{
+ setsepcolor
+ }ifelse
+ currentgray
+ tableIndex exch
+ 255 mul cvi
+ NewLookup 3 1 roll put
+ }for
+ [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt
+ end
+ }{
+ level3
+ {
+ currentdict/Names known{
+ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt
+ }{
+ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt
+ }ifelse
+ }{
+ [/Indexed MappedCSA HiVal
+ [
+ currentdict/Names known{
+ Lookup dup type/stringtype eq
+ {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx}
+ {/exec cvx}ifelse
+ /TintTransform load/exec cvx
+ }{
+ Lookup dup type/stringtype eq
+ {/exch cvx/get cvx 255/div cvx}
+ {/exec cvx}ifelse
+ CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx
+ }ifelse
+ ]cvx
+ ]setcolorspace_opt
+ }ifelse
+ }ifelse
+ end
+ set_crd
+ }
+ {
+ CSA map_csa
+ AGMCORE_host_sep level2 not and{
+ 0 0 0 0 setcmykcolor
+ }{
+ [/Indexed MappedCSA
+ level2 not has_color not and{
+ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{
+ pop[/DeviceGray]
+ }if
+ HiVal GrayLookup
+ }{
+ HiVal
+ currentdict/RangeArray known{
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ Lookup exch
+ dup HiVal gt{
+ pop HiVal
+ }if
+ NComponents mul NComponents getinterval{}forall
+ NComponents 1 sub -1 0{
+ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+ NComponents 1 roll
+ }for
+ end
+ }bind
+ }{
+ Lookup
+ }ifelse
+ }ifelse
+ ]setcolorspace_opt
+ set_crd
+ }ifelse
+ }ifelse
+ end
+}def
+/setindexedcolor
+{
+ AGMCORE_host_sep{
+ /indexed_colorspace_dict AGMCORE_gget
+ begin
+ currentdict/CSDBase known{
+ CSDBase/CSD get_res begin
+ currentdict/Names known{
+ map_indexed_devn
+ devn
+ }
+ {
+ Lookup 1 3 -1 roll map_index
+ sep
+ }ifelse
+ end
+ }{
+ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll
+ map_index
+ MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse
+ }ifelse
+ end
+ }{
+ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{
+ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin
+ map_indexed_devn
+ devn
+ end
+ }
+ {
+ setcolor
+ }ifelse
+ }ifelse
+}def
+/ignoreimagedata
+{
+ currentoverprint not{
+ gsave
+ dup clonedict begin
+ 1 setgray
+ /Decode[0 1]def
+ /DataSource<FF>def
+ /MultipleDataSources false def
+ /BitsPerComponent 8 def
+ currentdict end
+ systemdict/image gx
+ grestore
+ }if
+ consumeimagedata
+}def
+/add_res
+{
+ dup/CSD eq{
+ pop
+ //Adobe_AGM_Core begin
+ /AGMCORE_CSD_cache load 3 1 roll put
+ end
+ }{
+ defineresource pop
+ }ifelse
+}def
+/del_res
+{
+ {
+ aload pop exch
+ dup/CSD eq{
+ pop
+ {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall
+ }{
+ exch
+ {1 index undefineresource}forall
+ pop
+ }ifelse
+ }forall
+}def
+/get_res
+{
+ dup/CSD eq{
+ pop
+ dup type dup/nametype eq exch/stringtype eq or{
+ AGMCORE_CSD_cache exch get
+ }if
+ }{
+ findresource
+ }ifelse
+}def
+/get_csa_by_name
+{
+ dup type dup/nametype eq exch/stringtype eq or{
+ /CSA get_res
+ }if
+}def
+/paintproc_buf_init
+{
+ /count get 0 0 put
+}def
+/paintproc_buf_next
+{
+ dup/count get dup 0 get
+ dup 3 1 roll
+ 1 add 0 xpt
+ get
+}def
+/cachepaintproc_compress
+{
+ 5 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ /string_size 16000 def
+ /readbuffer string_size string def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ /LZWFilter
+ {
+ exch
+ dup length 0 eq{
+ pop
+ }{
+ ppdict dup length 1 sub 3 -1 roll put
+ }ifelse
+ {string_size}{0}ifelse string
+ }/LZWEncode filter def
+ {
+ ReadFilter readbuffer readstring
+ exch LZWFilter exch writestring
+ not{exit}if
+ }loop
+ LZWFilter closefile
+ ppdict
+ end
+}def
+/cachepaintproc
+{
+ 2 dict begin
+ currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def
+ /ppdict 20 dict def
+ currentglobal true setglobal
+ ppdict 1 array dup 0 1 put/count xpt
+ setglobal
+ {
+ ReadFilter 16000 string readstring exch
+ ppdict dup length 1 sub 3 -1 roll put
+ not{exit}if
+ }loop
+ ppdict dup dup length 1 sub()put
+ end
+}def
+/make_pattern
+{
+ exch clonedict exch
+ dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform
+ exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub
+ exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub
+ matrix translate exch matrix concatmatrix
+ 1 index begin
+ BBox 0 get XStep div cvi XStep mul/xshift exch neg def
+ BBox 1 get YStep div cvi YStep mul/yshift exch neg def
+ BBox 0 get xshift add
+ BBox 1 get yshift add
+ BBox 2 get xshift add
+ BBox 3 get yshift add
+ 4 array astore
+ /BBox exch def
+ [xshift yshift/translate load null/exec load]dup
+ 3/PaintProc load put cvx/PaintProc exch def
+ end
+ gsave 0 setgray
+ makepattern
+ grestore
+}def
+/set_pattern
+{
+ dup/PatternType get 1 eq{
+ dup/PaintType get 1 eq{
+ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray
+ }if
+ }if
+ setpattern
+}def
+/setcolorspace_opt
+{
+ dup currentcolorspace eq{pop}{setcolorspace}ifelse
+}def
+/updatecolorrendering
+{
+ currentcolorrendering/RenderingIntent known{
+ currentcolorrendering/RenderingIntent get
+ }
+ {
+ Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd AGMCORE_gget dup null eq
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd AGMCORE_gget dup null eq
+ }
+ {
+ /perceptual_crd AGMCORE_gget dup null eq
+ }ifelse
+ }ifelse
+ }ifelse
+ {
+ pop null
+ }
+ {
+ /RenderingIntent known{null}{Intent}ifelse
+ }ifelse
+ }ifelse
+ Intent ne{
+ Intent/ColorRendering{findresource}stopped
+ {
+ pop pop systemdict/findcolorrendering known
+ {
+ Intent findcolorrendering
+ {
+ /ColorRendering findresource true exch
+ }
+ {
+ /ColorRendering findresource
+ product(Xerox Phaser 5400)ne
+ exch
+ }ifelse
+ dup Intent/AbsoluteColorimetric eq
+ {
+ /absolute_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/RelativeColorimetric eq
+ {
+ /relative_colorimetric_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Saturation eq
+ {
+ /saturation_crd exch AGMCORE_gput
+ }
+ {
+ Intent/Perceptual eq
+ {
+ /perceptual_crd exch AGMCORE_gput
+ }
+ {
+ pop
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ 1 index{exch}{pop}ifelse
+ }
+ {false}ifelse
+ }
+ {true}ifelse
+ {
+ dup begin
+ currentdict/TransformPQR known{
+ currentdict/TransformPQR get aload pop
+ 3{{}eq 3 1 roll}repeat or or
+ }
+ {true}ifelse
+ currentdict/MatrixPQR known{
+ currentdict/MatrixPQR get aload pop
+ 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll
+ 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq
+ and and and and and and and and
+ }
+ {true}ifelse
+ end
+ or
+ {
+ clonedict begin
+ /TransformPQR[
+ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div
+ 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div
+ 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind
+ {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div
+ 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind
+ ]def
+ /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def
+ /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def
+ currentdict end
+ }if
+ setcolorrendering_opt
+ }if
+ }if
+}def
+/set_crd
+{
+ AGMCORE_host_sep not level2 and{
+ currentdict/ColorRendering known{
+ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if
+ }{
+ currentdict/Intent known{
+ updatecolorrendering
+ }if
+ }ifelse
+ currentcolorspace dup type/arraytype eq
+ {0 get}if
+ /DeviceRGB eq
+ {
+ currentdict/UCR known
+ {/UCR}{/AGMCORE_currentucr}ifelse
+ load setundercolorremoval
+ currentdict/BG known
+ {/BG}{/AGMCORE_currentbg}ifelse
+ load setblackgeneration
+ }if
+ }if
+}def
+/set_ucrbg
+{
+ dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration
+ dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval
+}def
+/setcolorrendering_opt
+{
+ dup currentcolorrendering eq{
+ pop
+ }{
+ clonedict
+ begin
+ /Intent Intent def
+ currentdict
+ end
+ setcolorrendering
+ }ifelse
+}def
+/cpaint_gcomp
+{
+ convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not
+ {
+ (%end_cpaint_gcomp)flushinput
+ }if
+}def
+/cpaint_gsep
+{
+ //Adobe_AGM_Core/AGMCORE_ConvertToProcess get
+ {
+ (%end_cpaint_gsep)flushinput
+ }if
+}def
+/cpaint_gend
+{np}def
+/T1_path
+{
+ currentfile token pop currentfile token pop mo
+ {
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 exch rlineto
+ currentfile token pop dup type/stringtype eq
+ {pop exit}if
+ 0 rlineto
+ }loop
+}def
+/T1_gsave
+ level3
+ {/clipsave}
+ {/gsave}ifelse
+ load def
+/T1_grestore
+ level3
+ {/cliprestore}
+ {/grestore}ifelse
+ load def
+/set_spot_alias_ary
+{
+ dup inherit_aliases
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf
+}def
+/set_spot_normalization_ary
+{
+ dup inherit_aliases
+ dup length
+ /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if
+ array
+ //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf
+ /AGMCORE_SpotAliasAry where{
+ pop
+ AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval
+ AGMCORE_SpotAliasAry length
+ }{0}ifelse
+ AGMCORE_SpotAliasAry2 3 1 roll exch putinterval
+ true set_spot_alias
+}def
+/inherit_aliases
+{
+ {dup/Name get map_alias{/CSD put}{pop}ifelse}forall
+}def
+/set_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias 3 -1 roll put
+ }{
+ pop
+ }ifelse
+}def
+/current_spot_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ /AGMCORE_current_spot_alias get
+ }{
+ false
+ }ifelse
+}def
+/map_alias
+{
+ /AGMCORE_SpotAliasAry2 where{
+ begin
+ /AGMCORE_name xdf
+ false
+ AGMCORE_SpotAliasAry2{
+ dup/Name get AGMCORE_name eq{
+ /CSD get/CSD get_res
+ exch pop true
+ exit
+ }{
+ pop
+ }ifelse
+ }forall
+ end
+ }{
+ pop false
+ }ifelse
+}bdf
+/spot_alias
+{
+ true set_spot_alias
+ /AGMCORE_&setcustomcolor AGMCORE_key_known not{
+ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put
+ }if
+ /customcolor_tint 1 AGMCORE_gput
+ //Adobe_AGM_Core begin
+ /setcustomcolor
+ {
+ //Adobe_AGM_Core begin
+ dup/customcolor_tint exch AGMCORE_gput
+ 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not
+ current_spot_alias and{1 index 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /sep_colorspace_dict AGMCORE_gget null ne{
+ exch pop/sep_tint AGMCORE_gget exch
+ }if
+ mark 3 1 roll
+ setsepcolorspace
+ counttomark 0 ne{
+ setsepcolor
+ }if
+ pop
+ pop
+ true set_spot_alias
+ }{
+ AGMCORE_&setcustomcolor
+ }ifelse
+ end
+ }bdf
+ end
+}def
+/begin_feature
+{
+ Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put
+ count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put
+ {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if
+}def
+/end_feature
+{
+ 2 dict begin
+ /spd/setpagedevice load def
+ /setpagedevice{get_gstate spd set_gstate}def
+ stopped{$error/newerror false put}if
+ end
+ count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse
+ countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse
+ {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if
+}def
+/set_negative
+{
+ //Adobe_AGM_Core begin
+ /AGMCORE_inverting exch def
+ level2{
+ currentpagedevice/NegativePrint known AGMCORE_distilling not and{
+ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{
+ true begin_feature true{
+ <</NegativePrint//Adobe_AGM_Core/AGMCORE_inverting get>>setpagedevice
+ }end_feature
+ }if
+ /AGMCORE_inverting false def
+ }if
+ }if
+ AGMCORE_inverting{
+ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer
+ AGMCORE_distilling{
+ erasepage
+ }{
+ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse
+ /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore
+ }ifelse
+ }if
+ end
+}def
+/lw_save_restore_override{
+ /md where{
+ pop
+ md begin
+ initializepage
+ /initializepage{}def
+ /pmSVsetup{}def
+ /endp{}def
+ /pse{}def
+ /psb{}def
+ /orig_showpage where
+ {pop}
+ {/orig_showpage/showpage load def}
+ ifelse
+ /showpage{orig_showpage gR}def
+ end
+ }if
+}def
+/pscript_showpage_override{
+ /NTPSOct95 where
+ {
+ begin
+ showpage
+ save
+ /showpage/restore load def
+ /restore{exch pop}def
+ end
+ }if
+}def
+/driver_media_override
+{
+ /md where{
+ pop
+ md/initializepage known{
+ md/initializepage{}put
+ }if
+ md/rC known{
+ md/rC{4{pop}repeat}put
+ }if
+ }if
+ /mysetup where{
+ /mysetup[1 0 0 1 0 0]put
+ }if
+ Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put
+ level2
+ {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if
+}def
+/driver_check_media_override
+{
+ /PrepsDict where
+ {pop}
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq
+ {
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and
+ Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and
+ }if
+ {
+ Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix
+ }if
+ }ifelse
+}def
+AGMCORE_err_strings begin
+ /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def
+ /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def
+ /AGMCORE_invalid_color_space(This job contains an invalid color space. )def
+end
+/set_def_ht
+{AGMCORE_def_ht sethalftone}def
+/set_def_flat
+{AGMCORE_Default_flatness setflat}def
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 2.31 0
+%%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved.
+%%Version: 2.31 0
+10 dict begin
+/Adobe_CoolType_Passthru currentdict def
+/Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def
+Adobe_CoolType_Core_Defined
+ {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def}
+if
+userdict/Adobe_CoolType_Core 70 dict dup begin put
+/Adobe_CoolType_Version 2.31 def
+/Level2?
+ systemdict/languagelevel known dup
+ {pop systemdict/languagelevel get 2 ge}
+ if def
+Level2? not
+ {
+ /currentglobal false def
+ /setglobal/pop load def
+ /gcheck{pop false}bind def
+ /currentpacking false def
+ /setpacking/pop load def
+ /SharedFontDirectory 0 dict def
+ }
+if
+currentpacking
+true setpacking
+currentglobal false setglobal
+userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+if
+get
+ begin
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ end
+setglobal
+currentglobal true setglobal
+userdict/Adobe_CoolType_GVMFonts known not
+ {userdict/Adobe_CoolType_GVMFonts 10 dict put}
+if
+setglobal
+currentglobal false setglobal
+userdict/Adobe_CoolType_LVMFonts known not
+ {userdict/Adobe_CoolType_LVMFonts 10 dict put}
+if
+setglobal
+/ct_VMDictPut
+ {
+ dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse
+ 3 1 roll put
+ }bind def
+/ct_VMDictUndef
+ {
+ dup Adobe_CoolType_GVMFonts exch known
+ {Adobe_CoolType_GVMFonts exch undef}
+ {
+ dup Adobe_CoolType_LVMFonts exch known
+ {Adobe_CoolType_LVMFonts exch undef}
+ {pop}
+ ifelse
+ }ifelse
+ }bind def
+/ct_str1 1 string def
+/ct_xshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_yshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ _ct_x _ct_y moveto
+ 0 exch
+ rmoveto
+ }
+ ifelse
+ /_ct_i _ct_i 1 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/ct_xyshow
+{
+ /_ct_na exch def
+ /_ct_i 0 def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ {
+ pop pop
+ ct_str1 exch 0 exch put
+ ct_str1 show
+ {_ct_na _ct_i get}stopped
+ {pop pop}
+ {
+ {_ct_na _ct_i 1 add get}stopped
+ {pop pop pop}
+ {
+ _ct_x _ct_y moveto
+ rmoveto
+ }
+ ifelse
+ }
+ ifelse
+ /_ct_i _ct_i 2 add def
+ currentpoint
+ /_ct_y exch def
+ /_ct_x exch def
+ }
+ exch
+ @cshow
+}bind def
+/xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def
+/ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def
+/xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def
+currentglobal true setglobal
+/ct_T3Defs
+{
+/BuildChar
+{
+ 1 index/Encoding get exch get
+ 1 index/BuildGlyph get exec
+}bind def
+/BuildGlyph
+{
+ exch begin
+ GlyphProcs exch get exec
+ end
+}bind def
+}bind def
+setglobal
+/@_SaveStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@vmState currentglobal def false setglobal
+ @opStackCountByLevel
+ @opStackLevel
+ 2 copy known not
+ {
+ 2 copy
+ 3 dict dup/args
+ 7 index
+ 5 add array put
+ put get
+ }
+ {
+ get dup/args get dup length 3 index lt
+ {
+ dup length 5 add array exch
+ 1 index exch 0 exch putinterval
+ 1 index exch/args exch put
+ }
+ {pop}
+ ifelse
+ }
+ ifelse
+ begin
+ count 1 sub
+ 1 index lt
+ {pop count}
+ if
+ dup/argCount exch def
+ dup 0 gt
+ {
+ args exch 0 exch getinterval
+ astore pop
+ }
+ {pop}
+ ifelse
+ count
+ /restCount exch def
+ end
+ /@opStackLevel @opStackLevel 1 add def
+ countdictstack 1 sub
+ @dictStackCountByLevel exch @dictStackLevel exch put
+ /@dictStackLevel @dictStackLevel 1 add def
+ @vmState setglobal
+ end
+ }bind def
+/@_RestoreStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ @opStackCountByLevel @opStackLevel get
+ begin
+ count restCount sub dup 0 gt
+ {{pop}repeat}
+ {pop}
+ ifelse
+ args 0 argCount getinterval{}forall
+ end
+ /@dictStackLevel @dictStackLevel 1 sub def
+ @dictStackCountByLevel @dictStackLevel get
+ end
+ countdictstack exch sub dup 0 gt
+ {{end}repeat}
+ {pop}
+ ifelse
+ }bind def
+/@_PopStackLevels
+ {
+ Adobe_CoolType_Data
+ begin
+ /@opStackLevel @opStackLevel 1 sub def
+ /@dictStackLevel @dictStackLevel 1 sub def
+ end
+ }bind def
+/@Raise
+ {
+ exch cvx exch errordict exch get exec
+ stop
+ }bind def
+/@ReRaise
+ {
+ cvx $error/errorname get errordict exch get exec
+ stop
+ }bind def
+/@Stopped
+ {
+ 0 @#Stopped
+ }bind def
+/@#Stopped
+ {
+ @_SaveStackLevels
+ stopped
+ {@_RestoreStackLevels true}
+ {@_PopStackLevels false}
+ ifelse
+ }bind def
+/@Arg
+ {
+ Adobe_CoolType_Data
+ begin
+ @opStackCountByLevel @opStackLevel 1 sub get
+ begin
+ args exch
+ argCount 1 sub exch sub get
+ end
+ end
+ }bind def
+currentglobal true setglobal
+/CTHasResourceForAllBug
+ Level2?
+ {
+ 1 dict dup
+ /@shouldNotDisappearDictValue true def
+ Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put
+ begin
+ count @_SaveStackLevels
+ {(*){pop stop}128 string/Category resourceforall}
+ stopped pop
+ @_RestoreStackLevels
+ currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll
+ {
+ /@shouldNotDisappearDictValue known
+ {
+ {
+ end
+ currentdict 1 index eq
+ {pop exit}
+ if
+ }
+ loop
+ }
+ if
+ }
+ {
+ pop
+ end
+ }
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+true setglobal
+/CTHasResourceStatusBug
+ Level2?
+ {
+ mark
+ {/steveamerige/Category resourcestatus}
+ stopped
+ {cleartomark true}
+ {cleartomark currentglobal not}
+ ifelse
+ }
+ {false}
+ ifelse
+ def
+setglobal
+/CTResourceStatus
+ {
+ mark 3 1 roll
+ /Category findresource
+ begin
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ end
+ }bind def
+/CTWorkAroundBugs
+ {
+ Level2?
+ {
+ /cid_PreLoad/ProcSet resourcestatus
+ {
+ pop pop
+ currentglobal
+ mark
+ {
+ (*)
+ {
+ dup/CMap CTHasResourceStatusBug
+ {CTResourceStatus}
+ {resourcestatus}
+ ifelse
+ {
+ pop dup 0 eq exch 1 eq or
+ {
+ dup/CMap findresource gcheck setglobal
+ /CMap undefineresource
+ }
+ {
+ pop CTHasResourceForAllBug
+ {exit}
+ {stop}
+ ifelse
+ }
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ 128 string/CMap resourceforall
+ }
+ stopped
+ {cleartomark}
+ stopped pop
+ setglobal
+ }
+ if
+ }
+ if
+ }bind def
+/ds
+ {
+ Adobe_CoolType_Core
+ begin
+ CTWorkAroundBugs
+ /mo/moveto load def
+ /nf/newencodedfont load def
+ /msf{makefont setfont}bind def
+ /uf{dup undefinefont ct_VMDictUndef}bind def
+ /ur/undefineresource load def
+ /chp/charpath load def
+ /awsh/awidthshow load def
+ /wsh/widthshow load def
+ /ash/ashow load def
+ /@xshow/xshow load def
+ /@yshow/yshow load def
+ /@xyshow/xyshow load def
+ /@cshow/cshow load def
+ /sh/show load def
+ /rp/repeat load def
+ /.n/.notdef def
+ end
+ currentglobal false setglobal
+ userdict/Adobe_CoolType_Data 2 copy known not
+ {2 copy 10 dict put}
+ if
+ get
+ begin
+ /AddWidths? false def
+ /CC 0 def
+ /charcode 2 string def
+ /@opStackCountByLevel 32 dict def
+ /@opStackLevel 0 def
+ /@dictStackCountByLevel 32 dict def
+ /@dictStackLevel 0 def
+ /InVMFontsByCMap 10 dict def
+ /InVMDeepCopiedFonts 10 dict def
+ end
+ setglobal
+ }bind def
+/dt
+ {
+ currentdict Adobe_CoolType_Core eq
+ {end}
+ if
+ }bind def
+/ps
+ {
+ Adobe_CoolType_Core begin
+ Adobe_CoolType_GVMFonts begin
+ Adobe_CoolType_LVMFonts begin
+ SharedFontDirectory begin
+ }bind def
+/pt
+ {
+ end
+ end
+ end
+ end
+ }bind def
+/unload
+ {
+ systemdict/languagelevel known
+ {
+ systemdict/languagelevel get 2 ge
+ {
+ userdict/Adobe_CoolType_Core 2 copy known
+ {undef}
+ {pop pop}
+ ifelse
+ }
+ if
+ }
+ if
+ }bind def
+/ndf
+ {
+ 1 index where
+ {pop pop pop}
+ {dup xcheck{bind}if def}
+ ifelse
+ }def
+/findfont systemdict
+ begin
+ userdict
+ begin
+ /globaldict where{/globaldict get begin}if
+ dup where pop exch get
+ /globaldict where{pop end}if
+ end
+ end
+Adobe_CoolType_Core_Defined
+ {/systemfindfont exch def}
+ {
+ /findfont 1 index def
+ /systemfindfont exch def
+ }
+ifelse
+/undefinefont
+ {pop}ndf
+/copyfont
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ dup null eq{0}{dup length}ifelse
+ 2 index length add 1 add dict
+ begin
+ exch
+ {
+ 1 index/FID eq
+ {pop pop}
+ {def}
+ ifelse
+ }
+ forall
+ dup null eq
+ {pop}
+ {{def}forall}
+ ifelse
+ currentdict
+ end
+ exch setglobal
+ }bind def
+/copyarray
+ {
+ currentglobal exch
+ dup gcheck setglobal
+ dup length array copy
+ exch setglobal
+ }bind def
+/newencodedfont
+ {
+ currentglobal
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ {
+ FontDirectory 3 index known
+ {FontDirectory 3 index get/FontReferenced known}
+ {
+ SharedFontDirectory 3 index known
+ {SharedFontDirectory 3 index get/FontReferenced known}
+ {false}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ dup
+ {
+ 3 index findfont/FontReferenced get
+ 2 index dup type/nametype eq
+ {findfont}
+ if ne
+ {pop false}
+ if
+ }
+ if
+ dup
+ {
+ 1 index dup type/nametype eq
+ {findfont}
+ if
+ dup/CharStrings known
+ {
+ /CharStrings get length
+ 4 index findfont/CharStrings get length
+ ne
+ {
+ pop false
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ if
+ {
+ pop
+ 1 index findfont
+ /Encoding get exch
+ 0 1 255
+ {2 copy get 3 index 3 1 roll put}
+ for
+ pop pop pop
+ }
+ {
+ currentglobal
+ 4 1 roll
+ dup type/nametype eq
+ {findfont}
+ if
+ dup gcheck setglobal
+ dup dup maxlength 2 add dict
+ begin
+ exch
+ {
+ 1 index/FID ne
+ 2 index/Encoding ne and
+ {def}
+ {pop pop}
+ ifelse
+ }
+ forall
+ /FontReferenced exch def
+ /Encoding exch dup length array copy def
+ /FontName 1 index dup type/stringtype eq{cvn}if def dup
+ currentdict
+ end
+ definefont ct_VMDictPut
+ setglobal
+ }
+ ifelse
+ }bind def
+/SetSubstituteStrategy
+ {
+ $SubstituteFont
+ begin
+ dup type/dicttype ne
+ {0 dict}
+ if
+ currentdict/$Strategies known
+ {
+ exch $Strategies exch
+ 2 copy known
+ {
+ get
+ 2 copy maxlength exch maxlength add dict
+ begin
+ {def}forall
+ {def}forall
+ currentdict
+ dup/$Init known
+ {dup/$Init get exec}
+ if
+ end
+ /$Strategy exch def
+ }
+ {pop pop pop}
+ ifelse
+ }
+ {pop pop}
+ ifelse
+ end
+ }bind def
+/scff
+ {
+ $SubstituteFont
+ begin
+ dup type/stringtype eq
+ {dup length exch}
+ {null}
+ ifelse
+ /$sname exch def
+ /$slen exch def
+ /$inVMIndex
+ $sname null eq
+ {
+ 1 index $str cvs
+ dup length $slen sub $slen getinterval cvn
+ }
+ {$sname}
+ ifelse def
+ end
+ {findfont}
+ @Stopped
+ {
+ dup length 8 add string exch
+ 1 index 0(BadFont:)putinterval
+ 1 index exch 8 exch dup length string cvs putinterval cvn
+ {findfont}
+ @Stopped
+ {pop/Courier findfont}
+ if
+ }
+ if
+ $SubstituteFont
+ begin
+ /$sname null def
+ /$slen 0 def
+ /$inVMIndex null def
+ end
+ }bind def
+/isWidthsOnlyFont
+ {
+ dup/WidthsOnly known
+ {pop pop true}
+ {
+ dup/FDepVector known
+ {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall}
+ {
+ dup/FDArray known
+ {/FDArray get{isWidthsOnlyFont dup{exit}if}forall}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }bind def
+/ct_StyleDicts 4 dict dup begin
+ /Adobe-Japan1 4 dict dup begin
+ Level2?
+ {
+ /Serif
+ /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMin-W3/CIDFont resourcestatus
+ {pop pop/HeiseiMin-W3}
+ {/Ryumin-Light}
+ ifelse
+ }
+ {/Ryumin-Light}
+ ifelse
+ }
+ ifelse
+ def
+ /SansSerif
+ /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiKakuGo-W5/CIDFont resourcestatus
+ {pop pop/HeiseiKakuGo-W5}
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ {/GothicBBB-Medium}
+ ifelse
+ }
+ ifelse
+ def
+ /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /CIDFont/Category resourcestatus
+ {
+ pop pop
+ /HeiseiMaruGo-W4/CIDFont resourcestatus
+ {pop pop/HeiseiMaruGo-W4}
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ {
+ /Jun101-Light-RKSJ-H/Font resourcestatus
+ {pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ /RoundSansSerif exch def
+ /Default Serif def
+ }
+ {
+ /Serif/Ryumin-Light def
+ /SansSerif/GothicBBB-Medium def
+ {
+ (fonts/Jun101-Light-83pv-RKSJ-H)status
+ }stopped
+ {pop}{
+ {pop pop pop pop/Jun101-Light}
+ {SansSerif}
+ ifelse
+ /RoundSansSerif exch def
+ }ifelse
+ /Default Serif def
+ }
+ ifelse
+ end
+ def
+ /Adobe-Korea1 4 dict dup begin
+ /Serif/HYSMyeongJo-Medium def
+ /SansSerif/HYGoThic-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-GB1 4 dict dup begin
+ /Serif/STSong-Light def
+ /SansSerif/STHeiti-Regular def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+ /Adobe-CNS1 4 dict dup begin
+ /Serif/MKai-Medium def
+ /SansSerif/MHei-Medium def
+ /RoundSansSerif SansSerif def
+ /Default Serif def
+ end
+ def
+end
+def
+Level2?{currentglobal true setglobal}if
+/ct_BoldRomanWidthProc
+ {
+ stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth
+ 0 0
+ }bind def
+/ct_Type0WidthProc
+ {
+ dup stringwidth 0 0 moveto
+ 2 index true charpath pathbbox
+ 0 -1
+ 7 index 2 div .88
+ setcachedevice2
+ pop
+ 0 0
+ }bind def
+/ct_Type0WMode1WidthProc
+ {
+ dup stringwidth
+ pop 2 div neg -0.88
+ 2 copy
+ moveto
+ 0 -1
+ 5 -1 roll true charpath pathbbox
+ setcachedevice
+ }bind def
+/cHexEncoding
+[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+/ct_BoldBaseFont
+ 11 dict begin
+ /FontType 3 def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /Encoding cHexEncoding def
+ /_setwidthProc/ct_BoldRomanWidthProc load def
+ /_bcstr1 1 string def
+ /BuildChar
+ {
+ exch begin
+ _basefont setfont
+ _bcstr1 dup 0 4 -1 roll put
+ dup
+ _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+systemdict/composefont known
+{
+/ct_DefineIdentity-H
+{
+ /Identity-H/CMap resourcestatus
+ {
+ pop pop
+ }
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+}
+def
+/ct_BoldBaseCIDFont
+ 11 dict begin
+ /CIDFontType 1 def
+ /CIDFontName/ct_BoldBaseCIDFont def
+ /FontMatrix[1 0 0 1 0 0]def
+ /FontBBox[0 0 1 1]def
+ /_setwidthProc/ct_Type0WidthProc load def
+ /_bcstr2 2 string def
+ /BuildGlyph
+ {
+ exch begin
+ _basefont setfont
+ _bcstr2 1 2 index 256 mod put
+ _bcstr2 0 3 -1 roll 256 idiv put
+ _bcstr2 dup _setwidthProc
+ 3 copy
+ moveto
+ show
+ _basefonto setfont
+ moveto
+ show
+ end
+ }bind def
+ currentdict
+ end
+def
+}if
+Level2?{setglobal}if
+/ct_CopyFont{
+ {
+ 1 index/FID ne 2 index/UniqueID ne and
+ {def}{pop pop}ifelse
+ }forall
+}bind def
+/ct_Type0CopyFont
+{
+ exch
+ dup length dict
+ begin
+ ct_CopyFont
+ [
+ exch
+ FDepVector
+ {
+ dup/FontType get 0 eq
+ {
+ 1 index ct_Type0CopyFont
+ /_ctType0 exch definefont
+ }
+ {
+ /_ctBaseFont exch
+ 2 index exec
+ }
+ ifelse
+ exch
+ }
+ forall
+ pop
+ ]
+ /FDepVector exch def
+ currentdict
+ end
+}bind def
+/ct_MakeBoldFont
+{
+ dup/ct_SyntheticBold known
+ {
+ dup length 3 add dict begin
+ ct_CopyFont
+ /ct_StrokeWidth .03 0 FontMatrix idtransform pop def
+ /ct_SyntheticBold true def
+ currentdict
+ end
+ definefont
+ }
+ {
+ dup dup length 3 add dict
+ begin
+ ct_CopyFont
+ /PaintType 2 def
+ /StrokeWidth .03 0 FontMatrix idtransform pop def
+ /dummybold currentdict
+ end
+ definefont
+ dup/FontType get dup 9 ge exch 11 le and
+ {
+ ct_BoldBaseCIDFont
+ dup length 3 add dict copy begin
+ dup/CIDSystemInfo get/CIDSystemInfo exch def
+ ct_DefineIdentity-H
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefont exch def
+ /_Type0Identity/Identity-H 3 -1 roll[exch]composefont
+ /_basefonto exch def
+ currentdict
+ end
+ /CIDFont defineresource
+ }
+ {
+ ct_BoldBaseFont
+ dup length 3 add dict copy begin
+ /_basefont exch def
+ /_basefonto exch def
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+}bind def
+/ct_MakeBold{
+ 1 index
+ 1 index
+ findfont
+ currentglobal 5 1 roll
+ dup gcheck setglobal
+ dup
+ /FontType get 0 eq
+ {
+ dup/WMode known{dup/WMode get 1 eq}{false}ifelse
+ version length 4 ge
+ and
+ {version 0 4 getinterval cvi 2015 ge}
+ {true}
+ ifelse
+ {/ct_Type0WidthProc}
+ {/ct_Type0WMode1WidthProc}
+ ifelse
+ ct_BoldBaseFont/_setwidthProc 3 -1 roll load put
+ {ct_MakeBoldFont}ct_Type0CopyFont definefont
+ }
+ {
+ dup/_fauxfont known not 1 index/SubstMaster known not and
+ {
+ ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put
+ ct_MakeBoldFont
+ }
+ {
+ 2 index 2 index eq
+ {exch pop }
+ {
+ dup length dict begin
+ ct_CopyFont
+ currentdict
+ end
+ definefont
+ }
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ pop pop pop
+ setglobal
+}bind def
+/?str1 256 string def
+/?set
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound false def
+ /$fontname 1 index def
+ /$doSmartSub false def
+ end
+ dup
+ findfont
+ $SubstituteFont
+ begin
+ $substituteFound
+ {false}
+ {
+ dup/FontName known
+ {
+ dup/FontName get $fontname eq
+ 1 index/DistillerFauxFont known not and
+ /currentdistillerparams where
+ {pop false 2 index isWidthsOnlyFont not and}
+ if
+ }
+ {false}
+ ifelse
+ }
+ ifelse
+ exch pop
+ /$doSmartSub true def
+ end
+ {
+ 5 1 roll pop pop pop pop
+ findfont
+ }
+ {
+ 1 index
+ findfont
+ dup/FontType get 3 eq
+ {
+ 6 1 roll pop pop pop pop pop false
+ }
+ {pop true}
+ ifelse
+ {
+ $SubstituteFont
+ begin
+ pop pop
+ /$styleArray 1 index def
+ /$regOrdering 2 index def
+ pop pop
+ 0 1 $styleArray length 1 sub
+ {
+ $styleArray exch get
+ ct_StyleDicts $regOrdering
+ 2 copy known
+ {
+ get
+ exch 2 copy known not
+ {pop/Default}
+ if
+ get
+ dup type/nametype eq
+ {
+ ?str1 cvs length dup 1 add exch
+ ?str1 exch(-)putinterval
+ exch dup length exch ?str1 exch 3 index exch putinterval
+ add ?str1 exch 0 exch getinterval cvn
+ }
+ {
+ pop pop/Unknown
+ }
+ ifelse
+ }
+ {
+ pop pop pop pop/Unknown
+ }
+ ifelse
+ }
+ for
+ end
+ findfont
+ }if
+ }
+ ifelse
+ currentglobal false setglobal 3 1 roll
+ null copyfont definefont pop
+ setglobal
+ }bind def
+setpacking
+userdict/$SubstituteFont 25 dict put
+1 dict
+ begin
+ /SubstituteFont
+ dup $error exch 2 copy known
+ {get}
+ {pop pop{pop/Courier}bind}
+ ifelse def
+ /currentdistillerparams where dup
+ {
+ pop pop
+ currentdistillerparams/CannotEmbedFontPolicy 2 copy known
+ {get/Error eq}
+ {pop pop false}
+ ifelse
+ }
+ if not
+ {
+ countdictstack array dictstack 0 get
+ begin
+ userdict
+ begin
+ $SubstituteFont
+ begin
+ /$str 128 string def
+ /$fontpat 128 string def
+ /$slen 0 def
+ /$sname null def
+ /$match false def
+ /$fontname null def
+ /$substituteFound false def
+ /$inVMIndex null def
+ /$doSmartSub true def
+ /$depth 0 def
+ /$fontname null def
+ /$italicangle 26.5 def
+ /$dstack null def
+ /$Strategies 10 dict dup
+ begin
+ /$Type3Underprint
+ {
+ currentglobal exch false setglobal
+ 11 dict
+ begin
+ /UseFont exch
+ $WMode 0 ne
+ {
+ dup length dict copy
+ dup/WMode $WMode put
+ /UseFont exch definefont
+ }
+ if def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /FontType 3 def
+ /FontMatrix[.001 0 0 .001 0 0]def
+ /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def
+ /FontBBox[0 0 0 0]def
+ /CCInfo 7 dict dup
+ begin
+ /cc null def
+ /x 0 def
+ /y 0 def
+ end def
+ /BuildChar
+ {
+ exch
+ begin
+ CCInfo
+ begin
+ 1 string dup 0 3 index put exch pop
+ /cc exch def
+ UseFont 1000 scalefont setfont
+ cc stringwidth/y exch def/x exch def
+ x y setcharwidth
+ $SubstituteFont/$Strategy get/$Underprint get exec
+ 0 0 moveto cc show
+ x y moveto
+ end
+ end
+ }bind def
+ currentdict
+ end
+ exch setglobal
+ }bind def
+ /$GetaTint
+ 2 dict dup
+ begin
+ /$BuildFont
+ {
+ dup/WMode known
+ {dup/WMode get}
+ {0}
+ ifelse
+ /$WMode exch def
+ $fontname exch
+ dup/FontName known
+ {
+ dup/FontName get
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ exch
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index/FontName get known
+ {
+ pop
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ 1 index get
+ null copyfont
+ }
+ {$deepcopyfont}
+ ifelse
+ exch 1 index exch/FontBasedOn exch put
+ dup/FontName $fontname dup type/stringtype eq{cvn}if put
+ definefont
+ Adobe_CoolType_Data/InVMDeepCopiedFonts get
+ begin
+ dup/FontBasedOn get 1 index def
+ end
+ }bind def
+ /$Underprint
+ {
+ gsave
+ x abs y abs gt
+ {/y 1000 def}
+ {/x -1000 def 500 120 translate}
+ ifelse
+ Level2?
+ {
+ [/Separation(All)/DeviceCMYK{0 0 0 1 pop}]
+ setcolorspace
+ }
+ {0 setgray}
+ ifelse
+ 10 setlinewidth
+ x .8 mul
+ [7 3]
+ {
+ y mul 8 div 120 sub x 10 div exch moveto
+ 0 y 4 div neg rlineto
+ dup 0 rlineto
+ 0 y 4 div rlineto
+ closepath
+ gsave
+ Level2?
+ {.2 setcolor}
+ {.8 setgray}
+ ifelse
+ fill grestore
+ stroke
+ }
+ forall
+ pop
+ grestore
+ }bind def
+ end def
+ /$Oblique
+ 1 dict dup
+ begin
+ /$BuildFont
+ {
+ currentglobal exch dup gcheck setglobal
+ null copyfont
+ begin
+ /FontBasedOn
+ currentdict/FontName known
+ {
+ FontName
+ dup type/stringtype eq{cvn}if
+ }
+ {/unnamedfont}
+ ifelse
+ def
+ /FontName $fontname dup type/stringtype eq{cvn}if def
+ /currentdistillerparams where
+ {pop}
+ {
+ /FontInfo currentdict/FontInfo known
+ {FontInfo null copyfont}
+ {2 dict}
+ ifelse
+ dup
+ begin
+ /ItalicAngle $italicangle def
+ /FontMatrix FontMatrix
+ [1 0 ItalicAngle dup sin exch cos div 1 0 0]
+ matrix concatmatrix readonly
+ end
+ 4 2 roll def
+ def
+ }
+ ifelse
+ FontName currentdict
+ end
+ definefont
+ exch setglobal
+ }bind def
+ end def
+ /$None
+ 1 dict dup
+ begin
+ /$BuildFont{}bind def
+ end def
+ end def
+ /$Oblique SetSubstituteStrategy
+ /$findfontByEnum
+ {
+ dup type/stringtype eq{cvn}if
+ dup/$fontname exch def
+ $sname null eq
+ {$str cvs dup length $slen sub $slen getinterval}
+ {pop $sname}
+ ifelse
+ $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval
+ /$match false def
+ $SubstituteFont/$dstack countdictstack array dictstack put
+ mark
+ {
+ $fontpat 0 $slen 7 add getinterval
+ {/$match exch def exit}
+ $str filenameforall
+ }
+ stopped
+ {
+ cleardictstack
+ currentdict
+ true
+ $SubstituteFont/$dstack get
+ {
+ exch
+ {
+ 1 index eq
+ {pop false}
+ {true}
+ ifelse
+ }
+ {begin false}
+ ifelse
+ }
+ forall
+ pop
+ }
+ if
+ cleartomark
+ /$slen 0 def
+ $match false ne
+ {$match(fonts/)anchorsearch pop pop cvn}
+ {/Courier}
+ ifelse
+ }bind def
+ /$ROS 1 dict dup
+ begin
+ /Adobe 4 dict dup
+ begin
+ /Japan1 [/Ryumin-Light/HeiseiMin-W3
+ /GothicBBB-Medium/HeiseiKakuGo-W5
+ /HeiseiMaruGo-W4/Jun101-Light]def
+ /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def
+ /GB1 [/STSong-Light/STHeiti-Regular]def
+ /CNS1 [/MKai-Medium/MHei-Medium]def
+ end def
+ end def
+ /$cmapname null def
+ /$deepcopyfont
+ {
+ dup/FontType get 0 eq
+ {
+ 1 dict dup/FontName/copied put copyfont
+ begin
+ /FDepVector FDepVector copyarray
+ 0 1 2 index length 1 sub
+ {
+ 2 copy get $deepcopyfont
+ dup/FontName/copied put
+ /copied exch definefont
+ 3 copy put pop pop
+ }
+ for
+ def
+ currentdict
+ end
+ }
+ {$Strategies/$Type3Underprint get exec}
+ ifelse
+ }bind def
+ /$buildfontname
+ {
+ dup/CIDFont findresource/CIDSystemInfo get
+ begin
+ Registry length Ordering length Supplement 8 string cvs
+ 3 copy length 2 add add add string
+ dup 5 1 roll dup 0 Registry putinterval
+ dup 4 index(-)putinterval
+ dup 4 index 1 add Ordering putinterval
+ 4 2 roll add 1 add 2 copy(-)putinterval
+ end
+ 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch
+ anchorsearch
+ {pop pop 3 2 roll putinterval cvn/$cmapname exch def}
+ {pop pop pop pop pop}
+ ifelse
+ length
+ $str 1 index(-)putinterval 1 add
+ $str 1 index $cmapname $fontpat cvs putinterval
+ $cmapname length add
+ $str exch 0 exch getinterval cvn
+ }bind def
+ /$findfontByROS
+ {
+ /$fontname exch def
+ $ROS Registry 2 copy known
+ {
+ get Ordering 2 copy known
+ {get}
+ {pop pop[]}
+ ifelse
+ }
+ {pop pop[]}
+ ifelse
+ false exch
+ {
+ dup/CIDFont resourcestatus
+ {
+ pop pop
+ save
+ 1 index/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get}
+ {false}
+ ifelse
+ exch pop
+ exch restore
+ {pop}
+ {exch pop true exit}
+ ifelse
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ {$str cvs $buildfontname}
+ {
+ false(*)
+ {
+ save exch
+ dup/CIDFont findresource
+ dup/WidthsOnly known
+ {dup/WidthsOnly get not}
+ {true}
+ ifelse
+ exch/CIDSystemInfo get
+ dup/Registry get Registry eq
+ exch/Ordering get Ordering eq and and
+ {exch restore exch pop true exit}
+ {pop restore}
+ ifelse
+ }
+ $str/CIDFont resourceforall
+ {$buildfontname}
+ {$fontname $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }bind def
+ end
+ end
+ currentdict/$error known currentdict/languagelevel known and dup
+ {pop $error/SubstituteFont known}
+ if
+ dup
+ {$error}
+ {Adobe_CoolType_Core}
+ ifelse
+ begin
+ {
+ /SubstituteFont
+ /CMap/Category resourcestatus
+ {
+ pop pop
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {
+ $sname null eq
+ {dup $str cvs dup length $slen sub $slen getinterval cvn}
+ {$sname}
+ ifelse
+ Adobe_CoolType_Data/InVMFontsByCMap get
+ 1 index 2 copy known
+ {
+ get
+ false exch
+ {
+ pop
+ currentglobal
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ {
+ FontDirectory 1 index known
+ {exch pop true exit}
+ {
+ GlobalFontDirectory 1 index known
+ {exch pop true exit}
+ {pop}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ forall
+ }
+ {pop pop false}
+ ifelse
+ {
+ exch pop exch pop
+ }
+ {
+ dup/CMap resourcestatus
+ {
+ pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ }
+ {
+ 128 string cvs
+ dup(-)search
+ {
+ 3 1 roll search
+ {
+ 3 1 roll pop
+ {dup cvi}
+ stopped
+ {pop pop pop pop pop $findfontByEnum}
+ {
+ 4 2 roll pop pop
+ exch length
+ exch
+ 2 index length
+ 2 index
+ sub
+ exch 1 sub -1 0
+ {
+ $str cvs dup length
+ 4 index
+ 0
+ 4 index
+ 4 3 roll add
+ getinterval
+ exch 1 index exch 3 index exch
+ putinterval
+ dup/CMap resourcestatus
+ {
+ pop pop
+ 4 1 roll pop pop pop
+ dup/$cmapname exch def
+ /CMap findresource/CIDSystemInfo get{def}forall
+ $findfontByROS
+ true exit
+ }
+ {pop}
+ ifelse
+ }
+ for
+ dup type/booleantype eq
+ {pop}
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ {pop pop pop $findfontByEnum}
+ ifelse
+ }
+ {pop pop $findfontByEnum}
+ ifelse
+ }
+ ifelse
+ }
+ ifelse
+ }
+ {//SubstituteFont exec}
+ ifelse
+ /$slen 0 def
+ end
+ }
+ }
+ {
+ {
+ $SubstituteFont
+ begin
+ /$substituteFound true def
+ dup length $slen gt
+ $sname null ne or
+ $slen 0 gt and
+ {$findfontByEnum}
+ {//SubstituteFont exec}
+ ifelse
+ end
+ }
+ }
+ ifelse
+ bind readonly def
+ Adobe_CoolType_Core/scfindfont/systemfindfont load put
+ }
+ {
+ /scfindfont
+ {
+ $SubstituteFont
+ begin
+ dup systemfindfont
+ dup/FontName known
+ {dup/FontName get dup 3 index ne}
+ {/noname true}
+ ifelse
+ dup
+ {
+ /$origfontnamefound 2 index def
+ /$origfontname 4 index def/$substituteFound true def
+ }
+ if
+ exch pop
+ {
+ $slen 0 gt
+ $sname null ne
+ 3 index length $slen gt or and
+ {
+ pop dup $findfontByEnum findfont
+ dup maxlength 1 add dict
+ begin
+ {1 index/FID eq{pop pop}{def}ifelse}
+ forall
+ currentdict
+ end
+ definefont
+ dup/FontName known{dup/FontName get}{null}ifelse
+ $origfontnamefound ne
+ {
+ $origfontname $str cvs print
+ ( substitution revised, using )print
+ dup/FontName known
+ {dup/FontName get}{(unspecified font)}
+ ifelse
+ $str cvs print(.\n)print
+ }
+ if
+ }
+ {exch pop}
+ ifelse
+ }
+ {exch pop}
+ ifelse
+ end
+ }bind def
+ }
+ ifelse
+ end
+ end
+ Adobe_CoolType_Core_Defined not
+ {
+ Adobe_CoolType_Core/findfont
+ {
+ $SubstituteFont
+ begin
+ $depth 0 eq
+ {
+ /$fontname 1 index dup type/stringtype ne{$str cvs}if def
+ /$substituteFound false def
+ }
+ if
+ /$depth $depth 1 add def
+ end
+ scfindfont
+ $SubstituteFont
+ begin
+ /$depth $depth 1 sub def
+ $substituteFound $depth 0 eq and
+ {
+ $inVMIndex null ne
+ {dup $inVMIndex $AddInVMFont}
+ if
+ $doSmartSub
+ {
+ currentdict/$Strategy known
+ {$Strategy/$BuildFont get exec}
+ if
+ }
+ if
+ }
+ if
+ end
+ }bind put
+ }
+ if
+ }
+ if
+ end
+/$AddInVMFont
+ {
+ exch/FontName 2 copy known
+ {
+ get
+ 1 dict dup begin exch 1 index gcheck def end exch
+ Adobe_CoolType_Data/InVMFontsByCMap get exch
+ $DictAdd
+ }
+ {pop pop pop}
+ ifelse
+ }bind def
+/$DictAdd
+ {
+ 2 copy known not
+ {2 copy 4 index length dict put}
+ if
+ Level2? not
+ {
+ 2 copy get dup maxlength exch length 4 index length add lt
+ 2 copy get dup length 4 index length add exch maxlength 1 index lt
+ {
+ 2 mul dict
+ begin
+ 2 copy get{forall}def
+ 2 copy currentdict put
+ end
+ }
+ {pop}
+ ifelse
+ }
+ if
+ get
+ begin
+ {def}
+ forall
+ end
+ }bind def
+end
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%Copyright: Copyright 1987-2006 Adobe Systems Incorporated.
+%%Version: 1.23 0
+systemdict/languagelevel known dup
+ {currentglobal false setglobal}
+ {false}
+ifelse
+exch
+userdict/Adobe_CoolType_Utility 2 copy known
+ {2 copy get dup maxlength 27 add dict copy}
+ {27 dict}
+ifelse put
+Adobe_CoolType_Utility
+ begin
+ /@eexecStartData
+ <BAB431EA07F209EB8C4348311481D9D3F76E3D15246555577D87BC510ED54E
+ 118C39697FA9F6DB58128E60EB8A12FA24D7CDD2FA94D221FA9EC8DA3E5E6A1C
+ 4ACECC8C2D39C54E7C946031DD156C3A6B4A09AD29E1867A>def
+ /@recognizeCIDFont null def
+ /ct_Level2? exch def
+ /ct_Clone? 1183615869 internaldict dup
+ /CCRun known not
+ exch/eCCRun known not
+ ct_Level2? and or def
+ct_Level2?
+ {globaldict begin currentglobal true setglobal}
+if
+ /ct_AddStdCIDMap
+ ct_Level2?
+ {{
+ mark
+ Adobe_CoolType_Utility/@recognizeCIDFont currentdict put
+ {
+ ((Hex)57 StartData
+ 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0
+ 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60
+ d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8
+ cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec
+ }
+ stopped
+ {
+ cleartomark
+ Adobe_CoolType_Utility/@recognizeCIDFont get
+ countdictstack dup array dictstack
+ exch 1 sub -1 0
+ {
+ 2 copy get 3 index eq
+ {1 index length exch sub 1 sub{end}repeat exit}
+ {pop}
+ ifelse
+ }
+ for
+ pop pop
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }
+ {cleartomark}
+ ifelse
+ }}
+ {{
+ Adobe_CoolType_Utility/@eexecStartData get eexec
+ }}
+ ifelse bind def
+userdict/cid_extensions known
+dup{cid_extensions/cid_UpdateDB known and}if
+ {
+ cid_extensions
+ begin
+ /cid_GetCIDSystemInfo
+ {
+ 1 index type/stringtype eq
+ {exch cvn exch}
+ if
+ cid_extensions
+ begin
+ dup load 2 index known
+ {
+ 2 copy
+ cid_GetStatusInfo
+ dup null ne
+ {
+ 1 index load
+ 3 index get
+ dup null eq
+ {pop pop cid_UpdateDB}
+ {
+ exch
+ 1 index/Created get eq
+ {exch pop exch pop}
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ ifelse
+ }
+ {pop cid_UpdateDB}
+ ifelse
+ }
+ {cid_UpdateDB}
+ ifelse
+ end
+ }bind def
+ end
+ }
+if
+ct_Level2?
+ {end setglobal}
+if
+ /ct_UseNativeCapability? systemdict/composefont known def
+ /ct_MakeOCF 35 dict def
+ /ct_Vars 25 dict def
+ /ct_GlyphDirProcs 6 dict def
+ /ct_BuildCharDict 15 dict dup
+ begin
+ /charcode 2 string def
+ /dst_string 1500 string def
+ /nullstring()def
+ /usewidths? true def
+ end def
+ ct_Level2?{setglobal}{pop}ifelse
+ ct_GlyphDirProcs
+ begin
+ /GetGlyphDirectory
+ {
+ systemdict/languagelevel known
+ {pop/CIDFont findresource/GlyphDirectory get}
+ {
+ 1 index/CIDFont findresource/GlyphDirectory
+ get dup type/dicttype eq
+ {
+ dup dup maxlength exch length sub 2 index lt
+ {
+ dup length 2 index add dict copy 2 index
+ /CIDFont findresource/GlyphDirectory 2 index put
+ }
+ if
+ }
+ if
+ exch pop exch pop
+ }
+ ifelse
+ +
+ }def
+ /+
+ {
+ systemdict/languagelevel known
+ {
+ currentglobal false setglobal
+ 3 dict begin
+ /vm exch def
+ }
+ {1 dict begin}
+ ifelse
+ /$ exch def
+ systemdict/languagelevel known
+ {
+ vm setglobal
+ /gvm currentglobal def
+ $ gcheck setglobal
+ }
+ if
+ ?{$ begin}if
+ }def
+ /?{$ type/dicttype eq}def
+ /|{
+ userdict/Adobe_CoolType_Data known
+ {
+ Adobe_CoolType_Data/AddWidths? known
+ {
+ currentdict Adobe_CoolType_Data
+ begin
+ begin
+ AddWidths?
+ {
+ Adobe_CoolType_Data/CC 3 index put
+ ?{def}{$ 3 1 roll put}ifelse
+ CC charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore
+ currentfont/Widths get exch CC exch put
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ end
+ end
+ }
+ {?{def}{$ 3 1 roll put}ifelse} ifelse
+ }
+ {?{def}{$ 3 1 roll put}ifelse}
+ ifelse
+ }def
+ /!
+ {
+ ?{end}if
+ systemdict/languagelevel known
+ {gvm setglobal}
+ if
+ end
+ }def
+ /:{string currentfile exch readstring pop}executeonly def
+ end
+ ct_MakeOCF
+ begin
+ /ct_cHexEncoding
+ [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+ /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+ /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+ /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+ /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+ /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+ /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+ /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+ /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+ /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+ /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+ /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+ /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+ /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def
+ /ct_CID_STR_SIZE 8000 def
+ /ct_mkocfStr100 100 string def
+ /ct_defaultFontMtx[.001 0 0 .001 0 0]def
+ /ct_1000Mtx[1000 0 0 1000 0 0]def
+ /ct_raise{exch cvx exch errordict exch get exec stop}bind def
+ /ct_reraise
+ {cvx $error/errorname get(Error: )print dup( )cvs print
+ errordict exch get exec stop
+ }bind def
+ /ct_cvnsi
+ {
+ 1 index add 1 sub 1 exch 0 4 1 roll
+ {
+ 2 index exch get
+ exch 8 bitshift
+ add
+ }
+ for
+ exch pop
+ }bind def
+ /ct_GetInterval
+ {
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /dst_index 0 def
+ dup dst_string length gt
+ {dup string/dst_string exch def}
+ if
+ 1 index ct_CID_STR_SIZE idiv
+ /arrayIndex exch def
+ 2 index arrayIndex get
+ 2 index
+ arrayIndex ct_CID_STR_SIZE mul
+ sub
+ {
+ dup 3 index add 2 index length le
+ {
+ 2 index getinterval
+ dst_string dst_index 2 index putinterval
+ length dst_index add/dst_index exch def
+ exit
+ }
+ {
+ 1 index length 1 index sub
+ dup 4 1 roll
+ getinterval
+ dst_string dst_index 2 index putinterval
+ pop dup dst_index add/dst_index exch def
+ sub
+ /arrayIndex arrayIndex 1 add def
+ 2 index dup length arrayIndex gt
+ {arrayIndex get}
+ {
+ pop
+ exit
+ }
+ ifelse
+ 0
+ }
+ ifelse
+ }
+ loop
+ pop pop pop
+ dst_string 0 dst_index getinterval
+ end
+ }bind def
+ ct_Level2?
+ {
+ /ct_resourcestatus
+ currentglobal mark true setglobal
+ {/unknowninstancename/Category resourcestatus}
+ stopped
+ {cleartomark setglobal true}
+ {cleartomark currentglobal not exch setglobal}
+ ifelse
+ {
+ {
+ mark 3 1 roll/Category findresource
+ begin
+ ct_Vars/vm currentglobal put
+ ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec
+ {cleartomark false}
+ {{3 2 roll pop true}{cleartomark false}ifelse}
+ ifelse
+ ct_Vars/vm get setglobal
+ end
+ }
+ }
+ {{resourcestatus}}
+ ifelse bind def
+ /CIDFont/Category ct_resourcestatus
+ {pop pop}
+ {
+ currentglobal true setglobal
+ /Generic/Category findresource
+ dup length dict copy
+ dup/InstanceType/dicttype put
+ /CIDFont exch/Category defineresource pop
+ setglobal
+ }
+ ifelse
+ ct_UseNativeCapability?
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CIDSystemInfo 3 dict dup begin
+ /Registry(Adobe)def
+ /Ordering(Identity)def
+ /Supplement 0 def
+ end def
+ /CMapName/Identity-H def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ if
+ }
+ {
+ /ct_Category 2 dict begin
+ /CIDFont 10 dict def
+ /ProcSet 2 dict def
+ currentdict
+ end
+ def
+ /defineresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ dup dup maxlength exch length eq
+ {
+ dup length 10 add dict copy
+ ct_Category 2 index 2 index put
+ }
+ if
+ 3 index 3 index put
+ pop exch pop
+ }
+ {pop pop/defineresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /findresource
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index 2 copy known
+ {get 3 1 roll pop pop}
+ {pop pop/findresource/undefinedresource ct_raise}
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /resourcestatus
+ {
+ ct_Category 1 index 2 copy known
+ {
+ get
+ 2 index known
+ exch pop exch pop
+ {
+ 0 -1 true
+ }
+ {
+ false
+ }
+ ifelse
+ }
+ {pop pop/findresource/undefined ct_raise}
+ ifelse
+ }bind def
+ /ct_resourcestatus/resourcestatus load def
+ }
+ ifelse
+ /ct_CIDInit 2 dict
+ begin
+ /ct_cidfont_stream_init
+ {
+ {
+ dup(Binary)eq
+ {
+ pop
+ null
+ currentfile
+ ct_Level2?
+ {
+ {cid_BYTE_COUNT()/SubFileDecode filter}
+ stopped
+ {pop pop pop}
+ if
+ }
+ if
+ /readstring load
+ exit
+ }
+ if
+ dup(Hex)eq
+ {
+ pop
+ currentfile
+ ct_Level2?
+ {
+ {null exch/ASCIIHexDecode filter/readstring}
+ stopped
+ {pop exch pop(>)exch/readhexstring}
+ if
+ }
+ {(>)exch/readhexstring}
+ ifelse
+ load
+ exit
+ }
+ if
+ /StartData/typecheck ct_raise
+ }
+ loop
+ cid_BYTE_COUNT ct_CID_STR_SIZE le
+ {
+ 2 copy cid_BYTE_COUNT string exch exec
+ pop
+ 1 array dup
+ 3 -1 roll
+ 0 exch put
+ }
+ {
+ cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi
+ dup array exch 2 sub 0 exch 1 exch
+ {
+ 2 copy
+ 5 index
+ ct_CID_STR_SIZE
+ string
+ 6 index exec
+ pop
+ put
+ pop
+ }
+ for
+ 2 index
+ cid_BYTE_COUNT ct_CID_STR_SIZE mod string
+ 3 index exec
+ pop
+ 1 index exch
+ 1 index length 1 sub
+ exch put
+ }
+ ifelse
+ cid_CIDFONT exch/GlyphData exch put
+ 2 index null eq
+ {
+ pop pop pop
+ }
+ {
+ pop/readstring load
+ 1 string exch
+ {
+ 3 copy exec
+ pop
+ dup length 0 eq
+ {
+ pop pop pop pop pop
+ true exit
+ }
+ if
+ 4 index
+ eq
+ {
+ pop pop pop pop
+ false exit
+ }
+ if
+ }
+ loop
+ pop
+ }
+ ifelse
+ }bind def
+ /StartData
+ {
+ mark
+ {
+ currentdict
+ dup/FDArray get 0 get/FontMatrix get
+ 0 get 0.001 eq
+ {
+ dup/CDevProc known not
+ {
+ /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known
+ {get}
+ {
+ pop pop
+ {pop pop pop pop pop 0 -1000 7 index 2 div 880}
+ }
+ ifelse
+ def
+ }
+ if
+ }
+ {
+ /CDevProc
+ {
+ pop pop pop pop pop
+ 0
+ 1 cid_temp/cid_CIDFONT get
+ /FDArray get 0 get
+ /FontMatrix get 0 get div
+ 7 index 2 div
+ 1 index 0.88 mul
+ }def
+ }
+ ifelse
+ /cid_temp 15 dict def
+ cid_temp
+ begin
+ /cid_CIDFONT exch def
+ 3 copy pop
+ dup/cid_BYTE_COUNT exch def 0 gt
+ {
+ ct_cidfont_stream_init
+ FDArray
+ {
+ /Private get
+ dup/SubrMapOffset known
+ {
+ begin
+ /Subrs SubrCount array def
+ Subrs
+ SubrMapOffset
+ SubrCount
+ SDBytes
+ ct_Level2?
+ {
+ currentdict dup/SubrMapOffset undef
+ dup/SubrCount undef
+ /SDBytes undef
+ }
+ if
+ end
+ /cid_SD_BYTES exch def
+ /cid_SUBR_COUNT exch def
+ /cid_SUBR_MAP_OFFSET exch def
+ /cid_SUBRS exch def
+ cid_SUBR_COUNT 0 gt
+ {
+ GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ 0 1 cid_SUBR_COUNT 1 sub
+ {
+ exch 1 index
+ 1 add
+ cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add
+ GlyphData exch cid_SD_BYTES ct_GetInterval
+ 0 cid_SD_BYTES ct_cvnsi
+ cid_SUBRS 4 2 roll
+ GlyphData exch
+ 4 index
+ 1 index
+ sub
+ ct_GetInterval
+ dup length string copy put
+ }
+ for
+ pop
+ }
+ if
+ }
+ {pop}
+ ifelse
+ }
+ forall
+ }
+ if
+ cleartomark pop pop
+ end
+ CIDFontName currentdict/CIDFont defineresource pop
+ end end
+ }
+ stopped
+ {cleartomark/StartData ct_reraise}
+ if
+ }bind def
+ currentdict
+ end def
+ /ct_saveCIDInit
+ {
+ /CIDInit/ProcSet ct_resourcestatus
+ {true}
+ {/CIDInitC/ProcSet ct_resourcestatus}
+ ifelse
+ {
+ pop pop
+ /CIDInit/ProcSet findresource
+ ct_UseNativeCapability?
+ {pop null}
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop}
+ ifelse
+ }
+ {/CIDInit ct_CIDInit/ProcSet defineresource pop null}
+ ifelse
+ ct_Vars exch/ct_oldCIDInit exch put
+ }bind def
+ /ct_restoreCIDInit
+ {
+ ct_Vars/ct_oldCIDInit get dup null ne
+ {/CIDInit exch/ProcSet defineresource pop}
+ {pop}
+ ifelse
+ }bind def
+ /ct_BuildCharSetUp
+ {
+ 1 index
+ begin
+ CIDFont
+ begin
+ Adobe_CoolType_Utility/ct_BuildCharDict get
+ begin
+ /ct_dfCharCode exch def
+ /ct_dfDict exch def
+ CIDFirstByte ct_dfCharCode add
+ dup CIDCount ge
+ {pop 0}
+ if
+ /cid exch def
+ {
+ GlyphDirectory cid 2 copy known
+ {get}
+ {pop pop nullstring}
+ ifelse
+ dup length FDBytes sub 0 gt
+ {
+ dup
+ FDBytes 0 ne
+ {0 FDBytes ct_cvnsi}
+ {pop 0}
+ ifelse
+ /fdIndex exch def
+ dup length FDBytes sub FDBytes exch getinterval
+ /charstring exch def
+ exit
+ }
+ {
+ pop
+ cid 0 eq
+ {/charstring nullstring def exit}
+ if
+ /cid 0 def
+ }
+ ifelse
+ }
+ loop
+ }def
+ /ct_SetCacheDevice
+ {
+ 0 0 moveto
+ dup stringwidth
+ 3 -1 roll
+ true charpath
+ pathbbox
+ 0 -1000
+ 7 index 2 div 880
+ setcachedevice2
+ 0 0 moveto
+ }def
+ /ct_CloneSetCacheProc
+ {
+ 1 eq
+ {
+ stringwidth
+ pop -2 div -880
+ 0 -1000 setcharwidth
+ moveto
+ }
+ {
+ usewidths?
+ {
+ currentfont/Widths get cid
+ 2 copy known
+ {get exch pop aload pop}
+ {pop pop stringwidth}
+ ifelse
+ }
+ {stringwidth}
+ ifelse
+ setcharwidth
+ 0 0 moveto
+ }
+ ifelse
+ }def
+ /ct_Type3ShowCharString
+ {
+ ct_FDDict fdIndex 2 copy known
+ {get}
+ {
+ currentglobal 3 1 roll
+ 1 index gcheck setglobal
+ ct_Type1FontTemplate dup maxlength dict copy
+ begin
+ FDArray fdIndex get
+ dup/FontMatrix 2 copy known
+ {get}
+ {pop pop ct_defaultFontMtx}
+ ifelse
+ /FontMatrix exch dup length array copy def
+ /Private get
+ /Private exch def
+ /Widths rootfont/Widths get def
+ /CharStrings 1 dict dup/.notdef
+ <d841272cf18f54fc13>dup length string copy put def
+ currentdict
+ end
+ /ct_Type1Font exch definefont
+ dup 5 1 roll put
+ setglobal
+ }
+ ifelse
+ dup/CharStrings get 1 index/Encoding get
+ ct_dfCharCode get charstring put
+ rootfont/WMode 2 copy known
+ {get}
+ {pop pop 0}
+ ifelse
+ exch
+ 1000 scalefont setfont
+ ct_str1 0 ct_dfCharCode put
+ ct_str1 exch ct_dfSetCacheProc
+ ct_SyntheticBold
+ {
+ currentpoint
+ ct_str1 show
+ newpath
+ moveto
+ ct_str1 true charpath
+ ct_StrokeWidth setlinewidth
+ stroke
+ }
+ {ct_str1 show}
+ ifelse
+ }def
+ /ct_Type4ShowCharString
+ {
+ ct_dfDict ct_dfCharCode charstring
+ FDArray fdIndex get
+ dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not
+ {ct_1000Mtx matrix concatmatrix concat}
+ {pop}
+ ifelse
+ /Private get
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {
+ ct_dfDict/Private
+ 3 -1 roll
+ {put}
+ 1183615869 internaldict/superexec get exec
+ }
+ if
+ 1183615869 internaldict
+ Adobe_CoolType_Utility/ct_Level2? get
+ {1 index}
+ {3 index/Private get mark 6 1 roll}
+ ifelse
+ dup/RunInt known
+ {/RunInt get}
+ {pop/CCRun}
+ ifelse
+ get exec
+ Adobe_CoolType_Utility/ct_Level2? get not
+ {cleartomark}
+ if
+ }bind def
+ /ct_BuildCharIncremental
+ {
+ {
+ Adobe_CoolType_Utility/ct_MakeOCF get begin
+ ct_BuildCharSetUp
+ ct_ShowCharString
+ }
+ stopped
+ {stop}
+ if
+ end
+ end
+ end
+ end
+ }bind def
+ /BaseFontNameStr(BF00)def
+ /ct_Type1FontTemplate 14 dict
+ begin
+ /FontType 1 def
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /PaintType 0 def
+ currentdict
+ end def
+ /BaseFontTemplate 11 dict
+ begin
+ /FontMatrix [0.001 0 0 0.001 0 0]def
+ /FontBBox [-250 -250 1250 1250]def
+ /Encoding ct_cHexEncoding def
+ /BuildChar/ct_BuildCharIncremental load def
+ ct_Clone?
+ {
+ /FontType 3 def
+ /ct_ShowCharString/ct_Type3ShowCharString load def
+ /ct_dfSetCacheProc/ct_CloneSetCacheProc load def
+ /ct_SyntheticBold false def
+ /ct_StrokeWidth 1 def
+ }
+ {
+ /FontType 4 def
+ /Private 1 dict dup/lenIV 4 put def
+ /CharStrings 1 dict dup/.notdef<d841272cf18f54fc13>put def
+ /PaintType 0 def
+ /ct_ShowCharString/ct_Type4ShowCharString load def
+ }
+ ifelse
+ /ct_str1 1 string def
+ currentdict
+ end def
+ /BaseFontDictSize BaseFontTemplate length 5 add def
+ /ct_matrixeq
+ {
+ true 0 1 5
+ {
+ dup 4 index exch get exch 3 index exch get eq and
+ dup not
+ {exit}
+ if
+ }
+ for
+ exch pop exch pop
+ }bind def
+ /ct_makeocf
+ {
+ 15 dict
+ begin
+ exch/WMode exch def
+ exch/FontName exch def
+ /FontType 0 def
+ /FMapType 2 def
+ dup/FontMatrix known
+ {dup/FontMatrix get/FontMatrix exch def}
+ {/FontMatrix matrix def}
+ ifelse
+ /bfCount 1 index/CIDCount get 256 idiv 1 add
+ dup 256 gt{pop 256}if def
+ /Encoding
+ 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for
+ bfCount 1 255{2 copy bfCount put pop}for
+ def
+ /FDepVector bfCount dup 256 lt{1 add}if array def
+ BaseFontTemplate BaseFontDictSize dict copy
+ begin
+ /CIDFont exch def
+ CIDFont/FontBBox known
+ {CIDFont/FontBBox get/FontBBox exch def}
+ if
+ CIDFont/CDevProc known
+ {CIDFont/CDevProc get/CDevProc exch def}
+ if
+ currentdict
+ end
+ BaseFontNameStr 3(0)putinterval
+ 0 1 bfCount dup 256 eq{1 sub}if
+ {
+ FDepVector exch
+ 2 index BaseFontDictSize dict copy
+ begin
+ dup/CIDFirstByte exch 256 mul def
+ FontType 3 eq
+ {/ct_FDDict 2 dict def}
+ if
+ currentdict
+ end
+ 1 index 16
+ BaseFontNameStr 2 2 getinterval cvrs pop
+ BaseFontNameStr exch definefont
+ put
+ }
+ for
+ ct_Clone?
+ {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def}
+ if
+ FontName
+ currentdict
+ end
+ definefont
+ ct_Clone?
+ {
+ gsave
+ dup 1000 scalefont setfont
+ ct_BuildCharDict
+ begin
+ /usewidths? false def
+ currentfont/Widths get
+ begin
+ exch/CIDFont get/GlyphDirectory get
+ {
+ pop
+ dup charcode exch 1 index 0 2 index 256 idiv put
+ 1 index exch 1 exch 256 mod put
+ stringwidth 2 array astore def
+ }
+ forall
+ end
+ /usewidths? true def
+ end
+ grestore
+ }
+ {exch pop}
+ ifelse
+ }bind def
+ currentglobal true setglobal
+ /ct_ComposeFont
+ {
+ ct_UseNativeCapability?
+ {
+ 2 index/CMap ct_resourcestatus
+ {pop pop exch pop}
+ {
+ /CIDInit/ProcSet findresource
+ begin
+ 12 dict
+ begin
+ begincmap
+ /CMapName 3 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ exch/WMode exch def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {
+ dup length string copy
+ exch pop exch pop
+ }
+ {pop(Identity)}
+ ifelse
+ }
+ {pop (Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ 3 2 roll pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ setglobal
+ /ct_MakeIdentity
+ {
+ ct_UseNativeCapability?
+ {
+ 1 index/CMap ct_resourcestatus
+ {pop pop}
+ {
+ /CIDInit/ProcSet findresource begin
+ 12 dict begin
+ begincmap
+ /CMapName 2 index def
+ /CMapVersion 1.000 def
+ /CMapType 1 def
+ /CIDSystemInfo 3 dict dup
+ begin
+ /Registry(Adobe)def
+ /Ordering
+ CMapName ct_mkocfStr100 cvs
+ (Adobe-)search
+ {
+ pop pop
+ (-)search
+ {dup length string copy exch pop exch pop}
+ {pop(Identity)}
+ ifelse
+ }
+ {pop(Identity)}
+ ifelse
+ def
+ /Supplement 0 def
+ end def
+ 1 begincodespacerange
+ <0000><FFFF>
+ endcodespacerange
+ 1 begincidrange
+ <0000><FFFF>0
+ endcidrange
+ endcmap
+ CMapName currentdict/CMap defineresource pop
+ end
+ end
+ }
+ ifelse
+ composefont
+ }
+ {
+ exch pop
+ 0 get/CIDFont findresource
+ ct_makeocf
+ }
+ ifelse
+ }bind def
+ currentdict readonly pop
+ end
+ end
+%%EndResource
+setglobal
+%%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0
+%%Copyright: Copyright 1987-2004 Adobe Systems Incorporated.
+%%Version: 1.0 0
+userdict/ct_T42Dict 15 dict put
+ct_T42Dict begin
+/Is2015?
+{
+ version
+ cvi
+ 2015
+ ge
+}bind def
+/AllocGlyphStorage
+{
+ Is2015?
+ {
+ pop
+ }
+ {
+ {string}forall
+ }ifelse
+}bind def
+/Type42DictBegin
+{
+25 dict begin
+ /FontName exch def
+ /CharStrings 256 dict
+begin
+ /.notdef 0 def
+ currentdict
+end def
+ /Encoding exch def
+ /PaintType 0 def
+ /FontType 42 def
+ /FontMatrix[1 0 0 1 0 0]def
+ 4 array astore cvx/FontBBox exch def
+ /sfnts
+}bind def
+/Type42DictEnd
+{
+ currentdict dup/FontName get exch definefont end
+ct_T42Dict exch
+dup/FontName get exch put
+}bind def
+/RD{string currentfile exch readstring pop}executeonly def
+/PrepFor2015
+{
+Is2015?
+{
+ /GlyphDirectory
+ 16
+ dict def
+ sfnts 0 get
+ dup
+ 2 index
+ (glyx)
+ putinterval
+ 2 index
+ (locx)
+ putinterval
+ pop
+ pop
+}
+{
+ pop
+ pop
+}ifelse
+}bind def
+/AddT42Char
+{
+Is2015?
+{
+ /GlyphDirectory get
+ begin
+ def
+ end
+ pop
+ pop
+}
+{
+ /sfnts get
+ 4 index
+ get
+ 3 index
+ 2 index
+ putinterval
+ pop
+ pop
+ pop
+ pop
+}ifelse
+}bind def
+/T0AddT42Mtx2
+{
+/CIDFont findresource/Metrics2 get begin def end
+}bind def
+end
+%%EndResource
+currentglobal true setglobal
+%%BeginFile: MMFauxFont.prc
+%%Copyright: Copyright 1987-2001 Adobe Systems Incorporated.
+%%All Rights Reserved.
+userdict /ct_EuroDict 10 dict put
+ct_EuroDict begin
+/ct_CopyFont
+{
+ { 1 index /FID ne {def} {pop pop} ifelse} forall
+} def
+/ct_GetGlyphOutline
+{
+ gsave
+ initmatrix newpath
+ exch findfont dup
+ length 1 add dict
+ begin
+ ct_CopyFont
+ /Encoding Encoding dup length array copy
+ dup
+ 4 -1 roll
+ 0 exch put
+ def
+ currentdict
+ end
+ /ct_EuroFont exch definefont
+ 1000 scalefont setfont
+ 0 0 moveto
+ [
+ <00> stringwidth
+ <00> false charpath
+ pathbbox
+ [
+ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall
+ grestore
+ counttomark 8 add
+}
+def
+/ct_MakeGlyphProc
+{
+ ] cvx
+ /ct_PSBuildGlyph cvx
+ ] cvx
+} def
+/ct_PSBuildGlyph
+{
+ gsave
+ 8 -1 roll pop
+ 7 1 roll
+ 6 -2 roll ct_FontMatrix transform 6 2 roll
+ 4 -2 roll ct_FontMatrix transform 4 2 roll
+ ct_FontMatrix transform
+ currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse
+ dup 9 1 roll
+ {
+ currentdict /StrokeWidth 2 copy known
+ {
+ get 2 div
+ 0 ct_FontMatrix dtransform pop
+ 5 1 roll
+ 4 -1 roll 4 index sub
+ 4 1 roll
+ 3 -1 roll 4 index sub
+ 3 1 roll
+ exch 4 index add exch
+ 4 index add
+ 5 -1 roll pop
+ }
+ {
+ pop pop
+ }
+ ifelse
+ }
+ if
+ setcachedevice
+ ct_FontMatrix concat
+ ct_PSPathOps begin
+ exec
+ end
+ {
+ currentdict /StrokeWidth 2 copy known
+ { get }
+ { pop pop 0 }
+ ifelse
+ setlinewidth stroke
+ }
+ {
+ fill
+ }
+ ifelse
+ grestore
+} def
+/ct_PSPathOps 4 dict dup begin
+ /m {moveto} def
+ /l {lineto} def
+ /c {curveto} def
+ /cp {closepath} def
+end
+def
+/ct_matrix1000 [1000 0 0 1000 0 0] def
+/ct_AddGlyphProc
+{
+ 2 index findfont dup length 4 add dict
+ begin
+ ct_CopyFont
+ /CharStrings CharStrings dup length 1 add dict copy
+ begin
+ 3 1 roll def
+ currentdict
+ end
+ def
+ /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def
+ /ct_PSBuildGlyph /ct_PSBuildGlyph load def
+ /ct_PSPathOps /ct_PSPathOps load def
+ currentdict
+ end
+ definefont pop
+}
+def
+systemdict /languagelevel known
+{
+ /ct_AddGlyphToPrinterFont {
+ 2 copy
+ ct_GetGlyphOutline 3 add -1 roll restore
+ ct_MakeGlyphProc
+ ct_AddGlyphProc
+ } def
+}
+{
+ /ct_AddGlyphToPrinterFont {
+ pop pop restore
+ Adobe_CTFauxDict /$$$FONTNAME get
+ /Euro
+ Adobe_CTFauxDict /$$$SUBSTITUTEBASE get
+ ct_EuroDict exch get
+ ct_AddGlyphProc
+ } def
+} ifelse
+/AdobeSansMM
+{
+556 0 24 -19 541 703
+ {
+ 541 628 m
+ 510 669 442 703 354 703 c
+ 201 703 117 607 101 444 c
+ 50 444 l
+ 25 372 l
+ 97 372 l
+ 97 301 l
+ 49 301 l
+ 24 229 l
+ 103 229 l
+ 124 67 209 -19 350 -19 c
+ 435 -19 501 25 509 32 c
+ 509 131 l
+ 492 105 417 60 343 60 c
+ 267 60 204 127 197 229 c
+ 406 229 l
+ 430 301 l
+ 191 301 l
+ 191 372 l
+ 455 372 l
+ 479 444 l
+ 194 444 l
+ 201 531 245 624 348 624 c
+ 433 624 484 583 509 534 c
+ cp
+ 556 0 m
+ }
+ct_PSBuildGlyph
+} def
+/AdobeSerifMM
+{
+500 0 10 -12 484 692
+ {
+ 347 298 m
+ 171 298 l
+ 170 310 170 322 170 335 c
+ 170 362 l
+ 362 362 l
+ 374 403 l
+ 172 403 l
+ 184 580 244 642 308 642 c
+ 380 642 434 574 457 457 c
+ 481 462 l
+ 474 691 l
+ 449 691 l
+ 433 670 429 657 410 657 c
+ 394 657 360 692 299 692 c
+ 204 692 94 604 73 403 c
+ 22 403 l
+ 10 362 l
+ 70 362 l
+ 69 352 69 341 69 330 c
+ 69 319 69 308 70 298 c
+ 22 298 l
+ 10 257 l
+ 73 257 l
+ 97 57 216 -12 295 -12 c
+ 364 -12 427 25 484 123 c
+ 458 142 l
+ 425 101 384 37 316 37 c
+ 256 37 189 84 173 257 c
+ 335 257 l
+ cp
+ 500 0 m
+ }
+ct_PSBuildGlyph
+} def
+end
+%%EndFile
+setglobal
+Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end
+%%BeginResource: procset Adobe_AGM_Image 1.0 0
+%%Version: 1.0 0
+%%Copyright: Copyright(C)2000-2003 Adobe Systems, Inc. All Rights Reserved.
+systemdict/setpacking known
+{
+ currentpacking
+ true setpacking
+}if
+userdict/Adobe_AGM_Image 71 dict dup begin put
+/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def
+/nd{
+ null def
+}bind def
+/AGMIMG_&image nd
+/AGMIMG_&colorimage nd
+/AGMIMG_&imagemask nd
+/AGMIMG_mbuf()def
+/AGMIMG_ybuf()def
+/AGMIMG_kbuf()def
+/AGMIMG_c 0 def
+/AGMIMG_m 0 def
+/AGMIMG_y 0 def
+/AGMIMG_k 0 def
+/AGMIMG_tmp nd
+/AGMIMG_imagestring0 nd
+/AGMIMG_imagestring1 nd
+/AGMIMG_imagestring2 nd
+/AGMIMG_imagestring3 nd
+/AGMIMG_imagestring4 nd
+/AGMIMG_imagestring5 nd
+/AGMIMG_cnt nd
+/AGMIMG_fsave nd
+/AGMIMG_colorAry nd
+/AGMIMG_override nd
+/AGMIMG_name nd
+/AGMIMG_maskSource nd
+/AGMIMG_flushfilters nd
+/invert_image_samples nd
+/knockout_image_samples nd
+/img nd
+/sepimg nd
+/devnimg nd
+/idximg nd
+/ds
+{
+ Adobe_AGM_Core begin
+ Adobe_AGM_Image begin
+ /AGMIMG_&image systemdict/image get def
+ /AGMIMG_&imagemask systemdict/imagemask get def
+ /colorimage where{
+ pop
+ /AGMIMG_&colorimage/colorimage ldf
+ }if
+ end
+ end
+}def
+/ps
+{
+ Adobe_AGM_Image begin
+ /AGMIMG_ccimage_exists{/customcolorimage where
+ {
+ pop
+ /Adobe_AGM_OnHost_Seps where
+ {
+ pop false
+ }{
+ /Adobe_AGM_InRip_Seps where
+ {
+ pop false
+ }{
+ true
+ }ifelse
+ }ifelse
+ }{
+ false
+ }ifelse
+ }bdf
+ level2{
+ /invert_image_samples
+ {
+ Adobe_AGM_Image/AGMIMG_tmp Decode length ddf
+ /Decode[Decode 1 get Decode 0 get]def
+ }def
+ /knockout_image_samples
+ {
+ Operator/imagemask ne{
+ /Decode[1 1]def
+ }if
+ }def
+ }{
+ /invert_image_samples
+ {
+ {1 exch sub}currenttransfer addprocs settransfer
+ }def
+ /knockout_image_samples
+ {
+ {pop 1}currenttransfer addprocs settransfer
+ }def
+ }ifelse
+ /img/imageormask ldf
+ /sepimg/sep_imageormask ldf
+ /devnimg/devn_imageormask ldf
+ /idximg/indexed_imageormask ldf
+ /_ctype 7 def
+ currentdict{
+ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{
+ bind
+ }if
+ def
+ }forall
+}def
+/pt
+{
+ end
+}def
+/dt
+{
+}def
+/AGMIMG_flushfilters
+{
+ dup type/arraytype ne
+ {1 array astore}if
+ dup 0 get currentfile ne
+ {dup 0 get flushfile}if
+ {
+ dup type/filetype eq
+ {
+ dup status 1 index currentfile ne and
+ {closefile}
+ {pop}
+ ifelse
+ }{pop}ifelse
+ }forall
+}def
+/AGMIMG_init_common
+{
+ currentdict/T known{/ImageType/T ldf currentdict/T undef}if
+ currentdict/W known{/Width/W ldf currentdict/W undef}if
+ currentdict/H known{/Height/H ldf currentdict/H undef}if
+ currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if
+ currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if
+ currentdict/D known{/Decode/D ldf currentdict/D undef}if
+ currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if
+ currentdict/O known{
+ /Operator/O load 1 eq{
+ /imagemask
+ }{
+ /O load 2 eq{
+ /image
+ }{
+ /colorimage
+ }ifelse
+ }ifelse
+ def
+ currentdict/O undef
+ }if
+ currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if
+ currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if
+ currentdict/I known{/Interpolate/I ldf currentdict/I undef}if
+ currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if
+ /DataSource load xcheck not{
+ DataSource type/arraytype eq{
+ DataSource 0 get type/filetype eq{
+ /_Filters DataSource def
+ currentdict/MultipleDataSources known not{
+ /DataSource DataSource dup length 1 sub get def
+ }if
+ }if
+ }if
+ currentdict/MultipleDataSources known not{
+ /MultipleDataSources DataSource type/arraytype eq{
+ DataSource length 1 gt
+ }
+ {false}ifelse def
+ }if
+ }if
+ /NComponents Decode length 2 div def
+ currentdict/SkipImageProc known not{/SkipImageProc{false}def}if
+}bdf
+/imageormask_sys
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ level2{
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ AGMIMG_&imagemask
+ }{
+ BitsPerComponent ImageMatrix/DataSource load
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ cleartomark restore
+ end
+}def
+/overprint_plate
+{
+ currentoverprint{
+ 0 get dup type/nametype eq{
+ dup/DeviceGray eq{
+ pop AGMCORE_black_plate not
+ }{
+ /DeviceCMYK eq{
+ AGMCORE_is_cmyk_sep not
+ }if
+ }ifelse
+ }{
+ false exch
+ {
+ AGMOHS_sepink eq or
+ }forall
+ not
+ }ifelse
+ }{
+ pop false
+ }ifelse
+}def
+/process_mask
+{
+ level3{
+ dup begin
+ /ImageType 1 def
+ end
+ 4 dict begin
+ /DataDict exch def
+ /ImageType 3 def
+ /InterleaveType 3 def
+ /MaskDict 9 dict begin
+ /ImageType 1 def
+ /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def
+ /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def
+ /ImageMatrix[Width 0 0 Height neg 0 Height]def
+ /NComponents 1 def
+ /BitsPerComponent 1 def
+ /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def
+ /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def
+ currentdict end def
+ currentdict end
+ }if
+}def
+/use_mask
+{
+ dup/Mask known {dup/Mask get}{false}ifelse
+}def
+/imageormask
+{
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }
+ {
+ save mark
+ level2 AGMCORE_host_sep not and{
+ currentdict
+ Operator/imagemask eq DeviceN_PS2 not and{
+ imagemask
+ }{
+ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ /Decode[Decode 1 get Decode 0 get]def
+ }if
+ use_mask{
+ process_mask image
+ }{
+ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and
+ {
+ Names convert_to_process not{
+ 2 dict begin
+ /imageDict xdf
+ /names_index 0 def
+ gsave
+ imageDict write_image_file{
+ Names{
+ dup(None)ne{
+ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace
+ Operator imageDict read_image_file
+ names_index 0 eq{true setoverprint}if
+ /names_index names_index 1 add def
+ }{
+ pop
+ }ifelse
+ }forall
+ close_image_file
+ }if
+ grestore
+ end
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask eq{
+ imagemask
+ }{
+ image
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ Width Height
+ Operator/imagemask eq{
+ Decode 0 get 1 eq Decode 1 get 0 eq and
+ ImageMatrix/DataSource load
+ /Adobe_AGM_OnHost_Seps where{
+ pop imagemask
+ }{
+ currentgray 1 ne{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ BitsPerComponent ImageMatrix
+ MultipleDataSources{
+ 0 1 NComponents 1 sub{
+ DataSource exch get
+ }for
+ }{
+ /DataSource load
+ }ifelse
+ Operator/colorimage eq{
+ AGMCORE_host_sep{
+ MultipleDataSources level2 or NComponents 4 eq and{
+ AGMCORE_is_cmyk_sep{
+ MultipleDataSources{
+ /DataSource[
+ DataSource 0 get/exec cvx
+ DataSource 1 get/exec cvx
+ DataSource 2 get/exec cvx
+ DataSource 3 get/exec cvx
+ /AGMCORE_get_ink_data cvx
+ ]cvx def
+ }{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ /DataSource load
+ filter_cmyk 0()/SubFileDecode filter def
+ }ifelse
+ /Decode[Decode 0 get Decode 1 get]def
+ /MultipleDataSources false def
+ /NComponents 1 def
+ /Operator/image def
+ invert_image_samples
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ 1 AGMCORE_&setgray
+ currentdict imageormask_sys
+ }{
+ currentdict ignoreimagedata
+ }ifelse
+ }ifelse
+ }{
+ MultipleDataSources NComponents AGMIMG_&colorimage
+ }ifelse
+ }{
+ true NComponents colorimage
+ }ifelse
+ }{
+ Operator/image eq{
+ AGMCORE_host_sep{
+ /DoImage true def
+ currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse
+ {
+ AGMCORE_black_plate not Operator/imagemask ne and{
+ /DoImage false def
+ currentdict ignoreimagedata
+ }if
+ }if
+ 1 AGMCORE_&setgray
+ DoImage
+ {currentdict imageormask_sys}if
+ }{
+ use_mask{
+ process_mask image
+ }{
+ image
+ }ifelse
+ }ifelse
+ }{
+ Operator/knockout eq{
+ pop pop pop pop pop
+ currentcolorspace overprint_plate not{
+ knockout_unitsq
+ }if
+ }if
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/sep_imageormask
+{
+ /sep_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_avoid_L2_sep_space{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ }if
+ AGMIMG_ccimage_exists
+ MappedCSA 0 get/DeviceCMYK eq and
+ currentdict/Components known and
+ Name()ne and
+ Name(All)ne and
+ Operator/image eq and
+ AGMCORE_producing_seps not and
+ level2 not and
+ {
+ Width Height BitsPerComponent ImageMatrix
+ [
+ /DataSource load/exec cvx
+ {
+ 0 1 2 index length 1 sub{
+ 1 index exch
+ 2 copy get 255 xor put
+ }for
+ }/exec cvx
+ ]cvx bind
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Name findcmykcustomcolor
+ customcolorimage
+ }{
+ AGMCORE_producing_seps not{
+ level2{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{
+ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ currentdict imageormask
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask
+ }{
+ sep_imageormask_lev1
+ }ifelse
+ }ifelse
+ }{
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ currentdict/ImageMatrix get concat
+ knockout_unitsq
+ }{
+ currentgray 1 ne{
+ AGMCORE_is_cmyk_sep Name(All)ne and{
+ level2{
+ Name AGMCORE_IsSeparationAProcessColor
+ {
+ Operator/imagemask eq{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor
+ }if
+ }{
+ invert_image_samples
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ [/Separation Name[/DeviceGray]
+ {
+ sep_colorspace_proc AGMCORE_get_ink_data
+ 1 exch sub
+ }bind
+ ]AGMCORE_&setcolorspace
+ /sep_tint AGMCORE_gget AGMCORE_&setcolor
+ }if
+ }ifelse
+ currentdict imageormask_sys
+ }{
+ currentdict
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ sep_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ Operator/imagemask ne{
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }ifelse
+ }{
+ currentoverprint not Name(All)eq or Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{
+ currentcolorspace 0 get/Separation ne{
+ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt
+ /sep_tint AGMCORE_gget setcolor
+ }if
+ }if
+ currentoverprint
+ MappedCSA 0 get/DeviceCMYK eq and
+ Name AGMCORE_IsSeparationAProcessColor not and
+ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse
+ Name(All)ne and{
+ imageormask_l2_overprint
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+}def
+/colorSpaceElemCnt
+{
+ mark currentcolor counttomark dup 2 add 1 roll cleartomark
+}bdf
+/devn_sep_datasource
+{
+ 1 dict begin
+ /dataSource xdf
+ [
+ 0 1 dataSource length 1 sub{
+ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx
+ /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx
+ }for
+ ]cvx bind
+ end
+}bdf
+/devn_alt_datasource
+{
+ 11 dict begin
+ /convProc xdf
+ /origcolorSpaceElemCnt xdf
+ /origMultipleDataSources xdf
+ /origBitsPerComponent xdf
+ /origDecode xdf
+ /origDataSource xdf
+ /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def
+ /DataSource origMultipleDataSources
+ {
+ [
+ BitsPerComponent 8 idiv origDecode length 2 idiv mul string
+ 0 1 origDecode length 2 idiv 1 sub
+ {
+ dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch
+ origDataSource exch get 0()/SubFileDecode filter
+ BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx
+ }for
+ ]bind cvx
+ }{origDataSource}ifelse 0()/SubFileDecode filter def
+ [
+ origcolorSpaceElemCnt string
+ 0 2 origDecode length 2 sub
+ {
+ dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div
+ 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx
+ }for
+ /convProc load/exec cvx
+ origcolorSpaceElemCnt 1 sub -1 0
+ {
+ /dup cvx 2/add cvx/index cvx
+ 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx
+ }for
+ ]bind cvx 0()/SubFileDecode filter
+ end
+}bdf
+/devn_imageormask
+{
+ /devicen_colorspace_dict AGMCORE_gget begin
+ CSA map_csa
+ 2 dict begin
+ dup
+ /srcDataStrs[3 -1 roll begin
+ AGMIMG_init_common
+ currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse
+ {
+ Width Decode length 2 div mul cvi
+ {
+ dup 65535 gt{1 add 2 div cvi}{exit}ifelse
+ }loop
+ string
+ }repeat
+ end]def
+ /dstDataStr srcDataStrs 0 get length string def
+ begin
+ AGMIMG_init_common
+ SkipImageProc{
+ currentdict consumeimagedata
+ }{
+ save mark
+ AGMCORE_producing_seps not{
+ level3 not{
+ Operator/imagemask ne{
+ /DataSource[[
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def
+ /MultipleDataSources true def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ }if
+ }if
+ currentdict imageormask
+ }{
+ AGMCORE_host_sep{
+ Names convert_to_process{
+ CSA get_csa_by_name 0 get/DeviceCMYK eq{
+ /DataSource
+ Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ filter_cmyk 0()/SubFileDecode filter def
+ /MultipleDataSources false def
+ /Decode[1 0]def
+ /DeviceGray setcolorspace
+ currentdict imageormask_sys
+ }{
+ AGMCORE_report_unsupported_color_space
+ AGMCORE_black_plate{
+ /DataSource
+ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse
+ CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get
+ devn_alt_datasource
+ /MultipleDataSources false def
+ /Decode colorSpaceElemCnt[exch{0 1}repeat]def
+ currentdict imageormask_sys
+ }{
+ gsave
+ knockout_unitsq
+ grestore
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }
+ {
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ Operator/imagemask ne{
+ MultipleDataSources{
+ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def
+ /MultipleDataSources false def
+ }{
+ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def
+ }ifelse
+ invert_image_samples
+ }if
+ currentdict imageormask_sys
+ }{
+ currentoverprint not Operator/imagemask eq and{
+ currentdict imageormask_sys
+ }{
+ currentoverprint not
+ {
+ gsave
+ knockout_unitsq
+ grestore
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ currentdict imageormask
+ }ifelse
+ }ifelse
+ cleartomark restore
+ }ifelse
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+ end
+ end
+}def
+/imageormask_l2_overprint
+{
+ currentdict
+ currentcmykcolor add add add 0 eq{
+ currentdict consumeimagedata
+ }{
+ level3{
+ currentcmykcolor
+ /AGMIMG_k xdf
+ /AGMIMG_y xdf
+ /AGMIMG_m xdf
+ /AGMIMG_c xdf
+ Operator/imagemask eq{
+ [/DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]/DeviceCMYK{}]setcolorspace
+ AGMIMG_c 0 ne{AGMIMG_c}if
+ AGMIMG_m 0 ne{AGMIMG_m}if
+ AGMIMG_y 0 ne{AGMIMG_y}if
+ AGMIMG_k 0 ne{AGMIMG_k}if
+ setcolor
+ }{
+ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def
+ [/Indexed
+ [
+ /DeviceN[
+ AGMIMG_c 0 ne{/Cyan}if
+ AGMIMG_m 0 ne{/Magenta}if
+ AGMIMG_y 0 ne{/Yellow}if
+ AGMIMG_k 0 ne{/Black}if
+ ]
+ /DeviceCMYK{
+ AGMIMG_k 0 eq{0}if
+ AGMIMG_y 0 eq{0 exch}if
+ AGMIMG_m 0 eq{0 3 1 roll}if
+ AGMIMG_c 0 eq{0 4 1 roll}if
+ }
+ ]
+ 255
+ {
+ 255 div
+ mark exch
+ dup dup dup
+ AGMIMG_k 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_y 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_m 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ AGMIMG_c 0 ne{
+ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop
+ counttomark 1 roll
+ }{
+ pop
+ }ifelse
+ counttomark 1 add -1 roll pop
+ }
+ ]setcolorspace
+ }ifelse
+ imageormask_sys
+ }{
+ write_image_file{
+ currentcmykcolor
+ 0 ne{
+ [/Separation/Black/DeviceGray{}]setcolorspace
+ gsave
+ /Black
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Yellow/DeviceGray{}]setcolorspace
+ gsave
+ /Yellow
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Magenta/DeviceGray{}]setcolorspace
+ gsave
+ /Magenta
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ 0 ne{
+ [/Separation/Cyan/DeviceGray{}]setcolorspace
+ gsave
+ /Cyan
+ [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx]
+ cvx modify_halftone_xfer
+ Operator currentdict read_image_file
+ grestore
+ }if
+ close_image_file
+ }{
+ imageormask
+ }ifelse
+ }ifelse
+ }ifelse
+}def
+/indexed_imageormask
+{
+ begin
+ AGMIMG_init_common
+ save mark
+ currentdict
+ AGMCORE_host_sep{
+ Operator/knockout eq{
+ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{
+ /CSA get get_csa_by_name
+ }{
+ /Names get
+ }ifelse
+ overprint_plate not{
+ knockout_unitsq
+ }if
+ }{
+ Indexed_DeviceN{
+ /devicen_colorspace_dict AGMCORE_gget/names_index known{
+ indexed_image_lev2_sep
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }{
+ AGMCORE_is_cmyk_sep{
+ Operator/imagemask eq{
+ imageormask_sys
+ }{
+ level2{
+ indexed_image_lev2_sep
+ }{
+ indexed_image_lev1_sep
+ }ifelse
+ }ifelse
+ }{
+ currentoverprint not{
+ knockout_unitsq
+ }if
+ currentdict consumeimagedata
+ }ifelse
+ }ifelse
+ }ifelse
+ }{
+ level2{
+ Indexed_DeviceN{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ }{
+ /indexed_colorspace_dict AGMCORE_gget dup null ne
+ {
+ begin
+ currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse
+ get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and
+ AGMCORE_in_rip_sep and{
+ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup]
+ setcolorspace
+ }if
+ end
+ }
+ {pop}ifelse
+ }ifelse
+ imageormask
+ Indexed_DeviceN{
+ end
+ }if
+ }{
+ Operator/imagemask eq{
+ imageormask
+ }{
+ indexed_imageormask_lev1
+ }ifelse
+ }ifelse
+ }ifelse
+ cleartomark restore
+ currentdict/_Filters known{_Filters AGMIMG_flushfilters}if
+ end
+}def
+/indexed_image_lev2_sep
+{
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ Indexed_DeviceN not{
+ currentcolorspace
+ dup 1/DeviceGray put
+ dup 3
+ currentcolorspace 2 get 1 add string
+ 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub
+ {
+ dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put
+ }for
+ put setcolorspace
+ }if
+ currentdict
+ Operator/imagemask eq{
+ AGMIMG_&imagemask
+ }{
+ use_mask{
+ process_mask AGMIMG_&image
+ }{
+ AGMIMG_&image
+ }ifelse
+ }ifelse
+ end end
+}def
+ /OPIimage
+ {
+ dup type/dicttype ne{
+ 10 dict begin
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /ImageType 1 def
+ /Decode[0 1 def]
+ currentdict
+ end
+ }if
+ dup begin
+ /NComponents 1 cdndf
+ /MultipleDataSources false cdndf
+ /SkipImageProc{false}cdndf
+ /Decode[
+ 0
+ currentcolorspace 0 get/Indexed eq{
+ 2 BitsPerComponent exp 1 sub
+ }{
+ 1
+ }ifelse
+ ]cdndf
+ /Operator/image cdndf
+ end
+ /sep_colorspace_dict AGMCORE_gget null eq{
+ imageormask
+ }{
+ gsave
+ dup begin invert_image_samples end
+ sep_imageormask
+ grestore
+ }ifelse
+ }def
+/cachemask_level2
+{
+ 3 dict begin
+ /LZWEncode filter/WriteFilter xdf
+ /readBuffer 256 string def
+ /ReadFilter
+ currentfile
+ 0(%EndMask)/SubFileDecode filter
+ /ASCII85Decode filter
+ /RunLengthDecode filter
+ def
+ {
+ ReadFilter readBuffer readstring exch
+ WriteFilter exch writestring
+ not{exit}if
+ }loop
+ WriteFilter closefile
+ end
+}def
+/spot_alias
+{
+ /mapto_sep_imageormask
+ {
+ dup type/dicttype ne{
+ 12 dict begin
+ /ImageType 1 def
+ /DataSource xdf
+ /ImageMatrix xdf
+ /BitsPerComponent xdf
+ /Height xdf
+ /Width xdf
+ /MultipleDataSources false def
+ }{
+ begin
+ }ifelse
+ /Decode[/customcolor_tint AGMCORE_gget 0]def
+ /Operator/image def
+ /SkipImageProc{false}def
+ currentdict
+ end
+ sep_imageormask
+ }bdf
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_colorAry xddf
+ /customcolor_tint AGMCORE_gget
+ <<
+ /Name AGMIMG_colorAry 4 get
+ /CSA[/DeviceCMYK]
+ /TintMethod/Subtractive
+ /TintProc null
+ /MappedCSA null
+ /NComponents 4
+ /Components[AGMIMG_colorAry aload pop pop]
+ >>
+ setsepcolorspace
+ mapto_sep_imageormask
+ }ndf
+ Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put
+ /customcolorimage
+ {
+ Adobe_AGM_Image/AGMIMG_override false put
+ current_spot_alias{dup 4 get map_alias}{false}ifelse
+ {
+ false set_spot_alias
+ /customcolor_tint AGMCORE_gget exch setsepcolorspace
+ pop
+ mapto_sep_imageormask
+ true set_spot_alias
+ }{
+ AGMIMG_&customcolorimage
+ }ifelse
+ }bdf
+}def
+/snap_to_device
+{
+ 6 dict begin
+ matrix currentmatrix
+ dup 0 get 0 eq 1 index 3 get 0 eq and
+ 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop
+ {
+ 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def
+ 0 0 transform
+ AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch
+ itransform/AGMIMG_llY exch def/AGMIMG_llX exch def
+ 1 1 transform
+ AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch
+ itransform/AGMIMG_urY exch def/AGMIMG_urX exch def
+ [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat
+ }{
+ }ifelse
+ end
+}def
+level2 not{
+ /colorbuf
+ {
+ 0 1 2 index length 1 sub{
+ dup 2 index exch get
+ 255 exch sub
+ 2 index
+ 3 1 roll
+ put
+ }for
+ }def
+ /tint_image_to_color
+ {
+ begin
+ Width Height BitsPerComponent ImageMatrix
+ /DataSource load
+ end
+ Adobe_AGM_Image begin
+ /AGMIMG_mbuf 0 string def
+ /AGMIMG_ybuf 0 string def
+ /AGMIMG_kbuf 0 string def
+ {
+ colorbuf dup length AGMIMG_mbuf length ne
+ {
+ dup length dup dup
+ /AGMIMG_mbuf exch string def
+ /AGMIMG_ybuf exch string def
+ /AGMIMG_kbuf exch string def
+ }if
+ dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop
+ }
+ addprocs
+ {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage
+ end
+ }def
+ /sep_imageormask_lev1
+ {
+ begin
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {
+ 255 mul round cvi GrayLookup exch get
+ }currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ MappedCSA 0 get/DeviceCMYK eq{
+ Components aload pop
+ }{
+ 0 0 0 Components aload pop 1 exch sub
+ }ifelse
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{
+ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ currentcolortransfer
+ {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll
+ {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer
+ currentdict imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll
+ {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll
+ setcolortransfer
+ currentdict tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ }ifelse
+ end
+ }def
+ /sep_image_lev1_sep
+ {
+ begin
+ /sep_colorspace_dict AGMCORE_gget/Components known{
+ Components aload pop
+ Adobe_AGM_Image/AGMIMG_k xddf
+ Adobe_AGM_Image/AGMIMG_y xddf
+ Adobe_AGM_Image/AGMIMG_m xddf
+ Adobe_AGM_Image/AGMIMG_c xddf
+ {AGMIMG_c mul 1 exch sub}
+ {AGMIMG_m mul 1 exch sub}
+ {AGMIMG_y mul 1 exch sub}
+ {AGMIMG_k mul 1 exch sub}
+ }{
+ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+ {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+ }ifelse
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end
+ }def
+ /indexed_imageormask_lev1
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ currentdict
+ MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{
+ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceGray eq{
+ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer
+ imageormask
+ }{
+ MappedCSA 0 get/DeviceCMYK eq{
+ currentcolortransfer
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }{
+ currentcolortransfer
+ {pop 1}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll
+ {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll
+ setcolortransfer
+ tint_image_to_color
+ }ifelse
+ }ifelse
+ }ifelse
+ end end
+ }def
+ /indexed_image_lev1_sep
+ {
+ /indexed_colorspace_dict AGMCORE_gget begin
+ begin
+ {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+ {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+ AGMCORE_get_ink_data currenttransfer addprocs settransfer
+ currentdict imageormask_sys
+ end end
+ }def
+}if
+end
+systemdict/setpacking known
+{setpacking}if
+%%EndResource
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndProlog
+%%BeginSetup
+Adobe_AGM_Utils begin
+2 2016 Adobe_AGM_Core/ds gx
+Adobe_CoolType_Core/ds get exec
+Adobe_AGM_Image/ds gx
+[/NamespacePush pdfmark_5
+[/_objdef {Doc_Metadata} /type /stream /OBJ pdfmark_5
+[{Doc_Metadata} 3350 (% &end XMP packet& %) ReadBypdfmark_5_string
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:xap="http://ns.adobe.com/xap/1.0/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"
+ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"
+ xap:ModifyDate="2005-02-28T19:13:17-05:00"
+ xap:CreateDate="2005-02-28T19:12:58-05:00"
+ xap:MetadataDate="2005-02-28T19:13:17-05:00"
+ xap:CreatorTool="Adobe Acrobat 7.0"
+ dc:format="application/pdf"
+ xapMM:DocumentID="uuid:cba1ef03-1d80-4b3f-8b7e-2ecf2f977731"
+ xapMM:InstanceID="uuid:518f4350-2b51-452a-b7c5-c400b9514f24"
+ pdf:Producer="Adobe Acrobat 7.0 Image Conversion Plug-in"/>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?>
+
+
+% &end XMP packet& %
+
+[{Doc_Metadata} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark_5
+[/Document 1 dict begin /Metadata {Doc_Metadata} def currentdict end /BDC pdfmark_5
+[/NamespacePop pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+%%EndSetup
+%%Page: 1 1
+%%EndPageComments
+%%BeginPageSetup
+Adobe_AGM_Utils begin
+Adobe_AGM_Core/ps gx
+Adobe_AGM_Utils/capture_cpd gx
+Adobe_CoolType_Core/ps get exec
+Adobe_AGM_Image/ps gx
+%%EndPageSetup
+1 -1 scale 0 -419.04 translate
+pgsv
+[1 0 0 1 0 0 ]ct
+gsave
+np
+gsave
+0 0 mo
+0 419.04 li
+285.6 419.04 li
+285.6 0 li
+cp
+clp
+[1 0 0 1 0 0 ]ct
+0 419.04 mo
+285.6 419.04 li
+285.6 0 li
+0 0 li
+cp
+false sop
+gsave
+/0
+[/DeviceRGB] /CSA add_res
+/0 /CSA get_res setcolorspace
+clp
+[1 0 0 -1 0 419.04 ]ct
+[285.6 0 0 419.04 0 -3.86238e-5 ]ct
+snap_to_device
+<<
+/T 1
+/W 595
+/H 873
+/M[595 0 0 -873 0 873 ]
+/BC 8
+/D[0 1 0 1 0 1 ]
+/DS [cf /ASCII85Decode fl dup/DCTDecode fl]
+/O 2
+>>
+%%BeginBinary: 1
+img
+s4IA0!"_al8O`[\!W`:e!1!Tbs53kg8k)BA!!*-%!1!VN!!*&d%HpW%Dffo=BQ%i41G1?]3'p22"76Fn
+ATMd+F`_>9D?'Y:!"]-r!!!!"!!*(c!!!!"!!,&G8PK<s(e.UM7r3*Q@;I&[BkM+$Bl7Q+6#L=OAH2]1
+!!E9%!$4*d8PK=*&k5tG7r3*Q@;I&PCijB5F_#%`!!!!%!!!!?3'p22"7lmsEbTE5+@^0UB6+%Q!!rW*
+!!!!!!!!$"3'p22":>W+DfBuBBkM+$+@^0UB)ho3!!*'"3'p22-P-ta@;oXmATME*:i^8fF<F%h@:sW]
+!!!!+!!*'"!!!!!!!5,H8PK<[(IN+WDfQsk@;KOtDf0,/;e:&mBl7R)!!!!i!&%qr!!*(9AnD#I!!!!!
+!!*'QAnD#D!25gL!!WE'!!!!"!&=NS!!*('!!!!'!!!!!!!*'W!!!!"!%e0N!!WE'!!!!"3'p22"8E["
+Des?4+B3AiDKBE$EZe:lFED57B6+%Q!,qo<s8W-!s8W-!s8W-!s8W-!s8W-!s8N2b!!!!!s8W-!s8W-!
+s8W-!s8W-!s8W-!s8N2b!!!!!s8W-!s8W-!s8W-!s8W-!s8W-!s8N2b!!!!!s8W-!s8W-!s8W-!s8W-!
+s8W-!s8N2b!!"uF8PK<n#"NfMA7]f^!!!!1!!!!"!!!'c!!!'c!!!!!3'p22"<J"P;G83OG%G]7Bk1dr
+!!!!%!!!!!3'p22"<%JCCh[BjErZ1?!+u93!!WE'!!!!!!!!!!").`8!`K(!!!<43!,hjT!!!!"!!!!!
+!!!!!!!!!!!!!!!!!!!"!!!!!!!!!!!!!(!!!!+8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!!"uF8PK="&P5>W+B<<$@:s4aA0=?X@:oQ?!!**#3'p22";DYG@<lF)+A"sD7qHRLEaa'.EZd\WF(G=O
+!!E9%!!,&G8PK<r'i&=a+BN8pA8c[5+B3#sD.7BkBl!bL$;CL#!!*'"!)*@m!,qo<!9=+[A&&'E$8DMt
+!!3,Ps53kg8k)BA!!*-%!([)\!!*&e!"M;*Ddm8XA:OX[!!3,S!/(=\#RC\B#Rh"G$kWjS$P=*a$k*X]
+(_[Pt',)2p$k*OQ$k*^V$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OF%1<OQ%LisZ%M0<a%Ls0e%LrsY
+'G1`^$k*OV&I]'V$k*OV$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQs1eUH#QSfD9EP;>!!3`5!tbS6
+h#IQX"olLA56(Za"T\W)!<E3$!!!!!!!!*$!<NB-"pYD?$4?k7!<iK)!<E3%!!!!!!!!!"!!36*"U52;
+#mq%O!!*3'!s/T,"U>5;"To/h!<<05!sBb[0a0j?@1si)JMIEDOeK$H,:""%_.#2WEe;\+#:5O3nDWnI
+F#=`-Z@aJlP>l']_P;32(Xc=CAb*0\_p`bgo0t*lUkQ1@`73l?V7":mjn2YdG(u<[[`6n\p,>KCB6T,t
+Vmj^ukP#Pg!WiB("9\f0"U52:"pHjb!!3`7+YaT45uD'1+qk,8JWUY?YsK\O;UOti,\#_QJs&K"'k;;A
+nKeATU9]CV-8iZg7$CTF(M#s72KWNio!="edrj^B7[0^&[$ASZjRf:V`RX)C<b?N0QDV+1f&lZR2b-q^
+GDDN_\&\O&!"8r1!!3`7&HG#q5'(X*9/)iPf-]]#g]VPF*pot,f3sM_c^sl\HFKAFle*UF]&3@n-a(/s
+9UQVq:AsAU!1`NUP-E)fI4+aMcLL\/<mT^*0o;bu7+u;FO86ineV6p'Q[bNTnjn^S4">5dL6=FF&@.0\
+kfAa4oDRqQcIa-8kPNZE6BGf8=[QQ_j3R0YhOElK49#;NJ%](q94<KiWW1?"b6.."!$C^]&,L0<=RoL1
+@t*$W[!t5IR/U<R[>b(2U#KEp1[\:G1sn)rhZROGZ8<4C>+Eg^VY2ml`Zu>4f=V*3c&lOST;(I.N;in+
+CS#J!F55rJ/9Q_K]\-ojrr?'cG\]OLUg3WSjk!^pX#W*GA=;#h#Rs#Q7-XM"AV-7)AS(`BOBD_b&#=#Q
+c2IBcLXSq]Lq;g,_2:>TaB=hdoUT?irED:m6`5&W%IJD!Hf(rVj89Y<rr<DH\*-r_dOpmj_rG?1G?:fU
+CONpf^J81'#4HH`[f%:h5<n?akRBE4\o^Lg?/#5#+W:,7,@Bml!e%X-!D52@2!,&CdHU3?51=^odQ`fY
+3@=^iGpE!?J)_XN!)up$WnQO97:G]H.dj^'"*UTK7jpAV=`kK\#1br6Vo44_L?.R:SX!SFY!B,&?R*uT
+=MDs-+NQ+=m^(ZgpeC&ID9N^Bf,!gh#0Oa_cop7*IVjGGRKlgVO2fFf9h3s%[IqiTZ%HiVri=fBCJ]Lo
+eE/`$LG6/%gDp4nC\*%UR?Bb?V:2KgS&:2Kdsi``TP_G*&;C^2+)-?]!'<@$epCJ#e]dYhXm,433NXs>
+JZZ,8Q':JKDZ9]-kC5J&$uDB<)G:K!]"*TY.S.@nC-(*:REHK/4=7i`2r1b@I`[2.A6<4=dcti`lPBL#
+`]sI$TNuQ>YfJ^dFu9#C-_KJ))Z=\n*R0WeoSUu6Y[h8`VHWR+pj-a<=oSJ>47p;\`EO=,V+E"f[ju,:
+ETHF5T8K!VO+.%l.r`jb>On"bb10E2U<'(!N+5;Yg^HSa5p&P3hjWYihM=[!XnF^'TPgu/U09^]H[gB`
+RcUt#G"c0O,K(pr!^WqU/j/qa`_hTba;YB)oS<+%232.#4M@MLglEm]DFKdnb:>:661]#HS'NRLpBHo`
+5i3\*qKO@gCemc^Q!R13R@t5'LQOgqeRu2M0s[?KR;G?0Cl]bf<gA%*qnJWR=0'R5G1cetde,i_pEk65
+pb(RRs3o`ffd=<$gr&tTpT]Lic[Vb>rLM#3Tsa`DIY3'.+4V8ZSR(qnQml\o%#\tPJ/,Wl5O#]oMasMZ
+0H0LXB[h^\?5aL:M<l0??"4dY<"]_?!T\k$EuY(SEL*oM2=**=!*eqCS]T*alQ48/mPR(AR-885D6ENG
+J*;Aj>j8e;I7C]TD3_V_37.Qb5&/$0V6%.;XrfM6pi4jk*P=KL0p^uC[0_I)UI!r.;KL.GK'=UmPg1"J
+2`tk?'iQ?TA7jklS48ESa*,itJG6IhEV,eRgN,T_ZIXNB-%2X1!KOsd<hDi#0Nq&3A"<*cI<L+t&=G6g
+40FUI4'#XZc+_cUB5?6U>%c^82mn[Jc2Rc5M>!H"qJFotG</.ZqHptJ*i7<T3h&FF\uUL5StZ>.*&??f
+oX4]!>Q".irbU34gL%B6e+?eKIt)A'hadKVHdUf`ola+@YQ*)fG$,hq05GcX7H-6ALc/H6*UO>PrrBE_
+O-nZA=SE/i@DDp!pt6sqEX$#faiVbDcO;D6k\rV"5GYX<,Pg6^=L1NOE1OPb0?,>%AqJr*j&u#CQ5l#.
+Ot4LMNIY=30_*HI<3jAb#ENl]FUrubI3g%8m!H1n3,#^t7qb'"k5@2f.9"12XOg\3@^g"l%(FK`GLCF-
+>Q05dPE=Zi3i75T]Sc6Hc_TkIoE05Sd;S7kmT'XfI2IW/2;P`Ac4(2$!!*Oh5HEHp[fT&&J3CXh(!bXb
+qT^[J+!<;)2?f(]#4WfthmE607E^&C`_.k2p#TZ]ZSEJ21qCg2_qjU(6."4HT&420rr>N^3M8J4)947k
+LPndRnO&Rbct?,3&,*.%,+<;EJ"'habR\a:qTia_>s.5/SoAaQpA.aO2V\>"Z-90F*Nf0eR_Uqu?Fku^
+Bm(^3G-SDErGsBuoZ>0J!]2"Md;K>JU\JTu-K)o4Gn"0Zk8g>qk:3+qMkYNhL[>M";tk]++84mh?hDqo
+5,WO>f8'#oT\XksccC>0$0fsH5NY1"oR/s2AFKNu8N"QeZfu:"i>pAH!<:Tkb-X5h,gOhV\);a,rrDX*
+I%/;-ZoQk\=@<f*cXfbJ%-*V98M+YfdK;trcZbE!3pF]WpH>";k+*R\6'(B+9")u.R3(<CaVl0Ze13-J
+6XO-+?:EARfh'O+]SQ9nkV]OC!"-cq@k=hUCHe*K,`W*Wa]K&t3$V4]:BsKieitutlZ66R>5caZmFp_b
+T6!4dhrK1hVCuq.Z'&>t,hJg-*')NYrrAO203R/,^bI)T*"^"<+5hd,k39aC=FiMHfYu*-!f5k4]",B)
+=j:?uH^sAP!lmPYPPO]t287&5dX%7`L;<PMgK1ZWbdo1SmGCRl`QSGO%;S<Jh?RG<njqED&&u\-J/t7N
+j1/n(!+"jE5*.i\8jZE&W#h"/1.:>K*K$KC#2WB:DfGc:6.?tfM=u_kNDSS65QBC:3'p22"<e[aATDj+
+Df-\-Df'H%FD52uCh\!:+DG_*DZBb;!*'"!!!**#!!!N05lbEqDZF5HAH3hQ:]P//DZFkZDZFhYBE2rN
+Du]k<'*(;uA,pNJ@K9s>+954<BE2rNF9$4ZEr]kRDZF_V+94;"/c[R*!!!$"3'p22"9o9,:dmks;0?;`
+BlnV#!!!!(!!WE'!!**#s6]js6"FnCAH67+!!!!"s4[N@!!33'!WiE)!WiE*!WiE*"9S],!sAc1"9\i1
+"U5,6"U,&5"pP;;#R:S=#mgqG#mh"K$k*OQ$k*OQ$k*OQ%0,&^6NI8k!sJf2#mLS?%13CK%1`pY%Ls![
+$k*OQ$kEjW$k*OQ$kEaT$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k30O!"fJ=B`_38!>,;5&HMtG!WU(<
+*rl9A"T\W)!<E3$!!!!!!!!!"!WrQ/"pYD?$4HmP!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W
+;.0\RE>10ZOeE%*6F"?A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._
+B4u!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-
+g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ/"pYD?$4HmP!4<C=!W`?*
+"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIqUZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'
+2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6Sp
+ZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^1&\/#
+IB%NMe&$E;OahYRC-EnY`Yt\,c#1q2W\5hh*&)(?RLuY].4n>G07G$k;$te,r+Y]^'"`"rf"OPuE"$BW
+]kPWIp.3)>M>mPkKWM6Ej5L3(`20>pqcXU:3q."-5E.$%FHJ!HQ18RUR/T5CmRY22^q[;5^s51)etA(7
+bTZM'j#<Mi2oa/bClM"Q0C<e!5O6mN</L"V/UV#sE0K<pO-#M$ZFYaokI4)hr`%9_MBtJ%r\'rO-c[<b
+HeX5V</bjIm=ems+]8n9.=>ZNftZKiHpZU-B[3^t+,DUJb)>saR6DqpBHqSGDt20VP(0iHrjKh,<">''
+IOG&)OW\>O3dBO;DVbkuCjtiG(6ih`4d.`6O+&i<<BhLOGXJ?1$i>'03tZ35UuEH;M>mP`'B9HLLjX+1
+qJ7-2eWW+AroTk:P9sWXHt3L"I!>,X2dk@0A7s[7-j</H+-6CW[ni$U3Xe(L!2j'$!:h^?jXnnKnTaZc
+9VeZ_n`-mG!B7I>r.!+/3ML0-.Il$08>?UN*B\H4]I738C/B8=D,*M>aF;6tipj4l2jFuh4*](e%(7c>
+62V"o"B9HHp.UT2?h&fh=hZqAe@:_k;gE8rY'[A*\YG^NZ=52AIQ#3o,(+\+S14QlWV.r?@ImX0*:+\(
+BNo`Ej-q^Hn`.WEh\p_=!$K\7bkYBdq!6t'n:!Ioc'Q#Ge*olA/;4RMC(B?]Hu\\mfAu`"is;kK!^/N(
+r-HH6HU_i9,'2d_Np<<na8Z,TPNZH(#lMES9iPYM2G0Q%q!?9tq"s'C.29*tdn/AW3Y2"PeT3Hc+^soM
+a.&<Qir,Nt9UiqjX_"=AG4Yn8"B!Gs;VHB%j4X"R^-?kKI"Wp&@ABDi*BqY>g7]q"[b`V2ofB'jg)%_I
+&6mC4VJ/!jH]Rf64fNnTKRPBFo.jQhrM'3g!^mDQa%FeL:^iLFgOl#B)ICsXb)Q:6YDsEBY#G%RnWXh*
+i-DXlSt+2!ci1!iLd;nAE_Sc5LWFNTGDgo2?c)1Hm0hr&B==5&RRo&PerM;,L%78#)Ek)*9q%tcrLjKC
+Iq`7%N"2aUd]bt,?B8iWj^Y+<r]ZHijo3\7.,/MQn68E2O-nSFe]#&ag5g!$Q'+_?r-=<9d/MHW.qG/>
+W#%nO""VKEo,f3M-ab#G#:g_hcc:fW>CP"l/,;r[0;IdmD`iNq/t&KgT]KZYXntC)b.k<eM+\u7"/9M&
+ETr:1rFko'^/Q=l?QZ]\5I@nW'tkDTZMspa./'TEUq^^DTH.NU^M0kdAVf1QO^Z&oO584N;*:qC/!&Bb
+V$c+ehhjb]AH)X?=EOQC^N?#G*39eEp48I6a88SUPC+kI0RXk_+"/F*#S/dVgc8MGDZ9]M&nMIJ8,/*'
+LM7AbO_DgWrm!P#;=28dQR0<CTjYE_3<&tmD//Jt:sF$L#+cE2qkOq$gP7:))Ro)Kk(OnaL9$8n^)jLC
+q^ilE3E^((&)'GO!36!oY8+g+AFS-+ao$i"\8niDX8>MjXV604'-U=,oCuY-A:a#hO3H.cW'us#^M+@f
+5IB12@K99a]d2[1fFj?s!DohIn*N?nB8h;f/.$9gT*nc]PE'D6<!0nC5AAUuJ)R/Mh1Hpn'sbk$[3"*.
+Y.=F)'eFiJ7,V]"n;>m0f/.ho\?\ZuTA"=1K<OYK&G^pf*ZD9(*V&SklP:]8*@9V168gYbZp2`rP5ZEL
+gB6X>bqH37U<7u';p?Wom3<Ml?-H)u[.$'J5*Z&S('S?7p8:;k5I@8\)n(:2)7%B\F4Qtm)iH59n(Ml&
+Iq]W+3r]3!1Lbi-;=2H;K_o]T5!^FeMKr:uMYLf"%R%*-./)a67sXu+b90UUB_eCE^^]8g#5plG4h)%2
+n(NH-OY?)C9X15$Hp(tk#LF,S[j?)3"9-fp.R]o9S/\:A:jbKAne9BZm^`o#^9M/&A3uW4[5hA1Iq^ui
+":_Y4pnt4/aSu7K4Xkes#(H)R-iL)J!oLA%L_%@46+#p'BD5C)[h^%Sh-TF@WmU5$mN;.[Z+EY`#X#4)
+bt=9]aTa!<R][Hh?9LgPX>-g&qa4J=4G!HfC&7hoYM,]I`6mil[9TELJ$_,&G(Mt?-*KQ/%[Y`h06ii\
+?hUQ;;-Um,o1>#Yb`=rCD6u74=MY*k]cU@,rT5p8&eE^;(.S)XiP<;'Wsp<chSTngPO&`#=f+Dr;ok6s
+ce@=lDYVQ:m(X-F8<l[)drQHQJY&`oM5D8X(L\+`rN?4sr\O=cao!>G-<V!FZGO[jHIOKN$29f-Dt_-M
+On"@HGoVe-Efp.s!27rU9es7/0#S@sQhJO82RgZo#8IK*1lHlTqYc_R@c1%p9.,Pq!,StJQJ^]2KGfmB
++%s,`#I!tU?e->@nHn_um@48/HrTT3Ikj"1rr?Y,O.:cbreX"\^jbfW57r@t'#JOi4tLqq7';!U/Sn];
+gE5>E<NI'op&n>G>RE(!id]\L5rTl#4>Q:$>8["cPtRa]]/F;\orIr-#ks-R`LjS3L'Q^VKYI08$Q474
+qfAOu&-h2u\+++uNfjQ1&\KJ8K@&7A8c7sPIV_3BO0$eR:.:6==C8I;Q_4%J4?qtVTDjD@O0n_MceePg
+4*pXrlOY`+*WH*C">79H_>TD32VofuMJrqRkiGV!O4Llk/n:o<q6N;UaPlQ`%+ugK94[m0HIkN92DVGR
+g2%GCE3i]KpboH5iUbYbeW\Vl4?!&J>i%5"pg]#2nOjh_'SH"0O9brW`LB?JeDHVZVVn;XVIirRbZGIu
+*<p8O\WBqHZOoeP_X)DV41W/Cl>$,dj[Os@K5`!hZA'HLHW:eiUeh2O;'8)MjM=!-kq[MrIMeA(/kq``
+5p56K3U'G;*2qAAfc7q3J8tnrEJNKGX(>Db85L:#S1<o"F?`sTR=Q>9W;H0'=3_M=n3)%S$k35QZ1a"T
+#eS-V,Fh_S0j'\a0hQVJq1qTIqG\*eXBgP\WpIOa#E#*?,m9,\>6uE`*$G'5VoWSr9,(6k4L^AfKm'F9
+!'TV"R$6l7W(CKDb6J"LS9=N^#;G:p8I>"0)gV5e%--VI!R,4E$ur#`[>\U`0[6/`XuW.Dc`mPn\gI[N
+dBI,2^AQ?rBYaa$XUL]AZ5oE+aZ/Nf!9Jo$#tgKRS/mP`8-c%rAN+XF*Bc$N\_TL'dNiPRDE08C+EDd,
+jtc!b/VLtHOdF:(o)N4?$?OK&71J%"Lt"sq2PD7T]9S7DS;s-UZK*EgcI*r%RM9/!MQp$E-aDZk>A@)\
+/VFETalQ"7W'\F4?+iBU;Wc2n&_C^ICH[[3`dqGB.j<WWE9$`'mFrJW,!2BAU.2>%FM\<KA%@^9";osd
+&(ZAW/Inr;*$VF5')Z1#0Q[6o!MIK'P2QQ/f)&G`HG"r/!<GrE;mq7VN-M$M52G+0G#Cm>d=:(2)A8N]
+!YuBJmN=\-F77S[!db\(#_E\o-KPBnB]n\ILo/C]N^eaSA.YGaSH-,7.$=LAM,Q#@Khqs[r+J$!P0lD6
+2N/1XP]/\WcP2>Ka`d,ecIH&C!6VoTBa`[mH10!R+qAYK0J4Vi#Fd[S2'?a:+*=I%YH8e#3Qn[2XI`Z/
+TJLLaaAd$4T"G(o+qAVP">e:R6P.2YOg`fr^V=ZSUQGdAUldd^@`%SuD-8d"<4;jf3f5oucJt?1el\3a
+1shAQG(=g#EWE+d)02/YH)JerAfrceAn!gq"SAd]iQ?]r?aM?t`etdtgO_(cbGAtI%T!`=QRs"A$pIZr
+@ib>%P!_jZ,)q^bphUL6ZDe)]nPnG+3Qk7;#48Y5]?YEXVDJ$I&mS[5#U'bb0FiXI"Etr32-9>nPajV8
+OdO(k!teL!UEt`V\#h1V%4_HIA:u-r$uW4h)Kc9Lh5+UVEg2]=/<04P_!iS0O/L/iM'*Sbjjg2e>QP5Q
++4*qWLCu<L/BkUp@@-(MOf!Esb*odB9&+pKi^SOdZD/.E+[eS7]trI>XR'_D?8r&cRDT`KE)"Mn3:d(L
+5.I8gE]o;C8K&r.cU/R0-e5Ls;R^+Q>.0GZ]8Zp!0+7m%?coLi=>"-/\gZFq7(1j3FZ&%/jG8V24YTZ<
+.l=X<aWuBca<)o&&H1>8Ncl[]#3HMtOum=SC,u3R.?^YQW7h7\%e5Y<SnM'n7GN0JMR[r.R7YJZgm&-/
+>$Z:e]uI1c0%S[fObRu]0>7_4*qYq&fJW(Si=(_.7^>4&AOTT$e:dt0:L/OVYusGUj^UAt^erkUX^/'6
+$;\2(=FA-,.A(]hn>qi*@nVdsb,HSb+S.C]Q$`@I>?uC[Lb2K!OW=uN#]7F<nd>$0b=bUIDaDh+^f!MG
+7)1IsSlu-(laHk:mn8o`XicCOR8N"$!iZE57E6L(<S(_bO'>`:^f]V(IU^;RiP4iM0"VG'"_a<.j=p">
+!SG)8!%?=$S]:[0A\R!7@fHG1q_il3DU6mn3u-&d/,fk`42n7J(D5:`Tt9!sjl0DY0Ks=umh-*8Xa3fk
+VR-lZp!p5e1h^tmCNXUSrrAi$%S'3#<rD=Kj@/:?7FnB@LK`-dRbG]5PmBHFAGl6@al>PL*lCj]\^G1N
+B('*A[uM=7"VsXn6l%32Mi[u*N"0l&@eL*\B6-"4Z?Fc0JJQg<N=Ed1,AdGmDC^b7`EaL=948b1KMi<n
+kF`j]7Koc.A)+AF&\2;];l8$qY'HsD@)^UTqb^!V*5:Q53rHZ@aAQTh[uj@G4DY!#"r08//A5m9aGLst
+%M*l@2deKX$&(Y_oksGh3s*>t'.U4kjD5t2_;^Je-=9;R@+#_j;jc&ESFKKLOYDQ)%a%sD(famsJtBrX
+O63'X&AtlT2gk<U)4#Z@lE/3AW*Ul[C9/i@3'_#!bX4MtiJd_M3J:Cih*tjR,fY&552=\0+>1Nn8<ZR*
+%l-Oa7O+TO!7[tK@MkCZ`)nSNmq8J$).kka@?jNF6Ncp=,t9t9;9U6>0rgV5bf^CpG+@'509k+N0F+X'
+\$'\:TF'!NR@bd9<fEe7k5^X%(_WW<L-:HFMT?BVL>`%gR[XB#Jg*Ro0p`hW2!fR,a>K^oJ$YeIaWaFV
+Vm^qaZKGUdn>or;KefS,TcFF</C]BVFrhZ[Z>*T'9Ihfi_<E4jQ\FEND5ffD_&)Z5UijIhctrD:mjoKh
+a=;3b6%G+&AjtDY+;-`-XX5dO6mF$T]X!eI[L[ki6B`pjOoUY8(r=9<Dq;9*FqH5@F`I-V.Qqe;5m6Ek
+_L0-lmf!FfUZmX?&k.Yq>p3e:]>"9;I4-V:PIs0n?]hg\IZtCJ>9e/qa`SY-9HNA@>gNR^:Z(tqq2c0C
+FNETp2'EAGY!<%ZIsAKe9(Fc0JL"'BYU;nQ/E=/Unp_",Fp4gq.ch\"<kuaZ'UTZ-5ESMWpMTYB?mNY&
+AQ/Z>3FgYUO:P5^`*!h`?ucc&hQ*&pjGame4.8.M/L%&QG8u65"-c9[DJ\ZJqk('.drJhkZ&p)RA9G!A
+1<?q30?I7+q+HJ[h2jGW<[)=0QPYt^D]8WUUW'Gc+":XFOm>7I#iE40lsSK"54&>=4CptA,HEpuR+KiM
+d*Mk4"EM=pdC7h95;iH@\Uhm&!'-\Y"BfjmB*8dZWk"M-8^\18&B(A4)eeojX\'Hj8D6R5/4A5dRE*HO
+pdZ>8H;i5D$!Q'c.TprdJ^EH.Qko(a-Lro^5RgdN".n,+9s*Yn13Q:A,_*1Ga3pam-@iiJjOJ<,>Y=:q
+=_2U"G,Zd*0:'g@+SeMT1`@"&9)[%0;Nh/_M$iTsrrA$_fE'Ah=Cj`aV&,gBXFQ!<@8^T@N^-8?SpqZ]
+CQ"F=-k,10!!AB6\PU2eAHBjk>OE#Nfr>*4NSBUNoUlKf[e.nR-8&0W>i5bnNdu5M;Ia6d7&knO#i3/V
+gU1]b28DP[2jhTdOcCh/M)H:jncjU(kO/qrS7CeL#7LEQ>/`D-n;Z9Y8m;"TF6XXMN97euU4N.(Q>I$>
+D#aqTOQY\0iK#3FC=J[&aBI!(\K9VLhB3.s-Ldo\O34HgB?nd#$gfus[aR_c,`a,YiUUqYi.IP\C;oNs
+,#8h=NF#[9^0]?$.KCdLf)sU$'5KqU/5s`;+p2hR2AeWR@uA[YfF(bXD:i/-N#-.PT_GOufS8&biOXnX
+QP-<ce872@ps7Nlg9G[eW61H#P=Y%G:R@5!]=)tK:YN68?1QapfouIhm-YQNM,MjOGaSW9jkI7ap$(29
+1jl_i/Zke&/'fr.:BZ,_6#hJVc4't5PHb^U16&=!#kJFM&^R@I!ZIM.nUcWcK'i;(;qJE%8$MM*T!QL>
+FP.W)e)g5$;DKiC)/.*"Jd3.cX'f+b=d=QsO<'_]m9)T&[1KffU+kGC,L+Lf7t0!OMmsN*.`o4jf9*KC
+4(R@q[K=UGYRmJOM>*D12#2Zd7R/H:HdmU`&k5Tl\EV@iKa\?IDI$4$"]pjMCHcnD(,_!^+Y&H/T?j>d
+Fp-e\qmROU0iaTa)<?[:/s*#oW/X0g)/#-T2`qLKF0HXH'FFp1/,+8Zcb;,*/$UkNNBYU?-!h:5YOJ*u
+j;OGu3uRXrWmMEE%8#&WLr%,LPf_aVcL`Lr:T83V;c/\Z5M78Al.2%VHQ<MkQ?\1/h>+6HKdL1jd9PfR
+P8X1Ql&f$?!G)]=H>Ob6gW.psZ<Ml:A;-!<CXdMbYRGd/7e<SWiA_5"r+H0!`-Z!\b2oBQq,ulBZ+Di[
+d.nlF<L-qFj(-iP\L4)l2&ttl":g#Sb+'Tph/9.ENco#<M!Si@;,paX0cA'd1,7#\9F5-\WUgus,iCV1
+I;;)!^nm/miC)tic_/95.6W3h$t5upS8KMtN]k.$Oap2B+=+@H3(Cqa^=am^J1_ot[b[ULqmB\Q!,a4n
+&/<6u.QVRtU^>a2p442k)#U\YO'UD2#=fCdFBk-J%M)6W`;iLQAlXX8oM"sAW<"6a.P85nVE%Yh`Z7>d
+PcP"l*RBrI,9MUn)mTBUf9P1(EU-PCObhBiQR6[rPDZUFM&XYbE:U;p3s",5"LCK!iJY$'7W?Bc,98ge
+TEfa9"De'"a9k,<QkDa67HE6L59OFE!0D0W_gjgK6WJ(V7"lR+'Wo94^7^Zg/R?/rj7d%r/mKP@`8[."
+/<IQoS:%T8jEcAB*2W3JmFt)r\?&RD#IZ#bD%Jh(rU<MaEtH3>O$LqE%/\Bt\4IP``u)\poD2pK7P%F'
+_*(:2:dU8M`_.Ou,`X@bR:>u)dlu;)!>m`]B@%]OKt%N^.4qnHo`T8<YT8I'2?D,m4U9E1SUg(=I&0:O
+K8r">UqhuL.W?Us;T&D^hS:7fR"\E/2Zr>\+<i8DIe)5m&WuB[UrCJ9+CkhlM*=k16cE0Hq[.c,EK;WL
+l1_+m.QFWdQi9=D$].2QD*19r,Go[!)9mJCF%Q\Q1'WUR0uG[mGAqu2<u@^67#b@,bs9@>!?",@eF5sc
+T/.j[)a57J%<i1NMTIXr-['`BIU<#]%q+K>iX6NW;Ue`m'nWHu@"3D0JQW\.C@<20)0Lq2!\e]Fo^>f(
+_!-7!k5F01@]FW2++#$<W<0c8X&!c17qGudDD3lmIOG;*m$@C/:Dq6:(u+3?_"pkNdHEKi^1b#,-rLB-
+_"Xkk@c\A".dZ-S\arZ7Oq/BN[3Y;Zi3_#MhJjO?8bRkUZfJ=jFBfDD/R4Iq>u;,ul@aj>0FrZQJ]HS(
+@_KHD#k/MoUBgCda383Kj9lU"NT"`jS<:GV'a0hck1CD\S:&8#C(uVjdkplN\<95$ht%nH^!EMt/4*3S
+_A<FsS\P,LI)&itfcj+AW9ajME..":YnES%#?&W/^etPJo]t@g"h4XkOqScD^k,?Jmof7d/X7Ir/;]Mq
+)>3plF0H^J4DY,DV0;973hKhY"5Z-@+m=34*kemF'#Ml6,%(Hfb7W@qTF8AZkB7gn.`?hIblCmTKuiOm
+]sS&,W0(RWnqJ8C%\t#c;S0K/Ji_]rrrAd#Ylg45r=i1.A1c+fd$)Y`etjAL<KsFF1U=+<SNJBBKT'ch
+"Fmi1Vj>7\+Z?D[gEKP@dfKo"-Thmg\XAN_rr>TW&!BN518F^WiMcm$7Soj"$EeOTM?Xf8O;Kq;BMr53
+=!3Q#8*<qH(lXM!3?5;&Ojk-1MTDrD8FQbl[=VbVkDc:oHPIMs6#g@AgOg^`]69d9ci`=a'8:Fs`rL8t
+>jMha66K)[&24+Yh:FK)0J,*a6E[,^EYkQC()9?(Gfa>_:V?a3?^<MR!Ja!kXT/A\.Mbp6h]t5GhSOda
+VDApdZ7Jc95b:o-6:]mA3tA-<-Air2MP/_Z"YB1&mggEUO;I"re,[O7I+&KtS(.mWK@CCdcig%92R11l
+G6FG-:X)-4"Ds_8/]U'IJ=Stn,"Ooe,9u'1J?0t)'9SS@gQPS;[EGW2O>_[DJ1QC9`2l.A0Gh!e#=TJm
+0[/0bQ#VlD;iV.P8-RZFA!7U<:==<'g,=/k-h4)NARI,W5%+A!&iirT"TSQ38nHk]+HSZ4D4otLJ1g*)
+.%#SbZRhpKpA?<@S[j@o-+Jp[;\V.N#!I"eRK0ioKIMN5(u2J3b(L=neQHsbfq<_g^_Xao&V86dhs3PH
+<"]rn6j5k!%r)9j+]`WVZ>`85lhora-^X.a*S[_F!TG6ZG;9Zp%buL;J.EnH!Ppl"H@@_VbQ\b3[PhFX
+:)/tc55f4];MmgkT:J8"];5L-0S2Z'1(Hc0r\[s4!`^ij80!3eVW*,^7`Hn8`^GKbA(2T8Kt%VIg!p(4
+nrBW]C;?1XkO1@eoc5d<URcttrrBN>SaFG#n:g5*ASZ(2&i#G3.tZJF%GqobF#)r$!Qm:W.c'OZi@?^L
+h$G2)djH]sU_VG*Z0?Qn9SCG+g_,V<!`u&QNjJmF[%24VH\f]H.'a%I44!QD"=Y9NjH+*icZ9S>b_dW`
+p4lh,'Npt".<B1.1hl-Nb-H)Rrr?j".KH)3e,7B^W7k,BLdO]r>A2;H)?@96gIA&6XGur[m+o!5(2]@#
+P/q7i,9b1_E-Uh:'0un(q'AU9;7&_Wk<*-nhLI5G]U86t73ESc5%*:7n`rH"&IcMj"KYP^Ia2r?F,mqI
+(FgK?Hu"s3cMR`l:SgQ8Eh_8\/4uXMZH^5@39SkQ?u\%U=uc#!ZJn6+6j%<;e.Y_l9T*U<R-^Le>7nlj
+@m.G#"3m>H+c]OU)$rc=3QDg6jO7t?"h`8$7Rtb[8(>o$Zh?JY<HtZt;9g,inuU?VR25cGUn9M1b7u%t
+S<\W8*Rs&P@:C11c_7Fj@U=U9,hB&rfp$uHBEHf>m$^n9]YrRE:I%'6`;j*T`p3"$JlMfBGQ[H.$[2)0
+KInYT8GZ-dh5QRY`I[;UV#X+&hZ+7qGGOp6jEBXni:<ZYqURu[*EI`->0?V2_)ElrI5j&8bZ<ntkR&pT
+qEPE5C(`UnrqG7HZ!+JGFYWfpDSQ<ah7+PANbb'SZ?F,4d%NulQ%r1_;fP2:gdep7Q'<(i%Gnj'J1">*
+%0/_n`J>O)8cZ.qbLsWj@L!o'\X:cb,Z$l&64Q(s;Hn_kMYU7[)dt'B)m@N@5*QqORP[U/KV/c4!+FNO
+31pFZH.\A_9,@l0O&M*C!1dS#3F(r=[TrL]m6DQmDF#$tkRVt>;%ZeM.:BgK\Y'7HU/8;C)=n6IM'D?g
+4Q_/A;VNK1@)e'p#GU.!TE<r07$+.a&FSA]&2DKRj<)Bl13@@cmn'a@cKAQa]L=q\cS,!XW6cK='5%n;
+[tY&8*e$tq5,?U/A?9]gJP[nTT0!CLN3NZ4:.X/3g,&3:=G`:E.6N=e/+oP@JWT;*TU?#>OjcF=ci_iE
+KaC<2P1fh3-Q*Pg#'fC(ZiJaen&(3RIGAqh!)B1[)3Fcm>6>m1)?>b,)a=+j+]tK8n^,VaWjj;U<ETW>
+*=j/=!mGY<<GdBFJ0eL,/<ZCPE<\S$V@OR1epoY0O;N/.e1-KRXWTVp%!-1;Za=IM8uhhS3h))?+`te%
+'mkL4,$mC>CiVQ6VuU@/O]:s'PDT?\gVfL0\KlBp!$b<+o$ha4R[]8**h4:kX@#+H@L36.mER`i31p8k
+1)6;%B&G1eh#0\j!SA>o,EY>A47W7t!KA#b>]i2Xrj2\F7>53UY3[1BHM4%M!^>8ZGKB+Lf4rk&!3-<@
+nB;.TXHqeb5nS-6YmP_$FfeugW=-(C5OACM>ZO97H2DBF(K1$8.O][1Y9q97#`rceF,YUp+o9ffD*fVe
+e%l+*Wp3ak<\51:"Hge%<jC%Sk[f81NB@cqCljEGWK0-INr+[,Oj.q*Yd(Ze3\,>`0bo(pi8^cVHI&.C
+PcCGmZAfj0XA4/+54L6'mO74/%uN"kR,_e#EP.#hrAXkS$PPX'HEF`<-XDc=OFIQF_fkGr"+*st/ajt+
+%2=Vq(-f[\hsd9GZ,X]n-3lcQJ^:et!78,YOKp;1%RA#iO'2OhR1d&kjZSs=Ii:Xb[>PLtb[&<F*;2Rg
+8tKKkMs,_B44G#+A$$s.AJ@eHbkZc6KAYucc^C,]!Ks5$o"JZCh]H+M8Ap,:i9^8uOuFtTO@e^sTF7($
+b:UA<5s2+u`c:H7!Oi>'_a)<Vq.'e,r8VunbFO3[Oed!"eLusKe+'AE>(rN86CkY3jW+l_V*P-(0lgbm
+*an;r`E3b)!EeH?)^GjOP60CE[q0(1W&Qnjm8;0EL\i^HFZ9L`*QT)qJ>8Zd'Bl^,m1Ou$a##5!*u:7i
+8BSCeE(82E52@_S,`^UD0ssdCn2&XZfF'DdUDkBInc8ucej=^&p36+475QS0AoL&^9X)J?.s%;hO8CtP
+hD!$H3s^Vs/AUp!Ip0!eD"]MJID')j?)BaN4hbi<P64,jb?51^P7`NThReWbj]0QE/DNr$W@oA+W6Rn>
+.Cc#s"r,6*)'dpf(_Q[6Ff5@k.7WJ0gF)5N&i#GVJb(VS'C.p*`!imdaQ\mS>g;J-@9:<VJ.lm1f//6?
+LT9K=SFY'i[%D*&OBD'X%>J7^g^\\]Ln!PH8q\=/;1MHATF2*o<KQhmT>H+1L&"BN!Je`tW'.'[Qpgc?
+NP)k5U^@*bB1V#">clWGn:00OO9.mZNtE"^_[N<;.X?b26tAanP9U,?B,pW>huj4T38aI.Wr0aPcaH7b
+/\llA;:$?$l8bb]($(E8IDO7ca%Y$>IPJ)"aW+1ZMI6+?M&Bf@9OepcX\UXm@=^[['$S7Fe6E0:'bXX'
+,kAk=<ZrZB+b2kF"FbFnCMFt=>jp<E!D!@q78^Q*/\"\>oBT=pP*f8uISrp9mX8i'c$N:EB4HM8OFJaL
+OJHm-F9pTdX#cP$]Sj#jOEp4g`L>5RA$kkjIW[nJYUPO6:B9GGU]X"l3jCZ[a0mI812V[@i;6L[G0kL,
+V-kHhAN`#Q!V.G9Hb/9Y%nZh%N!TD\:`]lZrje[)0h+D/6D!O)RK-6<"0]nhTEP(O"98rM'EHNuTffTG
+41?_!>h*mL)<?>6k%#LM)!TVI$P<e/!'ZZQbZpr-;;:",?@VM1Odl[DQpY0W0m=MNf)Z!$?H#-m=/Kb"
+8&H!*]AD7`E(TXGAKr$3i8di"B1V7F+NYj=KgH>oksmNWPTeg,#g+$/#!(sgg8&P:CLnq;&\c/GH?&T:
+JlIGS7^D(:_T$lie*0/1MaJ3M9N\Q6ikc`r+E<Di!pdJR/:j$JM]U?ZTF*b\H_<lI![nK"'X&XNS9iZc
+E<GY5'L(R#01#&*bQXiP`o]#c`,l\u/8,-k5TN3>Q?Sqqa#Kkj/W&"c5RCAspd.%5dZD#B>)`O%hF;e8
+0QBOG/>?`A)1n$EoHtVjOTgQf7jp*Q^DU_lm+C\j)HQ2$h*"^;;Iom@S]j.CHN:X5&o64V+:j]'=D_;_
+fPt#E3l[mO>a,]6$h*o<"5nk"M45VY(kP!*ks-%f0WJ',p%A1."4cJdG:Jp!bE:YFfF.ED2I[su)i'eD
+Zd!$2GE=r*O>@@C]]C.=VEVD8L^;uK8S1hMiE*3Fe)`o,m\bAmTQ2N<;e<)6],VKG60=B`d',,MaQ-Ag
+/hG5hEiO-j31ujB[3[++W%fN7i0$,"F;)mTK+5I%$CJU<_'@ff\0>kXq]uSM0Y&%@D#4*D1C<E@RP-5Y
+^`7_"H)g!F.#g,dN`R#91<M_d5;14/)9JTCf[7MO'$fGJ<&l,sD#;dg`b?'T)iP2J?<?D?jtu-eTlgpY
+8h2=T!'*7!Br@nM-)j,"H4JtLZu+N!ScJGaC,QkaH4rY-@r[(ULFQBnkMEL3E)nV\IO%!U"qiTGaPsQ^
+/3M,H(0hV"V#X_8Lt4<#7srYdYtGQ29-*q<oGR:o#mZb(Da,B.:\CLbYuq.q;!Or.7mZTBEL+`_Lh@_i
+;m6g$2oPOPS\07eO=*,b)t3o_,N\4.l>os5*"S@LB#`L'!.33&O<cn&Elna(#^bY)Vp#7n!s+qi]S\<D
+9PT.9ScL\D6qFKub)P2MD"l4'YS0GBntg?JfZ3.N<<2+8VZ77;><^tA"-@H^J4Soq$![U<SkBP-oG"A]
+;ga-rJ,jmn\?'O4gFQl_%I+GMH??(-:FXD!Yq"G3@X#3-0g>E5.+'cK3@+,[&eC3HF7l=/)2S?l_;OiU
+^e*W8AJsl7!X0^!k\("bTn1Gg6JjQc4Tur.:=,d*WTG'@5XEN.m!F1<Erb$t^VdhbV<LFa@_@Z=8uNf@
+Wt?\uTEbqDWeN^7J/PbYF,Ucki:NZII/(\c4O5DS".]@4!Tu\U2iqqV)^M9",Okjb>]g\3H@oO_h3i?q
+MB3!G6T[=j%C-sl_<mb7VKJ#upK6H*!jHL'fB&Y2_NYSI+[J55ifJm`EOfTi8t]+n&)JP@'g0@p6h6UW
+ne`p8;,<iIAt@'r.=!41ePlO=3!V[nQks3:PU->N^uYL&4J5:,mN=4Z:BZ#E!H'dc7O.0re'S&.F91T!
+YOb5a[un$>nMGdD>VYgU"K9*VN<&Yt=N`3-UQBFX5*V"ljd9+YS_nN"R.]LQ%qA\GD?WdGN_G#G;Q$$c
+C2Ci#$:j5>!`&A8o^,f_/-3EY7mS)n;tMoCZNA.K)2H/AP(E2G*"H2`4E:"pTXg?'P!gTrNu0mmp7qkb
+?(cp/:g!f2O&Fen-3^?tD*]Po0I&<UDm".YcG5pmb:=V6+ImdUbeTE[fpXbZ>n0Hk1-8I;^p4jX!-uBY
+mbI\VoW;4/7iO35!Q\Zaqh)n'3S4\LQ9ptV7WSM/KcKH>6sIZM^7?\7AWQDLnW(7]!A_WTP\260<8:8Y
+@"=L_JJDcBm2-2K'9E\Q(!aW1QjqjV2)ced@ZLofJY)k+5_rg-50jm\)3NYuC&T2HSl3,PHN_>Z-ZTWg
+pB)V%-)FDp-;!c[Dfae\S5jTpcGbac,IlI%+:\_D6\tQmd$,n&j9M9He6&OM=:"^'7a^$n]eZ!"8ALMf
+2un);F845H,EWYHBf6>I)gMF1;9U#9RI0$V<59H_amGNWK96`_m=H2*a`JNME,\i*q^Y5NYTmoR_"3X;
+R?3>CXn&R\&T.Xm^cCf-C(SEK^!phO+GJlgXb_#P>jQ]7$p#0MI,hV"aI4X+W2tYtA.e9k>'C%e[&jn$
+9NfSs=(h#]NmrSh$)/V6)kq8^4X^A"]MX6eJ9mDE&iJGJ=;T%$jAWQ)r6'?E8b/rR^d1pD+1+N]!(\?V
+a-Y/^Ykll@%(GCi\197hYh0!P](+9IbQOlV8D&nE#Od\*gsO=G8"Ujr?l9o6]g!RF>R;$=-=Di<d^`7=
+HVsr:\GJ!WGWBMd^iS'=KXR!L+js7bHP=\<joXtm#ft^bjS^Lh!`FOu0[<6(Er`s?1YRjs"Y[E,"u7u'
+^pS];or8T85fM?H!Q@hgaQ/+ogj]n<-B!EpEM#%R;mb]hT.#Ue-"\6*SWD?^:`e$*MT'P-!_=?qYSH.o
+8T*[X'-;p[;fRft'djuO9iut2'jp\05E,Y3QJ7t*YFY[n!o8p[J2eY*!YoM.LC+#4d-IAuF9VZ^rrC8E
+UK;L"*u;_b>F=LV6?lDCF<=i]cDF['$n5RELpF5ElTm!frlW+`38SW2fqce?`/#=2Plj[B&Gpe'!BMYu
+F^pfk&Dk4q`;i(*GU3t`K,Y9)kMOj_0G[9[@_l%`ZQ.mF;p?;t>nK%U/<UHrM,0rWg^,3]2EL!,j9A<e
+8'EFf/]T_COJL"#R7LqR+VhjJ*I?:am'j6B2lVq0!<s%R*I;q)SX>]d#!r-s,6QJIrr<sBm(R8$5W`*d
+R0a!#j(iuO44Jn?/B8C+,sk:U@&`BlcH%YCW%GQiA(X\"D-.17^bU//jsL1NA<J)VfbZ+K[RW20I&atK
+XOAVZBE^oOJ"A%iE.q:M&f;^TpBS)RYSU0kjU@$,#i-]fF+&(E+=1ZA`mM$[`"$eDJ0p5nZ'iVl-?]B8
+F2\N+/c[d65E0FO!V&7!_eqpRb]P;@A-B[VTI=947LRO_Gb>?X6$?8Rq"Zr7`;j-<P"!6?J\1FldU5V'
+hn3n`cDQ]Xe,q(U.&:qja/;%\^%kUh+i+[hb`<DW2^&]Jp<=C08:4WD3<OA=neW=9VLFbh*"cSu'I*o#
++G)'6)3.CHdN-9#PNe^/YA,ZmWe#J:HY/?`iW,nZF^n47dub/O(^,5uH,/nAU>o'<KEVXsE_*!'AH3s!
+69--A!$KQ_b^OF?j$47]$8<k4/*2kr:'^u!B?na`HT7"ibXr1?R61&6:2J7aAml'''cYHS]fobjc=u't
+7E^,Ha",4J(ut+]#[uU7Z#2Pg:?IQBRO;K1kN5Wm8BhGcaW]GEjE$@$K1?&(3rGA))6u23+7Z#JEE1i*
+L>Y)GH;FUi>O?@aWSm<!5Qj"=j=<q+"`oCPrHY%@[B7)gp'g?l-p7c]MK]+:e)?EajAp)9:Tr_J!9s%X
+@'3<;EX2UE>T*U*)bZHUPqF(C"CiYuNt_U-=j%ZQN9$=C0Fq)I(YD8:M,Y6f[7Hqs4P[lr6/@,/lTc?S
+6BenjbV@.1!*$Uk+-Fa.g_9AY-j&#TD;/gomP-s>`AC?.H&)ajo*PJibZ3p1NpNi,T`F#ph_GohE^B"l
+`'8nU_R<[OH;k;O._/Bk?kG^+$D;40.*ke<He*cj\,MgLiRWMtbOYklE5r4RifFZ@Q8/FcK?#i.(r[G^
+Pk5[V"M6os#B3*^JJo>;<?P]U,Oh`Fm/3CZqQ0\sj4"+mhmL(ARZGA"^jbS+>]K1"Q8/"+0s<pHjj61K
+:@>b8pqZ.FQSI*$(01M$0ng+<T(lg?*5qEB!?[\&AjucB3MPULb0't1AgmHo#7$du4_Xq:=<8FlHK'H#
+5[6!+'RoB6g4177KlIfZ+kN5\J=0II2BA2)IB\-7AF.+D'!_r+bf;f3VrLL&A/pjT4MhepgH9IYF0^'f
+XUCVZ1]b!c"uYUmrj=%8Mt+=i](ndG;?1U!(lBOFJGERdr$$YD_TW#O,A0I+#6#]a6!VXK*.D%!elG],
+Ih(>MSHP7PNECIZOB8#7EBk?<5nH4,Ojoo'UeCJ:!7G7FJ/81da">b);c':*PlMpca@^KJGW@#''lRJ5
+5oS&4,g):cI(XScq5fYj.a#J=+\IBp:OhP.idd:nq(/!>55'?cTF4(D2XS#9G+P<uY%@d26LeJ$X/J3d
+%_;!'e:B=_Of>j#,_PNip$G!WJb"R91$X1#"%a1^LMe@fZiSU=!`OnOA7^f(dkq,'Kj"QEUn,c?kI8m>
+_L!%1`n;:7R?W_[`CYnC6&#`+MW8Kl53^CCX]:8AAVe4EYiPl@\E&.Gd\N%6K-MC`:^D=A==\@OiD4:e
+ctg^Z=LR9!2dhS"FSp3K$8)q]YPU]ips9/#+.0.C$4O,fHI)eWPq'R^-jbC$;i1R?@`%SOL](OBHY.d=
+T=CO!$tO"%gsAE?3`r(2Bf!o7UZ>g2EJ)`sK/@Z'8`-Gb\,oPu!;GeFY9GWkL4J>P[p]7:I,#g`JtBh4
+atP4u>Cbue2L>e0<Jq>Ym!;K98./s=%!S?N1-`@W!;On\[SNi._LN7i_ZS!c*N0%N/#CBX)"#*d4_OoW
+ZNH0UGb>W@B,iE5:I@FO+s6N8,N;0Fa3Y@dTK*T,]>3Ra\%/.l&R=12B)_j#,98Hd%RaH[BO)H;">_J-
+O(7K@S.LT!Y1)NhfOLE]EU?&ZZ<13[>Kh@q"r%So!,]H0@,S?+!@+9bJ3p].&eH8k4b99R_$G.n&)EO?
+4b+dT.GW-`Q8e^k8kK!nh$NJ=;?Ab.nh;hLaLnan`u^c$=?s4LW55nGIuAs.o;W]C>g&7fCie25r+I[u
+&kR,ddC.8\^ps*a1lTU"Cpn:cV%Krm+mMk".h$67`-48`5),?<ZE:Z1%ARUX"bf#D=H6T5)*N[3!O6fr
+f)G_Kl9E&UW9.K5hsG0Rqci%5"+^*Vi$A$Yb"q/pn?5`mk4iU:Y'b'%U;Er+K6HY"Vco:(N6]hlG)nOa
+'Y<u<*n12sL%+tY)8Q<EK/H[29ra>M9*g[T!^m9Glcs61XXn7MP!JJn!4%!SLl0+a^gm=V!m>I#:<tc$
+gUM>*nX:!tfYa4l*8pRmB.(oRe)$!#-jmsjn&MRl<hMTc%T`dd<SgN#3N-m^8s,7HUNRk%mPU@J@g4=!
+cG^Ym9Ok9@*@N)M(++9`_TBDOL@8QCV$%R_HD+q4Q&!GpVm^7?=LXZf2rDI*h>X$=!4*=?kmI!A2TU5s
+HK(+j6WSIO>"KSsqaR+rV]#BIi+(K9R=P]jNt?[J`PR[2C-^1(.0OJ2=!:/Tea,Jb>g,pq&uH#;M"s,_
+!.T@"W>mc`lOume<VFNPhT4Nok6($MbeUKQKi.`@K>Aom+@uBe-p.V+Z0=Ld5YCJ:!:;TDA=k^b?oSAq
+OI7A/2NGO*oVpsr8X@be9rN*68.1JWdYjP-L(7B01=6.p51G*rgdhPJ%oR]aXZMC+>>;2Z$3U>NhB%I:
+8Au*)V(`Abl(;=/G;O8+`(Gk'8Q<!.YPVU>)5:\/7j,;<8^MhYT\#;:5c@%(hA#&=p7S9dO[Q'9M!PE]
+8/-7jA-5,i4!)0<$B1;o2W'!V!DSbG!"9kCCuZ?qH1[cVQ8K^V2E=]sYL\4NMdj^O&k`BS<:nHa!C88e
+T)E='nOB=/4Q,kuBEtfm7]H?GE'aa(>Goip@^e?,+9"Qlc/)#=h=tWZ#0$;]f#M#8:]tOpJ6!Z`"1b'G
+`L4N%2.T54IeJ'udXr:Em@YI!!-J[1W#;8\R@=V8!V7p<"?7Sp!%OW0E+h$HY^=_!fB!h`!3.fs4\24N
+Lt/CUF-RU%J/n*uK%Xt=cfJ/79Ru3'.ETUF-1eEU']X7nZLTCRG$J'!#q3^^TK1Z?S=F^aF$M1Y+>:mu
+jRIfLK1E0[_&<'RJiVhC!^RZ1.CU'3L(s:G5Sfi/j\E_J*BtGBXG_KOaB@Q?!`K*i7o&[mbhdmAhSdg&
+/QpbW<PdbZNq=(-M.=-3\9:ZQm:?+4+6>b.,/fgg,D`1M:b(la:X3tV;s"l?*Tr2X1#Qs;_iAEm+!M;7
+D7>>qWK[r"ltGN2_jWQ*ca?=en/-V=EtQKL"gs;B1m[445:J`Og5C_1#1Mt1J`0(D"/R,Z6kX2lmbjl-
+kDd"ocSY'%4`ndXQckfeOn02Fr@4DU)tk5Q^[^rGec,X9eW:aem:]#`O2K(q"JrQ/o(F7pB!%]B]fNIK
+kek"ZO-'ce3s!u<Yj%3rdl&[:]Q2+C-pjU2E-c$[epn`AEj7k8&XU?-)5hEl89]amb8XhI4\[%C0WRgg
+8HF,ZnXp72>+M=N+<I,]Qk*gPU+R$u!<_Xjo<9i;&3)\d*/sOfC2J-]&gN-g>BYrJ)'VC2namR&##;G%
+.)_3e[qP#/F0e&R8n22#OmFPbSWg$DNq442m^iI8&2V<q"Tcij;%*M"-^!;o"IA%I>d5Q*cI:-:"gHC,
+)$&a%qK8G3D8\VJ`_/kCHA:Kulo<$"K[&=q@9lAqnqekDSu>F&q*&<beFFdtfg7j_'L4dg40j2&bml/K
+]+?O98LFW]]oTFs'3?j,O;holg*8U5,`BPE*/kPnf@ker65>:^bO/ta)hSgG,Oh@"\uiW`4NH)E,ic)i
+dXi1dBqsOs2m4G.*G@8R7:;6J.)_X1$cbKLf@H$";Vk6/8mhX>G7'gl6GpFug&Yb&5^F*u2!dhd/BUt)
+.tAQG@3aC<C.`$Pj3MO`!5cYK]m"u!W&*UIke!SGlc)+sm6J57Z+;o:-(."['_EH6TTW^r7&]o41(+1M
+I*Lk7.\ZGO'WdfQqTr:f0#l/@Q96d$!"P5-a!r3$o<Z1:!IA@15%aF,&1]#`81fNGgBN8?&M'__bfNmc
+_W/,=!Q^02N(B(m,V1\kq&oQE'GO**&MgO;IN!`H$3M(AS<qujfV$J`Oop4NYb9@L)8['OblDjJagX^(
+S*lPYhb8)W4G`)UJ5\tEG5`UpN">buqbDVJ$8b#i"4i!4]Tq?V#mEk.ob89bZ:5#>h!KjSN][4S&ggb>
+JW8CkYMpr`SWAkd&=2HR'S4`%"jY:CpClg?,XKNRJ0ZNC-^k$EnB-0u!)*S)+7F?F#*]6%8\l7AE#'_O
+2Q%hi2c9cL*')Zd.js4<_lbCEE(&cum0^gtNZ10H)3<E59`Q_X)._(;<Cp):BIfX=nE6_emm/4hSYOPj
+:^$P4)g;MlM?&#k+=L%s@mCeHXFk-3>raHa]dg*b4!Qj4KH"'F)hrFTW?42>p/i5GAkt<Up*_I``pTb4
+!2dpPgW&chnq.28nQ!_9AMIb7^tFq-]:(`Rq:MZ\DBFQ_[ueCqN)@_;lm0$p_edb24Rt_RM[)<^/>lBN
+c3j6'%_:tqOQU*@^I,JLANUt&a4I^)P2oCu>kq"EmH1Co[P:hV"h=l/50s#q5O.jlrMn/_S;?cTg<Db'
+hhT>&ID2MfqRr9"7],CL4#>sUU$eX(b_QC<Vs`TA1ATT;OiY^#0h9`m^c`4g6Xs#*6EC[U`YSafR&p,:
+A9"7H1]Xs0=!"mW32<$piu.GoM$OVlIXdY4WN[^;JXL[8,S@ZM2./uE0&XlD!9U2A!H%q$#98gcl1iZK
+QCphoN80\]?t0<56a2$sX\5,gZ$5Q2J1[)?c;UV_>gsUK)FH:tSXh_;]9Ih8Gg@MZ"5o!TP3(AMB+^HL
+:SrB0BX8\BD)jTnk*%75(IW)%#KCrt#PceiZ3fP7QRndEjC?\9UqjGO!a#hYdd+O0R^OTJrD]/l>o?C2
+B`u.QAN;i-6W).Q<oo_/%buH.pqZ.=*6d3'5`(;5P!8:pAu#er!%^E#lH=X@!Ao9U#0)(P8d&<f`%7Ao
+);Ug(`<>`U7LBQs-lWN\4oT1(/.a*?ZOUN^3:43'O9l7ChDtC%*1Bn0`$bg\aX<$F\.=eFLWELfAo\;P
+;]dZ\`oc<iB`WD*0X-?POG`?;StrU2-A!3L@P,_218l.H,9s`^1I7DH*a?32%%N96!1Toe`c-/:!@gJD
+_'G?*60Jho$g2&_*R8+i]YA]["Qml33<HX.E"5TBM+gf4=Gc5Ibt3<LR#T6kIcqYcou-p.a-gFgU7+Hk
+^l3X6bm&m,#`X`p9$B58lg6qG.)IaQJ_g,u:Eh%rY/'inTV:WE)Lsd/.j'PEAEC6`!U9>Q!+B$MOB>Uq
+Ophc2:I#W^"FK9]0.^On8;F)g)?K1S0K[JVe-):g:gbc-EWYq"KBYW2<$/auOPrs^mtq*E71mW0P2StM
+ou-o)!HB<DZ0^0:5-t>LOMbK3S;lR_J3X-IAG/!UdD66&&cM'_rZ$%)#%Xuub'.gWiuKp@!(Y,U1#@F+
+o(0_^\F@7:!!4:uP3#pY))ro=k;3q!aV<Y:mHStiOn#mDfuo>/^`-)Ecig"X>`O$tF72@&+CO`nJ/';9
+^!9]Apf1E$&`tj$`_JLm!``(/J2k>(1]]*8,*;,Sf,[RIJ?'RA=S<W1?lGP/n(qNcLLH69O=ULDZC[G]
+bZ?S=,@$7'(F2,>kEGKG<JXJ/JE,e4@nD3%'b9bs>I!BUPlh+(o@2jn*N9%K#R]p(kCp\l:J01gR/k!3
+Ht3,7]hbeGGtR74Q[[KK)Y_#P,S[]:aN(X?f6'g8V&bup>9#a.E-JHUl?T8OGnE,)!kI+Ar5Y`1<a=uO
+;+c>#1'Vb0'dXDH1i]>]+U1%jjakE33#J:r7R&_b6+NBk#&^+2;Za$P/2&KZAB5,K#!(\DSUkUQOiO%'
+7ld?8JCseEVZ:A;*:*up0G+j=A%XTPl8e6.%qA$RF<DaBceRl8N<UZDNSDU+h*sG'?s$56AUA'5I[(o>
+$W,f$_u^aF+)3g(>g0ee0bQMYb0"b,gZ_Um(_DuNi"@i'^0:VO,b*g+oaEaMrFp=,Au<5e..HTl,Aq1j
+<`+AR*=#@4,]Y(_)E*\&B5D-5G7<F&TWo7+)$5gh+>``;Iae[m"9g96$a[m_Ec`09pRm3u3$SS7N[QKF
+'i)d/Z(TF6PC^4Z4_3<ZnFWA6ffWO.#I$#o9p3MI<S1q0)FfD,.:T:e#p9=B^tE;A`ZKY+W$Rim[Q>Jk
+UsGTpZ_NVej9XmY"SKVYiVLnRG"q-9-l<JZO.3fcO&e?7G2+bp=f;H`Q(n]FGFl>c-oL'RUi(#3(dc+]
+TOr`86H1rloP[U`JN+iBgg#U^@-`i_VfO\Q,m(rH[k#)o+-1_;]SMg1Cgml02^7u;PQrB_^7Mgrl;':2
+q_KmiN(-#Q-n*k$0A5;a$R6br,H'Qe%,;k/0o5ll]fui(N-U+D!'LO7rr<r;*:8]ZJ#pKBStC]:DVp"`
+iU`4*4D]GP[*T"X0kk0JkF?/ef06PB@2uQqqk3T`J/j(TF?LU\5=7_!LiPM$,+n;/`oCP,e$O+`"Q5'9
+(N%3FkU85TKgU6cJD;,kctg^X`(ui^qo*XV!!2=LEZsbZ?:G>p!0@^`"j3.*JGE(I%#4uaBIB@:<?_I]
+P0O*^IIY8ZNG->^+HT]_!+M^A3@>3Z!)C)[\Ef97!$)EO36li65Q[H2Ojjq2!*b05ejt^HVj"p@!&,G8
+cY)#/ci_L"JcXs)TEu#ZOlmse2!tE8(cXN9*7=jljWnsX_9Ds.$;(bX@#Q!(]=[/TJVG!gS\VC).fu+]
+*:l]-:h2A+WiuXt&K+\3Xp,14rcIsdO<)<)oYhUI:J?(VU]A&gR,I\W!'*:IB:i(Jerb,V&Ru&1Gl@*[
+'ER8Z[:Je:=5iPZ\HZh$=d4tDep../Y--pZ3hIi`7APK5QY0-FqNJlo4#\G/];CGF+N1(d*A@Xh!jn[K
+76"b'"47!]g^k'e<:^1Y+\LjH24+N,<Z#F9[kOSd*"C6$rfdFuin>>u>>(f_9D5`/Xq#YcJ.HS<J1H:r
+NE^/u3B:OI'EMYq!?_G6+A`6$J8AcY8I,_86(^aL<FCsirB]HX13jISis_X2T2Sna>YZ]=+@s<5GSJq1
+"QKfAF+W1[lVI`27X"7lrp,->F?InRmG>^\R=Srf)$]2!be0l;aQ-<OCKskT57Dq#Z2DUOrn"'rJ/G+_
+ekM#p3\^k!q+/PP!3q6gOb8@D2[=7'#O@f]>Th"H//M;'aQ\b3$04LJM,HSXJ2eVB'NkpHqmdqZ*=bX:
+;C@S:g[\o>l3s3Z$Ccep-FQXbQq4lM7t8CW3>""A5!dT-k)j3%-r<G^,EYoDZ#1jgPbX5\a@d2uV':0s
+2Sel<+<Y<0;EA],g\FYcL]tC++NV&5ERo[$7-+FVVi[hJqTp4<Rs*^')c6%H]OW(sF$WKb@5t]>;Mf?1
+2f9TFR@qf!N(cQ56')<YXM$[f1`@-oNSFM,*+8E3SjZ99Z,a,kD9!cB#(hQK,;)1P@'Y2N,(Kh>>V]f2
+G7#6THA3F?p7Me/\ff`JP[OF&VueauG"r+#7S*"@TF3ir%ro^e^k,K*f%ABm39c,Yf_Pd>:LTA^S:R/u
+\@RU8pG+n<2j"5s>AL4s$2OMLM%k8tm>B?9E/SJtj0/AZiLMIH&+)"`BXV,S?-unl<j=EG*:>,o!)[>P
+Ks/F%L\';uT5WcI%p`LYhrVbT>-]RV!,;AtIR8rInk!Ti4%hJ9eQM6VD=n/SNOKZ:6[47>]W!gjl[XG=
+P>\iDEii%t/!!+RZtkE4N_fk:jQ3UcK.0\fI0E:a^<p=-B#"TfO;MVSnuF.#(:iha[08;M!jn+D+X:V!
+!.b04-o:$rg\4c'.HW.7!3k`+W#%NCOQ1AA2M+6`5pIN9F7U.aanMG?,-u.fLW^R]*I+7)_%U``8sF2\
+3+;PHTZh@OUbM'DBE@J=qLCbo!>`I2kDj3WjDfij$2K[fcdI=\&1Wbtf6?7?%rm9K4O=-77U<+@%r\Z5
+5Rp`%V#WB`kL5k"EqJ2CE^'m2Zj,Rorr<i>J/I@e)-<>\N6h[QaWO"5$tY8YG@RI2JjWUZ?l49eoCShl
+i.jE&\2'4jSGlJ*TeVLgeBhmeKMq]6+CcWQ)3ZmlIVbT9^n:i;nt#\hI$jT)E%PliT>=PQ`P60J#hM6\
+UOm@eQE0*hiPBk+F'Wp43[f,7B(?Z39O3e2JPr:_60#@`Cr/G65%Q*d+ka-INcU.UR0lW``up!O5X+7a
+UE=6bG$*pEiGjjqD/Z--TG\;-[e@dm1Dog6DFa-LEp)_6cpEpKb,0N4CFF/a1S:1W\G"r&:g5?U\=PE#
++=ff%8J``nZeO2c'U`Pj_*q_D#kKk$*UuF3Z6L;IJp/"<4gJc[B?nQ!0p5O=R2^`^S7\ObiQfUr<$@&Y
+SV-[.\F5<X;!)<Q*nB%;g>?rlF%u!mAiRUKhEA2J!BMKGTiPNi4+SHdVufroLGT$H4K2/j8Jn*.g:g=A
+iRZl)P3^:6rr@2/"$d:I^Fi*pSBqFoO3;6j@rP_H#3S(ZoYhq)AWekVo'[\nUTcmrH%<+24La%_2Ud74
+f+`9+p_m&G\';qLI16tof9UG45$[ZlM"ITQ+6=VQb.DV6J^]K]^rm*&PEJ[29MojpG"ei)*KLDdF0]Jo
+f5_0#D'3u;j,\KgSX*NXG*^d[c4Abkm6G`u875R1oH\bFJ5]pfo%^=;5Ceeu%1+pa[:E+16-Cd&"6`/R
+p*7at<S4)i@&';PIP_nDbE2`(a17"sK<BY$kqcb!!j_CCaSD0qpSd7_>qX*85ToQTI;%eO/91q'^!n,[
+l/*1rYSsVVZL2bD@Bk^[SG2`PSW+9*Eu\lhR0hSdgk?hKc353S;Gt5u)#BQ1@AQ=Ch;#_D8ccDX#G!+"
+P!E7cli>9;7^8l8m'gV[Ge`sDn:ltol/!G3Hqg]:Q'TE=e?hr14Qu21kD_dmACpnI_l[UbNp('&qa\iD
+-N0u/,\f)1AS^9e57Cc)@p<4_&NmR@2A7l>Q9>EXk.5%1/',K(6bE?38!`JU&H3mK]je7sFmX*FZl_,F
+lWU[CgOnm0ZYWM+[^1*S2hhgr7t3=d\*uSlX>K[<5@ePNL3o:qS\X"*<dTWIN."'^O0#7b3`Ztc8YpnZ
+PJR*Q7TN5hfT$_%/3n%Dg9$)Hlp1m'eT8p<rht_*X/fnGaY&jWl8h>KS_'<Xm0Om%@PTZu^Fg%n2*##R
+Su)i->9h\r*W&S/>k!F9J`?!F(2;@))!',X<GNo1?;^UpS3"lL+3#.[f+h28P<A*f>1"Emp_3AFn34-c
+[.0K;V=8X*dNiV.l'HDT3c(n9!P)?CQJFR_fY5bY%8<asR?Xr)L6C?gcbnTfnDB*[e^_;kiXJ+ZZW@?H
+RlNil5idbHqnjH/T_,BtjE":ZUV=c7&D\&=1+YHaj+d.s/^OoC^cqF%.!'/EM.'CQi0bI.O+0,6VbC"o
+"AIcSMT_+*KT(6:K.p:;\-p@c]:Vqc(.c>;NXG.RTD#36SWH2PgVE=Srb,s9$bn@84$a]#r$WhpUEH0#
+!:q.<ERhQ5!0X7F+GmGr/oj*g!llE4"!il9qXHfZ-S]KEgU@?&oE'OZGMV0tV`:=Q3-H093UK'E(mG)B
+BE/VK7QEKF`;hC-Th$O6K8KYLD];c(&.`Znc@@4'"r[6ZJjA_B!&Xs\$0k4b9N3&]/"MP]<?Q@FhL\:M
+S;o!JSW_o-8DjR]VgqMK'EF*8.WTOi\Clo;4m;u_c#!#YR&A0HGh;=`#PPpMquC7=lG+%.Or*J$!$L31
+f6(BEME;n4]S@)c;]B7U:T\5F3ctrFcTArGI74;0U7)`JaJ:g.&7St]Ng(5>@`6JmP0M?sTEiK:+c8T^
+mTb>84_Q4.&XV1(>c;fLA06.Yoq8!H>B@'*/]f#ioe[?)M[^dtO3Cj:N0W[A.$lIr+"b.2_3"E;CsYs%
+(.<m)OlA"<-IEALG'!Df(ac#D_8qT<DA?FC5[u7dT.Q(Lr22QObf&Lt`*m"j8QJ/sHZ@c"CQM;jqmY9S
+llEiEDC>apCND$^J6ZsEoP/n%K*MDK,\DQZ`i%#tlpmE1HY.dZl=8#aX<s,WTY+!lFQJ9]!-Z4U1O[pf
+PfI%hM@^P3@u2).\aXUn/(1DqJNB=U]W[$:Pln7lq*:LG&N$Mn!YJCm;jo6@U&29W.*ge`T3@='1Th3B
+O?RE'!_?W(<1LC:a%jC7+=C4\`pTOG5D972,2PjZOau0c!-]LV#9jp?4Lu.N*3Z5d:`P9Z:Gp<Lh]d+&
+\oHt"E['`N,4%BanU^.#LE[%D=V0Ma*4bC(KdKWT%`h2.DHrTkFQ9%lCHs7F%.QePgA'HMcqbi*VDAiU
+ho&VN*AFjX*!Y129#UK*;m/DjeFF_-15:c5OW@'(`X!Y=HK=4D'G&:.]@LicK1*qa0KEj7LsZcVAnK>-
+3T@@t']gpl1@rQcD:-hj@srO!AN&,?\Lli-P1LKqlkona!DOS6n>]^Jq:!:>(]6R?EN37<HKI4uZ']s7
+<L$6]<J%4GURL//MlBg,e;J6-<Uq2j$mJ3ehCA&FgEX/;eb-UW`E0NtA.'*0jk32QAOI,7/8X_kSY-T]
+oJCSm<dG++,-PiahPQ=*n8H;"h5#8/51\`gDkOIdG+[_tD5UC*$tk"=]NL9?1--9jR#g1m8%+')F.Q.&
+StoPSIgWh*Z$:?-eeao-nK#Fe?AGB3Xj#8+E2HjFN>u>tVf*Sk3Po]8oKu[CFrDuaj.#q%+'=lIrr<At
+=\oJf<OTBd[;":cN.si!c-Tl(2%$.*>eXpSdH[r`$*s(BS89J@^Q,_VQMomVUiC#cpF0l$0W5)X9RBd>
+P$Jmso.tH@[qtV2')p('+G`g5TketNo_/0@6$2=]!)\guUJO8N'rTVp[n&)Fka]Bunih-b#D'NpiVTCJ
+C-&3BQ#roUB;fE,0R%&kb7"=M!UK2S**c^Q?W*(h;E6bED\4J+Ys#eE;<4/*\,h.$n^RL@FF-QKe%nZ.
+k=0JfX?t4=C!bZK#i?gMYP\_o#m8\KPugYu;k.uVStk6$*o-O+:kJ:+nJ0B%[C&gV\.Ot6R"*FH1Bo1,
+k^H9lSDcYtZ"aiLUpk"$8&A'U5/Y>g+,@QQ`h".>CuR+SC;Dg\?UCOg<`$bZ\#6>u.D^hUc5O`5l?M#?
+o#a%!/BR$@kV/hombDgl6,_5VQHR;q?*h$i"7i<VJfK5VZ4;=hVs-L9/@YJm3f+P,&,1BHCWM2K=G>D&
+G8V:E5E,]bKlQ2V\"%Qb!Q]stV00US)"%G)!#bs%'CPHUAcRph6(gsYQ8A^naTY3[n=\#<1)Tb9lpI;)
+EW-Xj3$Ef_Ja-o)-8C5MJN4^-!0I0;]o(s&5R9VN@EG1oOV0cBS/(ppGE@6`TM>c5M"[/`#19#*L1i@Y
+<SJ;LpLP1HFlo^>[j-l:@,p\G.SY1#.eNPH4fAiY/HNqJ".h6uJN+hM#JC=MZdZ*rXT1bnU*K(W>l;J[
+1\jiNh^@aa2h!VhW(2F<fJ\&``j>0JX=n+lJPN?@NLOm:j3I_d*Y3SaX1>nQO.""SW!#SQngRji;Ye=&
+j&m=bb&63-o26q<X%*#9>gNWZPOCIm(]m"C5X+1X((8dU<^KgI;=cgD5kjDk1n$6o<?g]T%!Mj?c_a"D
+TE)`uMPNQGIF>=EJ#r^l?fVApmuV_Qeq+U(/8/?F=D):m+/K.,/Xf,l`Uih(q&0)b6NOuJlfDp_gT0Co
+N9#'+[qa6WK.Oh)raIZnFtu$q]@3(fWAE[JQY26NP(A4s;eYjsTT\)I"6M6nL3+_d,N^5.Y%@g#\WU!V
+<fbL9#Qj0/FRN*1M].EB,R&rS-j%g]Qk=?QW>f(>BELn*aRI,!a<egRP/EsgK`EB4qnuJ0JI%o-6,*EJ
+!^mCP@9i8T\K.n(GsITBGfhu$c:q+N^ktJH5Z6kJ,G<(E;fF!5UoSe)8dm-%H2VFWp:!S[^RM_o''o=9
+TF2P##l+H.gn)B508SX:c+Gb2OFt<U!'LNS@(+G#%?K7-SL=PZ[0n4fc+o!]^lcGi!8uK1!CtH>e,&Z$
+&sb#?nb^(gIMABh"[Rs.h!RDQ'p@>h+tGLq:_,c-`d#Nt<ijW<P"#pFd)-&4N"23i$;;/d^0d'BT=g%Q
+Lj(-@e[%QN2`C@ZB=aTa)[d85&3Ep1Cj`NNVc!5EEH?/;oP6al?'LHS?kEfT!X+\.S7$Ih0QC5VcGt&9
+14%%"kKpk/XhtkLrk?f:c+0O%8u*[o.RnV:qN=9XWjC'2@'i&fi_I.&/T#qWkgA16[p+t9hntb*9<7a,
+%5mh$r1Yq%<%euaZtDf7C@:s=Xj;b9:6O4)nK+V^[@;<"m%,6HTeb87qsh'<[g+\2a+M(YM>O,`b,]4C
+K!N$_C[Vr#57AoT^T^!.[c#=KnMf1p#b`6Lgr_j(Dn'mgLe'TkmV,"Yokfu8k-"P#rM@9I%uCZP^Z-nM
+rXdtBp,ejKif!0t(I>T6TsKj&/CI'K=f,g=:-bpA@F17pp-osFMT<SX>)N(YQV3@o@,<m6m]Hj<H;4:B
+hT>ilUmIQ4C!fXk-*):2;n9QjAaqXEKb]\3R]AKkF!+nWiPTLsmXT'?]-<dKeVneO-0!\FQ+9[2C-%Tk
+_c^^chqY6<KCT4KUl5K&1Qg+X0pgC!oIfB3^Vq9%gs>qcnIk.Z\[Mc=-#_FjFQ=!rq4!C7!:X^o7%%V4
+*Lsk_IO%^b%4>Jqd<oeEcfS#5Y1lG6mG&u7Gtb%-3Pb9dI#KL_*Aq\;o/uVA3Yn_hOa(me0&gBT<3qe4
+7"=n@C`cp3-q/8jT2o=?^CpZC*TGs.T!'0AWXD6!dKqidj=0"?-e)V.jS`*P.;E%8V1kC?dh5d6,0>*1
+%\j-0P]nRsTE;KS95/I-[McQ^N12?pm17Ef)sOJ@-O5'qZ+SForr<hS@d3mm!F]/;1S.PsmA]hm^jk&S
+:p>u'_`fU#Usq6AfTq-QK0?GJ#Fjia."s^H.U+"699f&<Qka5`mZ5^H55O/5Z\Ic%88`7I;\7a&fZA#u
+#;laDdp&7j;Df%+P'@5t9V+XE:09Go2UG;Z`E-:X_X@=j!5rI[eq6/001?unU4?0QM?jP*X.48"6(p=O
+asZ%P?U)tj3E"?E6Zo&nFu2[]K9@tEcq*.O#i;IBK`F40K-%oPK`F)K,Riim(XC-)DID@G")\?;:bHnn
+j\dgqNeWa@=!S=4>k/CjH4QiO+#3siXc>(hGfcabRg+^OKB<Y*$4R.e0QEWVTER_(=HIl+%$1LPSse`A
+P_TB3aYKjR"Zm"US8guVaWnZq%J(@qRZn!3k<0&E^P47)*]a*s1%Tc.HML?U=8pp@[fcX1IY[5p<K63Y
+I&ed(H"9<nDB.U7!0)'kZZ9tJ7SbPr#^@I?k^NqS9F@_t]T&]JjDjEb%!;2hA^8U['dSke4Yf+^'G.(_
+NMJuYn$-,biun?i+HP#Kb98oQWtlR#KnFlU"\*Rf35n4MU3d0o?J;1QY1q3/$/H.VT&eJRM435+#,c:b
+KduVYiRO1U#EC8C8Y`f)h2(J76?lUfhZpT'"%">!o?EUdH+&pW\H\bH$1(cQ>-%('OM5s90F@ZW%#[38
+*CE;$9L?^iE)-J\"Q![D66lOO]112*!1kU64Hp!FRK/^CLa4I_ZB=e*V#V]-@kjUg$Oh[9O;h9&AalHJ
+qR'K&0A#)=2Zg+gca?:G,m!pFV-"M,D9F--$;O/;WAFW,?SHUc0PN3fJT=tYo("72Q4E$\<!$9S#ju@^
+;e;98R"<Y)[r+ZapMTUA'?pX".]am44L37.>iVa1J1OpE$KSAFG9'3%J0jd??q4%G43ub)oDm_C)];"r
+k6J!,@nD6!7YB">)2l\mKA3#%KdHl*!C4JLg_O4K2.-ZR.G0Sl]h^*kfQQE0LnK-K'gAF>eJOU"eUdu\
+i!rnNDE4]X5`-J?UCN7d[o]X<a"taM3Pgf1h&&qei7""4AN8RG`\&nknP6,A1$T-b@;=Y0Y-3I*3Bgb8
+(gl:IEk/e&Ph#FaZn\IK$@$a2`$U?RDPi7\c#I^kK9tnVkUR]aB.5U-]Ab6G'th'nYhs6D1>BLpa-U\'
+`,Hj_$0Xt*8[UT3>Fmk<>M@E,GaeX)/Tc4[O^D.UBY(a"'^g_*&6j'_O2A"jS_UO4jYNQ6cOaAuYdCX^
+@YQT12Y5).H\-_6`3Y2'D*6d#T6diH&!AA3<mN/+Z1.bnKlpZo?FmVRnM[Xe=l@N>a7beoUR"=4.?/j#
+*k:Aj8o6(!Pk8!h$a"Z3>O`u9o(H5KE^MLIpf-"jm0ejVlig#:hOYY^RHj9eEZ&,OM+D,+Wj,T26!_:u
+X^'928qr%u;HB4S+LYFM?jXE,H!S*#.J\5Sd\GNk:L\(8L$cDI?6Hj=*)!_06D3ut&?+XCPH'<"FuJ9b
+RH$#,Bt!_Um4T4(E0_a[Go=nBH'`P8X\ih3CDhNpb=?JqM!A,0.^fB@G%l"Mjf%LM61k%D\%$jY@CQe<
+g-/aPA]5rSF+7a6QhGe^`ll&5=b-]2m8hPO?@K;[[6a.AM;m!^MgUYjmM7"/7`:CO@tMAe5.*Mr\]\1c
+Y&i4kEqqq<e&+Ol*$rLTP0ND6,9MVR)*=F,>W%q'Mjle\27V;XE^9(@A,5i_m9Ld\SCK<r8_j7`rL!R:
+[u$f."_uJm=8(5EG)>?u$L&,FK>pQ(o&CF*UZQRK5$`LWAd46*N]jPkNR#e-&#U,+RH,-N@S)i1=Gl&8
+HIdU;>dFk!OggB=5Wsc4-m7U@bm"<DA:a#c5Sa\8FX(fIcsJjU8'7<G@X@nLBe\[f6$>dZ4)s,N8WCOk
+?4TESZniQ8<Ib?=ZiK.-,M%Ab@1!a#,j0\t5SGb@kCu3CHdDkHiD5m9Z,S4ME#qhm:;'(Uqkt:ilsHs(
+#+VZ-3%F!:J:#WqFs&&n"u859$>^25ahs-iH=hhD3:pSO\?,o-+11S*8AtTr`H/gm%j'6%B]+_kTBfHe
+Gk^T'F!lYAlAKW]!;FC*O8T@9:*nTWFCCH`5$;#*`>HD6S:5V&mi)U+-f2s_^j=P5^oih6,A&h6ofeY>
+&4d4I8eStOL@kBu5s2Rqd=CKrOn.q[Hd[6I8WSSe7phXfaPcdg<^i<mYAPna[($3_P`k<%?+kptSlA9q
+FsM6oo$$oIKW,o83:Fgf4",Gig-+$]=M13_M&B&D%p\l,W97PR\hm9GCbMA&V]c-s#M\AfNb/HU,?IFV
+QGR?[IDS%K[P?#u4GXXE;RAHpZ&kpGNcVRO+F@*G&NHN/3lS/.dRlWo.YgsPn^aLg7Oti#_Wp>fK,G=b
+r4\BrH;QYa=u6\)d?`taDT>QD-j!Nu64bfnQ2*dsJ$Ak8!OHtP%h%1n61UgP5KqQ[)4%od-e:E1$(''o
+El0uN%b4@@`$qug4Jggn5P!0JGK"-77SO0@$b+o?R-W!A5%aF<*2?!E$[fjQa0c$292`jQ7ZW8YE]<s`
+qfJK'Cm"kiX/hCK#F!_k6UitV@'HYm=#bT!If_#!Oj,/3l*MskG6-1gcjY/YI+*[jm5[?(;D[KIO#>5U
+/WhXfK@>^L<!mG,lqYN^'h@bsIr;Z+Js*n^=!2R8eBe_8<F7RKo8!OJjnJEe7rFP.+oum#=ipB77qGa3
+G*&7)guS)jkqcX6I&@L7F[(^i(G@U..U;2p%d^>N[0b4A)Y-H.E+^Gq!(A'N1\Z1fWmO[tqQm>f9j&EZ
+?6X')9@'n3M)ME5ghD($liRTOREe=sK,)_4\)G?"S6J)8:R*GKeEg6-rXn#s?JjQqB(F[)m$`5gi3LT/
+R:UOYjFn[.48RPa2hFdr+#CXEBmjW@H#TVIV3U+G+;d8[UEg]`-RV&3MS<&9OJ\afG[nW-r[HFYeb/mM
+!YeY^2!3*,A08]-kAF(9_5[!cDjBNor'g-]]n!W^cArHG<sJ*OMYs<#JQY=trfos?GWp"_VhEf/gtbZ$
+mha?f91KIMlmMS]^Pd#6%oO6G2Oc;29%"!1G+@MXPCe5ZdX*%S)B'V;R[1C9"5?<kN^.'k36uTjo;iik
+ThR*KNn3XMm4f`l;WZCt6Kam/duV^P=Okkl*BY+!>gFbl+_]#hlKSI+a5+nuXX8*PMp^a(*,O"h#s?5u
+85GOu($#ifo23`Ue7<+3iQnnsdkkYcr6.k[FEmEKD'KlWmmf/JSXkJAdGhk^A@F,u_SAo5D>?DPmU/=?
+WqMC`Uh&ao@ejt14BW0U;W86&JHl1=Jj2jfOhEbrDJ*3A1f?ZP5`K`5HMa=\EK[kRU824GOWHc3"_g>r
+,^mqTV]Yk`kZ(LBetZhuF4dfmcq"@6j\#C4V,OD8:eb\=pcDNgn8F2kc"[jfgC'rj9U>R4,-aFc3,E!R
+PdT&54uWQ]`_#'"I\Qa$ppXbn'ojf#$knG;mYh.k47:@3FF68&#jFt)A)+2AR]dp>5(3h7%n_69iKLSf
+&-C[:;3CWNcGiBZ<0PrJ6B`S/&]EbFmk>"9A(J"C/1cLBW<3h8.t-;KF>SM7#RYc1alI'#.P%'M-NcPs
+fciDs<q#9LUqh"l_f/DJBE[LK5M>+H'EBQQ#\$=LdXXcjfM]3a+H2o)ctg^W*^Cd2#9jk&5bOh;TiIJ&
+!0KPW#_<'h`:8u8-m<J3&LsN8>CQdJInC<ZfLA]=J9E.PTpIhg%!"<AM*oTVa5f&Q<:^gdb*i'HLX+-D
+!388,A(Hu&+S"@CU%Vde<uCLfV>J>0>U/"4+8=HkXAlmoF^]_7I'Rp@:uS^_\O&@<oW7lA^F7Vo8.9N7
+F4R1*%O4sKN?F*JaoYg+3Y&[X<l>Jd-m7TCmuKckL&fk28l$CG(a#Vj5%8e71kT[(N_41,ou0KkNE.m*
+9%+Z5b*+AhrW[=_5S_]b0K(Dh(CCXlr9+4#EQBi:!e\>BrrCZq!)0E.YZG7nK9,Mp$`Pu1bU5m8MMF4V
+S:20D^rqXT,VdCf&'Qj/9kKN[0k&eQ:VR5krr?^@IQ5;[8Q]Z;=P5G`NRK1-GQdc][8/IlU=$,N@C=Vn
+Q=70CmcUhA7kbOV)WePtA@/eV;(0Yh]6G4[G@Njk*5Gc>U&N<LZ+GTl2Or`!NPN"g"otEc#jh"3>m,Us
+M.9i$5;%Ef7ICU'n46ZaaW`)s.\>hPXW4,b,4^Lpk![=!5m*r-a$t\sAR>Q]UgS37TUnPBV7(o-I(^Bj
+TVo&,*Q=<"Oiic+F.NonK,(q5Q"DR.T&$>'ABI[/OI_?*$3s03eCcm5bTt1G:3c5fH(`MXD+=uUA%S@:
+$04O@N<\mM,mn0(Qu9I-3=t's&=6:KLEL!tTV:L<<=Q<^nN[PG)W_[9"Hao[=nQ4[PBK@b,JsH\Bb-"I
+^n2)/$`JR8rr?)BZI<;Y2`-.q-QMeBNEl_3e]080ir9"bY(8N_^&dOA&2$oKRf<AHAY/nJ5$hACX^j=*
+IVBWEa`<DG(^3\PlWE/Dk<;tQ3cHfT:%W,bd4R9qm4ZAcqK.g(BkWh+e&Xi!cKud?\Asub/ARjEDOp*^
+F)fTM4_REd8\LP(j4Rc!5`81?^Q-V&<eO+mX1AL.4'4]>aTDcij:kpG21`.PVUIXGe&-L7[r80L>=1Q>
+NF=&%B6A0D8U#gaaW(_:]uL2R8G"p/6_Nr[MC7o=T5UBIC-d!G?=G?9L.]<.q0*GW^g-$//eE)JOiBoM
+91\EH]@A3g:t.,>P3Ook,C`T^`d_1;F(s;!nF?8'[^nTpk'$>sgP!$ZnJ[@'gX?D2k=7<lJgi8Xj0ap"
+!)#n*_fS6j)"$([-RWE0S5kJ^W>($.]:"bbL&V./j/3a[=kj]'dFrm8D#6B,a6'NkTcJK&bt-s$e*/bL
+;StLIJ:LqLXiSOF@hfWFZ-URTY1cRu`tG5mCp$$g(!e@UJR&3)%ETW]NM&pWZums6,%YmB&ooZqEC-\.
+EE:k(RFR]n9(qcu&Obs#j,R1Go//BTgI,Xpf6U,K)/Y-N0gt%>Do/hYB3bg"%UD)lBLL43&[47u@tW[!
+Q"it&e'?6[;UV=t,:"TiaB;L=DXUau:?[O]gRNK]IOF%8Q>f,9Z&ZMuZK<p9(@S4C`LrAP&k6&Pi\b$u
+l.7f"B&]n4f7IY<HoTVeYe!5_m;6tk;6o#`<P\ST#itquF0p>/AV3]9jF2p[#K0,9e"MndQ?u"3>lj\?
+GQ\,4qU\.rF)HA;,*+:8nXZt/J3i,EmO6/EGt&jJe1JW4"c[%ILF#Qs,9?UK>8WO?JV1MY<NmkQ;pQ-X
+*^Cd2!-R:bfEVGJUX4n?D?J*t=>i\mk5r'mkFO(&amtMuk%Fg7UT$D1"f\_fmFW5@,]:j2J6k4OP#i77
+(u6HmU8[.:oFq<SQ5;u7B9)+'3"1du1[IE##9T3J03fK/JiQ`YBonU=$uQ2Y:bHAP,f])#SssqQ<;D:,
+M1U]6F"pne\'WMKAAhR?P8M.5]70?nc@'ILAi%>SCIXNTSeFLB\ZBp*b(%%7dl#m;plX$YpeR1BITYTk
+'$@2hDLniEV3<ur"dn8uAO,LBd[JsO@AA@TT.Q+%3drrc,?HAnjP@Ymh&3$^!^L4(<D/Z!6Xp5_`FOOd
+<RocHS.IT9[hCrK=h6mGJSp3<]6bD7<9N]WJZ1E;@?>>)00Ed=rct0BdQ8l2^H2q;\Y'=HTV(juEpAA?
+hp[.?Muc0W7X!M,L]1HY8alFN-a:\AD&f17T?=%N7IMZ6>DV?m9&Mli;PA)hF<Ze_;Fs[g=!o"&oKL;4
+Wj!9UpGglZbC3^Wk<=NeO=igSCtSQKG6S)`3'Q+o")#!hY2*8S<"ad@bW$a=5*Q'UpjOR6Y[0G/+3^X%
+^a"uqS\S^elOj'AbV#0+_=*E;U]f+O?e`X#OU49B)$6*LG6!L#RbL`KfL#n),8bP[!Ng9[B'MpM0ulSM
+rY-$eM^Tc#XH/GK3%(g34c;uH:/Ek1jGkr\MVPHH2P&OH3XQ=NW?mAkgQ%Mc(6emKZZV`VLMf7)'UTCc
+7]gVfnIF!F^GVYi-!)LFE_$9r^@[d&E4INh\&7gK%Yns^XPB:1IU<$-*\roQ`L9#CmH%q$*08F[N+B,[
+-SaZaf[jFJ%bL&Y.6H:popt-tG^%"h#(@WX,AUT@GZVe,W!F?EFNXtJ4[c`.MFL$DH=`S+7QBMu8lC'J
+7YNc9U!Dn+aVJ24nK#Q"2J\'E%&$djUn1\*X@f#QL@Z:hn'\_B/n<75duBteYe0DNp>*g(\H^ALLWS%g
+K\QVdXNBX>g1UU1@4GiMGO:8WOIKDp4l[Pt9DRVsFG)?QEf0@P:m$B^WXBOANkA:pSs9XT9'inCrr<.s
+8nIT5m8k]`g#[<b1Y;Cl'r*i)XK5=i>]Ao8bo=[-*JZGNJ#q\-IHr=smWs*pg;hP2/5f^g<]od]kGDI7
+]@qnpVZe;2@kg=hP1%QVIeA2GrrB/ub]H?B67<U==m&.,N-+a3+?J<l:J&X?608`p6od5(Stp^74^*hY
+(:i47RN/TFo1L"iF['NnPOitUPFcQPak5aTVMAYiBle0`=[;^(Dfg4h9nSTg_&RgQ.3/?PeD.@<JL&og
+C5T.bL.m5^cZ492jfsM22Qg8s9fbpf+V'h=T.h6pDgp6+=*HHu-R<1OgY]fn1ApV]m9B_84*03-o,G\I
+NlO#UBe%'s:pM`na.L5FDKJ4?H^m!nVBfj%m?+lLTT"j/("4&4UJmYnZaP,0-:WrlhK@el:i!8*U"\Zo
+4R!1D;*<9^BNO7,mu1<:QSLS%;eb%>d<A*$P!Y-JdLa9%i:\6bXj7e&#:R>VIY3#/ema\3e#lQ5;d,/_
+O$a0/cdroF2p-M32Odc2ei-Wh>!JBFR0<BG\p:H(-,G6`\!/-"p!9Hu<!/P6h@[XY/*W2^`E><ZOQ%ZX
+c<8Ft+6c%\&>p\[NpE=WK.pPl8+D`4O+,RYNlq]82t%E?.0-$,q3)X8SC6La=\kNh:_IRbZ_#YI?!5><
+.QDefm@"$b!i_02%.54_JZZt[f5j,N8Eni\AhsJ%;?7#S#fuq'#(5d%0#0`l#=[@>&',(Y9oht,/^qB;
+KM%_?7O6oE[Xrc:.WXBYnHHooFJ,P:@.:1COu#EY#3AAr`Di,LLiD4A^KSgC%.I'H_V@>[i<uhD_^1&5
+"CQb8kHsQpIp20Vr(-+iCj`3j/%)GjZA_=WR"jeclmcink4KacM;/0uZk1n-b5sKg:YdfA__G,PW&Xic
+*.B`TfJ6K+*%N3R`&J5Oqmas8F%8#08WNC8J5R[i3@mJBo;&iElq7s,OuF!Rb.t3X6/o7u)&p'0,'\O^
+R]YZ,7S(Qr=D+I@27Z$g;UMol,]6@P1Y]SIV9!&sk!Di:kW;TDTZGQF\;iJO*Q8$!j]u._+dGg<4`SJV
+3K3cl@K<AS1R-XaqDVTP9+c]s&G53[PR!pjOM+.Xd9nND);"6fN5ZD)K6>s6V)ALeAIflKiu)7?qta7m
+,"b.D#eU8"&,=KSW6F'pIj=qL!A^^B:QtiMb4C8PBEI7Xb6a1ge0pH2O>Dh:4_ZT'q<j-&n-]f&"$Lnt
+RY<'g*ncsV\r8@+F;Xq#X'c.P9pcLu=T8B67oAoWk?pd9+(j1!Q`_8PDW3CBft\:N0HqEYZ"E+U@;t%6
+h3,;:N+0.AOV9>'UE1=h#B7>^6jURM>gQ=n3j_>tOX>i'OSJd!U]u]`=@rsLUaqM;4(krs.K[Il/;?Iu
+\XOPHo])cM':?R8$G0ht(&J&Y'2pi#^d2u%3eDrT+sEMAI&@tUm9.+8IE&`\'0[c.:Z?k^^-BAuEJltL
+mK57pcRVQe"QqoOHP#pcl.""KH)bZ,qqoCpl(`$C$1V&hd+uU;lh1rAUmP0Z<*!1MXqRc90/3(bmDX>_
+=*!qG\OU.uZbDQUSr7:,/ZbE=f,'aTJJ=E9;`I3cNPo\$PCq?nA%t.*UmjDLjbpTXhL6V_\jh>2]3-b`
+&BN0Lg1e]YBrAL9U.66@0?CZC(Y>d!"jDq(WD0Fc/OQU4Wp0c[q]MdG)W=IRpue8q^/THd@\TsLqSQ!F
+2'22ZlIKK?hGe!:7l\W9.Ec4$"EL(c]Y)`<CH1C<iDAk^IL#rDr#ojJR.g#KQ&cgRQ4(5I?lhc6l?Wu;
+*65;hbFu%K7#YU_7dlQipSg&/TXU&L<Ji+E;O2?O!7)BBkRQ'-[?YQP6OTqci&P,A29B#sk#85<cU-$S
+P!12KZMspJ\k%'!r#k#>B!FA]5%U_A`sLJWBe6U"7ZEI9:.aHCPiZo3dMI)38hI1_IB#8cMM(\S)9:7U
+Al"hq(GDnm04Kf@>O9e\4L[]AgiW4j_O>I)X3D^J#s?k;g-Xaj.Hg"k*@e*D0!6g7b"DQdN!EoV'@?EP
+jY_u2ok,CamNB''kNr?/8b_8/Pln`#`E[UF1%+$kOoA/cfi.:033Cuge$HU-?YOse8;kjUmQEk=RPJ;L
+>fa+G:@V)ZnqPhJ'QlUWhR>Up7G;Lsf3\lg>?B1LOpM+()%-[0NrtT)o_#7`B?"O_m<!bjiS/p/UM9I\
+d!V$FIeH;%%r1F.WUk19XPJn)BH*m#+=_fUijL,%b^Yi=-R<5!"JKj,*F"TMJ9qP@CnErK!t1-R(a<<<
+0JARrnhKOV#*&tKPXrp2SYQi`R44)<-%1IIM,WLY$4Rse4U,D>NMUt8RK3m<PobTTCWM@Y+HDlY5u1pY
+5J$,apd`"%#Z83J&eCB!2Y<ZkPq>7=!3]nK2-))qO$><t490\f[3JU\Wu)fbSG&W'lohiFa-ZOG#:$V\
+#\o^GiWgIPE\q`(SYPi5;fab25AFjY\CCF'aGTI5XmC'Wqo$.OW>Y^9[UQg&H^`pY32>W<01s^H@UCNQ
+n7:m5[WBr/@^u6%[&Q,*-VW"4&+jkV5:Kk,H[=)`al[0UoXcEcG_6UL#-6H3jqMO<MQD^WeROaH5JiIp
+ah<L78[ZAW35GEd*<$eQm9)X'Z:34oj)kDNqn'CtNdeO=p<AiF=*cu,Bc<4UoL;snH@e/SjCccSFK!,M
+$NOU'.J5m4*mp4PZ!0luYN@KCO=C'+C!=BWXW&gJo5ZT*Vs-^Y9KALop1q,"g&]3<VF`/fAl0cQ1Hknf
+A($u'0r\gI199ib+E@D]lD'`k8X9gC`-4br4O+Lu`:PF73K4n=0WR[g-;EO^86&2]4gWI</n`JQ!Y,o"
+!9Ea3JrhFe273J?JocSDH;J:uYZin=XtdG;q9Wd"b7/2e#J&1KK6_6n]t:ZQcH0*&Hq017VGs.tmEHd:
+AF[O\1$'GGI*BgMN]HGUH#*h(%bSrunZ2!qL`l=0eFPIc8K8koAJ(r_.MIB'oD$a'>jSg6+<p`sL+<!q
+q:Red_.?@<&I?\>iZ<k8Ws(Cq`H*47T]J`GQQ8Sm#(TV&=+<!M>9f;"-3\*?>rLUV&G]%]QY-C`]&ocY
+JO\tBdNbHo^N`4,+.-Q!_N&d?rL9iVDP8_VSkuWQ7`sMJ5#=FON7?!O9FBAaC:8<BA*Mi^`@X$4h*B(%
+kI"Q(V&ajl4.h14-e*$DnR%2-?9]W,h,dL"ik`dEmS4$8VEh=odIq8!:YE@TlS"*d,/2S)$fJ^$$cO=+
+4K0$F@RcYmD5=rLVXd7(IQfkqmi"@A/m:kq=jm4$T&[cg0^uVs/0tgN/8'Q"Fa;L6&@`I@-#t>pe]OC8
+gtqgYXdss['0N`9cIRq^KebuI*t'"Jof0p3;N%g17LD3M/SM"55!LC@7sR4Z(V?.>71*PeaTN5AoJK=u
+e8g]YogkgC8`@<l,\fsrDV.2qKTl8`DF^Bm%U5IRetR:,V7RS32Wo-aqkq&[NLE?MqKQ6-Q0-rajFQ0N
+4[)iQ3\<,;GOO;/O@O1Y]k(5Y-BOJFejX9#,8Qk!'nHVaK-rgn<t^uk3M_\=9:?eM2M&"CM$M2X+Pp>,
+*+Q)[o0#i_9:4Igm3dj0]S"H*Ym59^?aas7oj!<>Z+k0efYUdQ"cT'5jhY=hLBLLp1/VUk/hRngKJQoB
+%!NXn=>/[RZXl`X/"0XlSf;70((DGsh_F=b246.'aF`/PeLiE,)hiuV3E0R-E-q35RLa"j?N+)<=#UqQ
+]^71gaK5r`0NL3U&!gSI![sEJ*6ljnV$h?>6t4uZC/h"#A!=_/j#*bp,7@=')+(#-L"sh!X/;#AM/<Ot
+e$EjADYFb$T=P>Kaf`-gY&IiUP<PQ4?LOTRi'd[4)mBL_Vu!8!5UD1jHLjO)g%!aS\Z^)?Ig%C3^Y:eZ
+bT9;.]ZW(cT<YoP4gIiugC4[ZXVGogM\8MD&qPi:iBEh&>8S"f!"Qas,Oh?D,(.;"5*Qq+Z:0a=-^H-j
+TTT6SF]]/H$g)@nW.9iua#"7A&,eZT1D"(.GH&Vt$g)@ob'`#Y/!1I#_'!:8/l]4saq4+>cn9J_BD7-^
+pkQ6Yk@9C'?0)&eqh0+<C'c7g.]>$<\H%riTY>%1*cSb_0tW,aeC1q_&D_kW1Qg+JR3Ma>A!?gWWl9%a
+KibR=p?V]8,a'[*V-"3n'U_^4G4Y+M'SnkAp7;#e?OLD8U=/BFa5&to:/,ij2_L-2bqM4f@mf=X*'VZD
+*kcW"-EPmOefpauh#6F!*rKK%Au<fQb3(-'7s+"oCGe"`a2de7%rY(fR<,Z@/UcqB2C5nA7\%Ueask-]
+EQ@*CRh")JgJVnUo52W_O/GTtb`5'mi[JBT`"h&2)b($%::[?4b*JfGDSip9T>\XG*R.(u-_6EROt_+A
+ir9"E:;4EJ9h*>efjQ\A\NLC;cH"5J-+9diUEcC'3S:mq2ALPAS,V(-mmfGdihm7,&"\?_a3ouk=$%rY
+(e,Wi43%H%k)OUV3\Q`Y&.5u]bh]er7lp\^KOE"3XG7/+n*<J*/"MuFZ)\pr!_[i:cH.<cDrq=YmSZL"
+Q:Dn-H;Vu']!/4h)91XA-_Sd'URcr.M,B4M(RL2p2`P_j>g*G?P_(W[p,+D8B(Q[F5%&8\)g:oWg9X_%
++!N6A'-ie_f)4kp&G<D!D8Jdjd#n;A.59jV;SYS\K7fa)>8!DN&?mGUq9Mo@o.r^0!Y2aCY%g50FV6OP
+)Ffe^-'3c!EKQhR:^25.JnYT'0M5DihLI8U!*b>&0t@:`-YOO2qUKXDROTBl57p"jiMG%Q0^J]X#U5H#
+?'-CE_"h-=4(ALXf5E`Mdj\4L8Mo,4rr<?=lJ;uuZn'`!<l[kBZ\Dof[Q4!U=`=\gq3R;c>055bWV'o/
+:R4u03[<8U#2BS4nV4R2]tDecF(oD(B*LB!eAd1uS/dYrGaE\$FMZh].qhs!Sg!WW:rXA(UpulY<h7,X
+_$]XVAL[p-K?2"pP=K_)A%R:i=;p&E7Yad"Fq5Z:51B7jj!B/^K@k0EG;HWum-V7%D^[@^$>nb8O0Pcm
+a1$c8[lMXRSk/Q@*-"Tg),NgNNd7]d/ZJ,7VNSIiZa[?&>DJEdG//V@3Fgh8UR@VK<mHTF#]1_T]pL+r
+a828^_1$\C:3c[e$.HD\Z.`C%'Tp0WMABL?!%`]tqJGB)VWAS73A[akf1EMA:F7oCH.pD$a)1mW;C,=S
+2Xm#cdE#q*=Mm(b-A@gYOj?orr@:Wd?TU_dB\2qf@COa(U:)Yf%IC!13bKtkVk.1Rl-rVd\I?'GK;[FN
+]hcjk(?*+$(FQIc#O+gF-q;G6QMTS!AG\HJl;r-p`^V]gHA#[m.aZ>O\<[q.]&?ee_#;]8"HKC;Y#=Me
+D9d1elHU^SiHq!a\PT7c@E99&lVr!r.OJu@Ea>ghdcBfq!*(,,G(\P1rk2CE2'm<$mIcC)R%sct%>3ds
+MZ_RF"J<u"@OfVjaaH6I[a]l#A<uf,JKd9sa4H?:Zte?*T@tKr[b92J+@U!c,%kQc_Reu2D-6E"1=;^d
+GT+m+YANC*@]sY`a_`[S_N8s2K?m<#[!+]$*7h%>)D%1GEt4m[I)a^<A%.F.<;SE,`;AV*l!5cVkKR&_
+lVWQg"6B91'#!d\)VI]Pm(/fKkJ&!;L4%809W/c)BIf2U*0;QY6qCf)4aKpW<4*PWW&,15a-7EIq<B@R
+4K/8[]8?TR5#MBR^337-OcI,R(HWPn",T53l&Lu@+@$2qES/V?K&lJo#E3tW-j3*cIdMY2'a1N1`<Nu2
+Y].](I7g[%:L5FulnBCjI4-cM_.N]@>'Brd&:Gu-&\3[,Sq<.-c]cD!]:[,#KQr"60cN]bG[(`5f'f7.
+CmED,gq#Qh1WH2/7*bHi2L8F<2)LUYJ6hM70u*l.r`,RHH5"AXOckA$D2M+6[9"P#d=kD-q4QoY2mEhu
+S-1)GSnfX_R58[l\/@;*p$#ZrVSuZ%6)^s>!"'Z-Frs<c)!KO-[1'&QZ,V3*Aphke.Zd!c;=bbBlt\I:
+2ZuYsAqA:a$:kH95?cFXQO2dWM7uH<P0M8k*o3apA5uVP)-cldks,m%o3_`D#H/KY!'QDg!kaZ:blCl[
+8/4EjgAE\Ak\(%9XJ/Ok"(j:iSqi1')%:]pLe*5`/A@,--j3^u^d,]*RLL5Jp'pRRT:Cn6&2DMi6'r&k
+Q=%@N!-HHcMe5:bgE6t;AI"nL0gV]])k8l/>@VPkBg%6mM^Y9R:[)"6b%/BFf5%W1)#Uo0>8_Le<+UmP
+.?Bn1#snVXl[t]GI*?u;C._TXcSZdArrA$LPh<hR";]]%"hb/C#(l,<Q(#OT#J!201lR3'_Mn+ITn(eJ
+3r+n-d"D(TqhiWmJFtCL:oFXp=hBR#YgN7MqatS3?5!%pXklP(8_%\9^XM7=%f(LKP6]hqO)QnHrU^o5
+KpaYrG<F'c$#b0dC27f>gYGQfF(c@!Ml-&=LcG:AOIUIfU8kVfA(JFKBm]J8Zf1iOBg*=&&5bHZ5TmV0
+@DaRbL2;&Te`YK68Y2Fr\X0;-iG2X\#>Le<7V:*'<K1g3j5oBk-Z46Yd.tR$8o86b9)$]f\CB&;89B)[
+n*JH-mTp5L*0qYrKX=pR1hcJ<Et72QK&u%'hUB&m/b7)lNi,!Pnhnb;I1@<eMQi35>'t4,2[&J<m85Hq
+eG2rFotp(CoW)b)H$lIN]O"2TB.+aO0YY9NTakUEonZ+ZK%56gX9iKk7u#UOHSSKGa]51"#jd4()#B-X
+_r2b'M6kFFk5N]c8Y_p+IQ:ZtZca\gUVmp(#"qZV/`$_eAEk%8c>\(`(os^&;jYAYiVl?8rij4#914-i
+LOLfL(K[o&=M.(?f=Ngq;E'g$ac7+(Z9$U,="10dBV'ntcOW6c9j)o-[s35i_Yp3UD+`[]$\[F`X!$2D
+%Ds#)KlbQL;Oio53rZN^XC&;`H.?XjE-I?,J2$B]ROGmm+RtEK@+@l=92MHk1"'9nj%EoWlClX-fT?ZE
+Shbb[c-"=c>3r)2(R8\bXCTK[,`[/cmI*j(UhP2>7^/`36ZBu+Z^_Y#+'&N9"\TrEE-=]>k+*DMQ#eo4
+k/J2>gPUpEg"3rl<OI)f5oA64S1KB"GkN>R.A#7QK%XXk8<i)b/BZj03:6<Jrj:P%;f5'9q/CjgJL_4A
+Kog=:KuPf@3cqR)PZF\(B>&[aUWKu\gg!;X\ElSA=/SLn_\_f8d@XqDEl'd@g>GJ]B_H_3fY@_049<mA
+H#.jL,,:CV3t4,H3dTMA<MG?,:$\@c%Tml;HdYi*,t]WOHSq"``$0<LQGEq)r70Cp;pVE^3uU]un@_Uk
+f#CsoC04/OPOBPPTLs$b+<9u=T_\]U.;XSi3T>YlVsaQb]?$WK:ReHd8e;)rBeVoiai@*LW(ogPLm:he
+M^R<QXTuq#&`g1r!58uYC'<IJg/*=uF2fUa,jRaDlrEj`\E'r\_<HS;\_)[f9a$?dWBJ&A!%AbI;mBSr
+!0p@b;s6NC^q78>T_l:uBaF4cg.dCR4>NZ6Ff"$OHY-gN[)^Fj(Iqusk;uMuDBOB"rjB_hhM.m(CrmS1
+q24+=m^T1;QCuFd!G)_eO:Td+4#5u1XfA#Ye77"Vk@)ZX'u!T/pdT`cBe@FQNLjHXJ`#%e"%q?A1YtC@
+6;%X?7pZ?&F0`3gcX@fc`Z:>"Cb5dQEo8lCS>[G`.QLDV^1R!`62lopSu#PMXskg)\0=J/@YkB6&j_U<
+Vgb#8%+-sO4jFPfPRsk/oGT\4aR"dW1!5I8ks:^i*^gWk0Et'3e,aGU"3Y#p1R\;1^V!^!M)l.%HI)hI
+dP<n$)h92Rge]l=53!i]V@O[H!51\!fPiD'@fll?/:O1T(mF;*K+l<d"SA@&EF0_]=Ee<>4o*>,`7nHa
+Bi3OL6c&5B8aHTF2O%P91XE16[fTDHWcp8\7jUqsoW<r16H.L2\6KZR&!7Vu?Rp@KFuUQ8'LnK5QG<Tc
+I0BcE+o!LoO3XhGN1H#=F.*FXW2-"sOWeni"\A$5oUlNF,ms>*K2]jAVT3'lDWV$E%n#_Z>;/9"Ir68F
+)c%1C6W]@#_Xbk/h#dQA76?'arr?n3j?F^@*:s?oT*ih`1o^DREu^=tb9R@diJb%;=?4L=&V;]_e7*1G
+k^>WnQVGMiUHS@f7au+<2_8UNZYS]d7Zk%S]3d<b2[jbm<W(*\\N)IC[N3eZ7=2^RodfWTD^k;2]SgDr
+"VJ#ZG.;GHQ.#l%YB-k*;FbH[7;7BG)As5[,.f5k3%#+oj-nrFqp+AQ"!:W"2<lYY[B3shXQ5\b*^t.A
+rZ75BCpPUYXk9UNXQ^\mrp-(569?)(^4dqO9Y3B7>2mG&RnPQi%hOp+9^9p?,o^A$L'Ju:*75XN1S20X
+'5\TXHn)\6drd)Cba($-E<Itsl;=B\Lf\YfqXIbfCT58]"=e-8Q>_:-GasGte@rc!Lp7GhO0`#a!QqFH
+Il*bT&6keO[t\SVV2mh[P0qfO49#:e7UE:q1Q=H>:FfQ47Nd)5[:=*G?lpqZ)t.D^o8VPVZ-@Erk/SX@
+QH_5*/i5d-pfC?$BrU"SEnSO>fj7jJ$Ohi8,_ZM8+\2h@@+SY'&ZE*0jtb-M1gdeun(n*?g[QZ/m1,WF
+X,&lHU,+>"!,)X@0,'pQaQeO%Rk'N5(,OLSO)G+eD0tI"3Y&E1Wp,W12UY"_h_+#/okofG'pS..cXD_%
+X!JdH[[\V!2+ZeDGu[J"Wm1Yp%)`R*P##9AEbD(<=*g5*90i>j]6PGjagpPC6#W*[$E1k1(h.75kZ$+V
+Z\So5&Ik?jpH&Z$3V9E'-ZN(KHCd:Z+,HL!d6JB22UU<caBg3Ac'8M7G2o3sG#Q6"7EZWF*uhKJQX:SW
+,I+,$;+Z^3].>_;\-pV+JZZ\njlUU5bil1#LR_`LA^i$;10[3jZ"*ZffnT4mkWo(s[Z1FYGM^B24SG"_
+422-tL+Qa'7FnT5bSJf,M:pMp]?D/6(uhcAj[n+jN[d#G;LNB]!$grX[AYqZ>8B[:Z_T?;Sr@nUGfL#f
+ae'A/2c7#)nnJUTV#aXA3=^GOq.I*r,M2Uie'q<VN;AGtP$quO.(m'I28R;_9u-Gf?A0WFXgu--\97B9
+r5<a([;8-X35R$)q3A\Qn!XOD92X3+Ph8qa1>]iN(l3J[V'Z;=W)@#!=q,?ea#.,A_tOhbY8&0P:-su1
+H4`D*LMl%%!RGi<K)r=Z!Km\eTEX%uIG]05-PQQ<#ue1uj.,e]!)*qGhAkr`+:cm%+olmO]*_4>q]j/;
+PO<(^p%hPui;WeaMQ:Lk(CUUKCN(+#iKuY(76JKJ7FKiaV/<&,8W9H@`*b:[St!7S>]JP6CiTVo`15r(
+KQNr0C"To"U4CCdA,FsTJYZaX=Z1YgcL*GNkWhZoT^XYQ$_#\0![NQ_A-[i7D$-Y`lAZbqYGY+oP`$`E
+cPqVZYWXBj7TGE2+aC5:P!D5Od*4Q_ECj#]`d;=(k&3NH92a1dPUI!KoCK6aTQdEs6KW2Pl@Lek!&0W<
+_&Y"n>_n\.S<M9nSq=:I@s\frI)Of(?,LhK1X0TB=n@OUO)ELf'-7(Z0I9jIEgsiJGSmOXfG4]hoq>*2
+A3!J0J:04W!8+`u!";Ws%46CPSoI&$m'IY%4J5Y]hg"m&IV<8T2W\nSI)ROt_kgtB^j5_j=aj1nW9?Z`
+>+6ns(m"HWQt$5r1`?jfk45-+8AGJ<7k.\n/j;e\=hk7g%imkQ8o,@h""[YXKi-I8BP+-^WiuiDKa*7L
+"(Pn.(c_hpTn(CZ=PT^'rQjH(eCYH"bS"bJ1-]t$K:`#6XT2fGAg@d-jCbRp74JD-3S^5^J^Yj4;V?Ws
+e,+"JRPi;1'",023Al43>M-)uo*(.MhNGdZ5o`s,(,(n(F6@=G%dLbMdkkk+[#TPn=B&sFLZEPi`Yl5u
+0Jep3H.A_P2h$PIq(.]H_-(k@M=b#qXZ$&F(XlJ3Z4!VmKT$(VN>N9o(a;.mVR(tWRP-D36DN\p6(2tL
+E9sl')kaW8.c5F\,C^)[!':!Y9;pqE4D,MK7!g5U&bpQBQ;or8W$4%NR!!4TTrr_47pZ4C8QhX6,F\%)
+MocgKP!@)"h9Titk<=n6Ot@je:-#19@qKhF^ld2354:Z+<>p]UR@7/S%495-H^X8lG9ska2IL(^gU)q<
+CDtg(/ID,bk[A^gi^M+GXp!%s*#(jHB*!<.L,hIn[F7bTb[FPK4?@BK6dPD>Mc7lD@:'`&G^Y%g-uZK8
+f-j%&\.Z;8;gf.(/'s;_g=76kcD\Eue%+^h=2nt7[Z93/(AMshe'B-Kl/Ga(i%BIjb_`]:e;ugfB.U`!
+KJOT2D4.7`B;4].X(SG:2Of*hB8T6r=,cf#=9L.7lL"4$b:5<&M"E-m-$?36%hEnp;H,(VKh3,m":rIp
+J^&8Y;i=hK;bl'fkCV`2%QQ*l,\cYo5iNDDB*UF9JN<R.4aO5u:7_&jWSY>3^a6mm1hEIP`c7#(^oh!R
+36a%2o_hcA//h&h;'i`#Y:`CQ55,2#/$ac;cVf[j]0$V`B"=u"SNtipSAnQGAGNM%E(^2H**6r*Ush8V
+3@MLXA)f^V_Hn_BFV^BV"l_()F]MA2V\mbG?LAl1'Q55XZQ'/r]C"g"kar"NX[pZKHY=I&S+i)a^c<X;
+"EgZDO/F"\L*%S=eXL%)quYL;mI$m9;N9kEFaH2<gg_UM#2J;2mo[I`:.n$c<8hST>J$4a+/[lh<_Jh(
+dTq\M<]a<@_%Ms`41N,+`Q_E4m)!/nKStes5=%.)C%Y1^8oYH"D4u[9b1Y+-K%\.,/'g?CnPPUC:<FF7
+],&sp`_F\Oi[\_=IYC;OBS9;ti3)lSZ1^>>.rQ%hZ+S`LN^Jsa\>WKrcrZtZW1H,D0n(O8Xq""X)uAUZ
+<_Fa!7LDor/[PW,B@;DrB(RFG=!A?!5kV,<71UdH,\J6><_jn^q2YYtHI<IY/4P.=,H)T2<4Pkp!*dfM
+)Y,'MBISuJ5nk39Z<@\Y_*NTJ#ZWiq5(jg`GnF\5hV`e!#(\`X(.$F_\El7QAkJSg%q@j<7i9s!:3jeY
+BRQG_H&qs.*Cn`0X-Et[Dq['-lJ<B\)>b`2d!B8.+OAtkW6@F^<@sX1M]c"gD5G&j.d)ki8Zj?*+i&[/
+!%a$M<hZ[.=$%$XlM2MMD?q<VY9G7"JV"CmmX!=C92I1tb8R9Q^N>LHV9[)i*/$^H^FW.hH[F,:c!JE@
+QE%F!JElKYFp$VZTp"3KN3JUi.]_[V6D+"5H;A$_Bd+%Ma9M&KB;taiZ<N`<ZG7h,!+2(dDZ9_*H[=8]
+JiQ.b7Qu8-MhN&Fk(:.sDrjCk:FE#c<:V0pA7e>Dq4TNsrrA@EpJ959P3U2MW\T3F,NV/M5SEHb)qij)
+k6pZUaFJ;BfG3YBF6Q1=!bH;BSr:ii#X_)W5;8Sg61/t8TF4#A>9I@L;B7uTNq<?hf\oGb*oX@'!-A=`
+2*?Zti"Q@G5breNe+'F>G;2&pFVsaK5HP*1Yh]t0:#Ltj4_['6VTSt)"]sea_,8R:a_k>8<?r0:3U'`c
+/^$6%[0FJ03fj=G14E`j*U!REgk?:5*.YQbbtfMa]#jp=P5XM<=E_J;5WSDX!rTZVA&$TL"@@!N!1<S$
+H=1lseCYjrrr<mYNC-V6pQ"FKRHBr$CJ]c>&orejY`3gYSoB0?p#GI=]'<Q\o1:S$pYQnC4?aSVH_t*S
+/Uq5n8[RE/!#&^&3PKZcWL)(QT`i#cp=cB[ACKEI>fSBRZgHuGb!PW]:IEGbks7I-XBeRl8U3PAoRF(W
+FVES)/YK>!A6X]57L!'!\]7>-E(A)WaeKYYnKkU<2E$M`pF2QoBi*3\>\*NHE)q^kd9s2Y#t]7g=U[\1
+7ejH1o*8I8m!?n-d^3fG7pIjh$HUI(N[W!,PJHY<\_NIZ3G18d@ec\GiWC`1_'Po)&fDs"`nnj-1&0>p
+H(.`;a+3Hd("TRk>2.li)g_Z:H(l;IfN<%FF4VE_etlAKo'tC]>)u%NrLt[g1g^`;01,/7MeAm]-85"N
+>3[VOdX-sFQO4dW"gZDPd'$@S2(dMN=k4(b/#d7HH$@*5QIk-b_gObe<qi1;3lTlTIO3>u4ZXtkK?[>@
+Z7LthOol"u=C[Cql*")R0&;Qr$W5;c-L?/SnZUljJ`5q(e\!''8Z$3C.A'K,_V@_0#G7!qCG_EhKLU7(
+*"P[3-].!PI[-#7<K_(.*_!!!&R2<h,]ZT^3uTWB#["q0ffs^_']g.FkLHrtm!%:qnJ0<WWu/T_P!J<5
+e9;o*`bUm:'\1's1ud,LokVhu[C2Cd<*!]1`'MHo#&nA&S)nf`Np-&U=S^G*GE-/%ZGUNr]&rHYh?C,C
+??cPsTK]dIi?7">rqBp=0)S_NhqO'V/T*-+-WYJpDMOAb_3[DlNS_^,lX$))mibZKq^=AiU1YWXnNXju
+[pfeEj2;c)/FO&/g-di],X8k3,:qH1UCiP@Q3jl"mfAVYP/;8m[m!k*`K[=G7b>75rC=p"g=U)mPdC.O
+_`ATiP$duSorf$C1KnLuq-`]\JhPfR@u^\08Zk[Q-FK!"iNr@qRSQTM2KTHHC:CdE<qid2#rY?hYY$Mm
+R1t:`3oagBA!:0#MFdDRelAos-Y&gUd[Ko;Y]4Pg8Xta7E5dl=#<AUu[&e:W@q`?cLXT:-$&pd$3[Yl\
+fCi3fcQRi9fZ/&2I(gq!l?siFrrBnhGrX?O-#I))On?O<2XHD_DOkt].r$b4VKgaNf=F,mD=2s[>Ua&7
+$[9q!G91a7Ml7>$(03TF*.L!LCiaF09bXKW%S&ct,F'iR@VCSu8-qE_!`NX))&UA7a35qg-cd8B3BbDT
+!+UYh[Xl$q+'J^3/7M$S]5PnY1`3@:$Q\NB(h*ODBJpp32kTeh+,'^g-/;99%/6F6DC.U&;sclWfP07W
+6%Gke;r%&=CN2jAoq9s/J9qQIie%7tg(1*-!3p:`.tF#@%sk8^gr\CM4a-i*j0_."rVK"opmcSA*9,Q4
+"9%8pq233Ipkl!=T/pfB2f)a6"c+ODH]EGSStsIG(hS`;R'@*NJPSJ[TZI4NNR9EtjSMsKYU9VpNa)G\
+'QZ4+&k3bJ#l4OIoqpYt6L'*%`5RPJ-%Z&\$Z`f2VdOnAfGtPs*Ol>6c:>Qa8Y(=97=0A&dH0gt-bh$t
+$Kl!QkD[Foq-]:Re'<#5aGDLO=?#[&/.Z'X.Y)na8j%*D(b+A,e$T0J'geU7F-4LX!1l,)DH;mWW&kfS
+&(5tL=k+Go^B`l\T5Kko@Q!::.$9cC'jE[[^D[q%@<-Or<f`U>^uX'olj6fM&AabnO<e_Z*i=WL"H%d_
+b98EI)e18#49@#u-/.RqirbSlW?(1(G'N)-7!sR[KCm3u0gc()4ei0^)"/P4n'5]4G%ffjr:Csj1CiH(
++4>j$Aig@0@i>Mh\3N(#DY9[Rjc.$!*0q^VVi_o2(lEomZ8'XK&+HSHOUP;;JE)iN$>#H`WFach"2,,f
+9oBsqO[13#^iRkDf!A:eKCtf]d0;Q-hg'MXCHrM1<%oAKlUgFH1G9h,AQ4*O*HBsoL`_?.'Q,/q!/6-e
+RH$^j0!B[Q+'mJJ+7^F&eoH5])H2tRPO-VD]pA-+#>'.c=Y79DUK]-,ccpH`3TH2aX6/\CQ?'P5-4cA?
+VS'&XcAR)sf7g,YgW$I'`2o,V/M`_1F3B:U$9^+LGZLW#4Pa=&7K3?)CU5UiT^^$2K%>0VNb1Ia89-JC
+(DmCT3NecdGSFjtVTqCtRB@ak1RZ-?Fu!PMB;!6pc)i@7lu;K$boQbha!%mO2_`+2ZeXpc+G#V/k^=s!
+CsAIbO&OKo=rV2DD;i!q;D83Qlkgt2lX"-#ep6pP,L5u*#(8a@hME7*ZQpsea!s-&c#qI+LI<4:`b=k1
+hT1/l!^ri$-_+T7am8a@ei!7teClr6?\`rnUM"kF?&1?[%c#'7P/?/\OXl"4&fH5mmp:_j)p#BKb^Cs@
+PNQ3^7.?7imX>QrjSfAQc\8_X7o?Q=?P5_EF)uRk;HY30mA1*Z&!uAXHO@?Oq+W^4GSIHB)k;@/f5L4B
+Vo:hQn]&>C$f+HP0O.dF/OG.j;4j8"NhO4FZ%\dIfO43QTk.#-d^9pddWMg7HIk)75dEl6G4,G0ci?4W
+l]/EZ9]!G>1:G49L`k3AQ9`C2^nU_hJR&Z?Mt@oh4hes;e5j[COkVN,<%Z0/(r>pL.\ot*0qB`a/,)0P
+;)6&K`4rpgrmSK6#"r/U^0qLAb3Gn-%ncOLZWsAN;4kPkRegWqiQ:_Q'^37adjMHk-\uTACoofk26WJY
+PSXog6jOlVGQG*>gm[)j<2@3'.l>)f]HjKS/O*G]&R9QRa4:i+G^^/.$cLQ`+hc?I-a^?ul\C%'[Y)]O
+Ar]G*KuEdth2Hp;&:TA"-5Jg'`oNMUEjR$eli-qda50!#Zdh5NHlLJI)Yf'`a&@`WB"HQ8'tH8b>CEVK
+:lLpQ)itO?V0R<cc-&S)(/9t8Q^Xq\?&t1kXWh$u`NpnS9KHJWVWI1'q-f7^k;uFC!-SR3=[b[UcWW;2
+;4f[L5.9s@R;Y!]To$U!A!SGs+=Pkn1\\4^G;:Z`Ll8/]mq;G<@!HJ)2YsQB6li<3_TK[mm'ZloijPaZ
+969,J'j[7"cC\ffAShpL$kBP]D&c0G(ge`$mMH%l4ajB2'U3c'R6G*R`>u;P=tp\dc]hF!?:HCYQkg^)
+r^Q"1$pM(l&K=7H,A11RSjYnekV./a=3&Ctndf5,Urj\u[H&fW+dW;+o:O2@TJ7?XeQ-:4D,<l5*8l9&
+)0<'tBi60g8Q;Yo[Q*s>JkM6IOtsM8X+E>p"U4M'i%Z_p,SHF'.FNcgZ&E$P7S<[\(Xdn#m2Uq$7mfRI
+m!=Z6F6Pt5GlW".-ilh8oq9$B9QPiH]r2`/']WrqjhHUJ8AD9,KNNs`]-3'mp8S26>BVqIop^I$gua,N
+IJotL=R:1V$N6nYa!HCujrtQJm_sGrYcMmfLoPq2i%Sos<sh'jKQ99?qn2XgRe'*'UrG7G,OJVEaM8"r
+4Yr,K8k]KYC_@V_"/uB9rG+]^,AnA1r8"^.54ej&'\fp:Kg0ejN][!8k?s,P[STu!bE7KrGWh$XV]mcs
++7u%Hi"]f*4Z\V2I-`j*B2jk?Zu6apE8_+7kU9A;i/!OAftbF1<;V]@TpWBX.f`/^,Mn.YQ!?RV7`%lq
+YG!r924lr2^_r8YI',NjV$_#DKS`"c,i(DSFO/p'd=G[Z7KiEiL*,:>qUTCt$^pV#GJIobjc9BQGWG.l
+p&X]6b/kmF--d2Tn41"W=FgDO->::#59U.gQbW^nbr*!DQHVQIc]ee=3q+q0!;HXPH(Ql\(NTDWkRY+8
+?kGDH["tcr_D7($JoH%)bFOW1>::$tNJ^2Sr]N?mRfjB-/KPNiga6"]PLH&K7j95r<rM&qahUC5oW..b
+j@&;ZI&s"2ri[?gCs]'%A(7P5?%?fPaNo@UZnkWjPsA7--'b\>j$PEb)17rD5sDt34m$:a-]0i/8IBE&
+`>kjlCeLi/!3ae63sH&m^!ET5Ph6Si]W_Y&cPcAW!2jlM0hW@U440B8q%Xm*B`&h>YdfV1hC2ZZ(23A&
+h8G?%9=tlIH]%K+(!)5qj_4Khi=C`Ffei6!'l-IE.Tg>-7G0>[Uo66QkOGaF`R.S_,P@S8EiVM>o!*\`
+>/$9"c_em&G%I,]g[.VgJ?g8^<uBu`:CROBI)4O-QKOCfl>JL8-)6jpkF6kBf60qMc@8IPPhhbD8sd-%
+c(,j5ThODF$uoNN=4HuC5BS3t2"V558K5*NFNWctK@!XSfpsnOT#-qc7g6733if^+lq;1!I6_5]Xa0Ml
+of-1iG;(>kY-,/?A^$JO(h!ll\1.=#3s!.A3)7k8QB%]_9D]1BcsB3d7Y*gh@r!lDku]m<;Ne@L#=l$e
+5\%E>ORr&4I[R<PBWcV<VgSmE]@^TA*\3e!7u[g(D(Nms,I$=A.DBZ<7Z2+F*X='I7u2)]rm$a554.$7
+AI*]WB*8_>X*)+IM"`@L:kN(DNSfG+oKs@PIT=4l!UcdH\'=ZY?uaqYc.6o]MNp[`cRHT!-Ien@'J(iD
+#ja^'[HQ*7=k'3Vd'V!>QaLLn&,V(ga#VH&Xa.=IY"\)Z*8\E]YGg,Z6#bDDKNii9W;(69^cB^U[1+<i
+>+1stqAh/Yk,58*CNElq\[Gl%#<:KD=YP0ueqp/gflF!&cJ&"adkqLP4)kWN[^HdiBNXV4#BBbDBG9`$
+'#_qa`[N4\i"NtrDP)&.`Y\M7N#kM0mp*%>^0k.i[l#fZ.s*V%,qXH\)OH42VFYX4aHepBH%&6cQ<a&,
+]kXfiUhn9@4a&ta8P.j4:&@;RZc)>_`>Y"MQ61IBN&,T(ApCi\V[5G,J!'HFJFrZu[_9CG'T'K)fKVK0
+EJ>Q1[Hta[-c"`A[-W,bD]k&[*RDU55)67Xc8*0Q+D2QTC,rF"QJn9%4395Taur;gVorHs`?CQH>lDW>
+GlI4"8P+K/*0LOA?qLn=I4BM=&d]L%S9re;-KjgXNo8q%Jp@p2[I>(l_!R/s=p'm%g=ciMIdAK/+a=\+
++rkE/!/R&;,^cD0#P+N_#`%cudINKX!9\&pPO6qR0o^6tR1dHVGJsPR*UH$&dCSCK-_R+=dR^/O&cqZu
+#suD`=SJcTY[Pt1,R+2::)BL8!SH/uN_Ak-l-H1+.-,sF:>feiTHW'[THnt+eM.X2LNc&`[m0ZT7l(7i
+IQ:Y;a/WegpBi1*X>-rX+GQ(o#9pItAa^@0iBDCsnG`KD0AA&`g"cPXN9pt!*+QBq&nB,D%8m7<dIk/H
+I*32]k8ae"&O,_VgVgN<>H8&`I:\J4pZ']0k!b?>fBq8B)hTH4Uk$W<i,_R$Qu4+=Lkb%P4YXa'/ZpiE
+8AP^R=EYam(!b!B,\\f61;eG:n#s/M=@"b`m'isR\q&L,M;ne*4hW?`5$!6ZOW:#lS:Z%2C!Og71!&8[
+>jMh!h^e:2'SDFdlV`8$=)`=)H%?!C<kO4r)^1@u,E*n1I+#KO%SeL(CiO&FN^&mccKFNi@\]2?5a+9/
+7bpiI8#`?/hLK90)XusJdZrHP.*"LG!7c*4!9Jm4(o'QrZAs\AN^Nr%%1sI&GhPsFMP)*?mB1;Zb9Y<l
+G2u[HN"17b4b1+FE5:Cq\:&-)Xi\&::lY4Fq/SQ0M@m)O\>]o^.?%h/^c<Ds<h+s_p&ecj*b.,JS#H'%
+.-*j4CpjhpK#igB$q/"9j3oj\&YP9E1@P+n(ro7C3E"@pGC7K(HTREUhX+!Ac0-Qi:[[=(GPO]hAFWH_
+I&Uj3-d%iT7Q\'g^KgN3HO3E527+HAdMjP_1m*inY2NM8bm$_XQnAV+<kpGb[T4G__$?p3BAuG%>m>-R
+inodgq1>QR]8C&7E5He>`\GLrf:bfS;+QS%kh,ZS46dju]!Jc0-bf*B`d#/?PI'^3i/Te#,8CA#\ohZM
+r&]f9!+nf+kf2/S[<X?@ohd0(eRpR@X7^Bbi:P&74B5:!>fl\$nN>-)jr>u';Ccd8W/_aRIIDZ(d]db8
+1oCT%k\f'-=C,\%;rrV@5+gk<>3B`CNoNL!FCC5-aMhXi2UL?MqAuQnkXEU=+6Oqnm!lXnj]iIHXMU^n
+f^rAu(L)*H7LLQk,=VL01":F-lWHr'C1?7<rK;2U-Cdhoi^1u7.:,L!A+cqjE`S-^6[8_W]u'S4m](6N
+lqM9bVE%gc&]e`/*1pN&h@"SO1pX%a8'6ES"*QE>X^*A;)a[.OeFY7Q3unDuGV1Tm+(GYT2#m^8;99o>
+.73m$FW6R1NsG25^QGO%720^_1R&;8Ch;l%N9<EbFA\j0e^$j@)NEV;n\%04\s]'rRuQNj?q7&::0u77
+F@&]sfCV^MXo,9+0Ib)Zcf*,g9lgOq-u/HR9-`=3(-a)8Rnqi\ER.gUafPi7bj)QKrrBF.iP2iOD_8ak
+j]EP;S/bL&ni[IQ/IpLk=;p)a%j0,i-1fV%j!(gp=$=bF9(puij)4em]^6QPp,l7HEUL\$,nsl]VkeAX
+,-5h`rQ4e67oR]Y'r4n``\f$qCqXWok,5-2_IS#*gUJifa+;,hY!t^nk.M`C(H'M\0q2-Qr1E&!JG<VA
+rlfu@YkpGLe-8ZPF+M>XFg#SG+.cpfGB9ij7S%DiE%6lj2EVrjI4BM>Tk;X>8H&$Q.\=Fff`^n!N_W69
+a_h<=j-nU*LEqGi!6I_91msst,S!BJMM3Asm#n^cFr^5AgGB-s*ZX*nq-8uFY@I@iJTJ,AbaV-Z3>gqW
+peXNN^i_`Q\=aDN*)8ub(saFc)@^s(*1D;WRDP4:U4[u0'7q_T-%J0YNt7maj7NV/1cOdqn;XJ(a?R7^
+T5"fT&<1[MJ-g)lmlr3W)2boG3I"hLc?iB<d^QuBOnQ<\PkFlQ]n@GC3WB(]55p%(a:B]oqMY<[TaYT4
+&^r,1'oNURV_O(k.\FS*qYVA/\]/F2&gWIt63>6_F3=$*qGJcd[(#YE,&L_f(hXiYT7#'aYm$QI9[ngO
+]4g9__`:O"#HgV"3S514GX"lBdTB6;2Sgg,gaVT0m7g5M.*\K%Ft(#Vj`M[MEIp!,h0[_T6thH093&B2
+qc8n)@"Mo/L%cgp"ZXc%:./saHB](;D(KK-@`3u1!9;M$Y%A.LQIbo`kmVOR*^h)7V\PtY1G<R$A5t7-
+)9t=p?o[=iW^b<uNT6]+1]_>KR2Ja9!.o^GCAHKp30;7n0Gc,!"/5S=cG5Wo%e<U!!3uMt/p7B0:^(Ep
+DuLK6:FEC,'d-'fZ:2<k%HJL=VJ>qZ"#Djd?l*h#Yk7BS3s*D07RBYX5UYIYURcr0B)UKI#6AhuQTG1"
+`"4mUV+MZ]PVXGAMM&9f8bT8H;Uj?`OWc9hqVm[-'A/M3'n$T-Tp"3;+3L`./k@)pj6?#"2CF56K?i'7
++0L)%<bcFRbJtacEFK.fUF20>&XHQ7<.pN-aFEH5<bcHEL)EDVfE8L5q,P+bj@/HT@e325Zd.HhQWYo_
+/$KG&8KQm"!]&?las>ciPD:Ng46)2mfj#'1hqLpsQIk,$)PjUX!c(tMB6o.lacQ(hjRccMp"+q^BP5W)
+!7YYfeh?BlU+tEZgG7)&3<Z<!i8aI2EO:mD?#G'\$f^HN\0S3TH(Mk3>?A,W[/2hMU<PGe`VZ1gji/gk
+;Jp?DH!b7]UCo(#4HYJ%Fr.8FB\D!4$,r#D(>^Kk?)SUuMPMN.<ekhVa>^nt6qM9i>G499/"XE,V'UOc
+;:Es88(p96NO^(!*NP&jR*N"L3dXS(if']$$g]:T8E=9PC0Yj:<1@N5U2%8fn&k&\kZ?q4U]LeQ24l?B
+U`<*Clsb7X8k=NbFFM9=IAtD%A>[hc_$h*Y/&@R9Bdh+7#94=NT>Ja@eD@&uLa.X948heK$OT9=W&Vn!
+cT05^Pab2d\Kn_.f;\>%M)G"W,a&N<<f/9c0I-[jUBFZ)LS5EbmrR$;k?=2L.:hKfA]k'?rrBj8/4WU5
+'TZM*[T/VMhB6oFL-9VF>gQ`sMN(,99'4Au,`(9PJWZT!J.nH"@\lL13Auco':sPtX35)MitA)<J7B",
+F&PsCl<s83S[>YRcFX.OaXXt[lh.D^&p[0MXKFJ`V\,-Bor3i!'u#BH&T+54Mj\H).iF\="RlH3%R1ls
+3:RBB0&;POiROHE^VnG._/C2,c)A`<cU2V_U0O=6A]N64>RYd>G<2hid*o!Z6,NG-&[=b4J:e[@nJ1@G
+i9'jE&Qn3!".nYK8W]U%JB7oCeqFn,cj1t^SFS*lJB--cD),YiQ'efCa/*=U"&cQ.7oArP$',(Y8jkW^
+h#\YYN7-fWAG&22)$G'-H2pr,5p(G:cWU=2>lEM5Gl6b+Fq7M:#2F9`a#"UX_.7E+ob7e)QT)/3XuX=k
+96)qTZ29Ch@Pe!?)\Wu8Tt^@&!,@**&-YY0*>\s4TQ!=*b\,S1fn`a^q>o$Hllof@8(V/7qXgk>no'SI
+SS(;Q`O*/RCHU$^<`/)2b,=a$4Z$uq39R\gOuFNi&,3EM-lNhP[liiP'GkG7Z]CGfi:(Cb"B\PuNNKR?
+_=XO8=S(]/)`>Y&N#2T8E-bGU;53O6[se$=J$e"j[:Q>BU;p$BSRS2D,V1^RGTc_E`CE!Alt,#J>2<_7
+1u$$VR52]jE6.kV=7'3G.QfmAZ2O".2(/Nf6t:!ImKQ8G'ZLo[,(X<0He@N1*QV'_%#gC1:-)2Ur)Z]e
+8P@.d7HB0f8#KMjdthQj_tS0[!]l:e"EA()S<DiTStdYN*qTH71nJ2G1#*!G[Q2ZK!4%Z=@)-<)!Ajf9
+GYGCsaSC,Eoq2PT;pdr//H@SSLZN3lUA`[C!#biX2I/Uf5pIL$rr<r;].-KR,Ad`7b+rZ4n`s9#hM$$V
+#`D$&0Zi4Z<H98S2kbA8K#<m\<-H@I<6F8iL!'W[gEoEc`j4c=(4US/$gh>J[lFQFRZJjs@Z2PIa?R=T
+X2e*0Womb@EH7#RaN-[=(YdN:"nN_[Jp8OCpsjGi05DXmcCDqT3FRtO#1NEJJQ/mU@=U]@eZ#bS(0#.d
+/jU?qX%'7Bpttf"nD0r8_nA.MP8O<"ZogFMU;Z?,0D;Io3QWF1aN&VU#=!Oj!;uWeB?$ceng[2%=Y:\)
+Okar6XN@i7O0RXL6^i5Ua/JdMhXUUGZ?6I\pCgdo<jr#.^_.sLO?2RpY8Z!(516U90$HsE]p+UCeb8i?
+B6=r2=4O%$6E:tMo=0G=ku=J"SrUiiiSsC@XCsT9Q61pa/+kAFQXeB[/m?[]=9B9\[cci:lo<$#cV8Hg
+G*uAMq.3J!%6=s@(HBM#hN^LgF=kf<!5e&@o&\8aST;XLO2ot[0Z;4=qB"/rN'R3%],9O-$8OZ6h'f\W
+*R36[e[79@#!4g=ZOCYX$D1geEE&H;ZlM+dDKqemSP)tid,,E`\%S(ehZWkhpu@umlbg\7=4$SQ5or+c
+Bec`b]'V7E)13&P>8[LSH*5HiEifd&+&]MTGp"mc\3POe#=J1/9hK.lMA6i4H_0Q^g]%6_lF-2ajKQOH
+J-BE""STpW29`&0XUZ==.]7E!0?$0/TafkNFUY!#jg#;GSt<?Ik%rV&hQen!(TU]\Xk[&LO"TQZ0L(pA
+mm5<?aNnVPFP;X5EE@1l4YGu:'+G@6@^k38^]V-dE0X/hDIVmtEd;Z+GZKdb]acJ\$L$6,*5&c)W_p3p
+SE/l2CTE^?R$]4gm!l@+5(CKk:?li4FR:&"\pk&L`.CL,SGLj>JqC8t>XMYm..f^^$qUHk4BJ8)J?#Aa
+*h=d+:_IC\qK#WOYoJ^g'0$(VorRtV'J'G?K+=p"&,6kc\2)tokUU.#2Folh5j,,>d?>YG(XF%eTV0K!
+Mk1W4FQ?7hnDoZjTFia[]SIsLJdt9qYA+Kf".UCacYBK\S&s^BMNAeh!Y7C5cj5lH4E3Zb.U%h)>jRZu
+/-:nf5e5PtYtS[#Tb9T6?qD=O<q[)MYNtRY!TcNdNr<HV-hqL!61lj3nuQnNpR(dl:Z4D;<kn]Fk2;l6
+EKWcPXp@$JmX!4^6n=CO8^@Hi<,BZq#6],&"$`Ud]^.B>rr@of5Fi(1!"o9.#s9;U^0;#:U75q16]<#V
+9::=8JdHD72U\u]Y'*s.mc=d*9ZXa`JB,kqK90kD<(V4N>u'R"i-P+n@hh7"X(?AibA@s7^kXPQ3'D7H
+))>ne9AE#X^AChbWWO+=!ll2>)?@*-LT+AjCHLQs\bhR%_uB]WgHZ;XbM-.[9<0F,\Sj;,K8tCa!4`R3
+Ur!5GCo*IHr"ICMp7Mj2!a\`Lm%K&Ene;*K`\rh8@qFalE^]s2^((.g31pSTQ,G(N^1HBfJ4,:]>sUSi
+gisMOEZe)qS]e:j$S(iek(%D>LeMY!DWGikmoH=,>EZor.T79Pk;As<+c8G,iL;4((oZL\3,U$3ic%?f
+k^KmZ+=7.fbE/E<2Z_]XmmeQ(6!1)>QrQ6[-u_FQ.'"i+:Jabt#)8ocmPM#/qo.?>Wd(0DElPsdg-HbD
+`Ef,W%WTNonQNd#8YA6VrOK=olX(-H1Igul/9NJbjH35>ncnWsN\e]q<k)6aAd@LkLG`\j[3`DGro(XD
+Qm@sb0F5pH=/)Ss]T6,>bW`.0mr#&2lJ<u=]M!&!bBk%m21V-.<fDQ&MF1q;TH,Q%Q6!qZIJt$<V2Kf]
+DTYt=I)k7TKs"JkHh<kj_U7/]8LL\_PmE4]cG)[i.@+<q:>BjU.lrTV0KQh`k1I9@Xld\r;3ChmKdY$p
+W7Kqdb@sjd=[qfAC(olY)V2Q`Ze4u")--ps,<"qcE&!F8>\=4OG@RM`eW8BGQroO<X@W6A?C7bS7LG$`
+c:N$L87(a^OgmKcY,&#Wn`s*l.D=E`#VD)unP/tkM0-;0$7o"1Tq\+K)&ReNJkeT'`Hi6M-A^uc8O]Dp
+m;9##e<8D]>40L<;+qG\UT$3rpLN4V_%kQ->oM4]7n[Edp^b>Aha(YuG[jRT@2_c@Q?ac=!&s?O-`'M,
+U<ba!dW\C1*Z=M)R;jOeT61XC%C:ZKjF*<1B;onW4F.@H`TT9jATX?a7B0^%_l,0<[0E1MD!`=s+nI;t
+^MUn3n*a".,+51/cJ21$iOQXW;h27!mAC/M:Tu:34H[__Wc9#Y/M=uO4!-s3kIZ8OKn0S[pKjHDY80aQ
+ie2SPG5gT6#nb%Y+9K5JpSCYk9q/E-hiTa9KFY;j<0B]Ul!875aMSXt?>%c;ZMf<#NuMiQ_dRZa=:]8-
+ZH1)Pnu(Vcf>5G%IWr_/I-N*29:`s@F2`>F1eEfI48PREPQ<6:@EC?t^cfi;Rm,;m)]AKQ8/YIKL_Y8L
+GN2cIN;8si^UX+IZFLP(_`l(lT#HBD*$'YRFa?kl'EL%(Vijgqco&?d&GJ"#$t#FFSq;K>&qg7;cP.T(
+BYthNN-\L/!'uauTO[a:SqF.FJSlrsr28B>T!]p6@H@Ilno<B9!J'e9(jjU3pRc3$#b;1Ybr;j:fKJOC
+4JUqu#?fG?k]G5`rVSO5DuT>M6E0l1JkW/`$2Ji]_9=)1/d$[@#LMV4Lhi&+K,u^fJ]0T!X,L@J&,l.X
+j$84)O1cKkE+V3FE-O6rM1NGbGG/mS3fgCZ10p[)ci]Ua7L9&9SYuU6M--PDXcPghVuk]!.OY>,(&PVV
+BEI7=gV?IshWKS^+"3cdbGK!_@Jn2s/u3H*#&"(4BJRB!fNjl/%#*NRa19Fp7j5UN_d,O:=oSJ&kkQ@p
+iuHErPr5%=VsPt\[Q"F]Xa(Hn@@;#>jPeM]/6E;_hZf*/#)9pK3S_DX!DAOicGsa4;jbW=!j$SU!T<!q
+3=p8:`\@OLN0YLYF8W:=OV1F3G9BhnE6^OWW3nNJBN/HZmf8Wn9_Q^>d=b1r:Au3@.lB4sVTE3Sb^O&e
+jaArR=rJ;,EpP>BaVgoJ!WsTn2]1BcrA.QK/aB97XC!5uBsoh`]@O@M5Z`h*X"uhT_8+A2e5CJk5a6m>
+K9tM54'O)ZS:H%X9eKK#"6XUVHf<hRj8T)]q=<f*l1[55c^S?aF@)$NXop5-DSr&%RcqW*I+M#1]oUJk
+0ArCg5ATd*MEmFQ$#a[Y6="Z("0jG/l>,1OL2U+&%sE?@T@lLfT8Kgo^U49(:>HiT=$k!`I+sJu4fc`L
+dT<^HHnO3T[X(&I*FhE,<$:_glX)dJ5=pgfd*f1!0[Cu:^rT^#Zue?FC(pXJo6sNl`d#`WCs=sPdG1Ou
+E6sZ:@RUXaVp4#K)Vd>NeEo);R35QW%QPmVn`e;0<_h`IZa@$M<Ep(hHFn8?oGH)8C?Cs\"0s+)=X5.j
+aiGas2N2d\i<I]Q)/?<iSI/(`"hk,\W-k_-^VkB<U+qq\S&WE=V9n;2*sO"V.c&>SRr*3\ENCPNo-@]W
+N#_D6("[.+k,iQ?lfNF^NieVljL0qb[i.hhFb_tF=X9(6a)DbR2;a+s;:W\C.J7>:=R4ti:t8uV<6B'Q
+Gc!f25IBkAO?ijVHKMdgd8E[!p<o-p[eRVXHAp\pZadB+$ZoRtp&Te&/s6/$<BYMXaiVgh&R7#`Ara8O
+<864M25]USPA1Za/^r?Wh&CWLOlp]uqr9Fc1$%aJMufPclu5ubl/J4Eb^8+`(9aOSB6PJ4bcN:<eMaX&
+dsgui!:/7'M!B=$EKHWr[l_hql:88e=W%SU!A%cQI7PIkb.Qn\NB(pW1US&>\iansaMY4;#<WYl3Y`?t
+eE:J+Db(;P\8Z!N4S8JODBGRuLj_?,C];QS=g@H[V0:f^ia]%%0JOQT]re@b'7[Yt+"*tjYBki_<^/Fe
+.Oin^T1/aNor6l0$r>#241NDublB^U`Af5rhN/%g9K".L,!\`G\>eRT:MUlM;;e$EF]gh_RY$-AHP=Ho
+:Xf/:?m+5q"E7-n!GHEX*QBK.R+q36E]Kf,G!8.MIcP*lF0\'T8-9_W!ea,o+[0!)a/1?=KW#_$J59En
+Vf5%1@q61*a'mDY>jSbt=\7grH;I/J=HEo\*jbqr5Y)md:>ea7'"s!!Xs.&hrrD+9aaQ85qdW+9?gQ7&
+qtOqXhu2\$N-,%4^^<.Wc`MKP)X>Ii'S$u:41IGS=KZ08N:8m"PXX8-6MYX3:,"`W!*(SmUT4q2j'"oH
+BEQdbSWS!)5$L00UQGtHFWLF[nt61"!XcugWF0Ik2on!/0KRWi9TBs&#<f($R#*rI:=6FfI6[T$TZ\a5
+]u,"-!A]g/"U@/-mO/.RV?YE'Gitn'8r5B@Ue7"P%R"h,ciq7,16TWN%`#+7o\tBgVu&$O9baSh'iiqs
+%^#'9?TU)`7Q&J`VNm"f4Ei,@<@ZX$,k,f6e8qrOn^B?GBRJp)4,Cu!;j,2UJgfeiMT4p]?*`+oYkt5/
+!<+=*G%o$U0PUnT(q6;7UZN$rIh$16Y]*('i?BeGhGJ7HI4BO*fS-jc83F@&>7son[9k_9)SLsU#OcWf
+]d`NKWKQ&E#u.]BaXi<BkM)RWF0f=(KXWMW,8Eb`AB,S.3'!b%]`>RCLr=*/!%f.hpT!:>b?Dj&8#6Ll
+aVd0ig&1,o\_.+'ndW]lNd7LVVTd?tle661AT`-ElB)@uOUF&c;iXh!ld/Z/46UA(JG`p;]mo$SO.t*8
+%^sh,RWYbP0gcmN2n(kn:kp<?2=t%",oCB-k3R@_KU5lEe2DW$d>$q%]8:BC7dhY*XH)=[<$"q(]+b.H
+>4nN""`C2WQDj;-^V?8t#Dh7)E?q^(1>?sq.DXXuoC];Pbp'PZVhO9`G.c,gg>dR8*fd1$rC<]3o89gL
+9P(3Q6RoocUE_eTo5r(Hp8ke:d^M8S&S!TlbF,,6Q3Zi1=B0Okf]nboXus8',"ls"Zt^)qX4)YlrG.Z%
+Y'M.KD],q#_%FhO(j$#>YcI:6o6dXgLpa%@ZUVD9"pKZqQ=6@M"S,9$*RUCQg9K+?(QYQ\;+AfIDe!Q4
+aYhTF,7u-(/5"qJJ^-&XXXGNW)];\P,1KNC^O,L+_%t:q-'#&1[['NO+H0c&L$@qnlEs+%OU<rZ;jQg@
+QBC]!5aP7_,4J.W*0OTB1V+s&oDSGL35tt$[;(m^X+RBL9&7f/\(%5(Y5C_0E@$nKhQqPdgd5A8W0Ks`
+NeB$*!?HLKWn)AWW9#gTMnA1lpO3=VnLh@)WHG2p5n[Gu^Y/,lMp-Qco$f.L%rD!?G_oXufhX,]P&Ik%
+1%=Q#?=$rP.3J8('T&Js1],3uNOUSr^:;#RU7G@3WZEqu4$HRJ7+ZRB#[ch>[mXNDVR1P$g<PNE4E.G]
+.3ifSnb9)a.PaN?<M;I#T3h:G`"1mt9:rT/'>l]WXf![=dEF3)MHP+hh6__7N8P1AiEgYQ8Ds3jK[]N_
+2lgWd\m=>,2.D9*8ONQ`"V;?SA=c>q2QCa\^G!Uu8"l8#cRlbGh\b'lcQ+O'l]UCS3Vd0SCi-I(Q[$EP
+36$99CV(+g3:W0nN1XY\!$h-niLYo+!!r>:^BePZ.N=)H'AXDhkK>-2Igr]UaB,oCr0oC@m418hal"5q
+FZ$GD`JbSrkZdgP]`rlNGq?dr!P(MRo_+q<fXcn=!(FA'c9e/DM?BE5`5Q5I*JWIgJELIM!h054!eX"J
+@=DOTXTem:T0Y^U-d2l\R@k+$4F6N`UOj`s'i$R5K/#suWkb-f-is-'4Dm<=Vf2ZrVfrOS'S'#RPipED
+=:"U2HB90X#!HW#5id?.X9@R8&#Df(#m?l(V"FcCca@9^@!QD)n[hrOrC35qrr@NXAXbp@WHQX1rY*.t
+AKu-of:&OZ+e,sGg].H)SDB`dKZ4nOCkWsT'r5DX!*t6,eHflM!1hBR!&,B4Nh`F$fF&$A)1_OeF,m0P
+["PuO`W^S^GYQt1Cuj`Xliid9N\RfjpP4F_j#sB^<H&pC:)IQS%b[rZR#-t);Pb'?0KAN![fJtf6-"<(
+A@UF[HfSRXTF:=c+sX&Da>,10Nqi@A"@"+!EZH6r0A[TGo`,"ZQ"D*g&[NL-)A!ZUa$"FrZuA8o?_7/q
+'hjaEcX9hNAlh&:A5AXJ<SKNRhu3`H5pa-iM'Bfl^`=1c8GZg1!HG8FZ^`tZ'G\p7NMVW[%+-V"3A-hN
+I;,h$SWU(:Wl=>4!]/7\pIY#A>?I%;7]U3JLX/u^[KFm!WT6KhYZnVKAm9qOfi\S^i*in1EXrmO>FIJ5
+Ck'$@j?PK`,:%K3j@7A)<'.+[Z7apq.-4*#2)ZR'O<0*_"!:]=Cq$Y98jZ"5V*j0"?F?O_1[a_iYdV*U
+\<UI-ZUS`PR,CF6,a7R">(nnUUDJ"0]gLchU[_,a][S.L?6-89HS$QKgnn.HWKE#_&_pb$ortfKRZlqr
+P=n;`Sh.XhnA_f:=_K4hl^fGX$U5.sXp`2OM]>e$O9PssO@O>,hP@;_b\VMVD%f6",eIWE;a\!G9X'-m
+N-=omm4L@=S.]V7Dr(%34)0.?#,lZ_'jg0l*b0\5?VF!-#b,2^-o%@<Rea&(WEf;F*J9&70's^==_!m<
+E*";;I<k9f%jF5+;q1+;aXtq9]0:)FN]S0!CR(HpP%s/OU<0haZ*?TcgIJ_kV/b)Aess:5hV/-Q/X@KD
+e9QHup\6!D14:YX'Nrq!QV8G>BlMsVbju@287',-F'-R6l=Ej0=$+%QCt9iPrS*#g"-.Bgbp`"#a-u1P
+N@RhPrEICXQIeZm9K+lm,e'.!Z,t)m#IScn'?RY6VB.O;B:O45^cF'LWlJs5]+hW+$TH;MS=8cAMfRVu
+?`?AgYC-m^:@Po>dBZuu+r=YSqo8Hb:02UZ%M,M?]tM^Yi?FPHMfmRCSW0K(JohiAA6.ai!X2@U3Ya_%
+PM!9cGHBOI\odgmn[,)A,@JRe\^*m65"^dST)>6NT#OE'F8NpWAh6`!cWY>;62N)s?MC^YX_Utc9bkV?
+Q]l\fYfl.tWSIIS[\rPb-9%6moK@EWpV_RVS8%I\DPGL"CJ0u&=jSBUZQs9"\,]r*HWQ4.3R)7t60`j;
+,7@A\-)'V4r[EoH[SXk]D]Dr2o8f=%DSffKY;6mPUAYTm!CBc04\?ToeP!M:BC?+^*-^ZWH$'#Fkiehm
+jAj[qk1@!m2bJVf]"Ye/:\)j+Y$GO(5)$PN9+;&HGko$kB22a$J!'TCQKr<,]tW8-I&NQ*_M;5[O>EIa
+?JK"aIS5NWl>n/cNCY2T#H_+"^p0V^e\UTc0I1.n,62`,%]4mbAuY@;Ad<Nejsk!0ltG=6,Q!<sAkk?/
+:]`@$_]GP(\_/>'4:GcmTTWD32YA%P@$^HEJ0n1[`WeIB!-%3Xf<kd'Z<TET3:B-Xc<)RmFJ&dd.Y?:X
+B[/f+!>b\81[i?+IC`E\#sf[GlUp(]+=.VOUu^S<BL"^j"D9),R^!&GEe&pq8EpEo>2"MoXm+RtQ+tOU
+R!`X5nNG9J[.!slCE2/ZrC>#jVsp8m1R<4*")fD!k:##>X>qPUH\;+BCRK^K(E3A9Id-V$X0<#f:uXe6
+`@HK^?2jnKme>%2Yn=PN+:QY5JKb`&@ukra.7FZ7JjCW&%RV;JTugC;Lr!]dD`R:*9P7pF&q?rajEr_n
+!I]6fd2:)jjbU]Y;]X2t5$J&6-JkYF_8dCgUr58-*Q404%.W^g%$b!lQgF+O,]DSmGK)@&&nPPuYka>X
+48igo=Mc/IYs+)u:]uQIWombAccLML5Dg'aj\c5U'T`A1,E>cZ>kZDB63qdH`qPOW:L614!cjq^E(Z_6
+)l`NF![L*>P)_bl27]K6-WYB0f-;<Grr<DYbds,S.PhAA!1\5lJ4.u;g>1Gp=*Efoc%2#!cPYt6Y9GF;
+U=_7&&URP+jmq.5%rC;F#50%jI]Eio[?+X1(]h/Pl\n_g)(j"sEH;n(Sdht0gr';G=\!RM=hD2OS8!>I
+0s2?b+T<AR4Si*D*OJ55,^bgQ8U/,H;*%dqIgiY1Z/VPPSUTi15l2Up)8tBM?=#bR[%U-\X7n3h6\FmB
+LmF@r=k^d!$Q-OAQiVgd0t;5York'^P[\o\VYQLc\PpPi\m=HRi\>62/X-c\L,DgWRDot@O?b)g=)Ag"
+A?W9/^:j%sZjdCFdd5CR[9[P(l#$dZ<>SJ4JjUk!*29lC#D;>;]m-@$lu^O./5o'&BFEns7G-sYB]Neg
+S216"YF3?e,OD^\E^hhU8%>$CH)@D$S&WldAGLMk)$`%]]f/.,P4\R4'ohdl['l,,[n$c,[P:W-.5=_k
+QD[ZV84'>U"G/Q>jf_6#^6FnD>)!=-N"X-89XnQ1EKWD*c$AoOSVlTB^7*/Z,UPaJ!:[mI!oMi^4FJ\!
+O?'XZH]m8BaC3iE.GGm4F&6+LRO.iTg/*UP8gT=JahU^m&!Z#$ER:$U@foTW;c(CA_Rc!AJbP3-4ERD,
+XYI\fNlN>c59WF5#Fm&@ggg$_VcrA>=*/U8lIqN*I`80?IC:A7(M3d4a15Sn\Pu6I36El";k__6^CAuR
+>!9!X(K!U4'*un3E&fO,cf'c2_igp=K@PIX/nSfLD5<.uO"VS&5HjB=gJ3rPDG9/1/Rk;3Xi)K'7Sp*[
+%Rr-m9ij?m>ES/[VpY-0=Ou1d+?N2GkXic)>+&C<R!T+6h!DE(.mpV.>A2&*]*Sg>i]cTL%Lm\@VV[(j
+P#=d^WSboIB1'jaKFG'2%_o,,<7QsTY*nStZaY\0LjgINC2Fs>=nl=K9A>;+0X<d%[\l<d7LhZ9N_]?o
+e\T[0;rp!2'Ve)_DLRDKKZY-NKpkI5]<^i%X4'9sjqKg$%OmS7-(r'Z=q*Jie:Uha(:AjGKW?2$.7mh#
+Sp"65L*RcFcSW`k*-4@N7SZ`o!"Nsff=!(.elP/Ha5jO$Xn*UQHdDtWj6.ll\_H]cURD1JAS+l&3d./#
+LEqH:5SA/:j$4&'=Fshg3QE!9<:0kQ!"MO6!FTjPm!,3(i,CA3eq*qE!e;95WiX6#:f$1Eli[19oKROa
+Kk(FRHu&`^OQMPWr[#6RrH'oWDuT>M7TD[+n>Tl5YuaiJcrZe_/\'PcG9P1ul%.G#+Cg"9F.qubRa?a3
+'s^(S)^cL\2CsiEo6.+e!TVZ!WY"<PccfZ)3SHN_!-aVf@GW[_,[c?EVWDb<F+^i2Z1<rS=n7*2-,PJm
+DVptU`i'+`7LhuU^7S"i2?IikOF2uoEY$XM[-"k/?hUumJ>^S!Q=Ca?7P[J_Pa%Pi+H[$cFSWM!r@:1"
+p>s4uGH]jdEbGK9j([.@ptH7LQkTQZoBedV>fS)E>"ZDGcoHUN#jjke8K2FT#9@I\9b_R^/6S,*S?>)n
+K2+fb"CZqK,OVi&RKpob$OdL*K@_phlqLNXbXki9;A[Jg"Q6NJ5..$o>U]hA(guCh%VRFgO-2tomQF&_
+%[7kA&l']<'_3I.U7^H33`&Tr/;rFg,K6!Jqo3'7Nr:]$Pm]@+%hWQf*f$I]H[?9q&Iu8COKe>QOb(GY
+@-u`o)&5mZC_)*h9a:;cHc4bjnJ/#E+n8"ED;OBG$V8UbURjI2?H*J,C@^/s[+\4qVki'qSeDfYAIn^F
+p\+?ao`UP@4j-2'iWas\YP9nZ[BaD!qT2q+aH+%]NCtE7Is;<$j\Ej.%U,h*5:lJ#/%G#EN`+%M0oGLg
+Sa>mTiLKb9]N56jP!/+&P)N8jkg2p<pUF47&!>HoaQo;clFT-M>C`D^8KQudY\OAC*c=F`G@U$!=.b;4
+DWfVZijh'q);Z[DQH!V2$Y1;U:Z$B`cUucHk$IcE"u6Z$pN@LK?UV@QI)b4O.`[TRF_IYA1rE9neFuZa
+r-b.c(Zm25$hUV4]d@s"c*>VIj@^9M#o'Jq\^'>$SU8sDV!_S6/DX!Q6R43S3%dGLoG+KdNeE]sq/%bJ
+L\aB=4Ha=`[.P7\O'5Vp1gH"-PKROUHc$09$@2%+9A-+2-Xm[1VWmi@heUa#M&&>g2O;YKa<rjY3&YD1
+1RXNf/Q9Q.)'90._+?ne,9V!FD&BY-:r:bDU#o8,BJW6CUjEu>?")Na&,*;)("pfKl*[YH[3(+i-&rl1
+B+bLf?n8K2cW1qH'pP`*lt+F*jbU9'?nrIc4-tm=^i3?pjF^1VCkie^f^SE#I.8Ba6&+DZXBO!9KG9Qr
+>AHPu3M?BP?6gJBB5S(K`bUjUam*orUq)W2>tdhA>EpqERu[9rI(8Bef6%u\UDif*1uDg8CZ$:bmQ;$<
+HTRd)d+[g"+=@*UbRtiF(K.]MZ3!VT'"bXMY2!XmHMCYuN-.?8c>e>9XRFO0E%n,8(>YSTZ/`+,NbC32
+@uQ'BE$u@SFA>qsj/iO3@]#fU2(4]Q\'*Q?0JBS?gEQ9KIZsj2kLtG-`sN>u5RulA`s%8!rFc8M^;f$b
+8/H3fd/@VZ7:K40e=$CK4Rk_4Je``3Ja&%#^h4l4HVam2`X_DG!$qUZ!"M#^#DXRUa''#f<e:mRTTR`E
+.01hYOCSlkJgt\e#!\1:O%R^t!9=BLHu(*ObqO^Y`MX0Gl^:OPb;]G$H&n^?4qkm\.aaDfg>m3CA*[H@
+QTHDK\H9'e=1I_lVB!g:Z&e=(e.50!_HW*75n+kh%Xr>23K6=ZE;eOiU>R.j8/T[\=GL^O&lb0*aAPb6
+'EI3[A9;40PotYC70$JMAlP%RM*0"JN-/M,[/_[G=CgK&S;I<;9.q6@*eoBY%:Qc!dg&!9Y@3TqRsKTd
+pkQ7f[h15l@@f=^gaQREcF+TF/D61MW4Zcq:]eW;N/%.!40go2mm%4@Nr8OB$1:\WF/S,&;5'(j_moP>
+!laoVG+`Vjnr9'R4A]iY@+i:B4`N_AnI<ELg4M#$>%@Y*l[bR)>EUh0<C3u*$q<a)I;<EseW/`rD[\l^
+]`i#F`j[KSR(dd(UJ]/i&-F"Hd+OdFrZT]HUr:l:=gr>H4@_/;F0luRr2HX'bgaoro>UQsoU+*ENLWLi
+F!i^qIu#(qOk6FO7ZOFF2.OsTnKL7Fb?ZrkEtZ*Pj;'lg3un)u@]#>Dp<;Nu/>\HNm3"=t5Lss)rKEhn
+]m:C$3Tj8_F/,tGQ&qe]W0'RqG5>6ukI&U4g=="DBQ@Zq%Tn=q*ok`#ZYoU[1o8;>ccfaWILEdWT>V\s
+n2ra$[N=I"\A6bQjP3!&5*a)iEi3F2nFCg^?_]VS)cPg#Ambp4k5PGJ^R]W"VU*WYoJpU*cH!$M(lmGs
+Z7?d5@]-q#Xsn.cmG[*JNi)Ngc!ngtZJC,I59Y4ZIR93]]uO$>P'9$ooa[I9E'sG2"(t@ZXtk#fKiX[r
+P$QC6d'[8c_P+c(a1)fWK4Bf1lU@Dr&ung83qg1>`O(2TNZCapp$H"e0#p8W%GLcQ+i:LGD%G5YkW2a,
+X:6+Qk)n&1*%MO[>G5<m3;'39dK<iQAsgPODSSg/R%jQgSq-S$mn,[%/LHrHH*i=<\L$*<Ltcelj)/q`
+1'u"]?#"+)6`K'Rd+Eug<jB[,5\!-YA:pi@W5p0\g\MNLfp2Mu-qlq7P%9Y1On17,nbCT,bgnWb<fr:[
+GC"4DLfr[k2IohPJ]Zj$M+27@nj)&`jsaad>Bp/#,+%n#0ZrFj2'bdD`aO\'(o'n03.9'$*9W@31Gq$(
+7^C%4>'q1i?ljsmW*IYA*;(55drWmM%sV4OZc&0`Ph,A!T_N+rEMu%9-5iY>K<.4*<O%8\S9,sgCaL%5
+:Q+4+i](+Z&CsQ4rb(G+Vi>=4NSV2%1qO4Ae8>;!6+>&\kFJ4u(usMBn+LSqhPF;LqQm$&f.;%qGnPqA
+SB/#/,JH38l*O]1.3hig`X%F<2r0RXK2>,3q8(DA5h>#id=V79E!W,ilr:P[AuIXrCeP@8`e+?F)!N5q
+kU6JLOp(h\7R.uJ!&%WQd.'@6'&,r"*0-r!!)!pHJa#E5N^sj!cG=sB.XDF.#g_rorR6o(:^)ULLaS7[
+!#V`t&7UYr'FmPI)'D0M4Rl;OahT6q0FFI6SGF5bMh*)>)co-/=0N?H4\\A[bRZ&qfDbgobp<%33"u'X
+9k0]C]J&cZe+c]QEmK]Tq0C#af"B:?7j9ESpP1hUlfg`tEZk0BkH[&D4&8&rC;Z;FOt`[gUk&IFEDqmE
+B/uhd(@:.1[K1[mWrW&/'X-@@N\f#0W'f"h@r9N>$"Z1f;[<]iSnJ/Wg;Z#rZ/K4gML-#,oUlF:mb(Yf
+R>;:rpWorA>?N\j&2o&[lTbFQ'eT/"J@Opi!'>'k!RqT/\ZQ$$a9X/*#@-F+q.qcRKj-P.7r3V$8P+`D
+=Ikt9gd"&gCh/<Rd(d0a'ccR,O9d!$4_R`$=h7UOm&/J<+u!87r+eTSa3/%)jbXq-ks,b2jq&J^:H5.O
+4"!+5'cH8T:V7\6,!0e9]rK1C^$&>&OuPTQ7\#:6H$<n8&=.[QOq\k+>DCil4FJ_UH%U]//$Bd<D44J"
+\o\`!`.#Xb%R1lcQ62T;44r]!DtTYirrCJ)'BPeg#]QR'eGcl*YhG#hZT:0MXkAU[cMTMSPL%gh<,?1.
+Tf\'u!"K$:]8Z@SX]/TM\XAGWUh2#bIB6(n#1K+*lWa6C5%>9s(lgA-"3M^2*O3tKdMcddf[mAt3tn8r
+!tj%8>+)M<W?I70?t0<C5;CJ(I;4%%2`sJ$L@?)NGJi60lrNLtWq^iXpIeG;,`<QWBTReqZ%6/&Q/.L>
+-cPZ$61&cA.Al@o4;$u7AW['a3u3K]70D([c$]J6n$o!o@?bM'?:SS""c9'V71=_>l29k8Sb-<kGL0k%
+ZBR&MAGk,rj6Ki,A8("skPG.AEEih15pA*qKc_otH50TEib?*MMfl\>D`e6p8_o$H7;Fd*\]GbUP'r@j
+f3=4T,;TL418OV]eWZf1G:[i=^MBjNYrXlX(&=.alpj(=Iq<\u2,dR;bnjB:MZ)!J&5[k$Ne%!FkG_1o
+dLoGIrrAHDG38)qbumDggc3-q#ISVnaJ>uaP=!"4Y+<h[Km+JI$c(qWH-\=;,Xm(!4!],8esiDkfR94F
+FCt)GX!TU"D[!Z744H_PkjtQQWbY"DJ(YUkD3Cs2XKc[6j`MjT4n(.T>3UAS$EU-_Icm;.^^=ASZ)CaZ
+,F*ODcY^?ck>M\pU-0NU31V3I_I>.:^fa/nc[T]dneA)NR@UBc>/gC/3(VQd@=g[]n?$+7e^$"I<>-`N
+[FIB0HFb_q$I=->l])9N7QBuYSqB$\l!\OkD)QY7So%74#3,<\pHO<f4'rH\G'Y0j=G;]\mohhc8_eag
+is0;_?U[SO@2=;^N5\DsBhhjek`*j2=T/+N*Hq\dJ5gQa#t`8t*A453&X$.S6%Z^h14*Z&*AmC&IGKp=
+9_".<CpC%t-.:jd)7+nd_&3)cP,9=f@oZC]oR/C3qISpth#37QpYJ4S&(;BpFb?RYTsBilf\"LQZ?_SX
+XTmR;0RdX+#,Wj(hDK=S.M`Z^G:0>IC6*>iF$Yq.6LH(+)"0^&NL:VHkQ5K"$GUk8U4Yr===oV(#<Ygp
+,5f,&!THF+^n;!Dmet5O!!D=l_l9:6LH-A'!aO4:!6lM!)5?%l;34B:8-YZ1TEQ25W9uB*$jcYN>&@ps
+D5SD(rHY=Db5O;;4sJH#?+XUqGgB=cahRV%=D$:;:ZPM=NtZ5-6A@tbr!uP<c/_26IU,IC+3pK.!Pr<i
+B5SO>Rs%%R&i6/L4YtjW:7o0$FrZ^ZNp`['n>ufsIU4gqjA5r//cfP/hKlYL`df%a@E?G!:jPq>1EFW]
+)iP>W:V6Db4AZ0<kBB18*"bFO(P^$l*J*E&!QEOm3U.%]E$A:58'G+_JpUOn-h>(MUnI,\8mJ;"n\?@l
+*gFI)38c7>%q/DXJ<T:pPlYoGJ8&O85\t&2#TJUZIsCN45Y<pI!%0.jC!)MEV$a7m9Wf??<Te&A,`5jY
+cjC\oZ);:J7<*ZpLrM[q'd9!Ul*PI;pSq2[/^?E?`]'6Im*k?Nc#-9=q11,Mh+/Z$diu2Z%8j0pZ&(;3
+E@Y:"]A:OlAb/Y^,IdgjfVfXuXKncu@k>hgKaoe#R)O/6%OQ'g_dc]iDW-qEO':>bR%&R.0NJ<s>-1J'
+_X32'1AQ:&0u<2Cc!AG'G,UTud4sjd#lkITP@Sa@R4-HT!fZO%#(PA)Wi>9d*6dX=aRW0;_#tfC[A,#5
+,8'<*DWC/VLY11*bb[8FNU>G8Bd!Ho0ZFoH9"$ogI19[G?W1,]P$Ir]cgQZr$Q]uO>d;6iPGW)DD#.Jq
+q.B#X0F&Hjq6-F0drCRam+aOZNG8ePl>nIm]`O/4J%iQ/or\d7l/<R%,]S*dD&AL!&u`lI";?_4LU!n>
+OIFG/qEL.iUe2?[j&4P(-RPBEV!O+&Z0"j/o>r>Ng"nSbEu>)qEYN$RY-Z065#tjYf%ON[WiRsGY\_C!
+^"9)IjtE#'#kH^17eg$CLUVTVC/-2+\'uJEARO1k)r!C?cYQX'JripL8hD'\S`1T&dO=1>3>B&p7f,gL
+eUnOS@-Hfu_\BYD[go4"P.RA#7kYr/N:U0K3HdG2Ll@JE_65/u_##[DD]Fk$0dgs$*/on+FEB<8;N'2k
+-Lm)1fiue4P%bOU&>91FZ,[^SX?E)t,6\jRp,K0Hp)$&`.t\JjN8,g'1BZ,8j:(u8N>X'cqe3YO8Mq?e
+Xj$6TjW:B=?jRoQ/&%Pl:SGg9&Or45A0)WX[u1/3h;(Su=pVLi1Q0HN66T;k:LBK?fH+hWTnKl;`o_R%
+@<Dr6lX'aA4L"<,J;sr.;:KKMA_s:o_kK'uWd"Pal4&*).7O[.r;/=k:DE0PSk!gsXkQCVO3QCS%Yl+5
+Z\"XX4Qc9/Z$jW@nD&Es6hRU(;NiQROhNcoW^e9T[<B!UKdF*]GpQ+=iM.cP%r]Ib;W\$o@PKSLX2>e@
+X:@GsP>`=!MpUh'/`TKp!oVbs;Eb#C0`]JGiQh[gZM!Hbf>FMd/e[W`lrm]^[I!XS[ZcR8jOd;ekOG`2
+BuQPj)sC;-F3,->*"W/^4;n4*T.t0^!!pZ="WVSL>jQq2m6N"UP,.gSM?$Z@o5K%cJ1S\6:XXb0jRk>0
+dDn'DnDoZjk("bomFSaGJ;3&N#F#]W83k;]ai-dh0mQP:b:8iA70!c7!1]&RC:Q_V%#jp#d9md7,EN+"
+1u?#@jrZn<F^t`Cr+OMRU#I(J=KaiDL7Y%],94lSrr=#rc^MW*'i/>UY3e)>#MU_VW\icR_9'ZAr5_<,
+]8>?3T\E".#ooHJF24dWb\B^jjrOO_+#iI62/inBpHT6VgYCA3)@=L.TcSjd!7sIK/'+35MRsg\.QQ\D
+RK*<jJ9hmR!'/?NPpB`J"aIlWks,XpaP6I(LH`'G1<GT??6-NpI8B#k"/$"A-\,l7JL#7[8+Pgg@kH&W
+.bJ9caP"T3_ue-/Aq20P49:Uk!C-pp^/^!q!RB9^`;j%'Jj!cJAn0reO53G9!.(rm\?X'$Sis#;7<<`a
+@gcOHc=#;$ds3#i;4J0!C9HB[,L>fU@6N\+haWI(G.(qp!:DuB;L$OH>K2=p7ZIblMbZa->FCn^DPe\m
+`92-dXuHOSY-f!c-aBHZY_#=qZ&i$(g+hCQd^N%-AV+($<Db+%NQO3uX^c^AbY4-[-k26(S.BAu(GT/F
+)&\B.#Aar-q:'F.%l&k8%T'VR8DVnQ;9FF&#+HQJo0-HU&4,sbeHtS2X/NG7,Rr1C[llJB:h4U/_nL0>
+N-r7(*i#PkBqUlrDnU.E*-SGT;eJO0N@s&.j/#,#2,;HZaFpK8;4R>WaX>G7%Ee&ob'kZ3"tpYC>XQs%
+4AD]uWK"23c^%/K%!XYMM8Mf&DloH"q&X6$/Qg`XD-m1DHsLl/EMm):ATJDcm7XS(PMC8qpTKs`(Ce^D
+YdfM?Js%uZ<a-$`Y\(<e<,^jd4aLUq`QIE/Ek/XnJ3]6lWiW^":o*U9IhlcD)`5d/%PLr3,IsAp`["UC
+kDg)%("fOuS@('Kae!WsQPL60":H2Ci#TG@.JG1$+QF_mFX^&h7_XhD\X?6ml1jdHi/IKneJ@)mD<-ln
+'#tqW:7Uk"F&C*,Y*ln;@A@*`[#oWO`!2Mc+hsuS.=4Y[7b$Y<lZR$HL@!B1>3ct;"rInh).3;bUYAGI
+2KT\C@m@:Qm?NtX;X$\6DaX;?Zmf``BM2mmV(7p\6AhlTXq;B0N8H>lf*f&F\l!:`G\XL1P\%VZ_'\>F
+9>[\p<)PD)r$k8uX]6Wde\k(DZeY3AL&M7.a81_NlW9:0'#9=d[L'49OcC/3gP42(nQr@3%(GSNIX.>U
+5$7L5qr9uIYgY2!e$R:hXDAE3X()Fi*pC]!h00OuP?epO^!D_(=]LY[RMR,EA[a&gClmS`EdDrK<>f(E
+bEBri\qs;o`1Jab.?9f:1L1AW@S9a]Rrp\#loo7ZqH#MKb.raFQ'`1TkI"7@V'\Ik(T0I:Z8<_07c%T&
+='ekt_&Xq4HYPnk/rU&G`9noN!"ni_lt^os$Sn6Af<Nh=hB]k_>";^sm*hoh#m@1O[fg\WI;3THSQ>JJ
+Hc*QJe$[.F$[EP.TkCcpo#)$=m9Gg,8F1t,7r#3.<+2'#mQ'O#M!_097$1`R360:[VFZUi(+MSg!)&D6
+4U5-jOuHi95W8A]!(]@e"S%,uJ1"Dp2M9V=Y#,D>l=f8[i+.C/-k_15K?k66#NIpgcP`S_'?49,Yhc\I
+AsXnRD[;DF!QcFMdYe,Tg]9Knp<?DIDe2r&#%*C=kQ4$hP[\XJ,iY)l"2!UJ+/WfmrrA/,.JV:<PN%KG
+l<?r@X*4]i0`M.,@^++BjuRi1<gp,[KEVsQ#UGL'3;dR8p.9!C/"c116o3\(@I_9gN#uEDWC_Z2g,"F7
+UZqhiEsqQ@m!9WnX_7od^Y1T69>*5X^jiMGNJI>%eq=,L]S:B%0T'7%jI?:".`=qG-rL-7aPDoEIU\P=
+Or:*0&;uhNrrBQP?/4B*35m:=R/p-+-+IC3Mh$b=$J@Ga=GIB]S9*83'c5)DoneA_giLNN=obqP0LqKU
+"CipZ+0>oi&<J+eYt+lG_]+qBNuoS,A-r=D\R80UOjK-<!8J[/bZq=o[/`a.+=Y+hXT1Cp;eoe-G,A@D
+mm:(Y?u#Q;T;BIo'<TO.W?+Un"HG9s<m[Z1N>rPH3PO(A'5B-n$:@)dj=WqrK:;7.Q-?FA<Z#;"8eKeX
+$t*,m`<We]l\4[2oJL@jj>f:(OMLCk#l0a4NoQY\auYr3$O6&J)dY^IXq.FVhW-H<Q_2"?#Q>a>@m?5&
+3SAC^;Li!g.QT&@$[ZtYBF]2i0*Dh?J7YNS"CmUjNqo>.f`K#o/^E^a7r3[/!R/KsMpAbYo&:uqqW!HH
+PF!C$L1,g&L"jUr]k[@>T#K>LNN>APj93M.Ss<!gDKRi?Wr1(cm90$:F&5S_$D"7^koE'h$XCugN?05b
+PTOAF74#Kf*&6WT4Xaq7rR[b6\&LW:a)>u\=/J6G/!UpT%,jg!:'^)k%R1?GW]s;<Cu[rVG3jI%Q/ln?
+U1E&BDCQ6Q!h[,EF3*`T,a+&7r=0-.>ob^;2X9h=4FL%G\GLBLPhj6C`dS;]o#j.f`.V[)iEPn#/p!Z!
+e)S&AMduR8,a08RI^uRh2\on$R[Rk&J"n9+[F;<!FKVH?>k7/Vk]9fDD"'5"Fp%]7`jKq(NXD.k?*7;7
+]UBU5K!Ij3,j-.g`F[=UDGb%>%^=k,#Kr3hX5DRZmWGQ+O-<_f)4PDk(SIVkRA@)Z-Hph-@cCkE_?@'j
+3<j_G`:N:qW:IRo4Nb1Uc.Y<N>K$:A@Cjscq/,/0L.:,e!sbtZWfqId[rWGX_@BR)8Y9@76H24u?[,41
+[,3m,gX!QRE]i#o8<XknWB=81iShrbI`LRfqQ?Z?2n)0==:<!nCup0Wg$Of8Snjg:bt?:DM\@SP2r6$'
+CH0%6Ja?E&,R,\Xa<2PsdnX/ha=Teo*4lMh;FV0j<`M=+&\6urV?Cs04L2jdY])(;;-`IbTFlq:T1V*T
+F'N,S*D#?%3nBDe7c:@-$nEbJ@^4aDkO>B/.2h$.1:p>'%*NVnL>Lkn&p3&^4+/WMdT.ujSW?Y;:W/U2
+QJ4m\,?XC["YHm]6FUOJ/:*cGX+XO9f0a:o:OUQ'akYf^PpfW*+SDm!1Sf>U2LS:"=T*ZH!!&<j]Fm^:
+V#XUW?^:W\i*r_%,-T5'St_Lc[8nEq3V;Hq&k;!QS:223).7:a*;$9CY#W3C!79d.0KBuC"s/M\#N"11
+i+-n-EKcJ])\WFk4B8']]]Zc[cfn^7!9Q)]4uFbg!/-NScRo*b&EhncR`dY<Z<gT<]-G97i8Ag_1Rd6&
+G&VC;r=)gX!RS39(2l)+lQ6s-h(!ri*iD%!Z:3qG5CrAj*o/4FZ_iqbN)+6M]5bPLQ`mQ56[&Vj9ci<L
++7+oVlJiBWOEUfW7g#l+m*H;J:Od-NrP%%Q+_,*?l<-Zol%</09`TQ>a)SYCaAi7$+"pE"R]?Hsq3sZ)
+Q]1mp:>Y-36eFk0"!t^<It\.4a0m\<@6ZHcj4cG=Lh36T.)bPLn[%?2I?,8Db(*KP6GPM8V"9X>TI(ff
+AcCm=:]t*7,.>i)_8^-h@rgdWi#H\>-3Kiai)H"3(l[l4H\LUbS/f!@E'!`M%J@-+SYjEM[G?e4_9ZW>
+]'3Y_oe^Y[>fs;"U.s5pWKuY#=LlcQ=(8),PH)leMA,l_NYHRM\tk;?SV0_qD#c:Q!njX91Zi5JNJohC
+ceSup6B7d\FtG#>+ZDmd@KnSBr2X.&/p:H[:&?F/!VR9;i3N"?EIh(/bh.b(bUc9n=\)=bEBtpoe4egU
+Pqa<$\(#FS5SJr@7hJ/t.hUntn+E=[h?e?FJV=uWlTc0H=(n-k0KW#?iBS5S"(Z:G>IJrp\_)c+@suV:
++"nda;s(VQW>dR8kAS+D6])MG01R'S`a%\]?D!3CTdq=d"c;)"mQ,!g"f],(p8;>3EG]]2F(lW&dtSO8
+;Fq9NGgE3SWM^Mllm=3(.]LI1dlnQ;LP4aXDRUpPfVaR3kH^XYQ">tN86heF*Gaa+phj4V[q(ns/'q!T
+H`<QGW8%fJ$3G8eJ8p_#]l8!5jE41fKQ,RNa1HQKV0"_\,I]3o!OJ@Rku^PUMpTG1>,Im.OSO6ni9"#b
+j4oUF9IdN^(Ql_m7DCF,0#<l"j+6Q4FGQC"V+%bO?s#mo%S.Ui$IKjAJrrrZ*[sWk;\<>U`_X!GP;8FF
+/K$K*?<0CRR#dRt]rP9'O#jBQ?&iN$;NE%pjLtq"#N[>[f4N&CTdHjJZ\ai#d=k.o@0:r5p<U-?W];Du
+;d:([Q<0DINh=13;sQV#Z-r$K_^ogjYB!+o[VL$W(X6C/bXWE*Q!q)4fkbn<8WMn-1$bSuo'iKHL#qC,
+ZnSgVB`c+^0&Q?-./i0b^3X9(m+&-05<c+qF4/!a,ZfjN_^=%qFsi;#RI"HhN1HjY[X2Vk'A//jA#$6a
+g^B.pmoiYZ=r=Q)]*PU9J=NFjN:k<Z.p5/$85j*q,:fDBS9gJCiDPX>5:A!oUTsrWN3o+I\oWS)]RWRM
+B-A?[7VG_E/")?&3GtUb'sBDLQGXg-#PVl)qG`_U@u]&WVUI+prSJ^MXCb$o<=/8;I0M0jk0pjN3iR9d
+YOHaolo[e8Bo<Z#=0l*^Qu59E)'ff#DB]Q/,J'F9/^E"iX+C1scYDJu-V#]o31pFV4-tufVcj)/)mPB_
+Iu*frE"(d!:2'_[DHj7mg^+K6MP_LpZsZiA>a)rcp8?+:J<M3'@m&/_"4b4s1\@F"5,^f!aSO>"^e2F6
+@C-Gqc!2"6^imPcrA".M2u/F'^Q"8k`>0&9#Wcclh`c25A":/4?f>DsFEk\.5;@uakeb!DH@]$9dW6?:
+V`FbW)V>&fbYKI%,8:-SS:WIC,JHCZJ/Y1&ZSkmU]oU`p!i@d:7dR8/BKT9s$SgqUBN*5W\V1;9-QB>r
+:b#9OP1r[[gW_YV!+V,]\G8BS9$fs4Vqs[D6#^It#@q6@mr-4-'n_n0Q/IrWqsO?Sr`#,:=c(]p6Hj&'
+FcAJ2Gc_[IR4jo?PK\M-.3&i*CkX3!EP:r0<C&([;qdp:Q6^9K\L@CcBJF^\djI?/!FG?^$Rgt^9!P\$
+AW=An4Q@/RK5X"F%=*#nCGKH3g#-10Y!?F_P&&IA91&U,3lb%n0:#,Sjl_ukSFt/-Xf9chA@e*sO@9R[
+EP&\plpj,\OdC);#D+[f^-kIGTae2q\K<9f7j97J$#6]3pBGgm!'cOmN`%m)Z[JQ>"CW-"ELNUjnpi-O
+".Y<XS59B"C$b#FJDQ?W.s$cK0gHZ(B'fn(`.2qm-j!t7=I%&0=9Go@=oa@@V,$)jEQ%o52eHO%hh<lk
+?.^*g!ujNN*n="6$F)q3Eb3u.AF_t%TMK'+@i5#j@H`'gF#+QAV\EQKaC?)4U@bED-]T=eeW3E#cjOnY
+E9f!@Jb,TZLJFV91JHV2qJLR;`BO^=M=b;`'jJ:8dTYJ,j=UH[,pW<c%Vs8.iRH>)Cjee`k)TUI.=J(W
+q7_X);a]V<p?o%#[?*m:HK6,e?T-ld\bf&M_K;$AlZ5hNKoKPr@m9Vj6A(Od[i\CLb$E0O8Ean/<_4&t
+gN6%YFo/gmc?$s4jI<Y>-B;S<dU8YJPm#1PL\Hfuc.M%V..:H+jit>gL5,qOf:$QpIXa'?+2!OR#'ulK
+dqG7-Ef2t_CYK`chQE$G"IF96*r,&!>\+jhEZ4YLDMN$.b9M"lkR$]`'XcHMY>H:`8Cn)d,Y6g7\(q2Z
+ca@ZOF2ADXeOV$WgKIfL/h_-J6Y11f7'\Q$(BB)>:,k)h:!KKBAE0pKTh>8\oqn5:0DIfF'4kkbRuMUR
+i*H,Q;FSfm,i]&<CiGLck;ba!oMcnX<-o^Qj)Ij.=giXkKfjPn/S>Dmq0I3"0bPi,(r1E?JdZmehQD1i
+H*sEHl5)"N\oa1["'nK3#/^Q=nL'dX<\<n&T`&XDCg^DQG*&XAObj&gj.C4SJrkaA=*J)F/WZ4S]8mq3
+Vd^V\Nb[db=-dm:`ob9&*N+eYKXmDG8dO-u45_7$h:^tpk=nAZoKe1s2FT!<#9R2OF81jUW\V5q8MZ=\
+d,k"Dj7'1BTN[Sg_#)29o?t1G*``FgjKRZace_ELhji5RX-Qbqk!QcU6,j6*ido-;!U\<<?Jb)uDXB%d
+gP^>C.`gC#n4*U$;bkWt-Ld,1nEZ&p/!bmkV.hJ&3Q+U4jg"gQ35F_6Z`bHaS]r<:'C!gQpjtYD`?K!.
+X/g7;`9>I,iYh,i9]4pU\4`51FCXA:qqYsgZ9Y&o5rf/oU^=]SrpcW`Gs$EC5SC9DdY%asaWPTJ=GPh+
+([iE5oqfe4N$uW4%XN!bUQbntrpcbJ"@N:.E_/DBYSP"3$pEm+1.NHtNe3?+8*3#?4D0W@'[u//58%W(
+IeM[I\N-;A1Whm=JDM]ZA(s_7EUDrF<]Rgr<BlT0m*?MVWl&S&k^!1.)Y9Yr/:a$UaDu@O)Ut$!7#lK#
+DgE:1M.GC^f`SWKQ.QOY/96"3<n7:FX@=m'kt9kk>$]=*!9@P:YSJRG;?J'T0]ePkr@q7pf.QSdCp;"-
+DGN#CLBf?Ol^C(DNqQTlCltO[GfpVbr]-f`OHm&\0,b)E/jMLoNuXecM$Jp7\;8+`dOF`iDm0^-pQ*[[
+%+_UjEhYcU@`$s%g<9C$H0;V1A@EF5E]2P?M3Z^)QskrFSZ?1eRZ=WoRqf9#jXppo=IUC[n2THeeOC$T
+JnH/NEpB!#mbujd)ZWBuI,0S+]j*]X'k//BE>p00>+l4sj]m`Td^iqcKJfGJKT7?5a@i/=]:f.'W\P>@
+>]!IF/YmZt^YQqY]dihT:0JSeDeU1ZU%@B^fQbD_AuNgCN`\rIARL[^i?*8#)AXNZfW&@RLj;3\8dKE)
+aZ;YTT/_o]h4.uQdXhTHC'"BI4YuCu!>M3JR<8kX18TChf/7r3%&"-lXM/tJ]XL+IH;\`JC;[$K$JEUA
+)7sOp5Sb8(-S$krEX/eU!**S[>$d[fj2W-\5T0;c,;M_6rr?:XIT,-]Y%B")_F'OL0?U'tP<O/(7,D)U
+7+,`CLI(Ap.s"0'k+F<GhF8nP01:HBcic/CN^k)`,JVf]e<u[KOsQFJ&/lq<>A"gJrK"-hHAPR!gppC'
+:0k7k8bfpUfsKR9f35M:V4GdO[t"Yu>jt6'&$B^2ZQ)1[d/@a61W\+a`Wr,M`.5ZE&EDp,0O*;(>4CXu
+Apq"bbd97*P2jVm?8s0h8La`E^`<qKl]jt='X]D`D4>%tg_h>I1.<)$h?+mBl!9C?:<(<rH*Rmu@9N=+
+*[_gBmKPCO.;EKD.3&fq[Cij7Mbc'!T=c$.?[NAVeFW"S=!E8d@f)ZWD`CY)g,&C+[Ys6N)-+Q-.U(WW
+HRikKZGSG-.N]TcgNQCUH(e2Sf]i*E&AM/pIqRXB^:iN!mt`p$@F2Y?+L'4#EW6"\)NGSFPlV+=!%=oR
+460^s7L._b6,d+,kD:qKdc=26lc[tI/O!B1JXT`NJqYrg;?@k%E5:JFAZNB3nb67#Q(8+b%Tr.8$,!UR
+=XAF!:[V5;=]c(R#H'GT+#;?kEou0DD>!L;U<hgN7f#8,7YtJiWMmE:F)eRHk]W;*4Z8#9kW,Q_I12_s
+5DB(]koM)>%!i\VQhLRHaQcr(Y:[;>f'_<%Af$ktM,kVTH?QCH*m3Pb,L`H$97TQ4#b.@pE,j2DorLXV
+0m2^5mF("L%,!\6S#.%`k-g5sd291N[%ZkrPtYe(#0%Uu*:^haC:W#i1O9FHWfk*efmXDmB@<MXl>%CI
+[o8r`b>lSBh;%sE84g4.&@+E0+4Gf,;(Z(hU/&^)^FJ;T%nZuH1548bOpE4X*.#suRj+>;0g8cmH]HuU
+%1I;6\;K7+mhE5oYe:(5_!^hZ&7!u0ZW]DZ\:.gi3+0Dc3$X(&eej9F8bY)r<jY$5_gX&Cf5-,6OrKd;
+>Dj_fqnKeS4Y+jX(DBeG[WPHkA03;mg9W^c9Q1u!a++uWJ1'oDk@#4r\:936.#28i!2HLheH''#+'JY_
+hKB-p]aXrn!!&*H*Ci^%O@p`>(-"Hj!_`^4k]eoaWf!EjVFOClrcA0)c@5A-cX1GKj^3hi-hu>;pm0!^
+q?KE<nibNEB&=O"*BfhMXWoRG#('DP,YbrBE&$5b8j_W+.#`%R-d@YU%9qJZ/<Q)"8aTY4^j7Lbb=4bb
+G7*3b0oj_Jj:4m,-4;0Vj8^.t?9NXIS\SbkaTR69gfT,[d]>jG6ZQn)SfT_R!$)>_%VPnu,6<`5BE7WA
+5lg7M`0faYE-"A$)!%,b_18)O"RPB1ea,7GX-Q3?^WA(=b)aI/"RpY!lQs'"I<SZ;[!b,2g#Y7f`YjGg
+h_3,.Pm<r4[n?)(cP"WJHg__c'&;9d,d`>M_Q(FS&%Y5%q2_Y)3,0%%Bp$Vc`OmJu1QAZ)fTD2^4Cn??
+OFi<?Od/9:$'N4-N:fDpC87btPHcKsd6MS^NKCJ`Nn(_LH68u!b%8lC.,3"(23Qi/N+G97'g^'e@)<^j
+EU<$H5p^Fme?c3ii];(:$Kkki"T)2o@^:RmT2XK$#;sX:?!O1U'8[Fc9QVD"TWU[t>ACUQ@2j0N%WFHA
+.>c"^q2//^&]+B"r2K:n$IV8o/2HM'lu&'`XsQTu,f&i,-mOnfIl\QH$>^@.@:`P1>k"5rHZ[4mTkRe-
+@ut.c_dfV'RK0C4/7q+/Jm't;/d;UZW"E<eSn!b'\e<]AH?SG&*"cd<q[a!D;o)>XM?mFT0RTW9]?kB;
+W?SJF1_?P'@@hh+PSt:j5J6q)1Qb,[eJ+nX>eok_L[=^$1?-T-bV"Z1+Dj*rJlLa>E>6*q`-Q]X5'U50
+.kPr/q481Fn6K;5US)@BhE]0LB4W=m3BYs68st.ojGX'Q=.*,A:(NZbZa'7L4tp\S8jAC4S49KR:SriR
+ea-hNRPXOtn?GoQE(,0I>Wk\`X\Z.:k*0j?:(L9fe6sVuY^s&K(Zd_Se!a7jl?ZF0Y%php@u.a"#FR@p
+iXQ;+:MT2o3ZLu>:CeD;DGb?Yb=*dukW2^)elOl.77a$8h-c/a=Pc%^),Ri_7niI$WYM%dUnX<ak],>*
+4SrQEh6+K=4IGNfn%>jpWf27fMWr#2Be/pJ#%pgjWH35aqiB*2"8I!55JfT+dX6a(C%c<ob]4-'9ls(7
+9ChHhUlj?fNi.g9!;_"^jAne1Gj<SW-;o1'hbS;AG\uPcSlYY4?jTjs0ulu7jE!&e]rf`Hf6VUqEjcmW
+e1A%SMoFk8Y$H"PZp:MeN'hI'cUuoWa!FlrU!D;(qWc*Ahhh7uW;*^;(:!74:4!q,BH^2:jc-Lg@#iL=
+\En9?a)dH4N7>4*oae=bgY>H"lZt?DRP(?)q2#SNI"i8O`%9]J9s'BAAN\R3G?/0Jbgt3k,hO!0dCa%,
+rYsDTkE=Z/.u^#SiDjp%*T5)@'Dr7F4Yp>c-nBYB8$kt^9<Y\H@kie&[o&P<),eb1B?WdEr13CQF%2A)
+$$+\DZiqUQ#:#6_\bnFiY!d>s<b@3.fS^Ag^H]mUV%mTGRk%e\'5(e8Y3qkGBl%H_?_*Flg2].f:+-=T
+`f6T<E,5PQK_?$9ccqZ9bu9KS>DX[\c@:L[nu+HZ4Sa>$*(L1\?,!ilit\X<R^o%P.<o3(9Dp'cjVqaP
+/C<8Xi.apZ`cLq;WtQ;m*<rD/GP7ADgIVmK@j+L4aCuWd]VCVq(uX!\8h*E%`_PalIg^#UXBBhQ>W:C]
+)4o*/cNBISe`G'd-X)YaXjt?BW?o::bE-[aT?a8K=^1)+rGiaEe!eWPPduNK-9RFr!7CpJ/pSj7.W."L
+k9Hm.Yn@NQ4jR:s,u)B4euV6Ygl)o85Y4moMh0PNHW?aT1AU,uaKC$a)<DqZ!'V^7ci!s@+8HuC\asM3
+j/94GA'7`p:DN#d=Mj,[W9upsj&7>Jb(@48*/369S'RblrY;=g`(%hJ#^he)0IjV0&Ls^u<Bqp^H2dj_
+TH"oo*.UgmBED;tD6:Ui"9IcZT`Bu5,:XZ.eq,0X5NpZ?,7hIQ1:ZCrlTm!gKiA+n])t,jIqfb\$lR1j
+=,8R2WoG+J_6%%]MmBT.`6AE<+_$-s)3BB`M;j=WFkgt<G!8Fd%_[A^2oZJDRW?_siS>,CfCs"eW-I&C
+2]Sk.3WWNn-sfKZj/F(uh6[P_I6IcGi>"[sKi8'[g[VIOPoS$4>3?7:8'9bG_!FihC-%I;lojJB7iZN0
+1A5T.<oe-\/jR8=>4S)&1@E20FSeJ39mW]ibXN9VbK!5^6SrY-el>%]ku?Z$q:Tt,*/%2&#$X5MoVk2V
+@'#.P*`#('aGgKO+ND3U!"U<V*/Fq+h.Bn?!;CQdnY*n(G#Fr,P8iO:WBn-HS=FZd=bedPD5g57m\`8t
+l:7ZRS+'`Q1i*kd5ofhPXi*c1pcEZZeCK[iGnD"8r31>!#"C+";\>;p!-[Hi+G.YEWc:LUlq%p<NM7r1
+2`n_<".b\4<2-nG16@L%mc1i<blQ,3d&,*ug+j*?(86g0%HF$Dl2L`%$g)@ofN\u.GijUg&T0:0\-K9%
+58jn6&eMi,Dunh:1WOkOnn80mmW"\^NVkNirC5C3eFg#M?="iq>N^R'aeetB''P*<1E6Qb]UgR^b1dWl
+bgS+kVu&AtY&r&9:F997L6K\d#52a)+]VP`ER1<nK<j:tL8s8k6Yic-]Gdr.k"@N_p0!\p=UPt]J\FQj
+^4?/43T9q4?C*^WGflD"MG\dt#M"8DlZ^tIFM\g7r4cd.=M\$%Qr1hIR#J/L<UP<eJ`>C,N+uPr!8!Xu
+\uqMdT6WSje1Y_t]YD+1f*jo,Z8Y-WAOu\UC#8%.@<'fe0]n!o@U$oG>8/_3nk!JQJ2[$ISs@CBXW#R1
+e/B1:p6Oa_/rU/k+CoW8?7VbAb_E9,pg^,.Z10J9rr>OEVeIjp<p!?P.;NWu37f1[>]%c9LHYI:?SA8#
+B$Z\#Hr?e-;,;GEp`FK\9)elJKoD0RqVBuCkWXX,HcZ,B;JaHWArMS*!)58'KP)E<i#HmA3=ub%Z#duT
+L+$:?/.>a&mS@=o%5^)Bq2"4@=&i_)4`RlZShp5oa#R%%+b`ai5;VCSPK%jn-P]BnJX$"Gk>7%?=Ka=F
+*Mno*O@]Z9]1MSK'd$7.mmLf"@X/9eI5SBa,W^0sI1#42[Z<4#m@Ca"7-+0$!BJoHDm_ErauWa'_CUdA
+.fcRZ1XE&FAN+70A(j0n5iLc!LWW^XncFYab,2A@gSp:U%PVn3gR@;Yg<eKtEh6b>o=3^-XgtS<AM*#e
+l+c<R4fS"G4c<-S/+\]AC82NR&"'qjO9+9^22q0N2mpq'8VC0V3!;\kS]ks+WSi4_f1g;)Z^uJ!R./<D
+b?`]#0t,i]o@6"VjOMkK1_:nZXfnIPB:YO/YjJfhCQZM%78_k,1u1KF$/qJu;%;2iIkYLE(ca#"nd+1*
+T3;]1Z4jg]4k%=*0=KHl7@aiGQG<`]EL_Lic?QKP6)Jb?W?\VOhJc/SiIc(p4\*1K[h+;B!2n"a<l`C8
+3rW*/Kjq_r:l\dkA01BE"hub2Us0i/!M#1BNDL*XOQ.M9l2FC(!f;INEQP-sD*g"L:2s%e7Mc1ISgoCc
+)!"T!&e\.Z*C.]G5[*birp'I,h)kUYci.E:TAsY?i`ds`coODi+*C]Jh\bToGd!RmK"SB[aZ825Got>.
+X0KXs=GXL=>G46G95kQg4%LJQ*U@)J;FCRX2WOQ4p$J1JA#PZDDE7)aao\3!jW+jOd9n>^0Q;%u*ALM:
+e*_!uA_oqD-IpF90u;*70Ykg=H&-Y8O/2p>)8)OO!;.S=!uf0K.O0,j#l<)N[(u3mMB4(9:gH<%RPZg*
+lM@CH[2=qSNn^A*[Q&-"i:Q`GWcVN9U_gJ8IM@NB)c(lG/Jq\pgTnmmb(RC1/FGjdLp(EM1FZ@Fh!MK7
+`4AC-2Sge]jfet@3WK@Ff1.#@jttLWQL\]7L12>67UdK]f::;d=!d2bT\lntc%T,%,!U!cmoo9,,C2i5
+nhF#5",$AGb@*0FWtI/94Ch@P\IJnO.3NJ(!QSPSXZf]N(h$5Ugp`]AW#[Zn>+6V#4:j2mctFS]FsMDA
+!#2X?Cg8"f_>aKRSjW`<D\T':A03c]Ok5_Q:+-N`[[u2H6<e4$rrD_l<o@Xo?a@157RhBY>1)[A9,*]?
++[/a4N3Cj@A1+V?+`4/W@j7tAQjGDHJg-L*$4_'JIVM?22;TXNh*,2.S]>R,TV0br%KVeHhn>/ag6rL>
+?\R8DmO&7;*<)3u-ohlfIUVsXT$2KkF&6"^;C.$c=Tf)391o3aFFZBj1^?$\WBR&mD3WdW`54G<,"[("
+5mQhH^0>?&J[F_LmJaqKB,78>539?(/n'Xs),^0O1!25:"H7r7kejN>)<n(EN:?P)YBWQ)PJbc2*Yn3N
+Q*%gSoUkMYg)]f?/>cEc[_QE"a5,Pm`lHmY^1uc/68Ngtb,pqkcU6V.obhZWmu"b`U?XZ<UlS<ZeUH8N
+_3)d%/ta*Ca']i5\nK:?k_PJX<phJ_>K8cR#m?\eM.Tc3#?,u/,%@=B)0alV,Q@bTUF*@2;V`3WX=<B%
+F._(a!4J]PRSP""(?43-%'jYpFKt*C5`.=-G>S_O6-22a(!29I;QU_:X'0h@`a>7f_9VRsFhdi7jF/?$
+T1W+n#a/lhT\3XA2jbUrl5YfdA$p]-1G4t6g"cOI--p"WVQA>$kP*s&mDP-[BisITOat1(kF07!91.s=
+b14h7IK8R6:@RtRi[;)WrrC!HmOdO4#Q58Pg-**/"%s<4pY5KA(()%d59o1#Dmc\)\fTGMQ$F;+KL-3k
+aiO+qY2ePEa=Yj.@l"RP#lW*QN^k5`Rbes`S@'h'BJaKI<?n47_l9FD>f]K5.c>de9!3>-+sJ0J2b:\7
+Ik_&>.!&h<L<(Q`_aFhAlfor_ULJ11nR4\+;(Ic_BBl8H(oiUU)3Eg#\s;'Gjt#bXeET]`5ZJF#Q8"W`
+!Fb8?qib)5R8A(RA]1CdJ;OUp&1\S`202eubK(YZ&AT<]N+]SDVF$akYnAlb1)k1@O&1)G>*CQ)25ait
+!53-k6"DJ"J0^`(YMi>,Vl=EKk5hRu9j>MHb/k[Sag[4Y)OH/R"S7WjH??8t-K=t4l>DAG%$:7Iicb_J
+F9lm\Gcb_.&HdG,"X>3,GhfQdf<J]I;ojLQ1tbo6<b-'n)eUbS"1N.uR]KN6TiLL8gp,?]/`fW]VXgl%
+JQWLM!RB9r!,'lePpH#`+mtr`i?&h=CXB2_OP4#F&a)S+a-hsa5.0S*Uti+jW[;p[-&S`,?oJYQe9Y/,
+OsJ>?_>JZ0gh!<nPOF[P\31A1=GAuH]:Y@9ZeKC<dK,*E^P.^:iQ:O]PR.sO@oMN"J_H"^H%XQeofu-/
+)?)A*pd`!t=:"dAN]p98j['$gj6/\oF8l6-cQ`/:bl0&sN*p9oL]W(l^!PoHc$tN]G"7OW6+@BLa>3+q
+0KRgUidci:b"?aUPFB]&r:]I1RbS'+:qto/a?;%],@F(o=IaCJ[/`b2$[3Ti<;D%dOKIB"?lgV**!&XQ
+U]Y7p^;d:+OWZJU:,,EISr:YG>ah[2RrBS-\)o/B0-s+eNn(T_'0*0:pp/eo3a5C#8\'sU`uI6QG8Q;a
+*1b%+GNP`#Efs(-b(@4:3%ke4GAj?aCY.bh>Lf*$E'Ml%rr?+5k9L8qr;A?W7tmf+j(*5\W0W43?!B[o
+l-S2WR1N-a&2WndODkFsm#//*.,.ld$S=(>q`t[1/ea5(ePFXN+Z"<(>GostZ%dF&N>'UIP`c@AN+/uT
+Nb3$1>+mHf]?\5)ZOcLG1K6^ph'8D#?j?#78#6E;lmu\`gFj$64+1jhC^t:0FUt"*3:0:/O=88SciXmS
+97#-JDFS5Ho!47qJW07Y)j2ZLpBRpq#A6/,F$Q,p-s%r\Y9Q6\4c!$IUb<-U*QJ:`-A<Cs1b?lg,!ldT
+#Tl!CeQg<*bq/Qd.S/ZM?/&0"S9Dum8<$hXUG*1$NP+<95s0t<]iZ%Z7a[ejWM&?G;_mfh;akX?G.A!C
+k^@39:mBUi8=>)2Z&k+D<3=>TR'u%,F4=6RfS)4s#8"r<aSV)(kn*SdaVBTDBOY59bt4?q'?RLT]4gU'
+0_P9BXh^stUEL`Mc\,W?H<.M`TO1h.?j`kPG7_PD5/\Fm4cO(8bf!,T9'&<sK9@%$8,%3!!;ce#13j59
+3dc-Cqt1W55Iu2lZ[$2g?SF/NW)Imk,Is8lA90Q<a20rLN]f,DIK3EoCbCn(1?:/Y,.J1:/rncYO#27>
+I)5OcHI@H-C%a=FB8q/*_*c-+GBINu]C=+Cbkg4P_M;*PJ'2Lp2^ob;,^WCFN%:d$[msb3QrUuQ;hNc$
+B=<cp\&FpR\ZhX,X;3BSf2,BuS#F677EGK/<ksl=^%njq`*fE2XAjAS5A.cEd&i"CP?c[fRic#$H@;-8
+]K<"TE?e$q]qe]-g#YQ#aNqXD0d,QW!46OrTq\gf<]7"XM4EI-R[3M%eg$-<KHH[(8FO[FDodtpUtg,O
+(=aX0fN<4^cfnFM'okd:B;ioGZ%F/00XgGfV$>>oFT,J*>b/odM?%B8m615,)Ga`I;+tI%DpksrLkIJ_
+!ROljEZ>Y1,R5Qs%9nF%k%,oLN>n3n2_O(VRW@)@DHF?0mkR9lF,'\p,.ZYZZo37B1\'Tdb/^aN><&Am
+\M_1CQ+,lY"sh^#c(;mT_)m]qGkS75"tdund:<(>N;[H`@\^LoSULbAfC7!48uU77IkZ<=D4<Z[r@4cs
+U2"S*:F)FN-fpbQh4C5jD(Sc"!IISXYa./2O"+2jN*u>)*@_cZ_3&H@?:=A%S]JhsY=_e;R^k/B\iMV6
+k=2rc-33Ypg:7lZg!+Pe[9UU+F'H^q\W)/t;8F)0"-1m/9h;*"4.c3)cPf*N7^gq'+hrUn/Qo@^LS+_p
+nnWiZ*aObj7bQuof)]hg68O8C'ng%uY3+fM&cnjRFY#g$r4m=FU]\]*"Zs;eEDt(:GhfG&q17IiU>SYI
+).KEVMQmXFgTprX00NCE!'RII.c*O1(dENM!3M+oi'6T&SrruqGO,(SE\G@DOaLk@hC>i3H-Fui@9#OF
+RI7f`[;om:`"G1LkLb0E)b.`%1!ksVY;;T*0T:rV+FlubV+;='Ca&ZAq6BSSRbS0A1p1Cp!S!"Z"*$GB
+1WE4*!L#'s,*d,m`"3eIIQ_BVUr:K;#1,93-TuHCYo)G%q?'Xh!G1E9E.?u50&O_#[&F5MJ57nY;84'+
+g[.oUbHRSW*CE_!1>2)l6HY0Xi.70r+ELWO)q_)AAZ>8rO*c*@&&sI/>S/oM4>?4>QN78UlLR4cLQW14
+fI%N>@foKknfjji<_'FYkoAE5M];#a)fQ&]=uLDFHL:*Y=1(d"XRkPS\YlIL*7$$CR#;/u?)u8ult\4s
+D\%+0FDGT]>>S]?98O9@OF>rQ`\;]$^GWD^FYTjRMCJGI93IB[SRT5.5F0?NQ#\oq]kGX>g"4q4#`$Pn
+JB,a(J5<?oepQhieBD54*WQ<)"Ehe_Ur[LD)e6<DSm/XOC<Xq7/eqRmR\!I[^34MH\>gJ&KiUUZ1561Y
+p#:U98L029)%jfBmcX$$[WnL-VTE9qapV`@o-^C?>Z<.-hS`q9beoZo(Y>9_ZPBu]cHnhl2*?]M=&@i<
+SiT`iJ2XG0(i:Qk@!hG$1n7AW)?UTMfjTnn[6P?Vd"i8`r7unfRKW=8.2Pjc,QL+1H@79RR>TdqAe#[a
+`3Ad=G>Zu^WAYh<b7HGOFs7CM:K*9m.b'kKWG4@=mFGE5$[dPgNWXVdHQMs_-_6S$[3m8@pqja?5kH,J
+4K(9n:2"SQ3<41Z:LU6-dE7D6&!k5^2P0hI963G\B5$J3C=EP2<b*_gH5`AS"]ncohf0S@C]M6KI+9o]
+0hjg3!8kGI5<?89GK)@?\M?/W],O%a*PatLCQX;ue.)^Di:j&g)J$u/1WFf:i$F^i<3t7rV;5EEWE\&!
+JD.Mr<K#3q["8d/m8m:;Mc>!>/7hFQgi'c:I;<Bf"Vh&<KjI8U`%p^)nuO!/7)i6fbLY876=^*lE,_SO
+p)I-2Lut6u/]m*pWiREoK:T3qj6;Fr.##2?D7NVkCqBcQDtg7@R1+rRjQ-0F#(5d&#KYP?-O0^:fG)u$
++5Mm(i'(o#DJ7+7O-BO:!Nh[M:2\!F5%[RB,+RfEYb8/%5fs4lpY*F@pVH;cQ,.?>]7%^",^Jj2JbA0!
+79nO4AkW4m\\kG+k!/jZCNm%@gp55M*)(kpNMIW*muMe:DJ]"hG1oISgE"D<9F*6h1gT#JNbM-pVdkk>
+>W03i6ufdWQ]aT1B*hG-_"1Vt@7sXC&1#7WB2GD.PPk*U5g@`R&O#22EZNFjpS=Ib"Z[PgG9K;oNS&@8
+XiEbFD,/C)DmVeLO>@gQ\G#Tu.[$#jl,h+Hb_e<ZE_5U^V.?IkCX1%r@\k(mCO'D5U3tmR*/"(;9lgB*
+8%JCJ`_l%5I?O(Yp4]etBd8&Z35ESFY<''14.U>ZOm2CdE1dofDJe9+eVRh0?k>DYArm3-au::h(o>@Y
+Qj9#m4)dPsMC\mF\9Bqq!_#p!8+Uas]c\l,\A/M<4E4@cG1Pp^O#Bf&G,>1J4G2Z`#E!@d:105Z3\e<m
+aYVaqc>1_MV=4?&"a#">_DGp.bcJj:7oN`-MP.C9Nr3te5RDrH=6eR\d[JqlhuFMt(`D$EF8Ar:kS:h:
+[QEZK+=0U:$n<S7;1nj)'?YjLa.Nc&#&3t2&[RXrEQFtlJN4[Nmt[TA<g%Z-!iV6I,Qo`$Q-W/$eCesP
+?UNs_N;bTEe8B(b$/rF_219XF'Ih.;Q-RF4a<TeOk-i-)F..#_RO-%^48fCTK>AHQQ_mk/JSB"L^>_eR
+8'gUI'44*4,gL,<D9hH:[#3GO2.eEjQC:&n]G&Bra%GZ$.i_I7fY_V_pK]\>!+CS/aV]40aV?92gAIr&
+oE`ep<oQ7'$N,P1[u>T-8P>H5&RO52HDRs%AA*jNa<P$*A>`pTp&^VIk?BGRU;Dl3UZEN&g8C&PP:IF>
+:'T:iRXG]o;9FRc.SMsm>!`'N12"-<1K7hC.&V?a"dM@uYl=^hctURVSa6E?Ja+Wn6m.9e%eer?rrB/e
+A?=HX1Mp,3\"KCS6otd]974q\%3HHPm:SO\ntLl9,:q_s&^^7J<>3H,1Ecl$EdCR**?WPJorRuA&emSu
+Yok4FEU?7P!0p2*Oq8.RS(m1b8-f?=3$mTY%\s3!k>^GoaN^Ki/KC?cN_N+l5oKDO8FBe<A!L#IF8&r"
+MS;JW+gYsBfiBW82N;Rp@kf3D"Z\D[UHWj=^;'fiUM/j@La<D%<J_lUks3TT;@,Lsie'uo1^PC4bQc)a
+]Q7#p@`[2>+S<^N:HJSBaV8g#-3,<<!8nmQqMI;#%$a<,gN%<.I;2#8NQS5[*]@M^/&i+/'\;2PC/W.L
+XbrK=4k6:JI1_BS4+..uRaPCp*@r=h`l/62h5;8!pT3>R\35eK0,2IN4%VX[?XDQ0<2@_B]T4[4Z!sIO
+]@DmY9+mF%[e@d?5iWT4oQE-'(_.&T&"odq+pH\k&SMYB5jhIZ(d#P=5LQHp'_W^`[TA$r(opl.%$B1#
+i!)nTTUqp5RLocO6k-s`3dk`\V]mVGi4CE<Y;mZ3&X0b$@Z(CiD5n:Xr1g*1]o6"PjZ&,5#Asf0<_ILH
+Z!L!IA&AqWX_M6@\bVAQZ<(bchRu!I`f=P,M5B`#N_/fbg0EDEI=/=Tq,Kf<d'j."RV49c"-t7"bQ>4/
+0l3X?h:s9+H%keioZ[B\4\"2N[kAX"j\F^932au5c#R_4gmgO8fDpJUftf'+c"Bmp->cOQ%[KfU`+]/N
+0.P#l<u3>I>Z%+9Bg,[G[i:)*B@<o"B(dUZe8B(T&m/^Unjpb]n]lTjlI/X)MKKnAoT+Y&=IS?QG3mnq
+Kn##p/'+\a`:RIq,L@>shN=g%o!rde<#.T=+'JZV)@5;@\NO/h;*Y\caC[S;*7+e_i.^Mg'S*Tq%Rt^*
+WVb8]5UG,Kn_DRm!&:&mn^4..'j7.TjADgFQ;3&Fa@Yk#!'LkW?=n'P7I!l;K^kZm)&FU91@hID8bB2K
+Om's'o7Pd3!?/LXkYsJD%+#,ib)c#0!tL:#j7=UN[/n<oNQgIYE22ab>CbF$"fY>J"cNaH"3*.F[BL;h
+IcfmA0\h,XaJ@n4iB22@$\&\#<u5r#W?dTs+TUH`BuW@Uceb;+ha+BjR_B?c?$MiDnH["g:-NRWq[\H_
+5[+LX=3oLJ&RRtZVoo5[crFi87!m$cIB-N(6J6t+H+?02clDZD%=1jJR^pT'cC42#3uB6SOKRg-@CA;[
+a<,VhHIdnhf4_F^C!tX9)/erQ[gZi[A(5GZ,u6dQk;Auk\5\r$)mRK-Sp%C&7q:pjE[.*ie>G%rUHt/F
+7$eZY)4q-[@lXdt>##?=F/LcM"@tdskDe9JB$@RsI&nqSm?=-VKa)qkAt^(4PAYSgTU!$QP+@.h).'[+
+F&A=fBEOJEI;rE]YSa3thZ+a53S4]!.`28I*Y1V.3s$^"@fpM#<oBtSTGhQ=#D2aOYF1uYH<#MF>k,$/
+Hr>:k!6>WT:3ipk<cbWe5&Lf0"jYB+!$/!=Ya0^\PCO1Sr2TRq-85KjiafiDV)Am\B>6;!ChM&5b+[,$
+q2k(WoH-[t9KC`>?S?&'kuPk@-/,/ROud3]k@6raonZcGA/S3)A5UXs3=q!ON0OVfif81b193*FN8tNT
+@J$=_JI4a1qcI6=P>VM:,t#L5N;s3T-ipOG&,RRqJ/\/\7i"q_P\!@pVRHW8T,V&#D``^.@rANG('J,/
+ZJ9pZ.S[#Ffpm=XFC<5*K#=8-HHn<\=@EV]S?,M?+:q-@)I2Wa"B#Sp4T4[uGY,;a44ou8[:EP$6Cpt1
+'%Pe$L8_.*:FJ/QeVD>/^sFDs]_bMlRj2j@XTcCkM%tp^PIHVYHrF7:&5$pdi.U0=Xjlr;F(s9BEYTX3
+lar.X#fj3L2^uup/EGc=D7Me04m=AqM<mM\d1[+W4&-[-lZ(9Pmpd*BXohk,I"DPf'p@A*lr"I5;?E&E
+hR,$[Pe**,%"^:(*lD3LpG%4EG:3-O(=>[7]CWpl#WTdaHE3MuNL_pnfg`\bQV<sak,h@F*5'89W:OBu
+38-E&Zid,4],+=$-YR&r"Es`W-^>OWF%Z_=n@F?\W?V34WKtcV4/9Pn*F_Ln>B`ni<uKT_)0HK=Z:2rs
+8F9/6R(\Gm"+8k5/.YA:C*j.>LT''Dg725ff*403X0hiLB=JdCX`II:)(',oDClr0ph.NBCUOUj(b7EN
+jinHeid,Jam+7_)RYg:FW?\=#b@<LQonXF%0oAXc+-b])l1L\TA+N$WmD'_7TF#,k#IroH//Mb$!+_*<
+5UVt>kaaHcr+dp/pl+eD!0"Cl>PP'$Na$+f&sYF!L6i-0KlH2S!#\c8'?4Th.e/lsSlD>tl[T$&:-l'8
+9p/M?9V*Oc>"KJ"!Ks_/!rtKhc"I;`SHG*ijG$UNDoN%H5SE/F/?6",cL&Er>CbfQ)i;X!]+:`S"'jlO
+j[U]_5QQ-!\B\49KEIJ*aW0KpXm@4S+tPZ(k8RoOIfO7VFQ2<8[mN['^DVDdET7Q@fQ]&>Rs^Qh#mPZ:
+7#V\@K@"5A0N?iiS@2W;i2h>3UKL`E:I;@l[N[5-0%_c*8WCGu?^\K,]V(`VqMX3"LPI#o9UG=Sc,2?-
+FiX!&orb\D<#$F\/H5)3;7"^c`^C:hY.%rM,<LL;ER$;eTl+LiC3M#b0nb[:^oSK#qqj%Onu[j^/n/`I
+b(<1#%FbL/2-fL3T%BWK]Lh)##G%1n\'\,uk=NqNCNHGBj54PQ!_u^o*R8oU[:H)XT#I,O,V`eJO]WX!
+mc5GeFK7)?\7/=2j)talV#r/\P63Y!b$;\!?@tJ5%q<*&d^&8p+Q\-h#Gkle2F,M3T=P'ja8Z-GK0a`3
+b9=bW+;*?b!?$puAl-<hgZsmL!BN6\<sT'#Ng3l9$OYQbE&%W2k$USf/-mA=0iA-EO9_T^3#iKLS/gJ6
+"E$4P\PbHA3"u\c3X&E72F5XIo,bZ'WodmrNu7cLP.Z<,e:=M8O;slGO1O.A=#1a9OR9jH)6#IR7(uk!
+,S'G^9VO8W4a<d<PT>WRJ4LOqWeRP31eH&E]9qRPkRUor!Z=>fK?n94W_8(DJV$-D!=R''Fhkd,!<Hes
+GsDJDjTF*s;d4e@%RU0q@_0(8!TmWZ<_PFP.H:Lf't4i8,j$I>8hSOU?_q@HVTL]mqDnA=m8?E&Pg[0#
+HPpM-q6G$$Y*d0S@hc(N[i(a3#8oio*HP@_I&u0c):Op]`KW)Y^aD@q'i<Fc6si/t1#A$TLf;[\YA-bC
+?U9cEb$9%)EV6?0Y,5-Y.:'DT4NRS8<ra>^Wc:g4<ocro(,!7^cS^TD2`'Oje\_k9Ot/u2MX5AV3@p$.
+?VGcHO(*AH.o-NuCX3,mZWi[f)`+38<ECNT0JfjY@Z!(I1bl,T9ES#N5=2p$]f>nh`m8,mZ3W`=+<ASk
+n(**nS[`68M;4*KK8*]tC2L0ud-f=V6<&m*N";Gn,<poBXdZO"b8R12hYtCW3=um6o;Lo8H?H,&.7N$W
+2OWCU5G)]n$j(G@Xr<4`SWT6o/@cPV%J(Cor\Xfr2_+^S\,dS"\EhC!X\fQ6Y(/uP@Enm9qc?IaXN4V:
+Q\PE0Ff&K`aY4&%0=rKH#EV1qMY$+Am[H822\YF-%pH9i/<];PFX2@?``2p*DJRLe>ZoecUlLPDCC0f%
+AcrXDTEsKZn6*$QJ1[qCkY2%:YTSsOTl'r-,<4Q;T=0.sq\1j.4u/3^B9J/*e"G!9l_SlP\&O"PaRU3B
+BZ8=%EQXen4fcig5VpZM8kBs)P9B9i##Dr::_GY(2[L\c6B$)Lbb4%eoeZ\PoQtkG)bml'-U71E5hqu,
+U70k2X#(XDW("WDd7.G5J`%$9WNA`iATYJA&!`GlD?q=7-p>X.b9ulr^^@,nd*MiHcU*&1anuBiW68".
+iI$"3BRD>+cLV2U2j(al7k9Dd=\'Vf;KM;.2WX55AuZ.4CZ*KkqT"H#rr<sP#YDCh>r,5Cb-f\"?+k1X
+q+c/tF'duA(Q)LWlHQFAU,BSg6OfhlN/=L=meMTbZp22Tph(?+.'&k9e_KBK0Nr2Yd`*Mg@d(H9&8*4J
+kDJ'?:RHpS)LFWd`h@AV:"/NE9+B%EpHn`uofT1>Z05mA9ZLlM[um,S!pVH^+[o3$70%VrLgC#\i@scX
+p)lnE0Km?E'r$:oNG`oUfY+^fMK"-!*kA@t;7"oc1hB$.7;$V$S$m_pN!RQRQ33,l54\FFBEF,Ej[eM[
+<'9(KPWab\Y;r%2p`#&/Kjnc;LQYaSl&gp^$Q>fgb/8CIk(!LW_>-@UJ0,iWVis@ZO;:'Fo"tPnoDqm0
+3<Q:%rr>@:'EFm]b&m*@!-hC4aQ'r8@C1FX3!ou<=q(5Z`T2WGHB(W/Qh3*G4^H`un,_JbFjFe,M1Wg@
+1"t]/$[)Gj)KI%WD7LU1!9!LBZ(-%&hLH'63=JJ!JNsKY2M7N4YbF0/!=Co9mu3D?bM/in.L0u3OGn7O
+_\<+F!sQ0:5fa&]J2>s_]t9Cl)>=a\JD8t\1tLSenDT6V2Gd.K-+Ig:P"1ie62DLW]8Bf36KK1q'Z_5Q
+_r^4NCGK<$oddeJ/\I#e_QH2NV)>d>`aC%n(U%Z+r9VOC>IA)[0$F;G)'FAC&mWH<=$*3h^qjj9Nf(V?
+>mBfR&.U)i1VsG7S9)q&YiE8g?SX,Q5%0O&l"k!6EQ3,48[Nl]^0LNbb@Y@q/!Xf[1CRp!/!Y!g<09Ge
+'rWm@LM.pd[t<a1.D(R,jokoR_&S>m<*S!HfB)n^g+j!!psg3!ZUe0@i%W7Ja$K-,@kqu1#jq$tj9>&c
+/*6;a#JOs;_96khfaW\24kXq"nrSGi[W5I@X-GN,a>836E@%HWB%J!b@2W"mk2WluVZaf_d@shs3G+C?
+aQIoVHZRN@3Q\B+p*\GM=gZL8'5=^k,SD/W:H14NQ*`>;>G=fs=XG*Kg:J<<He0;`8KG2322n3k+?,TA
+\aDs]emMLBX,YfUrr@8IqGWF61Sig<J\V["A*I8=m%.1a.LCL5<K^`,r1b`]bpP$B''@M0n;iHECp"L^
+%&,X$@Q;SL!U",53Bp^=CXZoj#p-6u-tmD%/,4!ujof,G0c<1.XsF9qF!IWfn[F5@@p^TaN?rBA)tB);
+$F`TYB^%,:&p4^+-]Rn&NQ)0LT!b%^/!e[X?QtQ"<EB)1:3lc;R^,`"--a@,HEMF(m[h1a*:+1Xps[9B
+&,h,hrrCH3j_!Dg?DE+`4DJ=j;sRb7LmhB!d!VT5'EH')*b:c.\(r:2!'E)o7#`AD`,*FQ4fO7aO&EKE
+8qJ>0qlDTGC9D/$<'`+MOf4A\I`lr-hCpp_8X*;K8\_T!/[Irs#m>sC4,;FVcj]pS1/^68Ll;cjau<jR
+j/=*Mb@.O!LjhP_XgMG\dn%q]F-LYQ0b)FQ-?4W1'A([Dn<%Q,*pMV-"ScKDp,YMb_^nj1-1U"IEAoBC
+a&5YC[=&f.o#F[d[%5Kof5@:_9l^Fi:aAlqrRU2bc?f5fW+rJD-Y1IrF@e'S(+ZUHak4B$bj`ZVV,EL5
+L8a;m8GotV`t0sZ=I?71X>g?(q:1>gFOjuhA<5kaqtms$?t`fB`(,lVHJnFhK@oea''u+,rXt#"ZE1Mc
+luttED\%Pe%9:]ug,SaW5KtPgTj3ZI%[DS?fqX$A`<ql,A1ReCC'ZV'Sj=5I(0Xbk8aICTM?\s^cP4D"
+&Y=&2f[Gs%2W/E^HhA,1A>q&F._4=umX9FoJ/^/cErQ,hpic;UDR9Cp""SD9!-\bMFD*S(9f)t)K")50
+3dkb5:^gXJTIKr_gd'q]H@[hJUN%E=[u^j&"=^VTCO-NCr+IXBF*trO@Q6RD&E&B*!!25',B0d;+'p?O
+*"NCP(*fTPYJ,'Cf&WLF#UGQ6jA9_h4QcI+BLV$ok9$5p#!mn6TEnk/"Yoqq,B,I>acgsN$K9=e*OG4R
+!!rHlQRM[%jT'Yt5Rr`]M"9."li&^A,;Os_Yt#%]TCJQ]L.KB.DWcmj%'.UVg,er.jZl$r@i`5P'@-DG
++*h*OrC>sJ3%(Yn1ka$B&[XBWI+s^\oYrDP%QY+0,K@ph2@7K%5gQo3e!17+<DC<O1%:^r+S;Zf*u2n5
+N9pVTfPinn.7r2NBVrj]+XSK,#:.`N\WL^)1*hfaAL)J)*<$[@.C+>`%b6PrOb1T-?1"V`)?&aqV^(]/
+%5]i)\V&,Kb*s1e[X73/XX1:ZmY<m0_P'6<E&1b"F/?hn1J8o33fV12MU`T0-JaC>2dd8E$J@UB:F]P-
+O5skK4NrrZ00rF1ald0rg2\;'&bCE4eWPkQS`E>HiF3.;KAV]DK%q*%4OtggRe@S$KIdB38&rfEHBVW6
+VkK;4,F$5i#$dH#ZtH;s9rk"]Y-(KK$K'ZR<l64``:&aha>b6r;&.5H2>%j$cYTjX(/tg07t5%9;^a#m
+*5ga)bgUH\q:9(%a!]\:%LW&]3Ma+u<S;0)pZU=2X?-bM9'bUrJ;2240jM-ZB5DZNS<_mIPCp]M5Z.,V
+3AN:4Fu=ZG!a2"&[aC@<5T\H@B"[,"X,-p=_fW]?*gG6/E[&_+8SDREQ'kX'_]G1/fVt>%gsS5(-DM9$
+hO][Z][723P'A4FXsp1_Bk,KDqa4,DdR;lo^aC8rkWos4$?2.;N@cBp*[0"8<GcZPJKo,8&"I&#_8rR@
+*\B2p;;CiH+6%3sT*TA0\d+;gKH0q_mDWQ(d:k1S2H:XGJ&9_*#2f4FZeb<qhg"2,h:M+Dh7ntsf.XI;
+M1!P24uMlip-83ZL]7?D=,i]!&UKpFpeMloAH=rpcQoY'#WN%o3'AZt.:UPb!?^.b=fJVB8])P/&\pO7
+d^0&b`H_[kEXai*E4][2*KMR2rr=TNS>ZfRp[81d$^_5_Wr:E56-g957mH"J(0YD*4jE]-JTn/h9ck<?
+#Nk*=SS9"@/"[>s5=W$M=2`V=Q=2qBOW9_>%)Cm9[Olh"hi6LLQ0Vgf4YDSl/leV<2PG=?E3hX3Y_];6
+qm$bs?d#j'r/0YGT//(_Y`!b.Z]_Ht,JIBsiS(mm`H&;VUtX1D_Mat39=8IN]rmgq3ePF_-$fKT$ZX'r
+GHcRlg22c/%#&j7R3NUGetu^=gs]+520R&NpPA94&6bWu+b21<!WX)+l,?kYYb&n#Gc"O`-1HWG&POg[
+67MmXWPC`%\9oj=?O>InmKoa`e0D"15MdYd%q88(DL]"+KX_4H<Bre9*gGXP.tL8;As$+_FcClq%in/&
+qbe?f99QoPf:BsN:LeH4e\P6,Q&lZY?-SW7A!/m6V#UX\aoK4t9CdS/!"c=d60;!FSqB.%"K"&99!j,3
+35kka&-<>;*7]*a/M7BrmKQ**+H8aPPE"?2fOh,%'?Gu?)[iZu-3;!oT8c-I9=TQqjX8KF&H2b%")[3Q
+rG%j"4GZli.YX!a@s6DkNn"0OM[[X>+:O\H+Zn"j#B2_#!uU!!q?&tlNAaB!'&/`uT&3-?Z4*g79,qIE
+5RcAI-;Q]5H1mm=%ah:4W&oepcV2[g,B5t>*;,s1*.Vu?H1-W+EAJC%GR`D[c"]S7-II?C]8ro^Ul06X
+!iFn)\YSpU/VT->&5H;i7oPIP_j(5ck>i(cF+^iHeHtS2&DHQrM?r9ca5bE?]O4APVp&*:Y"7ael-0n:
+=OuPW#@s=;nnMk)D"]:'EP!>T/pP1PJ&8QI>EZrMq0NJ^\A\Zk@Z)19'@0q4>EId#c;dMSO:o?fD*@2T
+Yqb&FQTe#Yqqo<aXAfq[\$86S0?Z$gcN1W[>4SF53a8FoRrWFTgHf2YpsXQnY"'GF=(W-EOj],+;Ujm$
+N06IU<[9=ca#0oL)395BPRf7ZAO?,U9$F[ioK9^73p4G-K[OcSenDg1+UHkMmNeFQ]-tK5:IemdZ8$He
+;n"t@"S_cT[W%4`MmBV87l&hqV9HFY'((L8V`qMF04ERV;ehY;G1&CXNOW'hnGG=Dbg)Hj$Hg^?Y1>tR
+G*Bp+^oZ,G*R$_Xb:6"E1/#.2?d0.<_uL(<Eh?iD<f/q;g"Uf,UX&q&l(?D/>FH6b''-CgSFII;4nflE
+"Z+2ON9;0nVJ2\Q_F\r],+];[D?pOgmMtk*Gc\^-d;QbF,GXb3nu+bFNCldCQDJbH(\W%(Yb?'[E(K`)
+T_WagEE5'RSIKCI&h_1*5;%#Lk?%%RT.-UH$R781<al%LZgUi<at/$W8*>/(C1h23\duR:q7-9"qR?9c
+bg3#421N^(ht@M7rr>Mib@^bS):KC4GhG)^&chUsY;&b&$.q3?^\^BkpGJTL7KG\^S.:fHL^4BY*h=d2
+C5pAWksaq?JtT"@!4[[ta'9+^]KP<V-4);U6?S>Q]sC;B+g'(SIqW1'X9nib%GJ*U<MbXpH2GL]BnosA
+=70pP(-W+>T@j,VD,0LW2gum;Vn$+<,>n?Jdu8u$7S2aVQASOtZ,p1EDTAO.1tT=HSt@8;jM;_DEYr5.
+I*+Ks=%,!k\^#>$:]b\4h;s]\2Z(-g;UJUd9:3cho1>lrRa(#]9#bAMNPc0@NOKHKGu3(La/)O.('sUn
+OH=F$N.+brD@"q'0$:[+C@am]WL5Su/-#Y_GWqC4QSR&.k$Bs)`I6[fl**mrU/d'7R:.cH`GZ$b=6MVX
+U"`j^k=#PqngTY8l]<o-XLA=:@+s4e;534H`OA/=G"u!qi[Mc>%*[A->3aZf@XN(t!'Rc=r;QahRCbNi
+$M*YH&Y-E@SFkg/>jU4R8E3g]1Db&&UDa!0*)P/<E"/q]YHb#_&_+SO4&96FAq1U%N,=pMSd%>k!T:.J
+MK?etS<)6O+0^+="3(<cZ/F)8J>uImF6m[4YRGH:F0Ec<SYN#l"?X94\:=kWTM,EA+\tScr\[s)Kf2%`
+)'33_$BTl]PpV1A-QMcO#8U2Cp#:KM5:,>SFGskI1]]F97N6;<)b,8NTF(P@KE_N=iuYQ-g]H6BPL>Wr
+e=Kg!!!_e2<=MsDK74JJ!s!I+I^FX#.t82u4%=\o4[$&EDBg@j7Wj.a83!`7]-i^RBn5Z`8GN^90EhCU
+Gf@Wr7r8Vcq.:DdkGe9-XG"btdI(U[e788ple7f_c^g>to)t)W*]J)Z9%E9#.YG#p3sGcg:O]^(=&q.S
+7'jXrQV;C_K1'4l;qS2AZ#CR[0&=I+[*2S1NN+s&SHe1i,WgcIcX0:[Eb2R%/0n[CI#d,:Be>;.lE4*%
+V.,Phrr=S_:j/AsB#j"87S`,7A^#s;"Rf_8Y;eZT4_p^S(@FM_Pnd/;Oqs:j@W'-R"F,.Om_Qn+C!l&s
+CRL8H`\p8/-[>_Xoffdj[V!1.b1%eElEYB%o8Y=^9:._;eFW\?Zm6NRKjc2d).q"25Y3id'[j7N^#h?n
+,+@U$*ggp_r/?YUd[)ILDT-JdaiBe7*NVVO$]O.fNg2`MbRV?9@u_tgd/p$QSAr0r]+^<*mh4Vj96#(`
+e'BSgjL?[=WT?o^6)s#iDIr'26oBs?1'J:sZR?7;Ida5WW14MjbB'trSiL8&P9JHRMDt`cpT@h%DDFKt
+H^I8`*i6WkW!]YIRp-J`i8U3\#JsGWD2J^_%ph'V><RML'G:KFb^SiKkHM$aR9j%:R&dW'GfVGG-TL`B
+ZujdDce:3tqIZK:kRpor-o.Ilqt"'8BrLB?_P<66rl?n8nOD+5NPSSQ"7=';*bNhKjSV<Eg$&.33F`bV
+'TO%:/7g'f!uUK4EM9>#Z92q"9)!f7!8_@,gN2hiDt:)!frr2OApsRHW^8g]:lgt?3XklFbccQA^,>2"
+,KK:aM:k-:*"[NKc/_5AKQ?:=*!3o:p;VBX!FK:rNP_l,hOaAd&N7E8=6&a&6!)-XNFZ$+#MP2+!TjF*
+iL"^cd%<[,+*@UJWa<YQBlSDS@2:d`1P(Vo`D!^M>G%KN0qRRJ?8N3E45X)/6@q#1VX:41,k:u=]F?C!
+IcdqZ9`$Hng+=sL[Bt_Wl1VC#Wndq2LF3r$^5YQ-@tD@,W<S6l`SRR@8^pr[B0?kl]FAs[NeVZsSW8<]
+A[0\PmZ@GJ!$5AphfP/$m=Y8dZ?AVfb'j[e[F20M7K_JRdkmT_/2BKVdkn&IRrTkO:>5F.2>sidCp[UP
+T=_W&.t0luk3R87$mW2"L0?m'4nti2XCKPpQ%.I3hf.WJXQ'%Pe=#FU'4YJ0Lc(pN(JN=p-WM4aKIrg5
+Un=c2e!"L@7Ch1:P!sGgfY\@/%F)YT8a4=\>glG!g$Cf<Z\pD5lUu;RCrh/!cYp[hgq_%B[nC!o<Nq=N
+,.n;^foeg*#!5(V3gT+!="#Gp$+]u"N<]fgHOmfKF'4(/Vq`i3aP_f8#[O@4TPJU>9#Q:3bsR@I!@q`m
+ERLZ`JjR\nJ38j,S5:$L,9o3/*/]7J5Qm[2P>)@94?H"?A[q,/b@21==>A!KZcK-.AqSpoB*0H70iA)u
+-O"ZI-\+udcmQ'0r3A9S#E3cL"tO^`F]eM0a!R66+VH#IX.@:bc`LOu!DE6<Hg_H3l'b?q#^;I/N]HE%
+"bd*',<RJ/<P.CD/r3-jj=hRYmtq+%V1hIo:3466ciX@u/Db8cr&[Ubd9$N(X9eLZM?'b/ZtS_9i.<^a
+I6E+X[f[OiZj-HoGj^7Y,LWHN^$KD:"iuoeI)n4<_R$AT$>e6)ah<\rFs$B]3g8;Yc":24PO/TsENWdj
+JD@hacsT4Zk<+rRmb(KcZ0FL;\X:J#EZIUS,][Wm;e1)l"E[Y.!:,dO"hfe2mMm7fVVf7C't@f$DB\(q
+kX!:e[jG;c/'/]q=#iFb*.F0K[UrCc6T.j4aX>=iJi&K!IU0R0B.)fDGfAJX-d%=pg]S(V@iX)l$>ei^
+/,oT$A7Mu!dt>uEes\2W=jsPWf%F,&f_J$"T?al@Po3)63]&SIZUd^n?.a&P9#ak09^-Oe)mAOHKpl"Y
+M[!?s@?;4L-QI<1_etFia+HU4n#)H1dd:B.el&P2JGCUpE*\f^5jEWu;W]CU[N7-4SgR;H=m>?F<JE#I
+.WThTYs5?@PgjMlp-ZmoZ+PS@ehSX8QK6^i8s/$0Ae%"h\^tA%bXFFHid9o*ipXj1%l#3+[Z&$>4gM`j
+8b.e,kp"V0@>O/l2m7WR`^<?gc('+>Z>i3#Ss7VsXD0MPj(6Ce;2k=!poL(,W:&Yiebn34C>aZl'n_)p
+;e:doDO].A)!-0oKk>!pHk:J"6&n56\)GEjQkRI#'`!]f5fb6*3;'<7?n[n#m/a"1J6/X4[4?2.gL/*#
+]6Pg<>919#>25-+A]jFO"sW$]J?bffdX#g)XQN;@996YC<Uk2-<N/2sA8'>h.X;7>Wi8h/V/nH:iOZbn
+"k2`TcKSbo\(S_A7cL<q:@6ig9Tk:_;NnFFIrY1S/'[mpp.Y"9rr?^'G5X/9erF[ibF/>7h4GSm*uR1r
+P.H#X*P^0,kLl?<>BW/.a-FJpfGkWRJ3"V,!XRq%fpF06pcdC'TM10P@j#HQZ4C<="=Z)W@2fRDS/_Qg
+IQUW01I;7=N#';P(XkS@TFOt(h)EJ3(j,#nJYU;81@+Go4rBS6JOu`q$V5<6&:X'&)A9TTJj*c@3MLr2
+`B&aXiF\-9Jk4Ra,]C0tBcQdKnQt&ZSW'SnXUh7N<hIP6caI6+H+"RG\S\X"X@X8nSiEoN/$kE42f0an
+)[2*Sfbf[K@gLmS?90/#eJRkF8b3ZS\HBfhAq]+Jg2DC*Mrk"d*-7R*b?K0'B'+tV2#Rmg<>S7ROJr&g
+4(bjQGtFI8YH"rA9kJi^?.7pVRljb<M;;8one*k^OcprL>iM$*j?Y7b3Q<f/'2uu)PoR8mXclWOY.&2R
+ZF,=lE3;3G'qI)2P/=W&XO8\<F+4Vk(V9+sCG+[]TghO:Ilk*C#LaBl0$_J_A$!FGLK_."qlr^0N4S]F
+N;[O\p=-meie&/cDlXD21tDi`7WSqJR0`3pEX/^\$$.[`X(*tZ.SC.#d8(@:6`D*4ML:3e:qu^I[;WJ!
+fJOd;RJuE7n>M_o14<jr+g'&*3iN:o+1amQDE]5R\S_EQDCSn.W"-ZG##=4-lW#$Q2ZhcG&7LDHH3*>6
+JK[#j0sCnAclj5YhLjqN*h>Gg?T#se92`:cr#[j&%M.f]*)MmP8B!<EiT,G&.+!t7EYRse5*\kk9MOT"
+#R<J&or'7'/P"jqA\.4G"1K>Yf&BV9O2$:H1Y`I/C<L)[E-]5Y-`q%*aAZYuXT&8MrT<'[l?ZF96LqFd
+MFPYo7!s.4:']`SUqjPBm`\1@lW+-%,-G'Y@*?]Vl9>UU74duCpE8ic%"Es2<<rU.'9II9J7ZQ+X>c?)
+CAC[C=!b:/,NSpg*H>7QED'b8+3KW?l4i$ib\`[3SGNYN]:r^:e^!JQYW@`,q;W&RV7p7G#<hZ`31Big
+3uo$7.HnpCSs]3f&]GrQ9YeTaqkWu\VhD8@Q.["55I5YR'2'9>6pQT+G4X)4B-K?=7c4I&?^;sV3`9rd
+;chJ/iRU@8KNtDaN:cSqV&I%);Jp!U0q<<;=3->$j4RZ]'o_Qi2e@^I*/NBEZ4;+C_lXoW:LTS-FAT55
+J%q99<+9C[1p6BnLI!7B#>R<Y7<>bn[T@N]'VJP'=IeFSpslku9H3p?=b2H58!]]hocq4Ve1Ji*DaQld
+Z\m$_)TS@i,\6nAV,jcpji.YgQcf;:b6TE!LK9Ao*W+GLJiA#t5NBB.oURc&lVN``GYBP6aproGgKShm
+it^cdifchbA&bWu@A+kXQa(gW!k=4^PIlj#Y4ET;g!fk)A/GS)&4-oO#T:[3C:P0B8Lp?+[uINH7'uR&
+99<4`+\MXmR`9>]fYnZa`%k*B6]Il9K6-tSp1Y>cNEnFu0q.Z+Q:4p.[P>pUcVS<\..%(Mae%U*&,*'$
+Sk/aLUDR@:W,^1Zcn2D(:]Wp$DDnu;F4lOj90L=[0t;sF]=6@b_&J`C<^r6:4]S5<!Z^AJhh,'_Tdj7n
+6E-0qL-'l+BEGB/O`RlX?:ljga)5rmDC0#]3eauIH+.iIShONqOb(B08H=';l7C8PS6Xe8e]_)-C!`ul
+LbfK@i_eemJXsY3'q=Ct25dchcHda*.+XEXUfg,H]T5t@,Di<@KJDR]&2Wc\PYt-4cHg*j(J_<C:_i/F
+0Z#6Y/6A>O]UIlMp9Jo+%W(;,aZanD:ZhZWB)T3Br4V-6hliAMErJE*!$gsIN9WXd0U-,/g;JMg"1Wff
+q9EJ'h_Wo:\ib?kENbVM+YJ$#Fo8;%6uFn(&]_H^!;0/44jKk-F.*EsYnK6YF1CD;m7hING"+fgR;rT"
+]dm-!%9:Ca[gLlVN#]AGa1Xu!($p<Nn]/Ughs)Y%'Y]"'Mh<La_LSPSMWplGArYiN\_VWVd(ci5'lS(K
+3P3f(2`H_YOo`dTZ\nTQ1fB@3*Ec\#m;7sACDW.'`M(a)0f/Op,oBq%i0rr/'\1KTNm>[B'LgJb)bF9C
+G:0rqX64).`b>nDf"6"1$YYfBi*k0'N#_itor0fmEh$s+R_T)R<`>=lT]`QO'scW4SXXr4C,G_KA]Tls
+m+oGsnQRaY_T#^?ZaG%aJ:O0@I-__4nd3<,)$5LM6BaFSFH<`<"L#o$_!-f!>JoGiLR@uqSaC<;4VDqo
+-&':B6m(k7^X`JB3R=@t`9XC-m@M?EUj"3iKt^KN`]B-NX.Ci10@5>%>*`s&5I.C`q3NY2*/s8p^cn.Y
+WhlH>$@7*^g3_Wgj;XLf'Y;aG>^YFAIun3"!l;PT9%CNr1-AA[Z8u:Hd`!8s(#0?fDKGfc<rb8DW$`dF
+qoEtCaIY&j"S5"%2JbPGe^$0e@as(>AS`Pu?kL_2*l`m5!,"kup1@4#5:I]5;PqmH(*cdV!+JM^&paIV
+!)*b9+M#:\"X&qYeF4oh`:b]+(NtdX\N+SnH[Z^1fYhTnkB@.N@^.LZO;!]\V,oH0"lt7';BjIb[&7No
+r\P7\LuU`;J_R#&1F\<3l:qT@i7*t3JKc^#8R2!18(*URZKeAn?tX03:JCW`CGiV[=k]R+_cENVGrGdt
+PK-8qMlJQTi<8(e-j$]B)s0sTNk+eT#^;[NZ,V!)j3okjljC3V0$!tlFOO0%:K"TiLp[6JWXPSF(*!`^
+c<S7j,I5b*(U^gLE?`QAAB&VA_66&:*E5f$RT$6EdmVo\lJ0T`gN7FpdE2;jLEL6,572X=*m&)0>7p69
+\]nG@o@4Ee#8q.rHG(.e[<'YMVN?D.5[feslV!Y2#Aj[Cagco6E&e,cgstakPl0S9Cnj!8\)UYu&f+jb
+<<`t_Gl;@kR9]*B.aKqfa'rm+HA:`d*:0d:\R.)=5Tl4Fc@0*\I,/HYXWil(\$t?^+3KrZ0bsrDCbkR]
+,Qn`@A8THdlFGObdu]LunC!NpE,h=uUUhGnm>/'FAHP!r%S6!-22nL]mWA#eH^X<\OLn#>'ZhCun..Jr
+VGl.=Y8UNqhqab@UjK.VQ8E`M12mi7%YT9gh*f6KH%k_(XX`piQ;&V-!`CmU<6oCA'8l.8[71t;c!:0,
+e25#Xh$r:kZUa`pq^:73rMgO2frLu`;DJV_[-7_Y8+25iqIe6_S>+6YkFlV('XG32#p45h&\WC/V`jgV
+*0lLXh,a+(:U"%RBVRLF:*D*.NK<Xo_&VCa.SLFY9IXk``n6!/+_2V&IhDNWZUY.A<jJ]&<SHr@a`SbH
+Nqag)Phh`8En"%'>T$aq,NKk8qpimY1NQtXct'+F"\S0"Qp6QpAAG.tN'Xt?BiC3,kh,kTh$.Qd9Fb-%
+nL@1Pg1HYG;np?:g+9<ZVgZc\aWAI%1tlU\b!eEO)Pap$4@O^V=3+bDos[0Q"-V=:!.)70B&J[G4U+Qk
+aKIH:CSaqC<h?!Q;%Rsq5gLM6S!JeA-f\o"pohRnY^+.`2K(c]L<uU%#<3_(X_DSVU.UMO_]A8Z1+Yln
+F25T:7<1^FR=WBRg4tseY;s8A0@':Ek5CW2?(\6@E[(M`aSYSh@h[m:;ihdF#V4MX?^Tt_`b2CiA9c8P
+Pq6$!C`1@8Do0#KfG6U5k!8.uEQbO+4h.ToXs?Lg(,m3QB-6(tKL@S6?%l#`e$sPuW$d]=Zg8*V"1j(d
+^HF_7MQUQ*%5]g;6)mGNBf_76m8g]QR0au%P>Ya35<6,M-]>W)"?.a2rN3$"AWn>M)$"jFH37KV%LKMb
+DjE$3O0_'uFH&FpKb-[]D[>p/a@nu&kXk*#CYs)39m&Sm/$_q[7jXIZ&t#'"`6qmQZ7mocN`UBYO?6N1
+Mi'3f/'-M\]b\&cPC\o)AgJHjOhgnY7Io*+DMo6oE2YNfFo1lgG43[hTWUtalton\Loqp2D]i']$^Lns
+GkA,K&^5DsKt>_ZKT)j!+HF,bJC2as4PL<q.`htMJ9:^7WT6<Z0p!lWP`b^\[sC%Ie=KWKh8Hd'pB6\n
+_]k,rN):J)U5p>+?gM-Uf(u,(QG+N$ab0Sp=uG$lA(2#metV;%i3tkK00dk^duC1s*-L"rEEr!\VN(qY
+TNa;'PMaQHJm:hAp%m4]$+lUnhD12G:M6V/`_j+B0Z8G\12t>6TmEk'qUJ5H38]NQ[B+[9$)2]-fcZU$
+G<ks/EV^Tb0Ph5c_OAX)>/8FG['(+A"$MDBA=dS/'*fBaDKio&5pk'Cca@9,c-$^0.RtK.JAkt7TC-_a
+$>9eR0KF#,=3,nnT5MG!o8j:TdE>r]Ls1Di'ZT-YT'+t.R@'Zc-(3A.d?6OiRW>7'MMfXA$/HFEZgC#B
+fU,OWDF[CIBKS@eI->k>1]B33+SeT?qq\SDR',1qn2Gh3"=^Wp\:B.]K0f&*fI+(&.KW`WotfZ0PsA>(
+OpFAVOb>=84gRBTR6Fa5<K]Ue.K0l?cic-qA,/XrNrTZXTF.?l7`G3Wc>i6r1^#5mGI^e6Jh$R-'UrnT
+<nmF*.rHB;Uu8<YX=Yh^iV@!Kle``Q=`PZKJk=p'R:"/T47eT)NdWrg/JX3MB=bP(ZDf0;\,c0!*Adh_
+^rs`!S;kOf`=6]OD@q+9mQ<*bHW7,lMWN\m_<4btEegXfX[mCtI"</$-QnFaGu9u/Z1G+'XC_D3'H%WN
+8u7tZ+)r5$TMa'jl^@g2Ef#stjF&EX\@k98#GCCjJ&6c2XL#3E?^<tW!5fr;kI2;$eNmHAVUu-AUI95.
+L>;8g4CjmYf\ENCAChlEe!(%-jd1HKE-mp3g\'r=c>=`YkK<f)'YYi,rX\Pqpg[F7\?rZ4`[csqDIel=
+Bd@Q-'mG&krm3l`FlBC%Hbh1(`r:hS#^%(Z>H7s$X';B9gqtii:,jP?805=F65,<?b:69,i7DFl9FEP.
+\qkuM=o070HMc/^kN.h</S&6RQ=?)!-"6ALp8[1=U;f*qZQhm\aM@507I"mB<4Y]AW>Y.D?>=1q.".4*
+b+O]5hiZKr;.c>Se;:tI>uC?DU&*gICI4W2Ye727^+5:<*d;]JQ7>iGMVN"4;EW86C]!?[:Gm.n-]UbF
+YM#[l-Ki>uV\XkNdp.=;@[Up:49L_c575"/S;t@aGbXIF13q0/VFV!`T`o"M4]I_!e8`9u`$r$cYaqk;
+XXd%uLq;,tqF9nM-K0tS%WHc`3Dj^)cueJPdbS<=M-pee`+,eGnNCqr-[+*O-T6,$;`#udA,lUR3q2K"
+V^(i4k%(&hVG&l)(i)(I4fX%NhI-Re05s'iWP<'RTJnu-2"4Y!,K:RPON*^L&V6NJ@ng:r$i^4[ch:)F
+GlGq-iV't;r9<gY^W?:2j*UTN34[i0X7f)9[L"1!N1>5rk4tNsI*Yq:176n.-8U\[D$TPfk,lX!'DZYR
+<?6PWC>An1nh[NujUKaAJ^%DV!XqR<jros>b7\h6ZN8N9q-1EA13(hBBq_ZT')9r87FSUeCoj4OU&2/6
+cUJju_&g"+A'WeV%FOcS_AafOHr+a!!dRs$Mn6pDm:dmnE-_Ad?JZ0HL/je.5)[nuhF*fC&YOPM</dKq
+4L0.=3V9LuS5cV>LBbe'3fA3F22).d_MF>+6C%_6Vl;Q*-)$U,bfrPBI58Z?o'UD`>2iLY]D"#hd:<.;
+(dHHQ;-,T<d+aF)>@T%H_IYesJhf)E$-u6"6!WR7DaLjrlrmV;7GJC6IWN-1HI]s3"F']`m^Ce%nL5H)
+e/8q`i7lRt!%0n?KC(o[BUt["TAFP)[m$%8q:V5qeQ,(J[>mm$U6:,<e="*sa%!\1_K4U%Z1T[jbL@cj
+%hPf0O[hFn8$-WDk\.FdD\$SZ?g)YlEh)rem4+Yd+##_$29e#%Z*W)pDlO6g6e8'&Dk1G^"u(4Qk'bLM
+o_R.CpP^%OV7N/7:gHF7e8PeK0(V..MuYnVA(IcuTtt#>oC%OFkmj>_=eZjn\S^CCf"d&M&Pp\qrftks
+bHQs*!!$g%p1m`4,?_f+BNmJp^7<\^@-+mCkj(=63XAlc@U4">,9P(<>pO*\bugJW!T`mSq%9<,GoAH\
+TGDOSI8(][$0#<RDBq12MP(R5-$GK++OCN`\KI)pHfOdtEC=gk892tuJ[^bu!C)l"$7mkM>`K*q,^5oQ
+<4+1Z)'/[S&t:HuBL_B^&^l:u6,b/p=J6/AJp0EZ*gnl^eQe@B:@PQlfagiFUfeW6]dNpYalD!1!/<g0
+5kL]VNTNZaNJ_U5I!68*AB)>bR!rWISpdT21Z*9Pco6F[4ULk`jffJ018?n76uiQ=TRi]jkp\>B40eL+
+QqW-Y7hZVIrSfo-ZT`P'pX1D@Tigh/It&i<9N4!EF(J.R>[2^O@@kB55m?r0KTT]b;PPao4+0OT\C"&S
+$rJ`s?#kkf>.onU&Qm5`L"N:P]5\gCNni2YEg^,d&kPpDH84\KQ)UB;'X%`EkHtF,K:b%gEOh=25,/em
+C,:I\YR?`mI(^p0$/o#t?.+;Fc9ATE&Beu1A1AHgkZ=SbS;??NO1*0k`sa7o(iCH;RI<L">EfcWiJ:X)
+PmP@gN][*gDHA\QU_6q4a14Sm/fB/O^%VVjF'8&V>FpL3)YbQ:J&?9bNu;W8l8JB$]!^&)K6q4oEu_X[
+0Obn1+>>=.b)sYgp#b3b%8Y/3)>kZJB>EsVVh4*`0(`@RC.U%j%HD-]A#3qEKDtommh6>W+Qu;b]<E%7
+@-4#f'XhW?4tH0dLV16K')5u6HGp/"WbC<b/&jdC0P%JZHe5(V46X%39tLpnrY!`:m:Xr+99aBHFZ>i8
+8<9b,(`[m'T$`0\UK_&,bmFh_W,<AMgp_It/BW5+[fq7"C88=%Lf0\;`0eX:_N5dF#9LB"Rb>dlQ7]Ef
+73q<@<-:\9mc-F"HIbQ5c0/ucF_bZemZCnd""ua?+"6D>l=sBXp*i9INVA5=YgV9>G2XWr8XB%#$a^C=
+!<gufnP,K:)UP7:;**Mbeu^(N,d'=.+)h8DVnG!$cGeC3hd9MhbPUNHD=^3N.WV0mHDp,3:!2)1P&&ck
+6fa4f*3,V*k7ps_2WZs*eoYS9(<5DXD8;:KTB1skg2.C9G`)@T:=JXl-NY+mH^<A\.VLJL-C>isi-d@L
+[@6)G=7&&EXX%e)5$m(2VR+a9$TH6&g:a>tQ0(XR9SpA22L5nNSLCNFm!?_)gWS@5+8P+"!0K3LZ2XeY
+F$IJ:"64QsGlBk@]sP:P,YN@^Z95A,(goKWo=WEEbkE6_NuiZ$&?=PUb:Z9_^]F4?($G,nBYBO"@gI>Z
+!._+kpsn&j/-uHZ)2O6CWd<.V?o:h>NM@!%1!WNMr2N#=fgZ0d!Uou#DT_!DT+q3@eY0bJ.bdU8a_u"-
+ZA0Ain'5^D#eHL3`W#pkFpY'kEq`Lu!A2Tp,-4ZQm_[_B+&Y,&UV^?l*49N>m!CXIB0GF6N2865LMg"6
+$osJjo&Jq.HIQG8En#9Ze%W=Cd3BkRB:(NIQp\nhEQ9q7S$<?A#_8+=e3&Qq7:<*+"#)fqEW5Htrr@;8
+1-9ZRRc`,1CsN%\:Ua]9D$uI'P0Ck*V_tb?%Q=+"Bmp,Lb`2pGk8on^>j^a$%Z)`TDhdG8^$D,-PZZ]Q
+@HDiA<]SY3'ZqV)qR70gfpgXF]Q.IN4D1fI6t0QM4M7J)++MIdT)SeM=")Y^Zp%:=R3dZr/HWt6^Q;JP
+]*I!_p7Y%1DL&.4<9ZHiM#8E8:]*khT&WS/?@9q1QSIM;#Ne#*Pi/?Rp,.5+A8ZKnf^7N_+\+I2N&DC1
+4Eg*eQBGRP4LR@R5koYs2SYP@BeKXlS[>9EN:.H7ga\pG71$FL>6bV"m9OjHU7I8'3@ue#_dm>n]<um@
+CXB*7(`t-ld!a:a#G7B)f!L+[@%,lI,L5qk6s"\dBsWX"NhLZ6/$[hUpfo<3THg%I-u[g.hm$hC4q#nA
+p=UW8',5d5SEG&WF'`EGi\\sZ(.$58_=rcONqf\K;e3/UWoT;S*2.7qm@"Il$R2.p+\[EI@@@18)aPNS
+iuF]^BE=Msq<C35P=b*DM7@-WOU1q/<+d9)`Fae>V/.1X8uE[<q4#a4A7,_Zij)h.-mEo5OH#nc:BR_+
+.kHn//X9-kYMRStVZgH\,HmC?S3QOj<(BAb(X=u_[Roo:!?Ut7!1o>P^Z/#g#tQ9`0[D@4%s(_0J4G^h
+(`m)+b:c+1:^J@b.Q@bG/aZNsJ45\VBY;,G":pa[q:#F;j"Z'/5;R6bX6-o0OhN1E<[<tNO0(TF-aBR'
+8Rf/3Id>4W]=nRR^-tnMUb1t723TC;G'%&_pWX4WTbt^uq."WXJ&8K[\0AGHG^RW_*%LVgF'$M?7Khmf
+OtSOp*1W9Scdt$CF0^]c1!]jeg+%AEF0YenUF:;%kHNsEPXr+njDiN$qY$T2OVME\P9WYhmMl_-Bq[L1
+FqR@2d=JY983W;V#g@?ZIe+alGpAp<NFk&Y?1**K%)4FDSYNn\:i9)jPBj;>H/6Nce!_>q>E#"M1'l$Q
+XLTU!XA)AkJ<!)?CWMZdTLO33nWT&M8AR0&\b&,("[DL5fXhf`BhH-Z=#_D:CgY+t"jDjr(]G36^D]3L
+W-C+)O_q6R(f-gjm@Q1/]g;OPOH,-XL0t!,%^`08Pr>^BK!G,U@r\UFG>d#+*-f;4nG`KK4;BY'QJi`H
+[Fq8PeFBeQdeSE:4En!-_I=`L5&JSZ;b8lhpNDi`Nh=&V$Z#2c#]hg7Z`#+3bfX/\25_oaPhTi-BN@#L
+\sZc<MiB"<]VZXK="/tB3s(2oJ7mD,*2r)_8#X8`?%54M):apUJJ3At3X(n%aW=pY>bCb(:fe<^-(j0B
+f<C&^o];,'O3.RngAQq>)&_aDnsT&:Hl?;QWaWKjof&/hPeh,N<Dg*B6/BOqmL8CQqcf9sUhW;3,))1D
+47tb:SBUf^gKHkn0M=LOcML6sc:6mqAE*Yh&raL`9mqM4W!%;QbIU,%!%I1g%Ok\^[#8llqg/OsFeqFp
+!i-PWo&lU8.9!2)[G9""HW\iY@CAJ0+rPIe7r%4*>CktO/\.&8k2+*/3o%5ZeE?T;6-hpT[%SOFaT8;M
+>1ZQ%eUCPX&<5I_X-;[lJVBa`TA.U8a;La^*9?8cnjgDT<Ss''"'QbJrLePq/'f;Ym2u&Nb4BfT.k?+:
+E\G6)"644$&&\oLGho-X4*XPgLZU&dq0D!8q7^Dnh_WuaZ/s;XPK+NQJRfCTTnrN)Gi[I+FqI>@&dt!\
+Bm3#qQ]hQ22Ng-3Q)D!-5UoBDX[n??+"fuH/;src4g73d\I]&fmbm'>,QiY#`dPf9-jogplXsXSEm:4'
+'$:GXnrm36F>^W)j5WePeMV25:^NS9)AnV4"LlMYlX#;QQH%6\kcG3Hq[Z-E/V*j$8$oZ:Zu,_7=!Sbq
+MY_W2;+Ce&B62FAHXisfEkI*lHd(:P!Teq2arBSNnrG%07m*9&fIh5n4P=E]dQcOh5g(kLEJirA^4jQV
+g?r_?1,Q59b(^5*-^&MCJf'W/*"J7@4l$C.Zob\P,=KPq-K#--'s]i[,?Rb6Z3lZ(>B0"F9@siiTM3ad
+-..5cOE8M@lT)[gq:WB+>cPmWhICOT"4JdA+%j@e6eKnOAtHk"9RPk2L)_,f(mpV188^t]0VK=#gHEC5
+25;%`QOa=iZ[VI(,aI_E^4rr,MGn^]lc(X'UA0M]?6iQ)"DkYMW_XjLYVre,O.1CpPK#Wa>/sUeSCu^+
+Qm]A!D-7K[\\7Ueqc7pLU^kjl;an7,#n0m=7Hm`i$Bjq`m?JpXobc#g0B+QQEBb#9+dD3I/($#=hX\NX
+R^D?6f+8Ve)0k5:rS1m'o2e7rId>Z!b@ARM9aN,pPJl0YaO`6(cZ=K=O:[6c41<KlOcDH)ke:=*Us@0B
+rk>iX&=E0bo%6SW9U5O%f/7V<\b',Xr_uRR\QK_$9*9]joG,/UaGX9QJhGD(7L8<G@dK&ZYpY,5d>hlA
+7ZdcQY`MH8]aY$RTpUoZZD?H6#:&f5lt=V_`'oI^-9Wk*\9"pVWO8uZ-O0^\A<f^3*jmJ8jf,N4*_NmH
+YnaH&Cp4CAN+8!53hNN?T0"@Q+qd(2"\qA[<:V33Z&rWoR==A\K1@+B/8\/G1#@pp!2LqI;H+\ENec>d
+R=O2)N"G@Z*.^\!"E6oMO>2ml:VCH8!:s_m68N2K+aOQ<`F?W`G]s4I_o=H-d]/nMJX8B!3ZZH.81j.g
+Cf[9W'2(7\(s7p]gkf![[(M@pEC#/W'q,@9pf.[^NkG%XAN-#d"='GsJnfR.>jS?toLrguEg'o"Ip/QT
+RAQ4(ON:#LNP&aCPljEhm`K_NYE+p.a0c)\+S0.md7l&C+=]Ep4F0gjgk:AeMWBAb@''XoEm*OT),rXQ
+%Ck`TR%D:MmK@6[,(-b.N;DT(Womst#k"L",#r2%N[b7B1+k1*&enSfl(6n'2_ti`k5Fk"]dhePL:8P!
+j)?QIpSalAmF/IQb)H`;0Q8rm,`fZLi3;i6bu/qh_ai1J%jQ>s)l!\Z<:c.<^H:h$:>IG=`I(/%dmLV_
+aMR@.QNa__JW/.ceG9"8K_PSEHth!pF_qro,bGf63.Kq?nK\&">[sD2h7:g/7KH(?^ccJ1NZq>`oeVgG
+9cojr'Cd*f`RXtgLHIhVe&9rT`7A,SO"f<L9+`WoF+DZK*"Y/4dSRkOU=Aer9uZ<me%?j`9iC]b!):r%
+[^qdRc'BcSPuPj=K=TtA!d5&JDP\#?5BXHGd4`A_):(,olLMo0DA7@]b,pa"#QXj9YMD4p<mO.]4:N'Y
+BX2N4k%4uXW2`VLk9M*_EuEf#:7Jd4=F&WUK8rI"8ed0GAt>BtE<o6e>%]+a?e2<5Anm\'7r:4j1'#J4
+k9LYcH4#D,k2(hVbGHej3fBRfN-0$nMD&DKZaeAhEr\7si<4pt=[<CiS_*o^O0)hh>t?nlFZ:Ot7iMaR
+G2V9nkMIY`9f:2**",66;>XmnM2ui1*BF$JFLb3g%B3$HZ5#fH\f[.4<3<sRd,hUAnI=]lOu8&pEHdtY
+n]oo2F84=lK<PmXf?a%Pe8seu\^)<uOlbd)hs44`MuNc%m!k$HX5iS<'91@BO8J>XkOfScVI^k,1Y8N&
+ep+M0iJc'*nuIn5576F+;Ii)/-%R21U`*j!piSSo9N$PSJVG('Go/\`E\U;5U]`I*k]a[rgJ#,@Lm)f1
+b^'<1))U;)AZ-YgnWN>+_d41l]XJDqDfHka'?B^+gITZ6Ng6G#-R>;8)Vk+'6<Dcd9r2&c+h7+rA%K45
+5$`^Z0iP\JQ0Vjqc-!IPQH.M&['u65QJ?:rMnhQ2;"9UMHM?Vh1X3$LF1o?!&DFpZ+r(FGo:521&36nn
+Y>/"Ukfg@p6_puM2"NA*V"k5rH7gmmc!qS@U?9"o4+.mu'j+Ho+LY8U#'o+X3@;=cOtqA)OW2nli2Y]9
+oW,6J_s6;;H(IGo),6r&1&99"I2K90G9Sdr_DHPZpGjRs`<"Z11N$0OgQ[_IPmS*A=4#3sSed(C_:&go
+?TC-^r+f&+3g&N9FFIH8c&JhEr1k"Ydj4/:D=80(/%,IQh:o.teNBc=%hr_ulIm#QVSqEJRpXsWncZ1/
+8>#BZ1[S6a1atu4n6VoWRK^#W/L%O<AG;";5Go6e8D2Y%Um>AoX%7aEAN3!'O8D<$MfPp"bg_/(*kH4n
+/M1gNRT'A,;&NsfPsueJCX%FIGZT8no@XS,4JsJC91DfUEJ4N/_=auuDjBN^/WW!ED-Om2S6,Cs9(k#5
+M)-#S4!&a/.4RraeC#89T1SfZ</X`)D'spEpd+%oF,sMr>T/f3MGn.uRn1YKA%uc26Geui+I==7bKq.1
+`g:PYREbiT+%ct;S'\S*U"d%<R".!]5hlnQ)(ZJbj6qWL*n<BObV:39:]LlcK?e_d:F[7p]X;R\43p/Q
+AuMkU:7X=f*<&nML\ZY<;?dX9K2+fh:)No`'mcJ/N<PK2@=ldbP&RLjj$(,E!+KKL*b(\SPrsj1(sa89
+;9N>kN]jK&8]_eRVjW)EYN6jnDK3hZf<muu#]A;-B\Z![L'O]YUTbThRcWRl!FVtW4\qnhK_?oH[`aK]
+.U!'$1!:6;n-J$\j@0?UXkLs04O,42rL,/[6]Oq.2fD=.DU-%0]T"DGO!B;.QkR;RJQ8(nR%KfD%s'uN
+Xs8KR)VbXC2KGJ`TO^omnosNUGAYIc4m4Da]aE4/S<.:%nZQkW$KXoY&T\icHC!JDm@"@EA1HpSJ@[oF
+`d<+oVLtG.rbHe!Z,\)'qAq.^6qT/9=bMI8Khue#psO+NS;>4"rb2_ue,i;8!.*SQ(/]6u%ag:!#Nd$1
+;k"[H5C!U=G0/O#lVM8-cG!=SnBqeD#=<bERCbnmU[0WC71GQ8Ug$;nH$6G^!QX^Agu&\8iRaDP3b&lS
+c@[[_1,2:*<Q@p+67X7*fXs=j#U<.n;B7O2*0,?/N;(9lcHcOdbPO8H4S[2IeS\Pd#^H3c/8;j2FN%4j
+=$`4Bl7e0\`u>"NKiVS9]0+\>*(6dm9@_hqg%"6[r[[mVenegjOf'-5\!SOsIO==,]uH[,HbN95dBOWT
+)l%:tA66$'&K,sl;`^"<4]B4i'=@c>(>2pGg^%aSo*_q7E]=AIME^TR`dbUjf2AQMEk4s1kIEKk9ku:-
+lu%Hu\Hb-=*-9RHY.-)p7k68^asn-/9'/AppsjE;8HN-RL/f#mZ@YqmGs-_TbZf\(SLE?rLR0A6*_(UM
+P]IEAD%>=<QZc</G14O,=BH8&#Z<tHF.,it[fh"%h#pPAmJ1pZ;D9jei9-QRo/1#6%ef0'#L6f;GqO*!
+n%]W'3.]DhjdX!6\D+CgXAJo(])q)sUM1Xho<D^2Qh+@1+"5IX0hN%*bL@ELb\]3tk1++UJfR$%+tI]P
+(3.^Z@ja.i/X[Tu=8X<^DKGNY`r?%EF?&j]N-4fp3Dm!U+.us]6GLH5=\B=R`FJ"\gm`KQ?^PG4`b27g
+250$tZEG,_mp&D2W2dmP"-PIb?Qpn<g>=O&D;8uGLH`5e.7%*nNKK;GN_!$_+!P+N*o6GaeP_-TWAD>=
+1jHn+8<1SXdr#DTW8$]Mq370bjAf'8Rq_LONouOL5$KUS`<Q=j9hT_I+UKqm$LX1jZ/kY_@kYaj]CuZ?
+)US4S$`LSIe1N_'<tWBGZLhUTQ1VG_W2lFE=4Gg9o.O^b[+^C3W1$&`aEDEq)(1;>QSAc<;9[Ejg7>*4
+Sie4e_@`BMV&ds(f^pa6hJjB^+[KM/SFkRa]$=qHFYW]Z_mkaiD]Mp:T1TAL*C`;Cf5Bkl,7;An"*[,Z
+iub*'$p>AALp'7Nbn@8d@s$CqIiMH\$Hs#PN`AWrE2,Vibb8II%-t?(V-BgTb7Y8\LS=-O<:7l"\sVb(
+-Xm=K'[?Na?GuK^[;F!Dc'[AHG"TAjW;1c>!0%I:$PB]co#a"F?$d1=+0@lb(?^oqo?!^$[oC`"e[2tR
+BX*9*lA"E/iuMm2"SFW8!<f]$_,eDJ<Ou4L?mG2MF5]n,[CBR-k13aT..eiWfm!Ujoe`>Pf;\qtqu\db
+^)#,!d=AjW?>Fnsr\c,IGC;PSAUbgJnYVhCf&7UTXGD=K4WKIm*,oY+eoBJbG#g*j0@^Mg]@,b\mh6^s
+g5JE6=#0%KF6Em@hA;<^P:TL)Q,)=;bE5C2?k]p?.FT@:CG@u/KTY>)5YcPC:G`oG/fDhU<D^HK!RLA7
+MW\JXOecSj!EFG$n5%XnD?tiC3tn49Qjf)D$acGek4TJhnl8KtG;m28>$#VqN,E(DBH#Ymq_i?hbWt3d
+1`J.+LB+8a@tmq/K>F472CW`;_LN@#!!d6VTe\0DB2oo@Q2:3Q;IDX5-NN1Gl70SY]+E66QJ;?f*)I6l
+]*'c>8'4W2C5Z=*o/"^1AnXb<?XP7am`4R\ehQ7g*r:%N)C>K;A=VgI8u9%h`-)d9DH8a*Tlf"`)&YP\
+c"u3p$^R+lq(]Z0':9r+5"@/'Q32_#ee2&.!bda@"eGmQ*:1N)gT:H$ZHNL]6Yc;S[/aiE3uu%<$I-@_
+3$e.@!&0h8N(5(c%,!dn`dt87ZcKp9>UU`V7mfui4c08p8'8M[g_#DI=(<I)+B8Q.K:Y4dW*>SGN<;6?
+LO5Sn%L:-r>EE<#?7mHD@Z1o?;kMR%8@:?sNGu!VSmlWXG&H_pB,IRd7Y!*/A]Xi+\/?Fp;EIi$XiG^\
+$'Ft-Dnm;!p%9T#<Oa8=Z41lTfNJ#h\[o>/28eO+G6@]m'g<Gt1ju&!-+m&@bC^3X,3.8p=3oE\juY$i
+-'75E;iDBB5ob],*aO*mE-oqZ'G7='6mH0%(3W54p.oc%TS,b4l'd(5Vr$W@p6fd#G^iZr2%9WW6e]\c
+2S[C[;S\F*80b&WXtj``QK!sXr."SLl'$On;tqNr+8A9I3URf!r!fZe5>HJqb/J:<WfIAH_M<>H?DU10
+Y4uISj?`?9?75N%i;I]V^qMVQ>2R7VPD`SV4f`JLk+%1[P1X$^bnTG=9FbjjUPho7*#4I!nSQc0H1L`?
+=+i-?M8VSgC/jaX]W`HPMX?%:7m!T6Up5;=e)60\-,'/r>R;.Hhek6p/llQ.I0c\EM57HqTj*WIcl6[)
+#M9N";.XdEWCgNRDh^1$[r3T'dhTO:`:h43XZ`.Ao/E@X%u=OAQ",R#8%b!V84`[O/+Y\%4HB&=Y!cL(
+eikC]IXISY]ojf!-^noW3R5E\ETs'//oJP59REm3a3Q5*EN.Yr]u'd4`cpl!U4`aoT<2e$mO"ZOROHZ:
+D8+EW)u%i$)l&9MQkUd=3@&V4.s/0THPGpkMu?t(ZaWKaYu_#.!-?IkoZuK#8h/'0(-gal\GMbfDt\D0
+1WFWerr>i$5*_,%DuN8jhoE`ZplVZEqqbAG[m%Q>Cff_DO7AY'Eh5CP:\s2sqZZ5Va#2&`@4<t,a@hV6
+!:D:WZW4%M'2,mF3SF<WNbdiPoQDO<E8-"Qi-jWdT-DVr(!h[7.c5_ipp/jPLG9GV+V"_:^s7#X]'-aO
+qjR)PWHZ-Tc)0].NiM;>h6Dt?N&"O+#8m-;Tu"c:QF*4/IF)j1a._3$`)Bp(?/+hPPHK4Xf<#JsRE`rG
+Vat]C[4B4;PZ[=Hroj^Ar:BAUaGC9`Bf1<!*173n9[5HlF"pKU?7OJNLFHo_@F=,f2Deu3-Lc5'"#Zdr
+Cq>C]fJtPuPuH&"ELHmfDe:nOq[)!saiPNM`,s,'+Ub?%7nf'jHpc\@`Pre0B'[eY^o;_4"4.TGW#SE3
+p"PM7L_*11kSVsoqn]WD,A>CCn^=Nk5fSfDNLn]jD_W1Q]>.^d]RsFOib1UCSm7OU;kCMlW,>!=<qT,E
+K'aS-Ppd.^nbhQBe[01B8>IFWo&c3$kYg73o_5MU5tMcdG8b&P>hUIf0a;<MV7QlM:-Ip/EG:_>nHP_D
+KXBcVdmkBsKfEI2"ckf^8l/ac"3l3$Ge.e'Xm%0<[T=+m7D&>#cVoc2<n#YsHQJHU7;Q?IdCWWrV86$Z
+Z-XR[>d%4K_/h,u=nZ(E,?M=g[?`XP,scNhK:SKdmY#bd`kAHrkTf;n.eP*qL#3@%a,QkL<s;$0$g2,o
+Smk_TX!RiiEKA,FE'_dm+)5pIQK548@!/Ql(bQf5iI64dj7q)-JU>U@7E9kk[BnKiH1%i3@lOT(9k&X!
+8gJ*YG6Y1c!Gj#u)P+q&ZN<Jn!$P0c?lB50A6kim,^n*hBIfX5//[IATU!%9[>6-6mm4L)'!$a".4`I\
+\>eRT1bsn]VnZ*`n>]kFCiL=3GA]LRe8nk%Zcsg,_L\u_St,N:T.0n%B-Bri4C`S77i3W*(oho`Ml=Rs
+l5Z'_N"O$/5C66jLb418E8j;'i=0X>k[7`GmN]44m=^:C]9uN-rrA@P$bNT9kM!53GsJ-OY8GsQM-bB+
+i#]H&`[WWY^s"j*TfC2fAcDarX.E=<PL!u98aL,bXf82>",K4,m_EGN+/]gsa%.K.G*)!a5;ums)4NI5
+X(<,3e$hIrN\aCI=$%fbPnZI*8E>e\`jR.U0:ejmaAtc<&"q&:WT6KhZL"m'>+"%4)^"gH/d=DfOE-CC
+bfm800H4h9A"QHA27Z=jPjTK#(a$@Pp$J>b)j*6\X:_@qjpg:FARW@ZR[uo)\O!$9*L]s`(\"TuImS-M
+>8eLuJP!QFhMDP*c=^d/]/HZS",$>hSiPrDEF.`gY,H&LI?*3.6]K'hhhq'FGS4)%3o]M-4UqNL,6fEA
+.=j<X/EHXIcif5),6sb/8<-m]nre05>W2nK=p</j=V[9@%btHdS7h[q@_!)mq"s%EK)R1^EbHO,r%VpF
+4X:Kf10egAB-89I[eE/`Z*GI>IU\t2]3A49-oBOA33+-l?P7ekq"N\ORGqQ_?Ks`e^(XY+)X^_XgK3nB
+C^FN,Gq3kAY"<bp?jrRW[tW%5g9HU1UGG"QYM&78CEtro)MC%#W?&lGWeAH40ZQ;QIUsarCA2CAKghuW
+,i[+(mK7;L">B1<jd%0O5V(-$[m-"W^!XC&(iQKYR,r[ogNmLM?*VGKbmiIR13Z3!c,PB_(1iXeCiT'P
+T>M'f2$A$/F^kW*'1Z\YFF=?`eJ^]RD`and#[+[\jDOdALoW:Q;0KiPD*5p]/\h"5ouGA,TH>]X$4,R&
+e":r(7U3AS-*F#C4!\3:rrCAFFaT>,%(7Xb\G`+B1UbYX.Bk1l$FsUIa=oX#?>3H>UZE+LJ$J7qC%B!m
++8gJ6K6Hq-rrBBN\EVJOf!rERJ+>e)q"T&\:"H(GW<Io/qHL5a^GsGeNdD@CaRR94!e0M(Qi4'VCRC,]
+;J&T]RWc:E#!-;E\>#:B&ifI'o+:7+)!Z*;[hQ5o13Is-o\1>^S_q&:,K]87V`pBH=3tUCp:Yl;m\P8S
+o!"^"$tl*k*]quS9+N(Gn%($?T#'Bd36%GbgE#-VUh%("puED.n",g:(eSNp*4<7=[c6F"*?KRIOU8D(
+.g0e4/[p[K*9X/E;l$"_0U>b]D;k@;7U\I(^3F^XS]<]P$H]n1JB\`^l?DS[PQcpVlgh8f#Lq;@>f!u;
+<XTG\kP%Y[5:Iu/[8EEFZ#E7oGT[/4m5,]NVRI).[3XtV"hXA3'Xe+*dH6VD=LNf<<fU5Vgi88o^G]i'
+ZNJh_XC;:U4T.L]\J0/j6b&N$H&\,/\B)Yr`G<VP;D>L,jT2NZ.iYE:H,>^/C=_K0MO']]\3R&kKP(oQ
+3<!$^*iR/kDQGFW28lY'pkg6NO$J/kYuK?qLQ:B,f).aZ%Bt[5ALt[6gbsf%o3E'dRR:;Lc[g5GT1Obb
+%YE'7E_(MB:Z3A7SS4d!>Oa$'qfTTabZUTmjFoPnN+\_2d\Ns71H`QB]9E,%;7T[Qja8&P+`Z:;b)3M=
+P<GM\_ufq]:5W1T)ksL@q03m?\^ru[S(LisQbmClI?nZ)d%E.L*b:h_cS\;bU/+&$I(7]tOdcGfL*Hfb
+`H+c\l3C)42V,d33&k19p8e7@]1As\2TULmG]!@K>+S+cKldS/Z7baq020d7J=Ya%']ef1*GXt\*0\O_
+!O@LLB<F>Dm*Yo#.c2Zo>D?bV.06*)%D-n87UD^H:Efh_S\k[;4\ZoPBOGqJ6Am5;+"RC7*)Xe8E($KA
++-_h,^uOp[i.tTr!9@`\,<Uo,nZ:!WUNP?g./(\b!(WDEId&,""SJDr]DYH3)l.HZDMg2@p;j&&XsRQd
+?qeKh2mKKq&IN?cDN&7l"t[]OJf"7a8$bn9d[tCDWjq#LA:a,NhiX^fp+n"W<FZAoPp!PBhi2_0bS^g8
+,JUmW9rf6mbeqq^SC&`37krV??J`tU<p8EH$<]$M2H8Uub&oj1CWXTHS0K;]ZTBl5e>0;'VrHSDl)+7#
+AU!id.j&^,.q&a6\c<n`p#`/'W@>mE28rBhH5p['Zo80fft9d=G(^s,*<gbZLuC!K\!j"YLWd;EnXjPV
+&/=PR-;U.A38n'UEZcjR`*iDWMK6o4Wr]Z@KDDd83R9iYd]8T;?G"H%d/BqR!^p95A[`WjB]T>\Q5asf
+%!)q;2W)$91-$%N04AI[3WoSt-f8A,ESiqL;KTh51LBVhgM4sCkgA@>52Bm&PiOL$M4#"47+Z;t:Frb*
+iH`3=KDO+XWtb1r\bm&fUJDKX?HUA@f$MSc=jBn,6Dls<)<//I%3Ud4[FG&L,Wl8MM<N(.IX/+"l6Toa
+[k<,-%R-*Wj`7u<O-j>S1][.fDTU&l57V?-l^.F^LiNYCGu7t?XpV?)$^)$DoVPI5'G2NW_G'+tPuHrK
+o_5![g?7gQL_.QL$t>#5iskb0M)U/jkX/liT/07'nt-><Fo@]1mA@YnRICCt1qsTqH_1pu2Rccebgr#1
+o1c'nZ1@<;TA=&HDAR2+e\Yf9>3oZqPA-U/iGTObGfR[fZWh@Ve9%lPf2f8?@Gn_U&FmsTbo$Xl!]fU_
+kU=t[f];`rK\l!\GHYuu@"fn;QiMI)>R]4m.[!K%AYn[<N5-g0+bYT576<ucE_[Gme=O[=pE'n/&_YiA
+[\!oE-rsIf%.>jcB$YeJ<+^#alteMZa;6+IOp9d+*id,>7PHn#<V)ppg=@Z^Yr=V[>K@?$,l;bh*I7^$
+#9J)g4GT8=*^-+gmRp7e'-3(5H#qbka!\UV&R?I&68$6(,:gsdF-!_Vra1l$bi@!gGQ.ZV[u=@8m+[dI
+TRS$F%IkZIB#;'4`+3k[oMdsQ!8k\$RH'Ru1Xh8f4?IX^QX_7X+Q-d?q,]6]((u,)oqVasa@dZ`Ul5E%
+?d>R8^j5+]m;`X\_mf/shRr0A%o?@Wi8_4e;5U5@_"c&#(?5>K/"\ET%lSFCB)/]<`Yihh7J%7:8'uW'
+Mns"g16u_O@0ff)g;@emXaLWsBcOIG1"pA`5gsHDElKK8H]pS2\T8HM116,+Af*X3;jGR%Rc3Y':PWGI
+iWKG,)hIW$<c/4pNSsTc=g]#X@N'AsrPm=,C2o:_4V@#Rrr>76J!d1M,ieQpAEM,].^2qK5#O+j"TJHO
+%,$Jb`_j8))'92UDglb/$+6HV7iPkBI<lDYQ9uW"19o,K45fbkkuT;q1>1mgaBWm'PVlMujrE+Y5spd#
+cJj-gV'[M!P:WYV>=or:OPq'sN1X@-`EB2%^+Hkb/r9WfMCkXQA1VWl`dZ@>fII.558C?$;2g<N7iS@R
+8W(gP@F^\-aFeOr^c'thO8p:OVGrhK-Y3gJoY"Gb97(hr9]2pg"\.Vk*#c[NXO&#8TNoU7C6t7IaX+K@
+FG7dd\GBS?g8-(DA*+rd]KpIWWD&%6'[Z55^X9P8MGR>!kB(LLD(h_Fo)u1di1(:'orT31cBqnng0>$/
+EV>$p1fiS?\:]m9p<Q@Qls+/RLK;"J^!g1?$QQ6LH!+.!8Y-[,orK/k@ZO:Rh>B%%%)jKNA2*hEM!Qk^
+>]hmM%b5/l<B)85)!tGrJEW5urP=9Ip#$oeB]T<h,JY-$*=mHI"e_\,?=j4!Y!9$\!I"bnAkMeJdhQe0
+11MG/g]/;T4<LD/S;C,hMI!KA#@[Vqk\A9l7m!;e;EKogR)[6n[k#':\0PRSqUDDe\XUrU9bOJ3IIYGF
+a3psR=!AIJnV(H#\KDQG0Rl^6(2(gi(imN.1(6Q3I)i-L>18T?luMj3e]Zgi"%X1d+\Lp@8`LZmYLt-a
+G%b5-9&_&l,D0J+^W"u\SFJqAL!IlMeo2u&02sOLdkrn(@SG>L.@)5j<SEu'kuP8DSWNt`PfFC3$KIcI
+H<(bjB6.1XA7i3<Ulds\!-dV!*n@VT3Tm0BO`PG`FYpGFE3Xlhm1#$7E#?SX.meMMd12pcX2dBSYP,Rq
+`3@07^F,hfc:?=uKj#(h\\1&,%5lMgRc6`m"FGO:@RD,s<:o"m;;.n=()6JQ<H0dn]n5B+UMF!2d@$g\
+2Xu`ioW@pa<?eQtON:$*,`,9E3:s1$Ur512@D0J\[t"(L!h2l@dep/mp!*g.=(#j$-?Y\&oN98s?lYfi
+W@^Y=)(NOEAVIqk-R3D>">K__-\9N9rRYN&)u%csQ'J3Q-j=-oE8:CW'JZG.A!5?S<Ms%j+g`fkSc^2H
+\a>tL<%,)P8!P(L'AhP9,e0$ZH\Da$@r!'*hQN/Ka%rOFg3o_co3nFqb">GlSsei#DdbY>I3J*+g(Pg>
+W$HAc).O-r*SKdK3NjAB<QSA"JaQa!A_ZbaO-P#mP]S\#oBf)/FsqEoSse_k;ItCD!<Dd0VJ%MY'kP/c
+Ok,%/8JlA21)79Nh]nXf!lm*uJVpu@N/$TpVuk.!A<uf9rrB>j_=g">C>`*=W1af[M/Sn=-QthZQ!gSu
+.:/[G#Mt9;BN(2BPJ0,-an#5m>*n5-_JB$U$%,.k+kbihBC`FcGuT0R>X5o$AT,/c!\dAECXU)[B18Yn
+]ZcmGO3QPrC#1`:*jRB3,^:D2n4o\uP3thnc!rDkITqU\QfQoVLA]#;o^`@3HQ;IBZ.F5M?I?0=BYMT6
+*:5&`3-]%,)5MK2[%q*s#Mdp1E=e9fEG)$1INX8;Be<n(j@2b8q$8tH`urr>d4u_#HB+Jul+bp6Fa3i"
+KX+6+Ne9G7]N$A_N/gAQO,:9Vbuu![oCcCf4!R8e#NdqqMO`8/%P`/tQJZK,kr.\E9k]0ih'LfH#1ieS
+@<'KeB>%N6SrUib[P:"U?Z(>:S%![T^2N]AZ0)#R]oG6=X"0U1Wo(/cQ2$WJ*m"kLITDOKr8S[mApO]:
+g]5D@giD:p8$-k'N*Bak&,3@"kLPYi.,6OH/WJ3Y!!7WVDSZ6.Ra;S:4uI+!7>?u)O";&oFX=W^g:K&#
+^7o7rG]j>*etGpNN&(4/5J*&Hp+lJ,ds!U4SXK-3LYB`'SW%>$CM:Z5TEf0=a:6JdYFpi":0qCX0Wj38
+I69p*[[.\/OL&t1\*bO<SFOX7U.sJC?Ce#FJK[SiQ=$n7iu%#I!e1B/7(<Z9%/EijR_D`KZ0GB<PuF1T
+7j9W7Nb;gB\)le,*PVqA&/;<Q,%Y^b40X-IW2l-)F8A3mg>(\!#p`O_Zse4F-[b'Z;-%6kNmP!QO'Xj+
+Y`>.i,.,TAh4M;(rVZY^X5u"#_FOucTT"H<?XLi29adAVQe'%9)iQ,qODY)K]VCLtl>!!f?@g=GStVq4
+b;.=dA6S[c)cZruJ:$>qoH@5?:-2:?mE;jP.0ITI].JP!*=j!iLjR35,q[rl[-Mc,.W-P@Z6-cjM;Voj
+R[HUO1iqC<g>1OVdR(36ahC-6Ehb`r5rb4R-%r<<73$ZpRKc@HX]V$t3^G(BYa)tM,X,EHPTdn%3$d[;
+.ND9aX6M304f^1%KJCSd@j^p,JrdsrES!EB=f<^AWTsHdf3skb[aT]kDBuPNm;L%8=$:jA69WK>m:PpU
+C&gLEN9C#g)i>:dMo5WX]2TE=-9tRQ3BmBi/4L;#Y0FY$P8WWWV-k+aP9\7OO8Y3inYR\=Drq<CZ'3g:
+B"&h7^>,J90QZ"=WT>uX/Bk'V$@p8gHh'6sYSEI'78U,"cNeYYb7qcI,%V?Z3@1J+i]bE:Vj+o==1YnA
+!M_.AQgP?WZ,V3lI@:XhF4UJ-B.G;H$C3-d5+QHT-T39aQ*a-t7IrTnSE5=JD!%-4Uki@@P9EZC$!'1d
+]`=]7\>15j_"i`6oK6)F$0h_GO\nrSIL&#U0QGjD+>_6bqo%PO*3&]";)NH0$+6J!4GOBM%JW#urjAR+
+F"4e[VSZt]OMt(lF]8A"IUeG.3N]2#<_AKl..+)[R&#h3M]KSm,l;'d"dS&'V$@lGc5DK9f^on-M<nN;
+:5t-9mkMp$at"OnO]5q*hFOooMX3XKi^\L%[4Y@AR?]nk<a%UDnUnI2dYemo?ccFbZ,nZ8;=@3)Qtc-/
+!mm2e&!W,n>%0r2UEZ)g`q!7L?lr6;qp/2?H)/.r^=<ulGiO-a"7MCE#qY"T<./N5.C+P!ZYSLR4+3#(
+Ap,:lAjTKfE\Ks4SCNTZNG.s?,+n9mWe4tpS.Y&!p%5?-HQ.]$@2*Io$D_7Rh?3S&Pqq";12Wh81%;'V
+[-n=sZKF96^lT20S13J8!krRp<_?C_FB:*8W%h:P@!OmcQ9/hg0]Oe9$ucIA+$i1=K=)p:&7c=G$@;Ej
+!4O#BD,r.Hf:G3l1L`UG&4,At-il\s`;]gaXT2J=_L1bB&.^#`-ip!?7VnTL^n;!E#dLFq"Krr1l-02s
+*/Jclh&>\aT_kPJ\2jL:[rGNX3D5iUCo<-u].!d*Q0])g_irthb"KdRktVk2l7Q%`pZ!p[BD-]Bn=E?M
+iVgNGouYZmG`T_i:Suob#9h;g81iR*c4!f<3`fQ@%Qc@a4;Yq#Ybn78C$0k!puA;UcAf9i6Ldg>[s$$p
+e7n;tW?Y;c/V_((C$An8a%H:=c8OSR9DtWf=@<&%i(MBIO#$4^hciPMlG4dODOl&1dImBO:F\N2_S<B.
+[FL(/L`S1Ze8NYg>53'S$jqLM]u5/8rp#)M-_%hO@-'mCih+k-_tT;:-c>raME8e3oc@:B5K)+aC)VF@
+B=1he;<gLg<]%-c?!L,2Slu'n$mG/1b5VI)KA^%mg)a%Xk?Mm$2k0gI+.IT:+"rhKg%i*eMXCDkIR<a!
+qU=L&^jK#L1i81?%\L5fFeg$njRKKIZT@$INrs[!)&^qLML*9j4hWA5P%a8%>QqTYcPbLtc[M*$,+59e
+JNIf]/:*A+[8%(H4u)i!WZ0h/?+c>=NZcHa:JZ<)_S_Zu>m0jQr%umsa`46ocX[LZCZr!A:kpu1EmAi3
+T#%>[Lh5)>=dsQ6m8ip*TW_"%VY<)N7*Rq*q3Lk\bjZ>D;p.>?,^!@W`EXO]N=?hpP'o7S@4M!V5D\Q]
+;NE=AH5h;9OcGkJ_AO7]&+g+92+Cj;oQAeUi^h*LTU%(=N.?BO)*[]6;C^NnSV,0aOp5[394eSREd4bE
+E)J<qKd<Pr'lH'r:$bA-cF>g!lauUrA(%YZ<sGb/=D'"F[uPq$rr<BRUTd2Y+YFTg7"Q/(3%(SOl&q"b
+a2iNmQ;pkO'OYG^H>(#lEI,J\QnIB_9t<f_<9MG'e\;,j&=YrEO"0Z@S4!lM?g1D/S?XG%5>5.P7S:[5
+P"+kWB8Sp8W'>]]$gp+H><82Z92c3u-;?edSeDa:YM!gh_k-eh'L?dbH_Il,deSG>b=[^/4hNC'eG&m#
+B?DR.4&%)!BU219-<OhD4D`5-#H6t8dW%($jY^#k1cJ:d+c1gU[RE124+j'Q.+k@C6/d5dXL3:`PAR#(
+-935COPJmJWMld"-)kP-)BJ%-#\;d*+=cgRr+jQV*`5(\S'9ZH10fo+Aa0!@#gA_)OpcD/G=Y14>Dak#
+;0j5o.lQqP[:W>gXKiQdZ/?N+jraKPnsaV!0IIrG"Lfqq_]lCAi.;CDd?uc6<:8U<hJr1i3>!`0CO:nA
+IERV\)$g0Af1EpsBZiA;p-dPV3TmZG5\!G?Q9;Su'%pnn]R@?8>D`M<9?.hf_D0b!cV.:=X(ZB'jFrg%
+<HTRI\Bi`V3^9m+-!,K#T9L#ekQ=(SPQ9bUSDa9@"dP9j)3')O5T0S%)Ogc"FMTT)$OIcV8Nj+7CrW$)
+CR6cugOJ=gb&c<"EE>Dnl`"5]H"E:H&m@\\?),#M`];?[d62UrR_GYo=a;bZOp2&tiiZ,MkH]ud[S,d)
+M>OT'$p/gajX6MWja9N#`MGfjclKXj_59CqA6c@(_$;*BUn5([T(E7::MaYnm+YK^aNsFN%'0*ON^/_c
+WXqHZGc`u&\PU"dbpqi0/jRHpIgS24EgbNt*-29kT]^oQ"7Jgt=LG\*c+kr47%Q.D<+GtlYXN-EDGb*R
++FTeG4>Rd`a1okn6Vnt</Wq,Zj7dQbJ9tb5j[$E-Oeu-fJgP8r6L6iA498^[jiJ<I7LJAV91$'[*?.PU
+h;noZ="=4M2pC<R7P!V@''GEolnt2e>[Y[6KmHcT>gD8c1#cllEUj0::S@#I[hLk9h_L?m5N)_E!3_gs
+>F,39[q>2$8nP/`OoZej#!etNP91HV+$To);`#T/o`""un=U"TaMrJ\\pu@gQ;F@c$33>7Jc^t'BE<\:
+&6Ju7aW0rK",*UXD#"GY$iuB:NbGYT$oa+VV22o16N01t'jRR*TiJb&O*TO%^rAnM"EZXHe>9*'NmF<B
+dQ[(/GG7\)H&C8P0j?#CKVABeY1R1u<Hc;\<D&k$&-jDE91ts`W42>8hrV'!o="7MqfZVUj7TA3dscr2
+8'AZS80@?/r)=o&1P&qg1"6B3[pW"l>hHI/<L"A2G^,Jt"NiL;TH+?A:0@T3[gGICMm^ST#'$6aEjR&)
+`#=P:l'F>&^g\08:JJZ";Km9di[nX(XtMXM30;;Lb"k.OX+uR')n)ZLpgms?d9n]0jjVG=7Phj%",cpn
+E4f]GN_-C!-I0J1*9`\hm#8DWXie;l$t:?s4oIFn<F/h9'_X.`Hm`bSN\*HB&Kt'a;7(6(+7LoUZlP0=
+bh6Q1/Iq+j=3(cbrGtseVXA*@hM&]K8n!5RE^=si"OY@N"F?W/_GTop"4n6-RD"N4&.h[(!;&*Ma_ikV
+8JI><D&F1fp,.1:<V>,$GcO:7r4(J,m)e_A7Xl>TX2a9pF1j=GaoVY\>ibb48C=K!Bn01l_09kCl(7N,
+3A?D.XE,<#M=#Dp$d0f1#3Lp#i%h2^`c>ijAAu`%jtDP*(48i)-h^T%("SMD-nK#N*`N']FP;2..X'@2
+;d@DKnCP_&-0"1c[F$W[&cD!dqi1qEoJLiFmSe_BmI+rsb"8KbL^EZ(5no#'l,bfi+!H8oZ0&XlJn'i0
+c*r69(js87EB\ucUGX=@%6[M&f)!+CVT/uNF_3g:?jU:jJ-;K>Bh#.,!mpKi>Jf!X&iJ0C*>&$F7&S4>
+lqZ$A33,q6p5P<=7.qEG'X7rP!6AA(qAQ"c+=?%"bbtVtO^90c&:M.<Y`t#$>7WbJZUjf\^e"ipaZ[0L
+%2s:Dh0p@=OP\_MRs>&m`!6Rdnj)Zp]__8Sb^/n:];mJtd0q&9[O[]0#a,>pR'_G<o7L!GpehetB&qoD
+&]\<YaG7u8*2t+kRDX!spS#P3dgi>g<?&9b4aHe'fIb<ObE@j865.aK(+8VhX/?0pArgF[CW)5F/>%E:
+)[Aat>B6.eTQPTpfY5s(3QH"d30^4=rn9qM9o[<t!?JLCWNsZ&C-)G\4K\lf%]&e"XiE[Z=;b\gQO<8a
+KPa*65.-T3'0QjtJcQpAF^`>n(sh;?8s-B0o_5#`#iOgi44"+-cCp-`":ggaIZsk>H$n&(S`#506,kXO
+V*pW.$p3,WAQE22D?g9Ck)(@0&8=S,\qVfR1N=2_[rqKVjW&Ik]&aq@iqZ?sm;g:r7^=X%cIpt`[l)Gi
+-7ONX#spui\jeYBW$-3r0-dr;)q_fuTl,DZ"t?<9,EB=*>$1o!178CJ3%ro*I;59LATK*9UrWc7(r5C\
+5R[iO[gTm:iRE"j[9Ab-(!LC`"Yf?)(ZuY(`[]).1?UaB3jN!1GMmop3Mc@*>FB=WE`P:j;je>1.0H\a
+NQUEu+J#'L%0$<e?RQDQ7#=:*JA[Is0iWh^Of..W2q@h'UKKTq0[1WWaBen(*#9NHfN0CQiI6L/eGD[!
+EuLiaC2Hs"e6mI'RB*mH8K=h7Rm7'pq$0:56Wo#rQ$gT;9IA(>&9,N,dl&T/&QL+?4,QFHfPl(U0Z?h"
+DM-a75e4$h]g2aHa:D1^-nCPr+BERanlPqgdjSpm14aoG#;YJ>(XdgK-U9p;c8hO*#!t?1M?&r#<[0f8
+!@"u8AL[s,SSG5-.j8@)6t;pi5Wa<6"p$k:`5\3mYXG66e5=@Y28oS_(QFFlI+tW]QGoAnM,&>&8)Z_D
+R.!&K#>A"Dj;cD>X7h1n+M@KWigK0+0.TtH/43UL2S&\g^)-bPor\^&q.hb^+$X*YcC$(T;UT5D5O5tf
+;#WK7QaK41%uTWi'X7qkW6/p=nb(-jCZntbfA_gf/3GuEhHRXZ6%gYVYq-.\I;"TgVfJH@On2#&L@q&%
+M[:tWq<i)W$au)LkTS\6Q81dW%k;nVfR.NhBuo11e"r4:C;J.JG/qA^(,'GDN,n0g>f<on2]Dd;P!CEq
+5[g7TC[$8[<*$_g%1EsLVV_crgj6GcFoMGsg7Yh$1nP.\ko-.O09Gr"]/$u%ceTGY5.0Q]-rlQVc+OWh
+0WBf)7AQP3<]Tsg-V_ViMt[rMnSZ-jC["WXHPdDWRsF`Rd29u:<_R%aE,(Vr;^Ck>mhC"pTf86qrrBcQ
+cS]3RG!0<VeRMP$mcr!B:h@mm<@%a@b4ka/5#b)%7TFua83"j&Vm4'_^'N1cYdd9=D)L?ra)SU&RNh+"
+A@FYh[&d(15S=(t@@k,h8QaL&p"pJ"VF?pK\11\9"T-0CnrEZCCDlDgSkXL,l<!]q3f^T5E+<A.G#+3h
+*:r:mEcLG7F_F54U#eHoeX$%54O@Su?R?5l"aRollmeVVZkJ;3gRsG`/#\$jTk.eTpTg\@Lsq8`Z(otJ
+qnma(dV-(8KZ%+eVmJme61_A`$S-WqV/k(/d(u8#M_tkF\'gR$8FLF$T.C-+XuT@1rG(Pk2bbPnBHs+b
+AnAoMEXIsia6-W#o!9!rRnnUs+<ZY]A!"t9%@dOV_]$7$1RO*<Y[,%p@G&ZFV7N4q+b#3[5A8)YT%&-M
+qI<#F7iJ6sTj6Y7IQ4+V2Ek%CUP\Ciem+Mg[#Nu)X1bni*Cc!MBps]V[\M('asG\9aLUDncrLlg11dtj
+kkf.`"=Xbb`cA$A=#ji0Tt.<6)4)T&aGj/ci"PQW1I<cmbYBo#'7nGRl(4+?A\M,LZ#0D-+<\5)fbW%h
+Oc1C^!*rAC/^,098dJK)E?&nW;7Rc@h@<1O)P"4tXTOe\P$n^VP"">3K>o^9f@cl<;3C"rhb;-)Zbgqs
+^AZ;("LTB9/G'73-^%%$B2dmmrTnN,]!&CmR+&Fk?%-Y&SfaM]J$[H9*5J@n2Kif!B?TC\I+[BS?rT:H
+HQ1@'YpiXO)&UJsN7R(Oa9[!`gdXg01`Cs*GaZ&m)e^7Qeq#S!N.ed_&8n/&GX%`-Pp7dY!-9=fT*-i^
+'Qc;p+B3+J/BbXTlOt$V`^9ej\`Tn"Q&1_HA[U"SY9,MkVd'U]kH;a?bW,;2dsL:jGHH$lc+Kg^hJ_34
+qn"cqr\]r#b/"frpr8_LH(\djZh`)cc=LpWCP`E1^EI,;_s_)q\Y`!S_Mib91_1a;n$ou>+T>Xqo.s7,
+aM(<Z%ks^9Q_d:V4D4V(],rm$L?s?"<h-)n8K]JZko$A=[PR_Z#t8+8Q,C/hMFct/Jj&lcT#SnY+3X5k
+l2BU&Ol&$bgp2t$f\[eaBBAu9et?&X"H)L-BiR67rFcksocJg0?YT$UpTD<.NOp?rHKBn`]^3eE,]r<g
+7OlI.GumQC3:bS)kIq.9kN'15OMl#OL`JrR/lML:L<rLW(#,E-i#g7?ZJ%&`2k90ZK7H+!$1'PC'H:!e
+IK2M@BJNeNN2COu`_Kbl9FeSXBq#k?+8(FF'B[>a3T>Pq2kiYi>I[Z\@r</G^V.ZE!H'iPb(rLp%"n"6
+"3;(C2sB$?*i=H'4KC*k:.>8aYSJI)[GBq8j=R_lf@-0i!YglpKM*Ka\5V/PU]lq!#8/Y9@\5?U0M-e=
+JA\o\EDMs,TLYFUQ:M+PpHI+pHPU)/bN6au,[]MZkO>/qRA*uHdu=7Op_R;\'S"":b)_nh!,0>_pqbt9
+/VnUd&0ISKl.5ca0jH]j05SY:4Gqls]+MH:V]8d(Qmu-2lq3iTcMml:k4WM(/lF(FZodAndo]f/!)J\Y
+.d+#R*.Bb;G'A9BT/:pt\\F23YgPBs$Z&FgGi\b;S7"&7IHp>9DNpt-M=9YPjj^%dd#6T!0?!=O`d5tK
+Nu1CGcNRV=c_B,q7ro(C'6:PU(J#:,-8!+i4nHpCGqKD5QaN?PP*440C\cca"#.rJVaWq@])K<DloZli
+(K9h3]7$];G]#+i(:r%)\:>.]J\)1R!D2O>?[G]R(Bg8!QJ6nOn^K@$>-:_[D=>/trDQ<%G\]qAe]3gN
+\)U\^X0"_>cu$7C5U&'^gXp%Zq7`5k0!-POjHeU/cY11;Put(G\iD/]-mOISWhG*n3cNiib(=p!2=r<l
+kHRAQhHWSQM)St.`JOS:I&7*3M=SfO&iWM.9"3UZFSmV>m!?'l`7DbXgLD<M.Wm:en"(p^1fe#t0L[VH
+4%"3VKa%(Rq?/m-ckCH\YCFE>k./NWL-'b*MkpP'peKuNma^SN+"AYh29TbU0%).l^!uR'9*lhdlsX+K
+36aF`]+iOk%2N!S9hSMrqM_r]/.M2=UTjp(Ii?_TQ:R$OR"#b;ha?ngqP%BC#_?9fJ\5KO&]geHZVJKV
+/"%J$gKdU!1+O,bd@?m&13YrXe4$o2%`rP4dmDNPi,4]pN#X>76JHeNf^"Fe.G6A!k&Y1@gM9[N<bnGa
+.A'tY.SLDGQ8nmEkHgb)?DVt?>3Dq]1>%56eu%!1,N?3jNEYlF]cY1KWF^1l.;\$r\/<49%XCu]FS%bL
+d5?0Oln+[_<+q/DE`A6_pu\r(F*C,:f./^_m-3WWnnqE-!Ht&%Fj3*Y'd/&NShIFi^/SXa]=O3X#8j5'
+WtK.c>$XDW(GWX/aE]8kGkS&]@@ek+/Mu]N1!5]7+>T[sSp,T;>nLgBB&AB>=kt=3:`KJaYP6(WpssMI
+]);uuB=6JVMTC\&9!]Z##C8)f1RqtEY<7H5ZRW#4L?9]]HQQ`i^hsIe`9%[W/K5qS3Y4adk9or%)+I3V
+M,^\[J]QpFmG<@`3NQtld?Xu:AH]Ubrg_Q%Ni:Eki'm9>2[1E5>g16,-b8lPLS>_K]3c&VUb/&$F@dFP
+#ToSpoZ.c6Zt=^0md,$p[oJIF&@oRVNX7nWS>s1,g)<(Kj`8KFP5$8SO5]*&k?q>V`5RP,3EQ#ZO&?K'
+ERe;'A@@X\K5lEp+/UMJY!-;2!]a8$9'tEep86i&=D=EVJ1!Lb:m###;3b+TX,Y.[3:$B?nf`&daZ:Tt
+m,rR4+'L[&&h;cBOsJ]t$G;ZHGgkeKeA/\-0I]G<mgAmW%o^o>MR]7n&i[4h)s11Xe>_YPUfPST)gZAN
+EbUV.,@T_#FWb&MD!WX^cPWa`r'N7d\ar]sJ3(4h_7^?a(r[j:"E9q#KS^I02TC2`]sGsq$ZVL=/b_)o
+4H'd/fCAuq;`nR3P@9SQ!l[bC%QVAgV)>cNRY6Mb#2?YHq?k`;+XFo\(!Nbs$@;hf1g?@]3\(pmk<'`+
+T\P6h*Hi&\4;'^)npsPJ$K:#R_Vf=rof0oe(#;5#_(R?l$]hi^^s@CW1g9_^T1"&>Z<23#7of,pH[U!n
+gU[nI\_H!`NI:/&2_"=2OjQ[/gR1I'at[$9&?7d([VLQHDCf<40fKaor%gmkN<Bp&8_fiMH=PZq.3-R&
+9!JX'K#[nQD"m6_LiX)M0sX8tFsI65kRY?m.rn+A""s+u"F]/,!*X!QSpD#)#[ZG8:]`Mi"Dh!Z+*AFj
+5Si3fP!QhoZ&J'H1X8-uX9+!4WZ:rX5mQ1EM2j@L&uQ-B<;Y.T$:LgJXUD-gFY%&`h@HPFa6?@=Kk>H4
+@69'])"lq?U]hC.ISd-'_E)6,F9-ZEQ:+aZcFGF^0[J6XWkon#="%4&kcZ'.+&e]["5'-K<@<*Y;3:eX
+`L:R`27[AEIG8iBc@=b4cdnHYR\)3]dMH<hA+=XH&"F)b;qjOif(cCA<jc-E4<:;a$EV<m"2PC,qq!gJ
+XH4kd*O3(ZguIoBWGtL7:LiOJ')8J0[EIkdpt&?kOdSqc6+IfG45^WECIq@80":5pkegHp;GriOF4EGm
+HqWs61E@Wf+5:NY,Q@a8e`NLHS^1aIPENV0Y"T$e;OuTRe_U/<,O6du"s.m^A<UY!iQi;;5-Q(PeGM\m
+Mk+&'`>>QbPGbIC,(U6WMe>&ccV"$bFq55L,mUF4iA(+0eT,@EG.k(mHE7m*RM8Zag(gt`XYf8JgDf1)
+3!],[9.RkYVbK1JF3W"8n>u!dN_qUpH(g[,`Xef);-r-/o8d?M8Yfa&)t8)Qk<@_%N".?&$d1&tE"rW%
+(bdtfFiF^MdXXJ26F]T0N8$f=.V:sA,Bc,,&^:HgUSurnNrT?,(h,ObpCnL2Tp1:j3ioj.mV]Q-itO)b
+[liCDoKK0r^hsEM4Fb4L^ZesL1hofrAoB?*-+Ql(&Kk0r^@L^Zl&W]8"J*Au7@H$oLE@quJFiPW:.kAN
+W3a`t.Du+di14(J"@YJ]`,e8j8'\0W'UBci>+3KQjuXMqCioJbSf*3cJj;m)^t9O?_-TiM$XqVtSISgD
+HrBa>9f=rZmHm"lA%-`oQ?E(7J2=fO;A8=]`D!0jg8tsFjfu(a6FJfgpFs5*p5'UQ2c:3tOHK-k%R]1G
+J-Kd]ETJlpG!/&fcn)Tl$L:F9Le'/K^;kK.+(^^g$S(3WD*48eOA\j9.n4dHKfi/2BGuNuG>jr$Y-c<Z
+9TD?h>Nb+25AY@U/2QD!QH)KC3knVX1TDbXR;Xk%)EBOfa+%9l7pQP`'lA.B[F?er#Z+'["qa?lHY/$E
+3u\79A20/R'=kGPb@V!Mr'o(?k0*.R0,Ed"\,^V9=SDHhTS_enhnp6L0,?kED$+J>>Hg<A]j3HCpPW0a
+9496.<acl0Ep"^!S8rD%_,q/i9@-@@PNH;DT#S'D>.E+"/.ps/@)"-B\F9\P<*7Pc??jdd^:Q(&guQC/
+h">+.I;8_M0:'T^VfeqQf?ri/FgJ9?R?H_<!$2HfXe?L'L!J"=nAg5*ZaGdqj@Ls`h=C/><NRP5[ML__
+$ITdO"uK/VUT(24cpd(D&>h?PfbiZ?r9GtI"]IEh+`+2@N&pXR4oM?&6rG.eJ9GD;n1m'(<N=GK[h@E:
+1YW\u`cduAFK+@i)0=+&C>^^8gY]ae[6TXSA2/f^7QJPhjfs33Ou4TiaP:s[rr<CtFsdiBJj)V5gEMYn
+kXsX44>P,@+YhGa'Il[sAu@A+*;8@O="h<OI=DUS$1(H))O)^U)j#U+K4Bl;B!b#qH8MTINLQY%ND`:m
+OiZ5QZ:H4$?F>K!e'MW'?H0/o!62o:!I,mdA<U'G\TbXg7i%e:"OX9TBdI/eOn)J8N_O*-bN0+jXN`#[
+h&Gd@dr@ejUbOc3Co`S8XE"+!V/?G?Eq0B9cHM78oW:^H+dL_jG>ktb^erOK/T,,gZ&J,r''3=>>ZAu=
+ZZK*.?+BsbW>=KLKTVNCnkM4eQ(fCt1oD1N:Epks%"[h:;c>WtoE;=FNSmgDe,2(ul'mW07hKog)[)-K
+j0.'lq4(EpWjA];Z.haoLB2T1%bF_u#M-GFGtA70@j_U#%.5"Zo;"=LSma*9@89#Un+E[B1)<$N%?a9C
+%pCuE',_X=!]&rKWAN^(<VH!4CidiVMaCtTH)eB<K\Pd<B-bh+bHI5rZk1AGr(#=k!\:W^=Us:HQ0L+!
+eVH/NA^;?VPds&`<EL!nNSJ0q1ief&0j3&PehRtGW^knCBp:$c91d;JJ97X1!:IH@pF5i4A*NZ\^fcOj
+.-<>bZ6BVs7jIW*!V+643<0`j4fABf?^7l7NXr>gdp%`p\\.D2!.ee_!$%j7AKNK&dME;k!"5RAYqMF3
+):S,+G@e/IDnL-rR#g5],J`AOIDd9"@iL7b`uOWo@"r:Yf-8Mkk3%!r$LiJbXZ`,!!d6apeaB#UgZLZO
+V4Slo`\[">l\.QHh0KEWp8;-QRm?\VG=rL/cQ_-.jb?R"k@c-"*!1Ig[t1G0?[.<oeKfI3rM(t,Q)6t2
+XgC(#^o&8)^FdM/2<ZKfVprc?Vg1ECdHK_>R2RE7,RAFJhS"[K[Z$a)^I':#7oZ^XlJ>i-FAA4la!S/k
++m`?^4I_!9\KH9[#[AFk#;p)tD=sEZXYc0()s0&E:.heO4C`q:D?ih26Z6[K">N+2cDB;L^[eKiRKI.&
+[A79LBa5>3.hg!\dF:2tkV0g6\HAGrS9I9B@u$5t/bKL^bG9^[hfS6L_j]:Rha&]+A2fEg]enRkf.k9@
+cK]Jj_41V]X[Z%;g%)7?1@)p5`ih2=iS>Q%K&7uh]?S%':B7JUpV/34lKr?1rN#:A#D7CsFV)4;ougGM
+AK]aII.`F1pPp3%>.#d4`:L?J7GuLI[SB`grOc'PmJGN]G=^*DZGkpterEk/hpbE6R^)1iB8?-X63qG(
+e"^[qj4eC5^^*r\$5ec@J%SKs3B-#2REBc`^tNFVZ`\"]P[Q+_ghFauMMt$h4LWNh3TCh6/P6CB)L15#
+UIf;n"g.S$a)sN:4Y(6K)(ms`E^(5M)VW`3)O??p*[f@^LuCe[--QL&_h!fk8'8Kr4sE,Y<o"ZlWm\4.
+^)d!;gJY8-enH0<Y1E0?_ALL<Ttu_>-^&]hFQI24e8pWB4,Z2AXL/A3DjbJ6-aDFPoW9)JLclPHf.Cm0
+1!#3b1P]Djkug!H'6@XP-1-m@"#R:b]3"E.N,fD'58m@GY<gh1Vpcs?Ff,?K+dQ[b-iC:i\L6$1PEV*S
+</*[bWg')/`<rR?r\]Ul!@GLjKH]3,5W5Wsi0op(;5L87C5mA9bZB'\UJb\ML>FuSg9p$5;tjCniB8OI
+(6'VR,tC>rX*b^&O'E6;O%MEik%Ah38$2Q,fgL!\l[!qh4P-8%=%aJ&h^`RRa'^p/W\.gRgfX?0:V'CK
+EYt:HgWbF\limW6W5rU?(#EIB;M,Xc9/lkN>82+^-[VM*$u4Nm%%4p09gad>a./iTCf@lb)"e-gRYA6h
+pD45nV,`.e8^;VZCJq^$0G'QI&HPdM8^;gV1/.SJ-em9+m.\T`O=eY[*V#fX`0(<\N;HM")OBrM#VY;K
+@,En-;2WI$XXi>M\/&*f1FHV&9kha&>81U^?7Cai(R7mEeHne/XtIY+!H%Co$dZR%d8+6FT(n#%J9<4b
+[m/%NU,$:q4'.`t/[a8#<LlRh`kY[gS9=dG)S;"j`Nnosi=E>c\L+md$kYFglDGe]35orKE@RE:qjeRM
+%\hI2rXjL:4doj>dN5X;ON'UJ!Y6M4l!llRef@k5DJ%eZc#.!5\<9@MK(;CM,i^l(Ip2(j;CKX;-5JLR
+>re/L!"K6;Pm)3NAldg%3s2#?lt]p(A2:cB;?-aUYT5KI.B&M+?W.;7'j>IMY&WR&q2,+F,-n8[YtVDl
+7Zo\*M":)b4gXNKP^L]8i`W^p&]_[L!(Z^^DVBpWdVUAFeMPH=N/;H?ToF5X^ip0V&:J:J0%B^nf[_cY
+8)Ii[?.q__I;Kj;>Bj(mNMT5JJj&G^.R%J*cE:'PRM<$IkNR#l,\/0[OF=XX@P]l[mqeDU;hs`7qm'Vs
+Dq:"5MofrRggQk<=J!6YQRS%XL'e>Z/=aG&#GiE8>E0LTA8Z=PpqE<a9hDW9#A6g-lTc(4,(LEO]5`Td
+"5IB#!5s'oCml`2F+otU>NnHU_3>MH@k%dlX_8i2[u[&54ca=X*_28B'M,:J&^pj5J0^!-^bNodYJ[C:
+*k:?_*Tn9mP^r$(,k_'`!?$`$SI3CbarAelAC(IAS=H[<=uAAHW?!c['8OXU;2GN-WR.6nZi_'(#!=(f
+p)#gR.BUZh/GYKJ`Y\SchZ!T2c`Jkl1d5:FV;=H3>i%A=N?X^4SbqLO1Om?Wg[B3@_\!(>(dVFK#:7Si
+)3,Q08^JLK4uTi2$isHiV5PA0O"Z3rKf&qjP%So;,G6;i<n)8+Jb#AV_m+DACaDhYncp1+lWnObh8Zof
+kkJ6K^VO:HMWjdqhiFlr]BJ652mt9M_'9E:D^6;<35oAi<[+'Ie?/?B!&NhPAb7H<2^`h3^W=+I%u6(H
+G_<pmZ?VR-Z%gs*NDAJ0dET<%=@F&O4n<C&=P:]d4cW-;6n6`,Enesdf/tqj!!nmu-D#?19BfGMMfEU+
+/V*#E:Hshc3""NrR[2!bRGg?1/l_7&`8J"`,6j?b3?/^sO^4#jA&ip7+6\E1$^j->3+jHqcZ-<!e]$1V
+YBP=-P/RR5.g0i(P5GR*Z0H)'_7`J&Ae"KpZn4=!?u8dYggq?rWq#F0:4F287SVO!T5TU53DV!TjggH]
+-^9SES$3u<e`#XI;uZiOVdV-rhTFRGo&),Afc_N(qZ:j)=aaZ,E`'/$VI($^TYMq/]KN(ohnL;[0Dcum
+"SCbUd=R+n0/;,D?4uc,N8J;&2Q&?!A8/6U9$#q$'ags#5+pAGFpj`LCL_<&&8bJO3j23u\5SY7J?3#1
+l5[_rG]M5HUFE)L"pJ.tL3`1f!0>!jl)8YA>*jqb(p5%QFN]#6p?l_+^A)]h4i[f]UY;sf>Pi$[[TVpZ
+84_J<&d?noi,TNARU4C,@ta@^LZ2P5DZOp-4kMu4S`U*@EQCD<&'m,\:R12t@gb_0RoB#T6!>YF(dYR6
+f^)=JcGlZ(8::3b^^<^]2barof,rfr3&NDaA]uSmmer3;]Q9jmi6MrF'5;ET:Cc\g,^PH7H$"r0+=t;_
+,TQC1r@qHt(8!??KB>\)GYZBl'^9)h''t1!GpuE;ER==(et18F$+VElqWEMbXOli_.)DWUas/9Patq,=
+ZsJ8l=ErEo8t3u8/<YRg.g*$LkFDOZ?H!@/p"tS,Y:a?;)r#XhG0Zj+oCoc[IgQleA[-;nE#pN6[N7_0
+*]?]Ef0%Sg$VlD<I$>;g53W414hK(Xp+)u8T4N'e=J[[;??u81hQq3&,#[QI2fuDUk"Fj$B>H!hJb&HR
+V.AR%43]D:gr-G3QR:[XlJ6dafr063CL(YCDPI"\f?1ZP$$dR,K-#tr,D4<7bM%4Aq[`'W3Q6^LIA*4K
+>$f2ITV4=H9TjJh,*SUKFQsa/?5ZR0\0S"6jSF4(""k/D[u;)"J1>h@(%+!Ibc9r(;E>?*X:)IT\iklh
+3g#IZ36/Q6P63lE`,br,%3Y5j*Bn?E3,5T!f#7[nE_5HpV"Q=,RTfil$:n4VQ`)&#k-A3COUT2F$bORa
+o)*9$bRIJ;j,_<<#l2Q(\hWoU:FX@-SY]mOR7fG*"rIS&>bcWd/ZZNt!_8Y[Q<3s]gPf&cHOR6L4*un<
+4JkT"iSm0b@&A#<c"AV6bGDJuG[FDc#5[#r96#"s>cMa/0ceDhNfAu9nM<39\`i!&W3dK:Ws.!N:E1l"
+aWsR^B;]a$:[)'E\5riXE\Z$C*RV]<j<QXi8N&pkP_(-=*:^d(j4>%3*"-fsV$D2$h<kD"?Jtd'6)d/H
+KM#9.bQ@<t3Gu_oW_rm)AS+Gl_P)*%&;"tcN+<N$<#r>#i<B@g0e/<?*-EF9k;fW?X1>J$a2ec:L?TTB
+'o4gT5&K(toUlWg&kmcE>91_'8aJ$hkM^lM\rVdp\e)E-:P#Yo@c2s'0:=Q8W3/gBB,Yr!Nf&/JI;EM@
+,&Dc<R,#T_(%])Xgs!#D`8q%,RNT;[rcKC.b=;BQ<K?J]e516>$-1Kt:`RGaVJ4Z+J$\=$_W:7K(/Z-"
+EORq*BI&16I9+,uRLcbm(s>\T4U4l*9`nUQGAp4la`,ZLZ*sja78GA-AYh@/Z\;i^5l8+dUQh#j4etWb
+EOo%<ml'e?^*r(lZJo-r@DQQd$9gj_AIi7!P]Dq_=&pK$f\H>qW[N@aHB8F#-j!2Q!0%glW5+-)35HFp
+kQ$K2Nm4YuW<GOb1]#H$JkX>2fE$7EJ0##F`(h0UjVu\&J0,JF-tZi"N]sfN0U3AG1#raq5Wspd8C$r#
+ABP(p7R*.q\WM)XHiEj@!*f;9V>b%I1Z`Q/A@_Kkj.*$iNM_eX3Q@\.f"&%!IaOV5f^MA%9K$+6*.*$i
+_9LV&Q2F[tq`]t)X)P?PVcRh_?q3I:MWr#/["Qa.dA45MdaKPV:GroPAtC+'FcD"g,LD!o?FCo4S?2Q)
+agRX%L]5[l[)aWdO>ZeggkGfs;Edr^rS2CMoMu_\7RF.5CJ!_HCQM_(,dsU_<PI%*rio#WFtq?c`H?T4
+/j+t66D[4Ea[t<WG((XaA;j/<`^^,jc1>Gl'3dqe,^Es4l2<@e3E4R-Ct,ra"m3&VVs'Rh]XWc8GB`VQ
+6leo\i8_O%Y(\]k?GocGGl$B1NHHa'(,2Y%^o][.3p1^%l=pM^Z(=&i/_C\\S&CZiSpJHJ_\7@!G2rbS
+3N!Z1NRaT.74BMO#D`6%2VUg3^XQ't4JEbQc8jSuYlLB6dW9WZa.8N(3j%n3/DB;Gdbr#[BaUr<&+Hn`
+r^cGWX]1kc-e^J)(5(T%5>"8nd!qob2mqC],<&J`J2*[2R[%`a'1Z!pBs#otNH66cc.(fu(ag<T4/hL3
+G1nBWq2Q""P)n+R9#XeH%2!-AGt&d4FNn%B%6.pY,7)_Wj6e$f"!58T)U"\b!3":2/5f4(%m<_4Ec=8!
+af>&JBYq'Fgn\u3LN/Q]38;:04AqG%@`pR'Smms/3:]2VJ..J;[1I4;$^?pMO)OJ!I&T)6ZlQsT%GqEE
+ZrLDK`\dN,KUu[>44u[tYf4CVNXn/7>2J8Pc7?jt*P9%i\Zi]SD+_h0:?@"7cPXfWSkW+G9#cs?ViCU<
+eaNDLi`iSnl@b'u-<@Db(P#&8_u3\X_2@t-lQ/CXHcO`=&jrTb&S(Al!>0Vtp,UG'T>RjBR@K=pr"ESC
+74a9$\!d_rnULicTRpsRSS'Or;Kk6);:)^V3`psBRc4\d`[TMiUTW_rk8efLH(\lq?&-V9[sQ4?4g?@3
+T.tf_<-0#DRR!ZS[(/_Y0i$sdnLf(a32!-d>MGI+%!"Ju`(3RT*"gL6!gD9\lYMDd[j4MW[bs(D!%c_d
+29(CL]Bg=a-4>4:P+Qi;9uU5^)c:C:c'ObBT=R0[A*hTdM9tM`_HkppNL<2(ZB=PU!;-?QjEB[LVQ:7U
+doUlShT?]])c]t::O]um*`Fje3J5Aa1'StUOcSTmJ?Z=Ml%X8piOau31d9g[D65$;m)7i]R&R%OTl)3+
+Whnd5=b[N>$p*lmWVe"beoH<RF7V)%%+MtKj[S7SPXa[UjAp&8jYALW&/*34;4YC\3uZVGE`:i.m%ucS
+4D91C_8l/ELur6q=aZ8UC18>X!DfBUSCOk+\Ef3=3.SVQAfs,X!PnHfdSB5GiiH1Di`Rn0LOYZRaldP[
+^0HYjB;Rm#dSuB'Kqbi7DlI&W\$CJ]hGe@>[bt@4j8m54:5i_k*+(,]:W3V1Rs7>^1oO'i559.Xgj3Ho
+e[MkVBKg#`=WQF4OLFrX'gB2$XEd4C)!oZ/Qf]H8J9kaI7k(ECK&e9*GPq#]>Z&WH/LJ<B4os\Wn+l+8
+)Vh-P,.!,F%mMK\5D<]e=,m4[HT(5ja@D?K=WUqS3T(tN!LZ$k+Hq/aJ9I*2N-k5pQ1kqUJbUgn6o=:8
+;je&+Gnhp%:,3&Oc>1><i]3gnd2`q04ie&8QPoU[$(k/F2<?V[;>=g,%lY=M\"uSK#c+4!"K<XM$e%>#
+B]]A&'Tg_HOn]DJ'1.d!QMR/j&VuCI7na=(IC[U)f&T^]S#FBi9`eMR#/HWj="!Y_V$;WhSKe'XQ<SVJ
+:q#,k`\M)?k6D->.L!t,/u97['lDO-IiM@c$@TN_2mK$>n(?4[*N=&`<"^9#VdB!5Xip"X3+*g\J<q:d
+T[8bDg.(FUM?(,A%"#9G,Fi99TEppPe3$VA#:)JtTG.D`AS,tf%F),aMV\'k-isT$Y+^B(O>5UB-<[cp
+robFW]`:"8BioiOK&gS/5SK]>)*mHmbr*$oW3NTdrT=+[=mQ(+0Cp885%+>dUCmE<pk_+`&K&u#+M#TA
+::E@W=CNDdUFIn;q=Q)O/<\&krP@5PrmccJ"6WI9\r9_%S@7rrQ3ARi@)LF(YjcA(-aDi<*P5V7>",!f
+3-BkD!p>9_F2i"N_(XXmh4k9_cGre.4@<`Nl.6\edDQ?uT70EhFAQt9B"cmHIq6DPmSgZK`M,1<U>N8k
+*!"(5mDl=rV_kb0bo)[5i`7"JZ7g75lQSbB"28OS)Qg'&m1VWY_nQe+SL73b`oFm:pE+#jV9DODq!<'`
+8$Nf]SOBhMq+cfsLjgS_$>jlQdm3`Cf6]PJK@ln%,l;5C\1'T81ZV*gbl/mX43l*M:O?^q7Ff=M@^dH9
+NFOth8E2e:>K2r[]G$I73up7LZI"mn@h:E>R@`DVS]Um!E&atp'bkYgZJ9bp8#X7>]QpfoI,2UaEV-/<
+rL-6fC$[()h4"mW5UZI[QE53SdZ._@DK*aNON4$jeB;9@QBpsgb9$pXhRcp:B0GP`*2\:Rc">!5kXAF>
+%T3r1!Z-,DN\YV3n>SaYZTH'?+ufi./0l6V#C=clgdpN`3Bkgma8=@9ASBk][?tS,EST*f@a-;R@l!jX
+,bAC+k8So9?j;0)#%1"^4$i'>#T4#qkb,9QHAiC(WcM\o'5M2Hqhjr'k5udK[/RH^]:'RC,dQpQeXU"$
+[SWBo>KkPL'gp.HNc>k9)*d!&Cn.Xe/"(i%efp.=m&f*@o"KAH^f9\@n^ErTERC2aSqu!)A-AiES*t]e
+3Q6$<aX\8"M`A.fM-A\>4"aZ?)*ZR1UI?/gUYouIk#j>g@U1&7<?^?hP`V$TJ^7\>=(emJr/O;E"_3t&
+2%(a^F1+0OGQaUkmL;tGPo3kBDs=hDfqf+?)-+\p-QW!FJPtbk8[tuo(u)V)IYE=<or%sNimTMho(OAV
+V3A,GGKi<\Y!`/Va(X537X%>;F-4p/,d#3EBoZ\e$Duf<A;]:\&dDZ3#WV/;6e'kYKGolIV-V+VqTh=#
+W]tl5*JF1Ocr>?K8_[?_Oh33W]/,s4Q2A1Ao1?c#%]s@I,;Ja7+>H'7Z*f@,d'6_Ec3LI>QSDaa4[Bdn
+&NMCE@<';.:-'m<2U5NIX9jA)2@iO:rOD)a`H)tq[f)pX@(@8b:FZMmSA/ZOXc8O!(^o3!Z>3*;FCQOb
+b"m2s;=6n%-,cD;8E20EO>c-XU6%C8\Ha(Qghi=9U+4<u]CXeIWf2'fjrK2g]PfAad;'Z,DX(#&EJitG
+b`]$k0g*]@7Y5768NdSn.gX=`BEYSS8`iKJO<*UtPRj=>Gou*JOctsX%D>2PjL(I9!F2Kg&WDtp!./=`
+)VjLK$"QJ!Km%S0##DJ_V+B+5k@C_tlsceX&\G6VWrj:*lYK"a-d<+-H[F*s\Q*3&9T5]K0p5m+ITWT2
+2^+&HNS7FVPQ(V6b;MQcRQ3YF?H?N)Qr/X0d76<kC5,rE5/H^uSi#=0k]X7g,Mo<WiJJ1ljE$obKm^$L
+?E6#]'k=LO,$*lRKDr!7NXosqCD02M9VKQ42?eShFYu:W%nQu`2Ej^kcYn-$<Wq_3Em^4$,8osp=""Y2
+ZqOGHgNjOaW!PC+NJ)ftqnVsN"`lHTV<lQ"ZGP`_*"6rfBE]U(f9"l'rLn':b!4Hg81ZiTKAM4(k0__?
+S#9$N`d()]"uZ%g`d_.qb#eIFp.SBTekrc9E1_-Tl^[K1b:.XHGbhF<8P%i#c7j\<RK/]!=O[DT6M$f+
+N;sJE:4rg"^`C.Wm@S+nNNT(5a,DR)#UN/u)<3*J!e;8W#"L1(8\98*%S+%icjZGf'7uW\ZgNp#r_sH)
+2ESIEhQ2^C#NdiY=c%gS:.XECH7rY>m;d*jP^h6Z^Q.)u<.DfEq0Vh.SlGLLnJMA_^[WhkStGQ^YWr"]
+rfrcopl#gVVPA2`2H%VV=ct[[LS2F1N+0(sQJdoi=4T#eqodTT,!s5"4aej.VsqGg%Vq<q0&"<\44M:9
+2\*A<E-'+&nFbQTCi1WL[PrAUmZVEL_+U&V4g,eSi+-=>-k&<B?Wi!!F2qK+I;$6LrJbe"TklBR3&]i%
+mUDsUPFCh#nhRWF-sp1`-4C0siH^Sd@Q.fK-D*Mc.8`S_H)O'.7#sJ)>ILmM3R?m8)I2a:09m`O>#a+@
+I7@V1%W`DUE5]5&luIS,<@Fa4pI94fH7b0*fmJ?fZ6B]G<)"54&a,E%$k\N4BATY/k1%S?`S8S#<5rkr
+^N&nIe:sfDA'\SOgKAg_A%!!WYj9-M=gN^bmb/b?/P<n`dN!''2gWJZRo:@rGJ`W,QrD1pbZ<XS7lfpO
+-A:B3I)+^9q-ukKhbi+&fqJqFCY2I`jHD(foe_"P"mj8ROr/qobE#uZHSc/"q1EDLRs,G`DW<)]m7gM\
++Wc!(9(q1gZ:n*%JgDjrVmU:!XBEr`S>.5HR#J;OI@:5mC^Q@M]R'j,T=W\I'RMYUPqHU3Z80?:0L=Jh
+cooH5W:jo.As(?olSh_eellMhm^b"*@/2:mTHcU@mmeR*P'*3oM/-b8o&W'_HI0$_]`.seLBBXK0h8Z^
+7j4j78U<&YFSTC#lJ;2<8qRIAkNBl_T1i(][U14#i6N<ECR4QW8R(LpIa<4L5Pj$"*,]Ya2eom>9;[k8
+'JPV)!2[gQ>]f%7=#r&SP;BD+S.IC7YoW\k3O,[om'+SO8MF4G,AOaaIie83MG'Ambdt/93.#3U=H*'*
+F[>FVer"A,=K=,oh3ejA`5.kGE^2WFXTV/k\XYKSKa`5lUhB:mlrPWb3(0(ofIgYs#CLjK?I=I_6r<;9
+\Pp+l./&U1'A5e>c*2=s6F13Bf_\TGG6=AG[4mnkJW,5njn'PQkuRKr3c-BF-4l/rdIWM3DdI4MQK!pb
+$'W\2hLW1ISYuC##T9U:50k1)o.cY7B&5H/RK0C);<0>D.8dqlKT>6PJ1f)'WO/^t:F[dpgs#@cR3[MB
+=[=3l@OO)b$aI*4^F,uI63;l.e<2%H'Y?^6!#Y,Rq+5Qdqgbq>9UYK+Gocml8Be\VAs%u*D*o^POo(-P
+Pu=RI^l!C*N8RBg'JS8loPT"c'pKdqe-TQK)FD2^8GOVml04YDq+qmq`%>CBcaBV'gIWOXNk!%s`j[rQ
+/4G2JGln(*!"Z?p2#0j<io3C=AI8G#DE'i#2*bVH3=\Ntq9Db@NdGh4f&^<$/dt)d*DT2nRLR=>[S+93
+)CF5RF=K<DUrKkfe!=9D=OZp;kM@lR=Gl&+=b;TRa'.Z.5"J9<8Xc8r=a;N3B5FQZm+1^(!H"V\q6De`
+/Le6Qn#=i42Mg"^3KU*PQJ/?"%+]FL9m.bMjQ`hYRRp'1/W=eK[i["Z9!G/1G7)Jt!iOL0euhW\i[KsY
+4M`5-l\`cJ4A!&$a:-q=-nCPgGm(i`qPOGcc=d\e&]dqM64(`QI:s]Nkp7jjTC3>9?BbkFb:/8d(FtF\
+?J+^;%1"h"Z!k8ga=ma0U%Y>O!EJd8$0H#]=W:.unj8Iklp`ITY(*ir%#XcY!,].em?0XP+,MfSgO&g#
+`/u`3dJuR)3hN<B&/#jd2Ccc07S"M@rr@Us<Uq7P*[p)MA_G/IVaL:BN^O!I`b&]ga!-YiC9>-t\G[lI
+TlQ4k5`lfAIIX9B@fAOHZgC?'$jFM&$8,gmJoMc?G7E:V!u'!h=g0LFPCDDsY?rs]9],-DDVb&5deCKW
+T.bZC;MFo;nJiUMFM4I,q_(XAYP^iqq<$T\d)_X;6tKfZ!\mh%SD-53nJhbirqI+q"#f%Dk?[^*bg\9;
+0^Rp86^]V0YT.siPp(QIKhG4-It?f)):u$5O#'SCrR3J*'Q?A6^@""b9.n9%/OdEPYnSL"gI'MuM0r=,
+>hq;jVGF:Q2Ege8YcnS@%(#+%jTD\$l;u7"oTRm*9En'q'mV+!M;kE&:7$;[Qf8qjF=ZZbK&Y1oLcKoT
+7Uk,d?J#Ih_rK^3MK&BTMot?oIu(HlMd,tYpFWHl2KqpP9+Ku0f"1gf[7:UVC<#qClnU**I(Y*C1X>DL
+IPkl8SudW?7P*DJ7<XY8:pK%3!?hAPR_E8>>g1aeKMX[2T6SMP/-sR<i)2.)8BfQ@'$;+dJErQBlVEnW
+Z-fRD$a_CqJe8gN*+l"c(US)t9q^:?e5;tAL=VG&6\F--'eUdi)]m+rG`,8ImC$2'a)a(mk)Bl!$2/2b
+R(2?qb'#HiL,Oj3l,=l#G`cq*M,m#@gNhj"ER1`j)ciDZ9S'#I=nqR`!9^gtoNoD>a(f<@QT,&rq%=<<
+kd`F-h67Ds9&9rDC,4%uQWI"k\.P4f]b9q@YNMGT23gVQ^niX>^Lt)q/ECDDrP=<fMs/eR-QcMZ>F62J
+H`18lf=)R==T7[l'f()JjloQ.8$V8Y<fgGZ<q`eSh7tQHnMap,)Mr9@?Ipi;:XL,1"msDd+ROq$p!$s2
+fZ\aS:QJ<#<a3$D'CKKBrmtE'S)nr1UsC7TLPKNk24KSP__Zts(o3AMaM:5fJE/4tg37]F5?uddk*"6A
+/*M1@#k<N3QGkIdCJ3l?9=lW:o!^sNh$T1L]oeRPC+T"URQ5n^c;B4Zg'HJ(@SUVs.iHueY%0%#0rgFh
+6i-csRbUG8Q0jN$KXqp"Qup/-lX^3'*XK7cU!Oc!!S=/F#gTuhSfOo<*-EdP5G\do)bHn.=QNRcq-_#+
+5F6krB&K`oR+\>f"3*eol[oim?jSsH?sAL7,6BtdE_4(@T`JKbb#V#SB\A!#X+SO7"0GLk)ViHDPO*>2
+)*lu1ES7V:.SX6i8S`@ll9h0t8+I&sB,kQASl6mj;4:`71P1+9"u2/5UQiJl6XqMq84LX@6]Q`?MmmnD
+Tm#Lghce-C>WGJ\[24g5_D<ts!I[N[.pc,4.J5^RJ#c]FElq0;+,q85Bh(=nZ7Kt,Z$i)J,JW+&g8G:\
+)&0A@/>2A+p<<nY98X?$q)%=[OB\-3dRsmHkQ3)$rr?B4Pr3"_WHWU=IqMnHaMG\l38j[R=[d@siein&
+,DO$BbR]0:a,1;G?X):'nIgM.KTHoJ!"^+[F%X>SR$(+p19bX'?uAehBsU`%@^2_fLFomk1#k6nK"AJC
+k;.7"6RFq.jDXkcJb5aRaGBcHjcgOFI,e^F8DruWP%\D@kB0@`^j][f;g0HMVPR"bEEqeC(0aFYj/jX3
+5%@g=/BW_bAq5/a%ikrn51RQ=^N0:tWErf$@AN=M+`(B+(@7cI6Z2/qYF85,@aS:mAM\th[sg0"NP=KE
+QOk\FcL&,^'-db7cn`0f+d+`2@iXn&5*\7'8BhMphA=SQ.`KOj,mq`'o2IEhhOfcNQJ'0K$EkD7!L7Z6
+C$XA.4Mr@S<F?E!m/4Eem7"t8el4n&UN?G8&#O\ROJF%^!jfLT(cfW4b(@^0PD3N]P`OYDdqS/>5*]C>
+#+=OM+*u)NG6Ui?d\I0reul-.;ED1C\/,CK!:u.YJ1cb>55!:IC_c(S]4:U0*hM2%2f2.\N-h$W7aak=
+e*a!&1(O2,T5Fin)$>r%>Um`aZtFl,g0/>3YrY7W#n=l,&AZ^8(M(e,kLunV(MK=/MLID[2Xk1fl<Z[&
+iOB4u>AIqAe>ED1Wua25fFG<`K+m?1I.:;*Vr2?'g#69JC3o7!+g0m7B5GWccE%C`f+$01;RrDT4;V9$
+Yl6.fN9d2iLP.8NKJk;lPcq`\,ER>n0j9!+5%O7@aM6\\r++XGrrBp^nHSC;Du>$']5Nu!dqrHrLiYBE
+S+`bd]Dhkbj7*KTTP3;.dsS^PqR>4Ul*pidorfRG:9-38E4<B2b#V>3*Z,(u+,27j:`_4K]d43C/g<Ua
+0fuG9J=Ei,^J.+R2Y1/oNXjKV%M(mA4FF!lB,L'rfALa^d#YVfQG2qIeG:QP`MT9e*Ht'(4;Xib:JQg?
+[>s8Cau8f+@&&%S@-)t3YE$`0OMXt]CW]_)0426dm+3_Y-BoMfUJ(S!9k2"(%_`qK4pTRIM;kS"HPQI`
+&LGWfa9$H57L-H),EHt%&p9b<[8uVZH_.Aj%4i8!50501[Jp5W<:OMbidV$aGiMuYY&?F>W-F3dCDW<?
+4.BikfR[*);01MG(%dn(@lKA?C&=4,ib-b?YVD?i<]n)0ClfE8j[ML2R)O%>lo;2ql-;%gT:BqsInu1h
+^!_GmL[L4Oh6UDZA?99>9b")b<JVB1Z8*+:*]Y(s[:W["jdK556O\XR.qa$#GVqV&X]ajKAV=u>P6WAE
+m/RaRI4EVZ*K>f,7ghdU5Z?:L'lG?/@:t2I`tW*4dC1D="-9>pSZZL\?eM1/XlbkmATnIP'r0tqGoMuj
+)'(4*OtB5nr&Ne[]U:ScHI>ML<r`tLQkYuRn"]L[f^i4p>e:d.LSX?s6l%2hOhUq.orO@>M+6Z$\WM)k
+B[9dI*.6SKSG0-;E&"2)a"M4R$#:!HH#/b0(_4:?X_e<c9unl'9G9"jZ5&dt/5iI`fM4+p3Pe?dcU*KC
+A9,7<N2%!FOAB]U29SkL#psRF$/?[LIddn0GK1GUA*.>c'K*ka]WQr5@&c_%BAYi%3f_.Cr(Ki1[A)ok
+!6fuKaqpp!4-Uf"EQo3j<uNug397OT/4q)*)0s4`pSiJNQcim$e\!ALA:(1&EGmN3ULJIFfl;U'Xl3Eb
+1_Q:g`nblg91su-bd;8[lAK.ej/-bra4/\sdCfmYVQQKLqhl>%[+1gl<+#k!@r$/LF./F1@jB@e[6$N?
+4PP'oa'U9)!0=6mTS6kFOuZ/1C;lqjZs\U'+5R,578U-ePjNrT'Is9I#>C![@%)-lW.4\X#H)kh_]^qc
+ZL3Y`\")N3a3q9VDa5hl,cMsXk$V8V;mjA@"TGf8blKq.@OVRsA9O=$g.97HH;\]_)E'0Y%S6/@4c\K(
+Qcikco#a5<?k&FXQCsg]D;3'=:sH7Las8%GM?LCKm6S3;2jhg.E6IuG\a)s?ZVkWa<rr%h)*n"QW:['f
+q/ud])rsg^-Iu":1$j6#:7^LVdE"tZrLuPe\B.2@`m]Nf.oum`g^ss<io4Q`PV\Np]U9pk`X(g3)4S3c
+OLBD%R*<VYWDE5trB!q^JN8]nG4V(j\`80CdD7D"V'M+9E//e^)bB@YN"7a^CiS*LW`mB*b@@2cAhb.=
+PA4Z%FjK$(k@3SaAf)e3onZ])G,aU/'K/sLm.)uoo-*)!bmBQB3'4guElL">n8]P!MqPeDc&kldNO$9=
+#o%d?qm>=ZL7F(_0&33`,`<lYE)f@.r2W<k@`W/2/>s2i)C!3]qtT)kkubWLaI-Y#C#PK%EO:cZ14D^Y
+cJels1fT?kDD`5Oe34:+,k7?c]/s.t4jG93_p/T#rHQA[/'?)9-NnS2f_Wq>"!e>dqqFUdIQ=S3d"s#n
+)!m334.6/5buA,bY];Ef:W@o'lO0t=2a2hD+:T2>2\V5/j$4@oWlg4%;+TJ-U]nLn<Qq=@-YZJV(r\+(
+#'=7UXE2sN!616'>l;QiCje=D(F^;.0kC`H\R43=B;&2J#J$Z&6Rp9%$J_i=G(l-1-%:%ZJ1?S.Pc:WQ
+9)$hQUT3STCd)sM(=nTr/FP-e+b2=f]f>q*:M2<"[Ya(:2Yct7e&*lXQQ@N_]sqqud`tj]7Jmj@:,Jeq
+7/9l]cb:V%[<soG*3o9c_RKB[ph5uUmW=%'8AJWF6[lGjom"45Iat#5XFAfo(\IdK7)$%tSZ-J#3uE[i
+U`M^DRA:r"m;3h*,I%_Ra+O/^iYRTe?foPkIi)q3g"^.@kEm_#3PqL?W#p_#ZUi=sLIYtd,/uVb]QW#Q
+7t*uSIKl\2=Ij#H6E;=i+!bCYF5*j4eC_<%"T@=S/8*2H!*0+j^(^pZZH&7hB.*XQn&Kl*,FP11hm>n2
+/aWHsr(#3.HZZsM&q)Mpin]cTqBhgb&2Dc]MYXnb2];3=cF>C*Sca>u%4bKhWH`UN<QHcc,PSK(^rAAl
+&Zm^o@309gk]7+L+Om0"-<Iu\U]Nb!mA!`K1WVFl$;"_2]YYqW)q*O%Vl"mUC?P'L<$*`JF5a<[57fpf
+U-YMeP$5S\BNdc9-+^BpY4>%$,H0b;9OA9-`64TDVrZJ*1[HeX9j\E(OXRTJ[.!gc,=;1;Y5!(V)Ma+R
+LGXqTX\9HA>se!u$%<7+#mT2JSnjr7_Xqg^e/Y?ffrP*@;rYshPANbG\prj`?P'kp4E[XVC/(E%!+:p"
+O`b&q.(+>Oq.,@"^gWH*ju)F8Gp:*s8hIY*CN&c6PFUgaa/_c[rr@f>o5*Df;3inES;*#L.*iu1CZt$-
+`Lf,33_tP8YQ4gJ^YP)!rYQlKoP*<T=s@o];fHMl>o%[P7j8D]+/-_`d_.X"<0<LrATkG0IXcV&Vf$80
+1tBU@@s^Jl-F.h/&BMMYSE#[M["PW^'7skl>>GI$$'AatC_Fl"?aNMiE+QO1"3QcXRu"ie8AUsS'O=?\
+@[,"P-I81Cm>cG:C:W"$8bD=3:,dq$0.u*>o2b!)q5EW#O]^f/;oftBWZ(#GO-m2Lpn(FQI(s.B@?TqL
+EOs%g:RDm`-1jC7.n9bO,Ln>&GdUa1E<Ll/H.W$Z&H%Ckl&N=PCG&g,i2f_[hX2h^pHh;<N;t4*8AHSu
+o1;SR.i`-OLO(21I)QH'Fdu&_N,uhT5>'CmMr$>h45pXk2u^qL@LDo1!(FHUOP/mQP?CWeQQ<Khln/V8
+?<#Z3oc]7bN/lQ0@c4=3rfM$%>;N"Vo9RMkXR1E9kNo('qntP50P@r(#a!1+5$@dCl].LdW[]Ma3k(,0
+&RdpqPN@2g*XuX]1Djqe.TKTT`sTj3qG=OEV*0Ja]4F7I:R$q!kDjo>qaOXC3Ls6h<jO2Q)AW5o\]Tt5
+5,5M`WnAa:qDPIQ:*n<MP12leUmmDkGoO<1'k(mI(1&\Xfu.(=KDG<DY>F.!F4Q,@/(p_Af(W5>gKrHQ
+S3#aV?b?ndhURt"A<VgQ2WcgX2[;QjNct$qTZb(Z[6X(CrH2i\$9%5IbE"GCCme:#dg*Q_'"h)C89'r.
+#j&Z"E(q^af&Y2Z:b[$2E,nECIgX!@]Hf9gm8a4K1=V^SW06+j?mK6o)aGDRI;2`43-;]bG)%>\g5#,F
+mOH\j6g_<J%&H2taP.$o`tUDTobp=>WTmB<jGd]k#^3]SGiSJ"R-:VbTSf1Y9d1i8`%0!5mJu(pVK(%J
+.I;3.f#l2]:R%&nI=L,IW,Pck2PLE.LtSFf`uD<`%/7jk'p\+h9i<9o"LA0RJ(-1i7W-!qcL-#Z._Vj.
+'CU&gLICYJWATjlBKDF6>L8\DZB@X=Nien<:22M0PhJ8L4:C1nME*89'rt$N\1?VWrr?*F5./N*MLEQ<
+m(p4$LW)e^H)L-YYmn?kg1.O)p`?7KIk"'u2XPQe8nSTSB<=I<EW*4PGGQdP8Y-]NJ_]5T3;SNa:?I#N
+8E=YI`o8d.OIr+&O"tTZ\3=#&$2#Y\XC0o>(:Q)t$H5RCaVdsGO8$3LlW;/nVWMq"F-]4V=:gC\'d$=g
+H/$[X>3#tof)_5LPCQ/s,IKO1<\DtQb*-p2CIID!EZ"2.SenU94B?OtUWW9gKXm655I9II05KQAC^8d:
+nQQ<l)(QY=$cd_ho@],3/T,tZKIJJ8Nj/WNgGS(2#\8FPmj\T'!iGFb&Yj7g0LIXeWa"!C<R211Q.^]1
+"WhEmdX+nZ,@/LT1S)KN3u=m:@92B<[2[9:XHG"&?$=4$mjfF`m$`NSiam@kGitJ+@#VIE1\_$R8@3#7
+CA,5\-;1>u[C92QT(SE#/\T<L`.m=+Kc0S:d6,%Z+1)QqIgrd4l@(LrCPYuXg/t>dFt,;T1(Z3e%P't?
+<tj]#i;P&$[/;]\2Z=]c[GJ17mdKUU(@"\4^]8QSi9)-HAV[lP;eL`-KD)2;V;_S7Y*s3T3FOO,MZmg+
+_f:5X]9PS?V0,+`A$Je0B^oqP`*P"b*6%UN!#98#Tsug_?:n]Foi5SEp,/n"7V="nVO_?CPpA^Gjk_-#
+J$CV.oBfB;j<=m_XeSnM]80kZ]B7!@7PgK`AQ_AmS)`Fj\<$dTn6?='Ak+Qh7dP:O.a*j%]R*N"`.UcM
+KBE8bh'X;IC/%?`^oX>CN^c)+dp%A[.!Mb0&'>0qSE,.,Ws2k`4MUc'O8Oi;o<NX=qPj?n>r3Y12oPBL
+7M:-M86&>9dC[<mGlI,\>4_8&]:DoeLPArHfD9PY//J`u_1<$/T^c9.VPgt"#kY/^(MW`I&_lWu`B8n`
+jqY]mj.8tSj!oAqA7fCtMnqu7D%5'S,^4G%#&gfM#uGn-`DeR+n$nE(^!ht'\[7e-$d+GH7is28#fUr8
+P'YrD<fO2lSjBOCZc)G10s`AZiBHJchRd7HOX`853JjDBKT_$<F!(M@!:[[V6,5YJ_/f2gp#p#p,[?((
+@bc@grjpV#Mp,aT,NN5u:qj:;H6$$@,,Fan+c#LkorVY&`1BqNesa6lgOULO)1j,rnVm"%SCaT0^4L>`
+Co7Mm^f1686i9HYY<nLBeVH)S9=lVfTUCBHh!:QLP>n5f-aD+aRd>p*RR=W2!;+@7</u/+A#N+"i`KA]
+,%.B$%XMXN<b'42VSZDMElke0N4:+85ffTY&K9W'Q75gENc7Ck8b40>K91G.._1pefYWGZ3YP/bBN#\N
+,`/lIK=OX$`"ui'fd<@sf/rF3G`PYN[Tcsbmo%4c3b5uNWdBs^_&h7*b@.p8<-@Rj]0nGFR1"`>_QJ'R
+5&Mfj%MS7k848Q,V2K<l)+[KDrojgEW0sU->ErWbj,3!EiU\q)(E6.Hrr@7\F847pWt9#KhHa?!dTsq]
+As:BG9_UXN7:XE)TP<Vu$`D_!%&pj8]Ie+[Vt3pb)M^7Z3^R;-'#]7p_&2MFoW52O3E`12)2Q)g'juPR
+2IjUe53ZumIV:1/Q'r6lD^no+(`Df,66N1I#FM)h^d^&fZ[3dr;lK%?\W(glaQ;=A65b0Z@#(C7m7J*t
+pl/Fs>j8hSO`IemYta@Q67U!(>b2-h5HS"s[j!Zig-i:F9[Rsm[*:,>>,A["IkqPdDA7`DQu[A2;L/]2
+X,2dB\p=t3Roe,*j1j(3i`j$37c%f)rr?+H]u!MaSq$tEN;M1f`H*V+=lGlQnN0/_RQ-jBDUiGtZ4kuX
+,8J`IO_DURjVB;4iO<YQ['@[G]fq\kCpaFe33FH;;7(6e"9Z4%:i4:/Mn=Nr#&bqhS\<;s%R`r9krTSr
+/EA31H5">&T61LeZ7+$E"cRJ,Lo1>;[Sn6Cie:8`W@;-+'K&P*dQ&M[Lr^do&lfm9ZgJ+$="eW5X&$";
+h8o:\dbIP*Cr^uO4UC5LD?Wt;P.P?p0U5hTNQihQdTI\'X&uIO3fbgc#pc*mHIa_e:Ulu/XgU<L'j7&o
+).rsJi?Bb4E_^R'UPOTSqOI,oc7;k?O+G"_CAp(E?`\lSdW_#VdrjGqFE5HbSF0mJPk<:3>W)%kUmdD0
+d$)uUVo#&7r#_S$YA^7)H`3nJI7$hLRBbQlI%WZj!kbP$ML$MQSHs@$B$NoU-nR/cX+@P[#RL/)="i-C
+V:iVgK%@r']"-Y-XsJR,`ugD^:G_E6SWRe/RtVq8nr,Kg!_*/$F43,HkiQZZ&`,ljWC5*J(,hN&-Ot#G
+ig2[j#^%8N@O]=2]<WCi<]k<>hZ80EpnYROk^u=<CnL)()9nZ3p[[ACdsVQ7H]%GEA#`F4bT7ZQ>u-N1
+,(@bm/b&&]C-EB(ho.WW*5/_"Lp*P3!_I>s=!2Zd)6ZO@RDPhadcPSIdWRfaeZGa$FbQrF];n/Zim<:?
+Wt4Z:lWqWKlAV^Op5XI]mR>:4fURO.E*Js\'`%08CRB=0Y_f[c!&H(j]uSR+X#1UXBU:3qq]k(&Q2Q?n
+h%J@n8Z0hWWX%D,,B\CZ25s-XHE3V-b$%L%Q8f4t$KG?Z'2:F.;C5a,"?&_>huORfS48X4ZcEsc/5bdp
+B5E/Sga?!JZWXlDk`%S7?M@NQaumi:/7@pnadli?%S7h#3#+05g(g?,m_A;diLblO8G*K.5pb..A@Aj`
+3V&`*%]6h%)\_=:Sf-NPgI"<9MW3O1hB0>Yb*2ggHROGLcsm(6q\m5Ma3;fYG!%k)?aY*rm<qZOVTZlc
+KOGZl6SsE[hK`EnqGg"<;arsuSfb'/gVm@nb:^?b*CE\&Q3f,1ae(hOllUb\Y#H[lFLniQUJh^S\nAe^
+LN(9S&%+==-Z):\#capZ,]!rL,+i*]EDb#s6)r`F_Q"(##)RMWcYs,c/p7C)DXSkpV3RY_(S=CKbeTLs
+_IP[ClF^X&<.P'u`H%a8+OC:tkP&Ke0YlUglTmY36R`,\^]E19]8h57*28:IXGRMI']XD>"VO=E_#YD/
+r)i;KWNF+Y$^m;GdE#'Ynbq@c(uhqNR?tY>oD)VMgZ;p*k;tfMp$&%tGn@NSqSE&/Q!`5mifo-sM8%A-
+4houBVq7DBF/gmXq;,AtraYl#,JGik"HGre*`AN\W?ICgZ@U*]R^d(*%@d2P^O;nQ9rss9,BRdc#gX`I
+3nH680tr?/<HGT0VhR<0+-WWIgL&tJl\-:=!1\\uYYJ%_9g4=9YP:$@eO@\10'qE0h$so24HnC)G2]GO
+CUm1Go*nL4$TXYKG6EUH8ABrhF,hcR2-%kla-UOE("KiIZ*DsAJidSRk!hj$E<@Ei@*7bTTQJ8Li)Tm%
+ja_0=6Zf=0h7_^uITB:mD@H%G5^<F6'5.lAb>KW[dE!Vj7XTsV(`gU%l!;g/*3E>0'<mBkNp[b<10R"&
+lmJr\`Hk@aFCt5'/Yn41V!?=5&26-1mp!eGX-jlm'1j/h5pL6_c;/8'@]hM(>`M3pg*_\$[oA7D?1T*r
+00t`XX_A5@3$Y\bdcsBI9WX0RgY_6]PM!7nZ-+c]hBtUKkFhc&)%b\MIP""K]:/'P\$k).WC-7").#[L
+3PjkqTVXF*[^iD_ITY4?ELYcF5S=NPgGm%01FXl(\A^'sRZ+Ybg)K@)M`C.l-AlS#TA@D0KWs=g!)squ
+I;,*iOBksn=i>G%L,.LfO=oT!Q\bV2hWcnS)+O6P>MNJc`N'B)8<F<(8b0\]U\iT#[KEdgdcK<4(_E@P
+\+&bN]QC;q(s[o\"g[nb1XeLd=9t;mSHE9,P&[jNan2S66N"I$&`8+uh"l2eSl*SVV\>eZ5K#X1dO5G&
+`MAKPD>pP(`W>F1Y8'1=7s$J]I(RQI9,aKCLcEC8Sn_hN40qLa5BQH\MV^1V_0StbY]Q)I?6E.WA[*26
+S.%<gdXXX>K9SMTe/IoJ\@tVTFjTmRXL_MgUt8Rn=aOQ(cR%DfqG*f1*7&m`miD/q;@aU)lmp/N;H&jQ
+6gM!Z#[upW4m`1K+kHLKH9rd,Bl,5-b/.9qT5Y8jdZ%;75$Bemok/EDGlIc^)D/:%8ZC#/]5lJhH_^[-
+a^MTDjT;lEBgBPC#[^N/d=+;_R@csu[&KaE'ZhE)Vff%iZ4l[/rr<,&Q9"WC`pg7J]5p;GMpQ`-GDcQ,
+gL&"`C"Ftr%)HMCA9c+?+@2WAIr&fgn24<+fj7I7>"t6%Cpq%-Y?a\TJ[.H"I(Q`+)=,OZn[Ik'rL`@b
+?@7"JDIE&%4?0Q;5n,r?D@u(,Jq>e=[Du>ces[U9EjmC&eE3\(S`B*D8L4;a>812-!o$2;0I%S+hcu>`
+b/^nW,O6Y\:0hYSHBoWH`##_2b";mEUM9?c[EnNWS^0cs:JL/YiVl<CVN(;I10r_^G/ZB@,ItY2@@Vdh
+%iI:-F4A+h'U)c#+67QJGD9qVQ?tnIrr<Wk":nrrMW1UmS9@%5Ab8l<a/Ahkpht$/?QEgK/D#(]g._'c
+Vc0sW=Z=$iE>F[&-%OeogW8T,H*5@T/oE&]kI=\PWST.+I^*U+>?Y7b>MEA1P26IS[BrK=?'2)?O8':O
+HMo=i?;f29I#:NH6a!eQG(RNQ[fpu'`"D3/1dYH\&VQgH\[`$d5"6ObWoq,b=epTcFZH4_IRJ3#A2qBt
+WWrYW\H`+Wj,Um.5&56r77Urk<l=j2*`!l;:UXl*Lrm<>0eA&;o#T#C7:"i3GUs@_*msD.OWQW3>PL(N
+GlA#Hdp\#)nOd5a^P`C-_*&QBJk9Ig_%l7o0s37\iiPr3kN6BeATOX(c_p%^]q+8_aa%HYRO@!s1LqSm
+]72m8,?($[Y,&tZb0[5^>4E)^Vm>LQ(GY`J+NjoZ#$?oD%\gKg9rPM4)VXB/rr?lAdqjtA]Q#71BX,f2
+=9(`22?\t#HCFZ_WD23;67O@IpnQlq_VY\<+k:sKB"('$gIOo)@bBTeKLhp8%$.MhUhJ7RTDV(RBD?KI
+d-)MaeFf=iaR@u-[#C3a/?XqOlcj->$D+E]F!Q!j^\_+1=OuGrFT2?IG]q3]a5u%d3`-i891[9G5jeWS
+PpiPW$.Wl60<9?8`L\9AVq1P.92dMCX?>ho;qUJBE'<N)A_@q@aot[j^\+TD9-XF0#4'AKr2N#$Cdqn_
+Z=*)uj)G=41I0%7S1A&,>_3fc$^(2a.(MI9Y8hE@`ettTgr,?S'jU)c7InufO!NjEN=Orn5QKlL"!i3P
+Nb2-@V&#\?Is#I6WE\Z]E8Ht!YAJ[*8RO7W":'nIQ2#5^a/)<AO`36&.RScoF?K;j"Ea`;T"3W?ZjDl%
+V3Ipu<-(>fb`YNJ0dCsoq.2e\m^1CP@0E(ni.(joJnk)`R$jVXRRUCrjMIU!1G8lkGSpY6o!%76/A+-G
+grbNqS<K?G!C9UTlk^,'V,nd\*g,E"Jj0i07dq?=$L1PAd4-*W."IM39/kZJV"CO`fNc[n6?m_J/GOjs
+6mgD!cUq45Sf=ZZJHMi45iSp:Ub5\oQi&PFQ^RjR,;l(ZGsCi`-9U0=mcT)Ua8E=/ShX>o<#i"-5AM,B
+rM%"T`d[+*1h'71q%r]"i2sQ>I.JW&_T&E;l+$`n>0(K!?'a;.aQ.<`pHePLV5^5eLt10j>T@W#Zflh:
+b?[UTW1rWF(#:;=^,^B:!:*[&-45r_UT2_S6$]@*P!Lr$C&*U*\PKFLFf`9>^$[fqA#l'9_nILU3Aec^
+02a'5NRMXSFq)baCK7,bEG(M\PJYrJI'Q7fA\JS=qb0B=5FuY/C69L7nh1R<")CMZ-m5#lc#cm_UaHi$
+DJ\/<o@rf;mQj79CgoI-EntJ\KM'h_)oQo2LRF4_)<;lL6I647:"AWA%2`Sj0HF[`7QuHurG/.!+fB42
+nftiV\(0%TQ$,$\l\$Yo(1Y^/aTFEdd<s,)$*I;Ng2+C&j\I3i$N/hk?93ZgURG%RP[C`./m1BbOg:r_
+\2Z^TBgT6"mTYRRd-7"$esSST"r!_=\t##m3BUo\W;0SKK!FYRCY!fc]V<gsZc<nph;".=V+[",E@knV
+'!lLe<-Z^L+E.VIE(R!,Oe&XiQm9,(8DL/$A0sjYTd4b'k-(-e-=j!?DkkV0)D_PR\\53pF@:Tj<U(MD
+3N()7icQ&`UcR>;Bi`[X$SYqr7bp]/+FY&!bgs%AdaUQ&@3LhJ&[$<F*?4<Hb@!AUj^E%u7"f-(8Y2`%
+'n@$2h3DqMAj:tL=^-V1WurK-">K/\!(u_C!:,58Q"K\'!tea\4NEDEdlIF.)GG/*?-/O,R=(f>q;G>&
+mSBeRW!cs!^9OX$RN@folC+qEVs)MG/tW7tbS7ON]_-)M\T&A6,4F1Q^sJ?LW%P2!Hn2=+hftJg^@;s9
+XZat4c6H=K1#&RQ[2ZSl)!bNRN3)+kU\1.\/WLm<S%e&'WD!rl;G2h=&?b,[gECR_bWs2`f8"uUkN^Bb
+cXf,[Ps#oG0rNe9:@?h/fA.9!9fhYsgOAIRL16WT7(C6X`bW:,l?I;rSqH_5Lij4P/KWEq]P>=UXJT[>
+rr@%?JtVc!23h@i,4P6]-@-k#ZYb7o1`":BGpP\2pEt-69'#^/ec,V\;M?CHq4I?4[lh.+7A`@snm4b]
+6t"IYMX@lCH!U+I"7J);';+_3::okQAX::sl=[MjABH;H]+T,ZB!_35C2*?&aXETt7rJAmkS;2YpAVIi
+lH2Vr6O9Bdk[.Q80OnIS@iSH#@qrCq[UuqDb$fKK!D"Jr[BCg$&I_/_A$47faLp?70dm7QUB$C&FK?iY
+`TVV)Yq!emBmRJ"#oRLo\62?1&9S/_r&MfDjK$MX]:,63UHP7-kDM1\r\/SB/Vo99>=R+ak[DW4=V1Do
+XMf/@^g9*Bf:)'"U9X<Xr<q#25="l,f/Fm3@Q_;KYrD0Wl1e<#pr<gRi[_i`(jQJUlaRpVqURO/FQk/r
+B+-pp[:Ela?P'k'UW22-f3h_]-*>#=gihW-T.K8j9qImqU86LKc7XV#'>Tp;ji94L])D#p83]`-Hp\XO
+kBHd3=DV?ODhD4O0+HW-&':2p>^DuW2oR<HIBgtMW[,jf1ZP*Y2,Sq($YbB1"pSjX>YbZR:h^oQL[$IO
+qTHf<G-MCtA#Vh8*1US2j$(--WC&J8=fX[q$MYO(IO%t,PA;q>7pl];*uRr-!01j"c7e,*kD_E9p,S&q
+r4sh7DW?KXftt=@#f-bJ(V;Gc;V_$tp861g@@Kp[S[:[8DopJ9W<N?fi)nheJ3*/U%m:)E(0b"3/h`p;
+<g(#hpYrq"COR>6D,3I3P0[.:E0+EMrSe(S4ZMiJ?6W+@(U;mZVi3`8i]C\;`4dGHFc4ou6Y,dnWO+Br
+-KSfu:i7Gd;4Mrb>Z%=:CUlXVQuJ7*`_0m&*aT]lq%:&^4+KYMgu.5@Ru4I0\^B3rMOkQjnI'T>7[d!+
+8kTP!#UGH,ngmGDhp#WXLu>[NntVW*PKq(oP+,(_Eh),AoDrso8A[=+atVTl"pI:]Km/[l%!!3=2@A<.
+pRhXu'BNV)^V67'*9Mbrhi:e,&%hM-#;*lE'$$-[4&?)@,e.Wg,uVd1.^X!H'?C:,J2Fa]#qm4=$h[ON
+L'2TJF4>B+$Kb^O`e:oS$9X]6^&r!nj*!36o>Lu/<-Jj(@MU.H6DPUl:O:KP'?j(Wf9]6#2XG%7D[=6q
+S9)kpO0'CX06=)?49a^RDK0Tml$$'39YW]0WL\>,.Mf4N4ib^+DXdZ+m'H48`![QAU90Alk[]kM<IeLK
+kc>)de0;)EK9[MFiU>F)@YfCtYM.aP8Bn9:H/F0m^`N00em[$Hj[[&KJ$SO[XX0Z")J.4.Z(P7VBg>+:
+@&TtFNCVQrfaU4g]qP3;_#>78';G82`n!\<q(f<`@k.ZPYVL+W*bl^@2.F7f411C_&dZm4XR0O&5/*]t
+KDAP?;XVQ(UcE(OEQJH(,9S)k<@Y/kNL'M9cU%Q:Y$8%ip&-pu<ZK>DG'mZo>.]:%7sn631V2mA)!H87
+rh&&TXV=Y(Y#,pd2Sqob\':O]N)r!c^13O4/d;@1571FC9pQPDg3FJBqm9Y=n"3c/e5L9rD$Y3j*r6r:
+i@fqS/a]52!//*o4r2Wp[ta%nhW&Lq,E]37Q-M,Q?S@JclG?f5&q6hZN?;SqjH8O%lY/Q6rCLh<!GQbX
+heA0sV..e4Bc<5o#j7;!#]Kd[1eTs"VOC/IWn70nA]+/pBfBq!J!%itf>-"0$.XEjmaG%AL/plgHZj"S
+3DImL+Q+9mc>1hCAh+RsoOj)MAM4IU>,FlgGfE:JMU,P9>O+t:b4=:_#H9kecudU)S9[ZuNs05],=fJp
+Y#fmH`l^bLN\cUo%6ANo)%U5oHq!!cm%p!eRg-?5#Ag2`XDut-(fe/XOlY5VQS`P+,AjFeb)q]K$JH-T
+".G;_arLuqEE3,V8M[VVL.(4ec3Mr<Ut*9Ir$gYFrr<GoJX(@02Ko2hA]npWE'b,R#9>Uhlbh_Y7n%?a
+&qZ85QB.bbV*+,oU:%X5/o9SfZG:!"`XW=LYBGV5=+cFY[:SXI)KCos4BJ3?#nEU+O_8d"U'B+XBX]>Y
+ak0Q$&$B]3%gnQd[6%N-CGurs3"'A^=MfV5B6]h(>c?ui#Fnkj/nl.kW?ZH4<LOB@$c+>.?(&JX4_ef\
+%LU6ZAZJOZFLYfX(.7[Hdu7>S>fb#VbhGj5<tCS(<t7+n_eg:O-g%Di7ZLuB`4%J3NdD?PKC6eeg;iHH
+3Cl(#komU-?:<#H%E,#$:cjfY2mFt`oSkomb7I0s8gECgOA?nA@kEYa&U1Q@,:A!H9\'SP1g5q#8/+XV
+0R^aM1YXdfJk3?b9S-sqOr*6@!QKUmaFmZ#%UBF(fiVbS(nf8F+XJS%g5EY3!"O"=rFco)Su&0!U"Eej
+c:IMkH5>j-pS<p+D)BZ3(WO3+$bNH("kdWGcY&tE[i3(\$;E%@ltd/Od_9'IXm^<)d/2*/^o5"`/`5?.
+qs.*:b]YlU`AQX%k"*Q4:j'pc)>[lFRnF+FkL\b#MKES'.pV)AMlUWA0'_:bok63%M7:`@-(HMa/H!c&
+1!4"1)9$p,G)n:DiG2ETS!&*@mO`ZN9"WPop=3]7;R2b[FR?$]fm2/3Lq[D6djJb_E_jh>K3"To+]+A+
+mSB\Drr?b[NDAGBT&W_5n%")WJ-pVi*+RR4g@_YCp:24K1o^((X!3m+BaQ;"A@6FZO5^DLY!e=_G^-nq
+gPDRL`mMFYkYUgEk;@!Jj/LeD9iao$,L0g0^d^hsGg01>_t\QlZ&tUT\9H'?mE>k60oCe#;3]h%;H1&c
+JDO-+rVlkbE'*crSp6drU>Dc$[C`!P10;5m=11b#87CU*C5WtHX2^rhjFbtAZB\uKWO+AP+D^5qc/lK\
+-as6b`+6..$0dIreo`,R0/I>[X]f@/Ve_BT(jL2jD?[DUo*_TR)'Hb8ObOk=)&^8jUIh!O^+!$YTd06.
+^tp@Y-.6Y6;BmNk+H:8U<;CAcN!pHWT=p+^du7Wdp-(Z^gh)mGShK,2M1-e^]t`!umABCDgTs;6dV_Qt
+4Ds"N#fiUANlOJnV5c_c/],tOrD+tkV3Z7hN6E,dpIsPOIh>oqRZ@-QmO?/ING;Vn6k+iQn4t,S:f"N>
+:=$3lb'#=/+Nh4MNOr:+`XPr1oO^\?k%2Srhf1uel&Gd.L9K:`20NfmK:qa0]:cNlUM<k2nrg&O>H<M9
+2t2@-kN9c5;8Q&L./-1jY@S&9;HM8<;ttFnN::S.+,BboW[ulR[Yf"bfG5cr;2D"?"HifJ^8]YC%P`t2
+hN$d;f>(/rgu5&0\p5=iV5d#ha?qB1G.8/Ta8rflldI`I:8^.a4LnANppWFOrMt([K>YDCnE`aWUT%T@
+9'.K\0El)sX>p+V@0?#&D_CcA>u""R9jIVOnSjfbb5U4,4+];Pq\2qQY0,4-S?HG<$q^P])^@.!&-MKs
+Q;s')kE3j$am!'9PEWPG/@kk5*/onBe[X@qh2'hlr5BZ"^/;^)19s:/UeKW5Cus]7-6MN)3FGi_bb_W1
+GubY+&Ln(._.VPE\U"Sc`c!:A,le13"Y8)cHhF7u4N)o]el:S3+:kS].RD9Zg<lZW.;(n<W*t9J5t^Wp
+`QZL0f&=J#M848ZeQeX@Ff3?$o,;fK-Dtrn>C.e:S^]:M6Y)cBTOa[gVsJ!E>g2hg#N257]LL*<:Cl7'
+mQceB^+cW`!BZ,X)LRY7=1impLVI?V(uIZ8=J",?hgm/G+EdbX+=J,H9B9AN[Ej*E^LNl>=LsK!=Ll,.
+6roR\<E(Na_ifsD4o)28>mg:=pC@XZ'DPq19EZCL[Cj&Z9rW,P\aW*Y,9RtQN)i.!?:!r*fN[TD2P$p?
+qKA3BBVH9#b-m.:%?ZTg1]#Vu<^'K)C/rb7Od/f<;GM6(bmpLViec]U8C`^*X;i8+R08Ss+/MGtM++Ar
+p6KDp?lYiT$pa588A7t9G*KJWTnhI>4aV1;##-)RNo-?frTp3[q9T549qg3^_4oQ.$_,H>EW3QlpuZ<O
+7EU!fqc^SGm1o.j^>M`BQp0K`qn3Y;7ENlLk-q?Hk2/-f0J63mpHkI"\L+QA5Y@5p7T>LC0Hip7eF`3"
++q9I2Fg[,uiFSA[F8R7'rrC0>X%Slj/ubD/Bj,7IUJ1Neqnm`p`VhSYeMJ)K=S.S:/O!9T,RZH+5)P^X
+_]Cj?_a>(W^:^"Mh&i=_5?btFfuh8ooZQWG_7BlhD'$XQGd#$:'1o.>Qq3AknlbRJJ`pi_=&eHI7-"0R
+Z)k2$FOX9t0`4orSe1[<++l[ED(_I?"+G0[#mZnHN/SjK*.S8hGco8jS&F;,8nuaWS2m+i$4\k9D)M)0
+%hu7NA5F"Oi]Q;h-_]k[^:))Fol\onAZ/kuZC1(?G*JNpVh.EKm8[rcA9n]OM=f+*>CDFJFt,h]esUI_
+#D.6I9#@J`5DSbVPi@'fn?m.39>([GArOaXUhC(O!)Lfp>>iF3Ddmupi7dXRDCfuWd?U($L*%hid.:Q4
+W2(Z`V7!jcIBLEH-Ouqp*Q;[q<)VhG=JDkVb8i=+9jA@:C<KSkdr(,UI)b#4(gmXN]pkVmePt:]<bt]>
+a/EZY(SnF$4)=0BCH07A3HFUD4EH^Yf"FW7S99/1k*7dRO$gC>b?To4]89oRNqcmHbt-RWmRmtLV0g^-
+6EClqEk"/W'40m$>HF/'8Ih_9dB]L$_h!iL37$Pb/Q3RfhM,Q\b@qmnQ:A;qi`KEH60\])es.Yd;VHu.
+-E4%LCp]<,-I4E7:=80SPE8?`O%NZUK4<R36u+5(kJ'l:%&bAZPo5c2o\b[WF?#7t>gg%G95E`gb]5!)
+(Flu2#GsM_bo@IZ7=t6U7,;8p6JYHs'eTd.`>\5P!>D6kHRVeSS.[QFO(=@VM^ueK$%X`P#m\Y7Hl='$
+k%;grGqP'5GS0c&D@46bQ_J01S>[eU8NHcmRBfn*VMm=(gqa\B/38_g>DbJ`VK8=anP-cOHnhX:o%^:j
+?jq3tOEWk*.Ir#PVX.p)nWeADdd597"q=V)\$BY_HAq]ka7c*u(diNn064@]4NT3?eXYf^Ul9V$bK7:d
+Fk$;F<h28]0X=POfCM-)!))hRQa[d?G?=)(2Z]Y?73(kF*+5P`(i>r/"FtLUCUM[RMpV:T4mL;'NU*k6
+n9d(fNN1W<f]WX<lP&Qi>MR&?G/%\(8F=K8RWB??AO\k%0U=kd<YY'8H9KO=jgA*g;g2*hhm1e'0>cTN
+pqPgJrk%,2")*--dlo#O@n^ZtJ&=`eq](nsZ%k7D=c<*M>RcC6nQdaW9??;mdS`kFVt)N`R@[&"At%4Q
+XABdHKu"36oQ!f`8'VGRorfGL9h&;.V<.K?9+7Y-7O%s?V+qg#G1(\hgD("_S?3b)1*\8T=kpBmd@I?K
+2]),Nd+.^>j-14$.GR6;h'?fGMul[Ce'M(c1*o@[]cDb\_&WFK4\tBA9PA0FL=E)*R'A"HN9"XAU;m2L
+-V't8AVht8VFsC&@H\_YBrH:30W82hmQf&JSOqW*p-(q\k)UL`*(FFK4-[e;,E^S8dEIa7=2C_VQE9/T
+Y7KpLMe0*UHcLt")ounKlm>&.]8ef\jW10m?Q4'VF'Z.gVN2*Cb,*2uWP<XYo$mUkp`8Am1WF_FSZ:oF
+k2J3gV_[?]L?1/P6r79VcN)Cm^!ZH%l+3k-O/Oof+2a['Z\f8/kt?IKO(:2-KXb+'#1p[2+&t1Wl,KL1
+7hmRTCcbn*mlXr^rL7_:G.I*DM!]->S[V%^C-^OrK_/6.Pt;Ko0JctaZJ&;@RHi2Z5A&?DQMuBrGlG8C
+YMtn(VKfL%!pVL,T^:/[,$V##*QOKq/+paT)W7TY8UMnp:Pc7J1tq*rF"XksJ=<=2c(f1_Z-@3+KsH#G
+*^<ikGti1sF><D5^PNSVg8(Na[>PFs0h_*7[QAfpU,cLkog<uZ3n;_MUO5,lXmO>YT>Xt$)Xco]nFdYf
+Z%b0.C$o'b<^ab&+?%i`KZcA#Y34-nH*o]869@=<RRb4*N'8i-P?>NHA^Fr#RAH)4;dg'::12_0Q,aca
+22(P"eXLXU'--.o$@^5@rGegjGT0#,2'#.,J&Jc,PW&'pb!o7G5#,2^f*#/e*tG5Q0)FdZr[OY\9g,oJ
+IVjIDnTFS`r*;JImFU&=#:5j(H%+Zg5Jh_J^P7>ld.?SHQ.[2ZXA:<7FBVFG-OlZ&.XK[p>fSSXPAg&`
+`0$-m)h?7.p?&p@8`^jL4IC'!T9nI$:l6786,r,@*f*/r:S@N`q#nkB)2bH48k@`So$6$_?>1gn3K9"S
+_>YY.aH";:Re3ofG!sP1TAdaj.$%a)rrDECnM=K>R<3(n#m_L5*a5L*gloMolE&Rsj_)):+0hC/jtX&S
+QM-2*ku&V[n_=<RN[T#oQGB6_H`)Y6AUfF1,"4*%=.5]&A'>_o0fD*GeP\3rX<&](drSl.O)**i"5qE.
+2-hlQ<Y-+PA!U6p`_ni/=Ite=\!M*7BcWY:>Iscu";)7;OK'%VTYMR_>t3'FRCpe<Ps>SI!jf-oV0HIf
+bSF8V:E[+g6g[RB70&&IROmmP$'1c$q9::k*8[$(O)]9cZ7AE+]YiJDjDdp9o!j\<,#7>igUSDQlg6qM
+mMeg#_f@[a3Y3\U.&-$K!(R1ML$Oe7"q;]7Nl/4FWo&0m`]9[qOsX^BdPb*dk&\)=5ih[4#irLU1_2*Q
+8)nfk\Z1P!5]6#!o/$*Mn`G+hn/[nB=uf[D#K7dmaP$G[HrbC3BWlNpTTat&O/<sfC9$\-q7]r%2OoJ;
+NS"=7ZN1\?8J,!G3FFO+TF3H!5%LPZ/22#J6hR8*eVt_6BP<B7im#n%455Q'7d.]]bI!:sg.+cuQ4fFr
+.&hNaSf]Yc6!>hfZI\[V/'2\r2(P%HB8h\E8R+%Q3<\Lj*qbK]PbtP5S[o:KV0L1Pj>r%)WG=FAF/n-D
+W)!EJ*0[pR&:XpJO%Qu#GZ%RsL02*29M2\7Z&%LR1Am(.#eVd>*7n794S:WJ@MUMp;g4POG2[aa4Cn,[
+OVm[&,e73m!V6'XA'!p#P%o`JWRU23,1NuEiE58T=l!-]mkA72\`naqV/srn(TsX<=$$h8=2n:!D5o'g
+C(/rs8o]s;^cCYq23Y(%DaQ]fG[HJ[(gcEi965!OI:IlV:D/kM%-<<*(#;@lbe<D^icnJKQI3oX%LTFP
+"+eMO?#XOLK+;ulOce.Tg^nlC!+S[!_g`)fJcNrf/i!3SIp+FP$+5[P-]7gri/<<gc]m7"Lr#q8B0YVJ
+!QjMVV"DrWY.Aae:=ab'ihl(gXZQ^FY6OdM3Ek"mCph@E&kSioR-+S\ZQqr0kWc]jiEjb;HCr/dP._SH
+m[gC1O(3Is6rk^B0tCPaDBs6VF-"b]UK:/J3Vci<SS(E:A=)[Abr@2r%E]?pGi8F+I49MVPbcMD'ZY3g
+?:Qm[\<2qS+[uP'_'=h0ULfjJ$UV<=0jUWhg+r[.UNHtYS1Zml^N=kplrp^HB!Tb>)n8)goce$cU\LQ4
+,E>nZ)fj#n`d;?gB>#X)b9OFDFa.d=mWKI9D3\`!a$$]PAS)p`hN$i3.l;,gCkK"iqf\[-\P][:k[Ca;
+gtW<[af'/Z/NXo;f>"shgMZ2m@.sE+X<d/%&l.hrg%%YPh\@Mp]LVp_VVFf?2hmm*m_L%A\$:q`Zf#5k
+W;1B5cZ<GTNl3q`+((/h3GHWSHS`oq'6l"uiePG_&,7pG=#SEMMXP-+b,6`iLr`p?DnD'*Q-3jhVgbLc
+@oB\)h3.1(1\VhTn99Qb*I'br)o@%DYgBQF%6r.(k3g27\9AM)1>GW,-<G!SNLZ'B.k+Pd.a`!>8L_87
+3Hb4Z/q8W4(@aLF]&\;ZZd<WcYZmT4bA2/='2*AM^R$715Es$-Ob]DFDGRsk3R,B3CSUG]+c**l^/oFN
+^LQ'5*9j(*Hl=V"I;,J@g)#Q_[+c*$pmPE6<D0]7H/;q?Id5*qQn1</GcRZsN?r2\C15q"U-G8E7pijY
+Y-f9R=J3(7nHJUIm\+'*XL@XjF)rYF`sOUY.RqJo!FeBY#q#ja?+E.:LY_'W5B*=KFo7s^i/T0H/[j\%
+i4_"qZTUqPC+1>2neT_'QNc,ecnUiabfPjHW3AVtX7MKqeF?FA<*HgP9!J\&SXG<X@q%@UJs=fngsaa1
+=W9K.*27W&C)M+p1KQ^I9=+3ADMS9oENGuqA(.7L>!"U!h3'Q4K.DqN:JQ/;F1'7pcI?6+Ft#70UF8fg
+E9WC/;R+8,Gici^1p`RmNeJ9hq+C34P?L:j-41-`VetA<'O>rZ=bBf)TBqmh&\Mc_M3+?s'EijCeFfuC
+iZser3,pri.`q>T5=>DfHs"bnB5&&X3OI<Z:m,!?!+tK+6-9(?UJWps?=f>NUt^pNpY/j/GRM=B0\G(4
+`"U-_a;AFOMWm<:]GuAGDVAFCA?+5TAKN/b/e3<C574npa$V7Daa:'Tr4;:G`'PE1UUaXj]^`)$n_O^j
+cHQu!=sGY8X#/#?V.lnU1V?l,P(+/iUk_/[A)2B]lGs'DOP-cHi=np'J%Sb_N/q^S^J]?JXEdTu4A0`X
+;FPSSk8TjoM-7r^A#J2!*gj(0?,k]WMJkt3BCT3H2HkNgf@c\,TK!Pd`r$ftf<;k)G]P`aFiAAQ%ud3m
+I6c[schlIb>a4-9%rpM"Y>nLu=rapl41dMdI`q,E="A'sY08X3/<CRN;h<Ak>7fhgjVg@7r'RVC`MVk.
+pMu*W^R#<C"IsG`_5sDIHcA8>oIbjp,CE\G/0NH78V^!JCbuN@E2tOCEYM$&jRfDF6f't1_Z'VANg8cs
+hC-rS8I5HF.'Xbm+?_YEYWmZ8k*!=2CRLe\G]VdJ_`[uNP3FEq2F3>*++GN4G(llT+gnG1p.4l$1I1Ht
+OU4`48[[$s"2lpFT>]g?8u&^2VNH8H)D9snF3t@9^QAH&baZ?5dBV=qEmGZeBj[+1N-t^AUm?[T'1V(A
+/iOu:Kd;fYlO1GJU;Jau"41]KNec>e!Xjcs*?P]Gq*9:7p7VLASJPoDEtAT:=u[[eIA,(Z_Q/#'oD7$I
+/N)%9VTI3lcO9aQf?G)FJ7<6%4.o&VLb_&;T&=qGMCL,A2:[H?,]Oq46Xu_CqUT%;I'guqIe`itg%:pB
+&:bCr_1sLgkQ5FL8>jZW\biIT*n1389lUg5&oLRs:IFJ^!4[n*RrT?WUf+:d_D3N7g5J58]CE7XY4B=:
+RDi2+!6dsShmL+S5A8B#]?u@OFR5UV/rul=Y,:-<R"!QsOiL;O(c8c7`Xn.$T]LG(gel.CS'TlD=H1rm
+1ia`Fnug?Ud(!=7kGPdPBQ-uj/mHN]iRP//@C,3#E[&'I.?ZOshIo"kML;?_fcit)<Dct0o\;D`6kcE8
+Cot/W,%`_DaMHn!A"!SDKbDE;$bL,>jWJ[.M?B**DA5_N)&9r0gV5]fp#(]3,2Gd1K)YhG!@ZbRoHQN*
+RYejOB4Ic_o((3G/FT9*q\f,RM^"H+3Y6QV&_=MK#J(LW=7@#]]N]8lZl)<(UFMo.@T5e+NW:#BFn`#;
+<0VSQ`?-CNcUbV9ri^aI?JFg^EX/1"l-ETQm=dtQ%Q;H,\<t;M3g]Z4YeV.B^o^YsAuaV?cD@=2k8YlN
+M>"aj26!!rW-EYddu7IrP<A?\&8$s^+BIJao=N4,,B$CBn#.G*QJ/3C,!@a!rr=,5]cJ,01WAY22NSYR
+eDg;d7EE]9Vu3n/3@_X4kQn@b%?6T/Fu,C0Apk2bq#:=fnI-((Vd<Tb=dZZflJ^hL+#`mL)*\aR?F2F$
+kLeni(-!8FWu/4W7O2]rjk=!r0G'!EgHVf#X$sXR@d\5Uhm=dtMdm;b82<qe'9[-k2<AnQ_&"\GKgMNm
+M\8KJFF/%VP!l@""1YggJ=MV>!#e#1RFZ&C1%JgVpAk@M.SJm;;tFO0T5*3te<Qh!VkmO@N[o[n"*#;o
+A1nhS;eXHY*:PH-+t!M9H?Qo;4,DG^/"O_Z23g_e6tXZ('mSg7>Jcj&WI#-0]4dAV:1_LFI;jA',<76a
+"Q8J"]\H3V@b6aN*\Wp?d@VRaC<7`F'>;`g7F(),Obgn:*4*,bk^BMnX225mQ5^]V;N,ImJ!'B$lqMD2
+rr<FB:OQDiK(DdcmcLphFH,5l4AQXYhQ44hc:1);l3QCT`C9?uS5e`K=Z1]?WbAt^KC*UW!42S`D;nnB
+lWUA'pt*Qt[>`ZT1n$%tWW)s4C,WYor/EO6k`um1OoZ7Y[r)#u$n';8F<WF#]t0_Pm.7)EiJfM-)AdqQ
+>.e(A-VDsn]Jo?s?$hJK40:b@@gkO?q`V$_/57^dU_eEWfQQsI--X1qQ7g1l`h/'9G+IU,&pQd^nm1Io
+&tt9L(RF+'[ZgSDiDNW@,5I2bjs^^=8!^m(20g%M:Re?OACMW!q77Z32VNh"W8?n`/6B<-60YYEZ2D48
+ZVi5\icJbaR=/O@HQujDcSJsaPAr&b:H0JU@_!*C'<^FBQUXc#E:M#RZP+17Yp1.A#>_1#M&;)n>>)KM
+B-`5Ja4?o@'kT&9T/t2okJdT'!"C-P8b40N7_!#m2IO)P3:5:PZ0:0-oKAsALu'<k!?P,"a1$Vci-!:c
+]oP_1^:A)=$)MTi8+QK>4mO@P2HH.+)jg/\M.1$rKu#oJ#Br>2gef-?Z@RR)?-)>t38,i_jVsM),:M?X
+J)U7tXWGAaS(8LKrf8g?>2?lWe4^`u,Q#ZkkNRP#7C;K=Y<k*F:T=$U_s`WZ/hHY@)+N>%gJoBd'#*+$
+#66T2mN@Ock8r10$LRa]`b'K!S`^HJ^N&qSL#pRu]G&q)_/jC3(RYES.Is#aS>F"_8cJd'))\^uY'c44
+;iB1.Q@2*n&/;3e1\($#*7jCE15`ClYB=XEe]6?Q#AM$G8#Oe;*2fEDqX1Jnd:,@[E(lr(?t2't+rWR:
+`HSn`S"B'D`+fTl<.MLH4.k*&ei_PS`h*mI^>-o._mD`X%akdS4S1!HA+6YD&Ok2i=rq$5OkW@0TE0l&
+EUR2=[>n^QFP9(^5p&"3Nqoali-YJ(_,#r(iS13u[]M$uV-_6$B64^f74XJ"=igK5S=etH@NfjK8k7Y0
+4sFcBMFa;8L2[JlE;P4c+@nI6:2>GDf$q/CBO(Q;_EG(lMl9#fPRu6e(^`Y(A&6G$1mH^+B/?L]HWed!
+?!/W,[,sAKK]1HOF.DstX)9\%-q1;m1O0GD$^&?C-W0f@bK+:K>(grNN49kc)G19(_/RI^KbC(A\G:),
+E,(*L4O;+&!<ght'M+CqjiA:[c!hi(\<.h#_X/^#83MCsTF5gG/<1HF6c>ihl&[]&bhdkJ(F6M"#:H/8
+RViCCL%E6OGp&]4N]i,AXMeU_\4o+urTS!k,UjsP;qF-3F0IO^SiP<YPg<dW8C2s%e[EZ5$hk#)qp9$7
+M7h*KZ6,<OF$_ZMP!FJ*8B3\)UOk=A6u>%u6l;8V*D"4Wr)RECd=&8TWfhbKkL]4!B]+\qeLifID#$;0
+rr@W5BB>#G1ZQg9!dU.+OSGnL]MPHeS5J'hY""Uc)+H@\!'J7OC5Or+k!!5f`uua`c.jD\Qub"J2j_C/
+leaj=)N_[@B2ZgdA7qbg'ZZo,,^3f=HAWUe8<G1Nk.Eg3;n3F94g@l*M\\<LTkB(1;4J/33=lu5&L:7*
+iOmSDP^nKnqU*B7*Irjo8I(R;gmU57$76,LW5O?tQo@/gm><n8(ZDla98E[:Qt[6S"4KJ<3=lTX+M?+g
+/?8^M]2n,+Db<#f!<`:k!f&%_aJs^Qho-m)5hEBmB<c(>Ua[Q@)2tOX8KDNjR\&Mc*Ym[_H>R.pe4-[V
+BQi)8l,V;BW)6FGk!p!l<r6K2LQmA(:ku7;Rb_icNO\P`^n6kSnuYLF2Q\7@0!%FL>d5OE,`6AXLL5:P
+cVoeE/5$tA%V8'/KBpscFOYj$Vspk$UebiMiV`,Q3A-*1Ba7NTDDutQ&W\QhK@no.oq.%ZfGWhVJn7JT
+1f5cA+=YV)SF]_Fe687ToT(!VGDR'3W0\89.KGRE!8[F&>#WA:rS\d1[!%dF3V;(I07[HUJUq20al$60
+LGl-q%-kJUVeMT[]4#ESV=#^3DmO0JLRq(-qRGOEK5N;\!r"ff<])A,HEN!eW2XZWIhk.$-\_5MFW1^h
+Hd*2gFOSIBYl1"`41J*Xd7nC"Ohi8ogTd3e(s[;m<@Ol:-'#)g0Q`N@,AX7(c4<`klX$\3f4a>e<]duZ
+;gY;ab_<\X:d@c7&hjC`&pdV`P&BDEM"?+U)Xb/=g?9;kg!:+eMbeJq7]/?9!b$9b`mKa*rq5A_TddUK
+BZf$N5$R;RE#DZMfLR4qGST76S@YJqSR+`qc_*H,q"I,E^Vj>0&ScJ*=-$cAqe7`0gB!gK'5Qb@'r!I6
+*+3?!aK?Li1n`C1*faT)<ID,r5@iaCG),T`_#>#BO/$(>C0h\&Ac$&BL?"8j\<c.6g$GK@^9\HjJm17s
+>Ek.QR3[<"FC$JPKVnucNEc/<\h/aj]JHM]qbNNq`B%VEi2o2\?VOb`Q\=u[Xn5ipD*$Or4'7X!aeUZe
+QP!KD$aD2M\.Mnk>ARq)CGXs'g98J%'[\dF$MXkBOMP>>%"(08p'Y"E8?Hd56nfR'RR_WKD_;U!/l#RJ
+7PL+ma`ANC;chW#S?L>pmQLeco&C@!+1u5o8)>Rf\Z\=ln58D)Km&]\F_:T:OIL@jgNg(%_l$AQXuWXd
+U$Z8<l#jOG=%O'iAolIne=<(j6FBR%l+(+Y?^YjlA)ma&m9*ab<,/8)2']Lb/7bNB;@-3\a6?/iSPc,Z
+WM<r<_4,2[jm=:+DP[8sUY+e+V&#,<d,:/B>GI:?WYlXno+":V>]ZB0a/+&#=.4QOTc;#!M&E(!SHhIe
+_(5N:V$h=FhMC]-?JeTKS]"@H'U.d4b=-BMG(<BEF':AcX[bhW`ho<+>$l*.<#3Qpef5dP24lBh<>e9%
+DOJpC5/pj1!tZ3ZIPgl'27^2//9d14d6uE_2jWjO"S&(S.[%6<8%OI[\i[U"7R.2(2p@rkJCtoA8kr.D
+;dA(KQf-2H4tl\X,7P^mYI(Bf,k0pVKrlAN5;(u`an5l@d],/CG<ENU;b"E2V4F3uf\R;?T_noO97'cZ
+muE%#8>8-3DW26n->igDEX6*GC?\j(6fG:Q%;7gnA%B:b\%IL`2O?>rQGlM!ot.9CE&4s'B0VAue#e$o
+!u6Ra&!ffBo0%F!.+PRPQ7?i3A")_]-R<1=V5rDIS&ZQmgt*.=0JT=<kDf^](q.iB:L-b[FmJPg96ZOd
+2U%bCRdH&Z9P`0k%/3Hd89es'eu7Wk+nHYe&%*ae2'PCD0L[2e=<+4Jp_n."Wl:au08#l3P0N"UQ\d>$
+6H)ZRUEa.H8.-#>`Xbh0bu0akV=V0iogbQ&aAQ,hcfM*;AKePOqi$p0lWb*]:;_$?c&TP]Csb_4bb]h4
+X(:htI['ego.r%*`LuO0'&*dEhMlWP%A-Rhe]#ZZ%RX:dm^&^AGGTkh7Y?"GJ!ZaZ'IgK+V/,':G5ETX
+6Jh0>ga*(Cj7mR^Cu_0-[^R[F+Qq1XpQubEh!r>n#R;4R(aB.4Ff`rH%&-&m`_o:C_mhgM`G<PL5cGgq
+XNd?S5Q,>8?pUqdd-7\E1&]jL4T3`2UJ=35:V.1V,%Y7$<6jV2L?kE7B]+N*)@QGpRA.Ph&'2GhmobDq
+>*`&V1$k2cg-@he\J[QAP<h=tNJil"_]gf7!*Sn%!T1:B\LV\[k%,fXJ^%s'2_KAo4F<`?AHO&69_Qad
+=JC'Q)ICSW'q,nqGSK,W#fM%5rG+n,@]b%`rM!T-gA_0Cjo5=eB@<G9P!4-hW3r`H;Y^7lnN07kU."l*
+UM(gA7N3RF\%s?NEV-61Un,eK;s#/5pd056?0R@3g(j2c";1\P4Y]\H>PNm2E@OR:6r)??\c.lE%TstZ
+bBK)RhMtLEMbU[$-?op1l:7sIQK*895qDT'C,ogHAT7!.&AW;23M6bPBp37n'o#6IZ]D`U\"s'ar7NN_
+(dd\_\-")m!7I7R_Aqt\g3X/,RKe6s2IF2"$A%J&'EC1V.h2'MaPT!;+D9FC!<'o+OuULN@o?!k0nIp\
+Vi_"#,$Nk!f]#3$.J,g3BMW.$9l8Ti7eoH3P]C;EkW7:NaJj'>Xe9YgAhH%co?D!lJC0@u)"lme$d]M0
+$o1qh>^]C_CN)0`n#g*OJI#(Bc?bOte.&qU9uFmeo)"b^l-=ONJD7I%b=\cn:P559Jps!8:R13;JgfnJ
+'@:lX>!(Iq=a=VJ+9Bg&6/o%hUHXCC8FmihiS=9?m;\ib10@,<gA,@g>]RII%iO\<2(2'M7a0Y0/&%kM
+&&Y`nf2g.p$jINVXQ_!TrZuYob"#]hOkQ"OBt4laP)j*>bK#_0mr<-BhV?lB:Aa04Na"91$^P^uOuO_N
+74D/-c"^L`3?'m.1S\iAI+VE[B3q*P("!>dlt10>l:e9))qIi+X9$UnFKUm9;HutScLs9:WX@'h3%K%Y
+]g4b#K?cW,f6o*f=qP@Eebfm8Mq]]RGrAc/_&L%dNa/TI64\OqSgOh=V^Xc,**0$6])"C.rCTZA8_UtF
+LWg*(FBc9dc>Z8Y(uqJDk&D!>pJ.YG:%KU_4:C\3`kN%,8N![[lShX8^oc'BD'Tdrb#-F%9M@'^Zi&%#
+NQan/F#lGLhUBj.2<?E9UY5Q4qeCLse[.=&ReG(F&RAufh+phQKdN?#rN#)#WlrSK4UJ3U"q.L05KN&f
+M/G6#?-eh/`-3-4YpJJ?(CPG0-11ZtmCDYf1R0`)IA`32X=S6K@i^eUZ)&H&8D3U*Xb@dL9]KX5Tis'#
+,2K?h)t$iGP()Z[>k=b_VkJgHa_$N'?<:T'AXqZ\e!e1>*i1?g[el?P1Y^%m[XncIHQ$a7E`ANf8G]*$
+DD!N47Y4ZXWhaOqPOuh&aH(5!,08NdDURP6/<8k()i.rXOn_p>Np8LNB_MBKGqL:Ha(E<+/,oV$c#Ur5
+]:QZ=Ou4DrP1FFc_.!JUl^lUHfT'/S(D<U?"5;RbT%[0op?\HOgb;MtkOG9%e<q^BmqR+P]ARI_#o<8$
+4!g55QI3$hItT.'Jpm5r%E7OM<5ZJ2Sa<c]N,(S"5fU\.Sf?F%?7A/?Ok:^2pf)Sc&B8):7ocC1NYhl8
+N7RG?+KN)R&pWAS:4F0W/F/"'21(ktXiugB:G<78`&mp55"'*'M5&MO4]Y&])hL.]nY*ie<C_%mC([S[
+LC5@^TfthkbJ<HSE.4(=ZXqIJX\I[Tr+"@V)1$-B]pe+SRi0W2%j*rX%N$9_CT`V"=$Csc^sT6TRb??i
+MW_rZSgi%Qot<P4MVh6.Z,6;-&]"4[EVW\@L\Pf?r;Qa9KD&3OVp)k7^&gku9#a7E8X$t*h+h4p.Is7P
+V1e,[IH@a_o+d\O,H6cFT_i?5+U$3=;-b/&7Up-K";q,@6[sI:PCbeki%dR!bN1!KE57$f%R?o#)/_Ej
+-(Pl+IEXUQqcmP!orY?9T3-IYn_No4*<$l+)G?!j1-F:JYp?]$i%ZM?*O/j,WN2<0c[K*?\s_>-l&9c_
+Wub/3&D]u&bO/FRlK%sFCURo'!_0#pYGg3Jh[qWA0s<^%cjk%tEnaMf6s[N4"(#*j]<l?([2>4f'a7*N
+k^%BKWj$G3>ZqTq1.e3F7=B(S-;/Upn$\6L$kP.SC:>c'aq/=]L?5Ni*8948IWUdKA$DdOGlb&@aDmBu
++1f=eOT;XkAVi&&*2(=Tp'.H%67hMhEjCnK3WhW!bg-k_Uej<%GMGO-N(5#[5i>W4,B@Hq#)-W!&NL6i
+AE<.BMP)e,?/IOY/0S8YJ7GRWj?e2!Y(),;hMe=l6t2''4%M9<fSXdrG;lehT-?/R5W8a?*;-<[8AiIE
+j*!#G&=t]B;ojKrf,nZ7#6+ZY+dN?P7Qi`//XY,Jk/l(tl1TW%%p]'KS"9N^rrAJWa6dd,:YI>YYmRMq
+X2':@7RGb]`\Yr7Y3@QKK:/;_V"gDI7r1ft!,7+GZ<Kn`V,%4&&_'hp_o>mF*61]lD4u3C!C!+p>$h;r
+N0O`SYf8KNhQ]tC)FU0BW*8'BP=ZMF\M<Xid!toXWDlQ=XK2&G`4ZZ9,6%Y&="(4E*:2>!*r)LpY%CcK
+Kcl<e%RhA1U`l13\IJ:a"ab;e>:mm;d=cP@dfiKc8*<R2+u(X"S^%;H^g=oBP_s"Ugq6NSaqlPCN9@JB
+dj7PNC"uru80f@R.T[J-1l>`ncMml#.[E;Aq&)?%K1qOSe<>H#3Zl*jbO+XdV$O!(o@BUT](0dqZC+ki
+\/@D0X)fI5jI"Wf6H!dZh&Zg\F'=+X/f\b3!8[b0Ng]9")pn)1Mpr7krC8]qi+O>sUM`&#%KQ1(5dpe3
+b]5-oOb5@a*78Qc#5f:"j>k@R3<XONf!^6W7^k<5l`eB6iO>d+p;lW*WhtL)bAT9R<Qq<=:lUET`]*tL
+d9QORGt_iafhT;nbX!r(H!dChebFqS21H!YF2U]A(d?,hTT^XG<R7W]-Qe=\3\#TSntV&2^j\,g8Y8H$
+=&ZOL1ff.e(utd%4=&Lob%5>Ji]`E>[l64f'TLCI;G:J==IbtRH<,'a=t.-A,q!^+h[s9f@[C!@VH^*4
+bKXts#M[O+G3Mpq(?=[noeHA5j3:*4'3iKkdb3>&#20jO$\&\S#:*rb#c1T93j2Rsm*aDUmf@YOgYs<.
+UV#%rg-28fgY2i>)*n"$?)4!Ae5irLRA<n>3DU?:47Q+aoTJdg=)4?b8QIg;+WH'SaWQ#h:A(/kX,[^W
+A!!<_^7$Df`O!^n'dU_k>NPKR1!e:Sj?T9*IE8PYcCZ)"QdA;D/k]>/Y0o7Nc=q=Oah_*+[+'K<1>M8A
+T-Z+EG%\,RlWD:9S_.,YOg6khSQ$g9c:;']fqs([/"7++Y`iJ1!I"Y',G/0%WD,gQbq)ddT_Fr$q-<md
+1[1?g9:=)2S%COpY5*6S9UlNVl14HnU89^fNqsKoTrbIk2![<9q+MHGah]t7lP%jC)'c&`e[:kmq%]H%
+P-(<qgPf)k,LD-Ya._#:GdV/SU:djDOdH;`4UF8HF&C$(W8]G;2^?q96LL7E']B>aHQ&Mg,p[?]C=1q_
+dG@LmAdVZ0!6='Ieu+hfUUH\V6s?48X``]gcF7$DAPu>Rg;%4n=`AHH>#VI#dEbl)$Ak[YU#toj&o2,[
+dVg&OU_!H]H1S1/5d,]>5.T[^p5/!Yo"agD%DPf"Q_#DLKA,-qk2BeTpXXl9#J"[N!(pSC018./3a,)`
+MoIY!5m4A:1(gp[ANAOl!Re%6nlh%8'\8<=/Dg/^bq5=$dQ(i"N]7+]HI>Z-RFTMq`\./@jg=DhcCcf>
+P#6dkG<pkCCSKU`f]&Zap9J#&f,kGTZf"PQip(&Ng5@L?^0pQZ,4=7"[Zf='Q.:YQ;/)USF[B#ldQEl9
+g8[_c/0GM"P)_Sen*ODFG!967iM/CR*15ZI7HM#QY=a\_bi[TFY#n6(!pp_')&2NIl].j57;WIDCgs1i
+IVbO78)[VA+Asl1DB*P&S9'_1K`k=-.R4Su_O)J,F8e$jESFFG4p=F(l?_R`j<R>1+MBt(`EHH$qHsV?
+\5_*[0Zk!ng9G-=9.L2:V"7U9E5NO=j\a5Z\R=6n`=N30aP9QgoVj]ZO#f8[H)4>6.3XFiE&6g;Pm)1g
+S'[?j]p?P,m;`'\BZQG$bTm"t&28Qt:JD&ONfrrB#K6.pF)3CG'S"0O@:)4/3U-19NeV1,H(jN79R2GB
+[a5GulD2RN3R0GU<G2YqdoZ/.h-&D`?p?IX<DOWk,:958OW'Na0A7*DII`CYi"OSI"6;n#(LV`*D;n>P
+4I,pHGYh6T.U\'a=k&(fc3X8C!?KWIpmm6M#fb?=Gb>F@gblVG%b1e3*g@>ZMgPHMY48fc837^c#0.`=
+hL^PnRpqds/F&").FWe4`<'WGV%Uer+X:YGI&(kWKf2(=SgcF%jI(;dk*3;dQaWXaXc21dcTD+0S7Cec
+E[!ZI5!/_Dhou%nIP!0kJ$oP9lF*"GY1&X2dq#85i10:M!U2K'UDY2AWt'A:nQF@nOrALV>A)qd/g+7R
+=G-VR$'^HqmW4iZp2+Tte(QaS?MhT<b(imDU_?s'$Z3s.8'k_RNE9sgECVk.'0AbmLMWHkme3d@e<'i^
+;9nToQkCs&E9)/?/"5PI1<;.E1"-gIQGCoa<'gQjEX:tr\V4*2P^8HWKp^tu-iR<0GN%dOq27l(U5a5Q
+&V<'o1aTXA,Img:7ZE(J].k:S[4'GhGSU-OD_=l-gS/?91Vj<uC:>r-49i9W%WJPdgtD[LW")h]dLl(+
+Jjt/Y8c[bRDr3!]Y*^HC,(MPu'KR5o"<VNhC.o$*PXZoZ[dKpg.mPFC:-smoi-f@1fZC4t*Z6lF,b.i9
+b#1:qYHjIo_uf5KOjk-,@_1MuXU6891.:/L5?>s;Y?Z26<@&H\4K-En>W23q>C*DBq%7Mob+<%`hh-q[
+aiAd-k$cDl)dBs/<g1ZW5^\+"#HgFKVp*;1(qRc*Y7>fJA=c>AZ>[$?^U?3+O&epcIXkHTV&An[4EJHu
+$@G^HUL%.nrO8Y_JMjpZdAM1rF.<_bY"<&6S^t\uB;5/g`KP":(=l199U<g5@KU%)h]VO:HrcAWX$D]&
+`u"8a`qR'AXeo6*?50c(aucLd2^sr6465Gdcb3gK?VqdXQFlj6L0Mb.N6].:MguB%K8.]EbtCkoq6cbX
+?a^a(K1BqCrrB*h!(oD**.F0R;%m#334murI3S3DY1-QIVH[G-ZphQ[i/aMZS9n:3.`.-iFtD<Q`oJD/
+!6RdX!?"&3P?D#OVch!6Vmg]u""Z@sq2`"2_K=8Vp#su@Ko"Dc<`Y:s+*W@^A]f,,)A\Yp7&BYF:tTpS
+V0h@%E)Jad[4N[$1Xn6=MYRlU="fQD8Jc(<2Wsb9.Amr0SdDEZ\iVlnXia!caV`&8r`%17<`-Htq_Sa-
+BG,.@2ZU'_lumsea/3U9[4nRLqQ8$iCQ#kY@;gKC.Mi4Yi5N="MAnFKPZh]&nW'-&Ou;WLL#9Z44\!g9
+k;hqKEk6+&H5&)Xf^,\%;frEk`?Rj07WtB2KV5./GJ^AKeC]PpIqT1l\S1_SAcV"<pTrG)"E($">$X^"
+Tkh$#[]5iZQ,j%IScQ\*C7B!<@i31&YNf9$nA^$\gWUq#2eNPHc(I7?f].jS?D93UKqgeIH+'^AcV9DP
+i0N@SUGrnJGkDp7='RHmP1^fi10%ObSOop\,@L^e1N9Wh;""lS-QOrs;X;NIh[c(%U9qICk2I<fQu21h
+a!3T`@:fU_%D79``G&(Al=5[g;jGXP=1Pnh[7cIK%GSSprN"\i^2;3AF1P]'U.`&)V[-b??f#>(#7&hn
+3.%QiaG3<C/2P*0=Vrk7UQ4,0a`@Q9Z-5RQb0I9o0]+3=ME+@p<R#1h<IML-EAciN;`=L2,MWB/@-!p9
+opiI&;qFt%4pL=R&@S^6>d8n[l'?+!\D$.-L%k5B$$/74U_I@#UqF`hD6i-K8Fu!K*h>#^2[!i"gc8dV
+YRMPk,(K%s,O_7#V,&P-2!&b[D@ucea5fJQNk_\9V=QX=d5^^X%RCN!D'oFJ7BBQ7*uiA"3D7Al]L3@O
+ICR6`=(N;nqq5FW1ImriO:e+g9",fHE(8Z\]7"/F>$X7I+"QO5PiL3nCE?+[[i'T1LUHdrFhCaV_1OoC
+=[K7hj,uk:?Bcf^@lE>e=O@K37O$?hn2Rq;o#d`.A%i1V=s,>$C,VNd_Cb0jVhotj3>AGt*9S3>jT1Lb
+,B&lU?$RM@`dOe*!WIIu@dbgm!D.*;,l2V]!TrJuP!2t+5,Y8k!^Osfi/tP-JNt"0Oc0.I5R'-,RIrSb
+1^3'6i\_&hq&bAs%RKD[i_La1B0K^D`8G#Pkul2<]o<OT4C]b:Q.t`i5Fl=oHr^&DP(./+Mf#%TZp=Wk
+^e7;c0g9jm_k"et&Y75k\K$[4!%Z)=O9T+1DW7S/[/auV)U>%SbSE4^`(1t^F8N7+0ujOb=O)ed>fUI&
+TQlk3-lQ-ZMEsOh/`3utS<NDHr6g5'&ii*N5eYY@(.70pI(>:f:MuHJ)MtS?/!RqO?pH7\LL%SA,a"M3
+Z!8%EPm=15<H=.gP,+,Z$NM:DKcHnK8K3!F3f5p_OdO8(GT7]#?mU@N3rmu*,A=(Y8`Q(:6HW<NS7...
+MOm_VNsO:rSTQBt+=M*N7oPFnX':`*=U\i!YrNl9X[&F2/fHY+'8-),#0o??MFdOf!sbY&CIDIX[$!j!
+Id.p6qfSdF!=YY>5t0'h,Q@bq>(LO$b*/D^igKqfZ`n9(&pq$#aG+"7b[(97?&IK1lrWtg<'Fo0>M_'N
+r1kADF8e!BW,ja_8d_i=a97CM3S;EBk21`]\EuP&1,l[0,K`XlHD!BK3`%cZ>5N^@mhDc@&`[Ub.P]fp
+R^sY(1KN79P2T)1-IPXjDZHB^*AL:rg0[<_lF(Zg0[Qq?MG:"brr<]M%L]HXA((Dg>)JOWpe9!Xe3#0D
+U?WVf4^JuVf%(HlM&8-JE^AfV!kB<u#9Bf=F&gYW@BF6b5g[(JSj6Eg:L2$A+'Qe6P!o2e.^,08K.IP*
+goBL5c.F&5G3&BTT.<>K&RK4E@7V;X1,4&C]ATVujC:<4IHe;!P[<?dd@W5;Pd'`jN/kRP'ccala\laM
+O/blk+3n9+7arYIY">U4d-66s'=EjGV*nj*+<6t'-Nnb&B?m[%dA@#h<E$TCN:La?[Zb`4mWSRNen!69
+<C05C]48^.j7nC%cD2+Iq@'P]Q6#NkepAI#D;lu3\HBtnId(:QGG))h1[*eWN7$;BR\c[.&nN>S#A]p/
+du7,s25[,n?M/Er>27jqKJG*Y@m4@Vg)+<BSjkO%=fJdr>Jn=(27_eZf>H@D.2qA9]%U@6gT^oGJ,g,G
+>tUiU?-b#9PgkWRK6h9P97NpTdlk,:&k+@$G$GUu*oH-<0r#%,g!:XKkdsP.[^sl(F1GEZ4&7rCcr<%2
+>/suM@qsn*7:#A&VG3j;+<A@[r75bT3h_I0>-r-MGbsCdU.43_%PVXC)pl)qNR1sUQ-/9A=CWH6erZ]Y
+L"=1%m*%rN!ljOWlPaDWL)Du=#9pA(*8b(X/&,SOPJg(9#p`X`&0EHZfE:B[@pLp1bjd4GZ&FsLC0Ord
+WD&Md/3"&"&`13k2',]Vo/p[:.eM*R;&LTTn]%QKQ;eje[sI[,:Hag#K.jO!Aphke5rnO/85q)?ZiSU0
+5#ep4Bae\5j#B9GZZ:48c.M(FDNC5P$G[YK4V+g!\_2UZ<]"oH;WbftY:X;UmVEie\!Og.mJu:GaJaEY
+e'XrXrr<Gmj'2$NGOWo,q=+K4+ij$3"/s#nHKM`8m^jKXA#?eu4E62qAVT+k0-:Y5FQ]*)!m*5Z6O8Gt
+#mN>)n3Q!(BH#Yt-"F>VAg_)BOh]G1gPQHZNd"K;G8XgrQ%07[HZ@K#.#kX)r0&JYO(JY]^6HHrRGGt(
+J^4V(pJgiC\OfUc+)6fflb!N(5%,E@SFt,^c-%1?b5t-G@5MX`B\ef,"0TubF&U7j'AY!jY./?3::Xke
+4F9r2H^o[:Es".8X`]UZ!,]EU?=KK\QT5!D3'R*=WC\iYOT[_H1W##-YS$s^BB=*cl-F*BNk-!3&h;$k
+PuQC='_Tdg:uVYS\OQu3h?W0=p8A&01uR;.bOM)DrrA$8"H6X32\p);E">c,$IOCsO`r6+]-Lr(Wr6][
+Xqna+T@ub\Ngp%K*)uJOp.4u)p83tEp5/R[U^rf!fKPp?NIR1%[lBG@EWKS'?u\F@/-mI`70#/8qpk;$
+"p"$U%<fiT\D/c'j/i;B-^$7!>`>$p(c;qX@!2<QMMtZHeW8H:;kcjIa*_r1e=aN%H_S'1*CE9(e0Ft?
+dA;f&NR)@;joUbs9C3$*N023a]#_TjOn'7`&j'/o)NlPfKdA`g^]MCV&*Z@^S)r;EcQbHC"nN#TH=V(^
+'1U+*5%JNb:=':45S;$^3=@J$/]QdrB>":ihhdaQoc&Lg((;,bdp%BqU<O:6.+seKGI;/iMu<-kT`4Q,
+!L.]GBEMj*&jkjoc4o=0TEgg:X=6'r0JM.sf<kT]MJtLDE5NO7l71;N(F%UoVR-DDlkG#j7Pe&i^sk:e
+i[m>V.[q/deX(m(pa*8:T;=D'"Rm#-YWjgX.'3Kro9ji.'\[S'pSm`aOkrV7)cm16_>aKRBoY9AenrQT
+!98s3G:TE'LX&j..HH&=O78ga`>'FIZV&$o"2^0kKPN,Q+Aa@tSJQTG0pQ1g4G2(n.=<\qPnk[pXff<f
+4L*-V,YYN2`/Mm\"HS%IPm)-g7`1rpDJeeCaV:RE,H@sbmILE`32WcSaD.=X4;k4JSsiW%(WEW1[^fK&
+pkkTF+%jB.@f);1H01sm5$a=0O/kCZA!:F>$-SV>jkRIfT3B6:(aRhMp$s9Ff^o&GiMVYlLgi$34KthI
+9.UJ]#T6n1G9407nF*WNM`<eV46p23indmB@g'BS&_#UCp(Au^3u`KHXY%0*"ifAY#0+t3Ssf;TC63Em
+_r;XmB6OKZ.P-_)N6CfH*o<F=5:\n`2-A+@GBuu:=15=a@hM0>)iU?FhQ1HfQ(LR%_a_!j^!U0d!):#Q
+b)"Q5hAAhJO?r.l`EZAQN_8lGLOS6o?,l-C13b()cMAo?iCP,)PiXiR!>rk'``*\DNm'D.b@NQ1l$<Sm
++D+[G$a/D6G5I&d5ctHYk)ZCVA"cn.Zde>[FR/Q'&qSqm\F;<2Z]?lgmu:s3Lc'Yj=_\QJq%@b/0o`r/
+)9:cAe!l7UCXI4eNtU"@$Y_-(G'B-ao.7FTU>\r3L?225X`^Z2p,m.d;]:M#.4=4qni>[f/R$L"?RN@F
+0[8&]#Zj-O2M-D\=3VE)L0%OsVXtf[Of^$KQ]\UajZon&HOT&5EnoKu`7mooO$N4]a;\^sl,YE##LnX^
+nO=U#`_&kaYMgL)N,=&`Zc5Q-KLCI%5;iho32'>R1Td#'B'd*u=*D/s<cM;/UNnE'IB$<oO1<".5D=Ct
+CYqhs)`Pn(iS^T&Ea&8SoW*+h1.$#V+alnb:6rrG7\AC]oe5`t\7SdW3QC$/pgUTf**I`<*`s$McpoQh
+OSOblL,d$/L.e!lmpCidNN*;$H4%XX6eLFsO3MqqaTqo)M30-Rj@8RQD-"N+d/@Vrh"74oSiV?1lA!_g
+F.lmNXP<PNAiM'r+"6S\8s4Li\[1V&/*dSD80050`@qq@.Nb!?5jqtLG'5JL9c!`Zlgb8O&\)Ho!'O%1
+j@%jGcQC=kaTD!fm!Z-r$RT)6mFj<@5R@G-53%&]?e0`NK'IUBGbg/&G7B@2GQF2iB0"t%/j.:gQRC!R
+9*+Vo4iIC/EZ#-eG`8$c:(J_\EbGMCF)Db1KK10d.]He%EBk\!iE`$GU>4fLX7RL".X=YJZ)MH<h-1!o
+\T17>am&F8rj<6!Ydo\DE9MW1d5Kf1pl3"&&*#eip;f'WEfPg?fD9B[VX9KGeLff$gl2023jB^qeuP7t
+6YEN)4RHu/&PK?m@PRIaNXoH1nr4TNcOiLi/?AinA5!$mc=l;g`3P@BW*U?HC`BioAE30Z,\oFI<?oS!
+#;=krlVkq6E_Y#/O7cVMPdBGcg4E3%!"B>+MGs8)M!*g-mXh,1%lHkII.no#@4ZXNdXWMEjE'1.-3U:V
+EJ6D;K`Dab5J:q8rr?()YADPf&"9N#o(1K2k("Ao?Pu_'d*Ms054\GBS'JF'!_u?-m691I7,XpII;c.L
+INjF2pINjrJe+;n^d?o5B<T!i9(\#'\^'Jd/G>3oe\&sj@:]Om.p@1Rb\edl0>_<Kg:/+WrjB9@D:aRq
+?jo]-!"_E]T5"Afmeh'C$/1N-A&@9/BEOX4nQr,8mB^V+Sq40Rr,Y+CQ1h%oGAr\+Ru7:lZf_=[:+-0n
+%SJ'KYq[Fflq<JfD)H'%%c.@?-C_/F/*WM,0A:fVFuRYn&%doZoUlSgJSgEub5Kpehjk#UOsZ-5OlY].
+CJIh3p@:*sh0TL%0;O9lEQ%o\\([so0dXG1>Cg\K@#:%l&qUAK>Cgp7#p*6h)1a0K!%U#;!:FM<30f"E
+fSgL#T.p).fWUP\<4`Tm(&TNP#;N8:nk0mVgZc>bo:q]d>_73XPJ$'e;98C3l,dtO\X<0""qlQu*MWTU
+rr?5f4[Yd/7o1tE4%A'r5Q,`<cuUr8PH&1o[r6*@qta:`%8#@,K)-3.,`&_h%d*_8X#9&\0!cO,=N_<=
+ZF0eT;S<(UGbX8`DJcb?<[g5]@r"2cU]W)cfc;"KihaUN7kKc>pjqqR-\a3c_tK3smJ1A!3S[E3GfBuc
+F'NjlhWoV[1P1bK\n19kO)XSogOAfr6a3-_6'7dX>4Q5Qm.WOh<HO[X&aHqlMO)q*AML5@mW@X^a#2%&
+5;q]T?utNtCLa`0=GKq:("=_To!=q(\BT(S3dVqH$sbtnl"4b/Q(Vk2URK_N)2djH.J\/]>,>5oU3UT)
+_5+PEof0W\6I^B?,=uYo]$k2O8;I9m0QY>Q(`iCRPDr#1i`)[["fuj(e_d\0N=?uKP/81iZ)[oJ2Xf+W
+>kKKtLSoaLPi2"AU"riGb'?i`>j[%!7**L:3@;!((-R$t3YGYf!p\rp>"F4I,p$j6@rC0!WG4q)\%cD*
+eF`Wp'MPd<T\:(S8%9G<rSd?#i)[u!FV,1tPs+ZkP*<DB/^/CJdusJ()B_n&RsE0Hf;:'JGj+<rd6gj_
+Xk5C!jWVGIX,mYcksc;rb>t]_\FA'6A<Y>*1sZOH[iC*MVZ^MVf6nLY11$k2,';X$F$&Uc!$aQ,/Z8os
+l:YdS?UIV!o"+3X[&pSLmej3G7cM6S-i@]M(iutn3%862/(0oU#<--2rpZr"DI8VAa3p[27Qeo4(Ul0!
+o(K@$aDCMHlTTJ3`=(Fg>uEZ!L*m*(Hi>l*Rcsg(g).BUi%kK$5h>%`MC;>-`a`r[OT,:e*VessctIb2
+_`nj)H2dm'+24"4bX&MkS1,iI):)"-1SgV>OdfMr6<i5*:GGej5^'LDpR(s\G^m&%RPNZ126g\NI*tOn
+qdfDnc^fsJ,Cp`*B9Y+1rLEPR'\RPRP)(Ao=Vq$ASN6)W-oDV"?jmgRW8/LPr[dcbcWU=')-B+g3r*@$
+?+c]jN+>`fO^Ar+79Q3ESY@ijLHJu*'9C.`'7Z3,9c_OCgBKohI4-0l.i*R(q2,c8p!;UA!\VN5C#lIa
+.s]=Z)!ZGL:1s`5cVq?_"4-drT.F_Z&..T`99^#Oh4BJ+*VV:a(NCnBdJTXLd%@-iq.sKqkkFpO)59^+
+XN2YL/:)fQ%WWsFR!"^m'M8e1L3go79)en(%pB*RSOUn:o+F<<G!ojiqtT4ETGHU[A*qQgD>sUVYsE$E
+?aUclm0E0?B7o2:]`.uh8O;M]537,GcY<GLG9DSW@QmUMRK.(WB9-O8'o/7E_f&j_*jbr0:\-U\Pou$3
+I4,.$R,o!*)&*(6>b[e$^aF\pBEF^8X:YNRFT?EkS,hF.K^8m`kDJZ/pCcdBW$N?B#6]//'W.,(!hJ5f
+4^'or[-4@X@<c-eQkQil391ZD0T:0BEcsDmc$*'s=([s(nM)O.SFl31C5gZ$R5GAoJ@Uki9,\LX:I;SQ
+Z2NqpA5>%tNPUEnb\h`Zf[*6PkFP.6a-]N!"I]];,gmDf@?<;>=.cZ1!4kIZ$aiuTOf0Q(%p[RfJa/\.
+H+#_1^CCb4rG,4W[Uk3RF-%)u^NUe1oDs:&)E^_&U!`l'76(3d9l:,jjkg]G!P%XOX[$Bp7MsIR!*G6+
+e'l`q/3q,bI0_[FPij',o5=Ip=$$Is,^5=YB*;UaURcsF7s0qcNJ89lq1i;;;c@(0Nc!G4:LRE-*R$ag
+N%st#p&dJ>Q$.fS<:YCe!)KIugs'gY9GM#ZF.RIDo^>j![BLR48C9sdSE0:1[5e8*4-R&B.n)$TFI1;T
+DGi:B25`M:p=d@!guQ'U%/QD-B6(PNTXQ)098,AgTCQbt;$Sm"P2N-n<K=j\AI#09'TdATO_V/V"ccSl
+jEYG%[WnhGW0<).(P/r!E[?iXCJ4PF`(L1^L]7@(E,:T4/!@%VSDD!MSThq3p6BT7@n*$qgBb(Y!keC%
+V&,lQSlL-&iUIt_VT6,a<Ij'?%cDd2XuXqmh!CkqSMmS9H6/:1?-t<fGgJN-"@gC8,]3jEkEZlAH_4#a
+cC@'FFXc>gckVt%d'jZXj#`U;leGN<TurEcH//e-94i3jO4\S*K0GaICF^Kq-3Q!\>='oTGW<7^S%U1[
+AD>G15s%L"+!9d:(VqK.-R5a,kpmbGo-[&-4MEP`M>kaVo%V=%.=##O&a>S"AaBkU[q3sUp0K48'ZkI-
+"FS"TT@Tjt;`h5:bIV_@$ZY3LO3GSlD,=$N:3`kk"Xe^mYoHI2NOAHZ!&L3r+&7s2G1"J]E_2P,r:,dt
+F[5Q[T2i5JIpXs^nO:FM"SmT2kOS5:_`?ke=FEplSka3Fe[/F)]!f#ZQL<]3gU8KM50&]VgIhsHXE2Uc
+at6tBFfus+:-MZ%];$($3`9uI:GP3I!P&=ec`$!2W9d/;]?O>IF^ATd6-$ZM@QBD1Jlbs<B5N^V"8qag
+TSXm&jcGT,P&N5+nYuXP2"S*bGZ]c2HYsk&"(jQ^md,P!6p@.q.A<le=59leYTo%7"DGk$go&D"?7Aib
+Aj_>\TuUoiX.iRac_N`Gpr0Y+MT5L#f9W[eE(Jl3L+kPsoCuB4du--IDaW%7ANR$AaEBd(SqB2F$uQ?_
+"k,pco,,WuUS28_35@BXaG%05Vcbaf'o3epk<Fa8=h*%?dT%c%_'p3j+HCe]nXp<`C$_X610/)c](.TE
+S=0Hp8u-E]$g4>KmrTd<`e+"`>pM\;&!BHgE$qj;KI7Dtc0"h!LkJO)4L."\4DrJ[dDZ`TMHhA@-tR)s
+dBad;j6Kj4i^*]'XU6)SKKFC@E;8H644$UTQ:Y_tGgT&;+Q!%pluS-4BPUadQVm-pXqlG]1se%5fV>DQ
+!9bgW`71&/9j@pkedJH:<s*0lGTCfccq-^i9@W;[aL8O(lXW1eOU@E7So?_e$Z_U-lYX\q?[%j,@/g50
+h4:1)1_tJhqb]@lg)o?!&]!o_hbLq3-p6PQ\MBT,NKM[Q58jN"`(!<@0cXYQ+M#.=Ue-QI2Sp0EN\/'T
+&*%&"S_a.h#"@+RAT'"$pC`1a%t%1Y5C)8=N`*).=\uC;f5MTJkQ;1d`;523XH?2T'p(th3@`)3`X(`J
+-j-#G9&ZI7fK4qd-1f7:oFq=(C#jN0U2]Rl^/CmUI_8JWlR<duikAP)qm4lqk("'+E/Jh(+a3;-]FS>5
+'?agY8+P`/rcnj9$@6P6YL\8G>[mZ)bR5&-`^Bh*d)9prCsY@M(-]i^Z@ti<=(TU/%L:FN6KU+9d4_5M
+cLL:P`_)CSh2WtT:al]\C<FP1!'`(R3t^7IXiiec2>jBb+qGTX"H;mC4ER\jI.BJc*:<Pf3$-t:!*ltG
+R=7FN.Bo@u)!TJ!0*WjVA:McgP!?gaSUi"G@bJfE%OnA2*tsela#.72Mh"V!ks,d9:E316OCN?BA7L`e
+(F6MV#`:t'&_*j(j:HP\SC7PA[EJAuJV>6@rr<tF2?qd)B)tP"H45,M]mu*E*9DtrF-!.s.&e=>8;hCD
+S$#bVJq;SB4Q`qbQ(T_Sjc3&Mje*@:i.B.l#>3*4g^.M1aLONhCN(]7VD8tho(,B]=DrE%]RYF0=:'H'
+8#Oq<i)c685RN:dGf]2>^poi'ca.fPP\iD+,N"q(RK>ROV%E3<T^Kj,SFKcT]5_T,%R0mm8(0=nc='i:
+?q6_@%Sq/9f+ZXD-Ki1r:m>f\koJ^k@e1():JC/r9$>m33BYu"G\=sH2_n[=a;!tkT"*g[2*T-K@nf'1
+iY`t+pVV11f]fp+U%U<i+_mRsA]VLpW/9Lm(M5D>2jVLn4nDi,9&ra9S%ELKESsJ-_'s^[\-"*(@%U1p
+[WIX:W2uQlo$jq7j[O6PN^!lq715;bfs,8M4['.0bQP(7q+`Vn9$u'UP)T[h+=(.l5B(*;f^W+CX-01=
+DeXY<Z%]jL#i4+&EUGfge.JUbM:7X8U;X3,0ATM2oE)KtPn]mo<1;ab%cX-kTC\M,1m+QpZ-2!2)n?AX
+gp2(K9';GLN-U04fK=GJ71@Gj*hS-X-Er;^ZaXno$iUh@Rkc_>89VQ&8aLe#"]H@/&!t(oN`k!&:^3c%
+/86%E$PCJFI^HnJk'c^&irJULcH>8ha30MgS;qYgSV4I0[*;KS.e_b!LBu6A/qZ5XW<Da`lVg#mde;2e
+X$YDi2/P,&qTs.];>.6OG^AARjftUljL$lKdTa#.)>cB_0qRQImn(`g\SWZ%_,l##="<5J;qUXj;7OQW
+QZS>E8n8>;URYtg4&re`*6uMg<ZnRq#BT@&bSK9\ZJEND8K1A8/<N+^/33sN*0W[`.':=G5k<'*b67C*
+jsA-b!/qDp'?tRYL0"a6;BI>Yhs:&;F#!6HMWRb#"OeJE13,AQ.Rm$61)`#Zc<DW=qnW(@JO1/)LW_35
+&%lh;ITGlVl^H:b''.+HG4RM-6>m]b78V3(CuUY9/iokCa"ke"ZR>2XW_&5!L+uM:NNG9?e1A`4U]r^>
+as>p*[os/:28?QZft7,20/IKqmGiZOh1)t#+!,m\f;T;J$h9dGWlVn$],^Gb14.B/3;Jm/`6^uI*_js2
+Lr6D'2]QAY\=bj?cOjDE1\i=A0a?;U\&q5]GGkV7]%*tE<>&P^9e,):A/g@g`uQQ0K`5IAArr1\&e=Ha
+I4,/q6JLRe<Y>N\"a0^PpBH-nB_U=N)-@&UhJ!'$_ZU_A5S6?rZuJ.Ni(!.iOkZL#!+^&M;;F?BmrW/>
+=E<%R#9VBE-%Z@6/93;60]/.:SGkOA%9TuA]BIDT]E/B7Z/>&E$(KLp%\@(*El^T7^`X0.+P*'=bj4o)
+$<^QW*7mU('TLM'0L.aO`@49tX5*E<D[^kp<3[,$,pBs\WlGOEG/'su!.S28N9,2%nt'p_%46E`)5*E1
+D?fGf*&elR\t#%B;.kb55]O;g%CKsr6`RGP?aFZb:).f!$FM2a(Qhlj;`7!^EUQp4Xg0+fDE/)UblDPa
+h6kR2`ug!84deXtFaak]9l:*=G-+$>Y/"EGblBjG.4r@<+A`3lN`haY*-S30[l28oal".=\0*TLnk,&B
+7h)(_J2M0b2C_?@U77VSEBL*'/q6[dY*q*ISbs'T>>Mf=/BNDsNhb=&XAWF\eJoQme$U;R-!r,#;GMQ#
+Vi_!A&e["g._pdH)EBUG\pAcR0Iba^7MnTdi:0tAYVoMA.Sf#c39H[!!X@<5=T0%O"U.j:(t:"=)(&m"
+V#;e"^endq&'W6.?k3M.=9-80K$#cKO\?#YV^e@0P&TU2GK!WC)JM0m!ZZ`kNXokbXp'A9B2cI+7aQ5B
+<QK]to&`*J!i,2a14HVr:]S^A1D,.V"]$<D_Q'UI_^.eUeNJGB=HWjn-QH/AghUu+ZN<!Lb^O"%r+i9"
+e;I/6K%r@;IS`hT!j\d`ZkM*P-_>,<#_ebk4>H;^aWi;S2Kk5$ViR5<DY9nO!qB)P"HXC_JcLu%39"l_
+go>PrEERjL2PK7BYnOnIZd\E:#?jT@M&;R>c5WT:#(iLLB?<6MK_-?Y[fcj\LOI&X#mq/.'poaa.M/O@
+!Q>$>eY3HMmO0RZ4W!)NX"CKb"eiG;[Cq9h&<l\R4:HZr%P#J\G#ge_CR,N%*26691i=Q@)cU>/,EM.n
+EhHWq=27__16rl*N-!%9*2r'Q1gicnAk"#8T"J&("?.amG>+tbD5iP`4:7ZJ$Za&aiU[*@jc-g;4>o>N
+j@52=bQd:-G#hL2m`0g+F3P\\c#,e1ind5Q8/5^m#4]3bF,lK*,?!<DDBY)uP!JAm(OH-<N\YTG`;ps"
+Vs`s?)*h(#ROJGiV]b,p7CK[3U/smH8K<[2crG.lEhZ+lI`muIKTWM1(.A&8Ndd46>\c_u":^2jR(R'N
+ClFN;oVujd7FND^b6B8("<V#d3E`>bk!P_mrI:g2MF='CrmoOPrM2V9T/'<$iqqq1-ujsn7S\AHq.t>s
+b;UuL8AS`BA618<FPu<kh]B/8Qk]"!N5Y$!NS3l4$;T,hh+@)$;C40W9!0AK`6tZ[7jcU-LZ<8R*)K7h
+f!gIX;IC^j=TfFHH@#"PZB?IlXMn%H5")>?g]dhO7m1MeGf]L0d)KU]UWT+bH":D)p[:?XKf6grg+]P'
+[Y8.B]<6JZPQBNPSfZ@g(f@.[UPpZB'C9e/&08\M/s0njRq65+"=KYI'F'`@"Fo^s<6%6R<o?2^cWgtT
+X\%VBdG-9`&;nDH2eIU%YpHO5[a+u*[^8i@0QE7NH)P[_"YEHnCW)k!\fA/)V7]7E=@4e>b1J[$,kNsT
++f@?lm+18GPB<gAbC#8@HZsCCZ;(3d$OX''X)N9)k*k'4[rI4[Gh++2]H$njeuT7FNhAj5i/sY.6B_Lh
+-W1pK$%n1ZWr^1>P:4HW1XEH/:E,CqGiu24P60("N^a<pJQ;juS_+Q?(`fOVm>D__Si:V&JSJ)_%LG6t
+F0I)T/:]0/oYj0!]QXkpRmma:3Ahf."+&hq/"DVMGgp`c"MDBgBSY]l8-nP6rFhHd+9e2(SN^W,ThU(Q
+fu!4G#&;d#7P[B.\AtF4RfQV(X9VW/)68)bMfPCV.rG+7N-]*?#!Uo*aC+c^5pI8@1)-.(8.#RI214bq
+"JaPD$OBd!JoRAAWomb'7iFQ9-.&hHgn!>W.KIbYPm8/jhLK3W%@/>0_sg1k:dU?t_`*f<.EHB54_^3h
+6D:,8O"<*5]iR8t8B@/XA"7kmcG1QF;nK^_li_UWQfnd.<"E.mS'VHn2`o%'0EVArorCq]N8(kQL'/%!
+Pkfk+<fUj@biL.:j&3B4J0>/fA.h*_>j_,G6^ZQ8[YEHp*5;_BomE`R8Rb+W$aG7p3!2$#ljV(LVh&,G
+/k@r`W97PrTX_^K$hC<M\GLVP!HKTO;NSa[G_C@DI65nCCFZD1@HEOPlWS<O+8cS>)[@FPWd=bCh*dW%
+85l$r'n?uFRrhEaeFU'r!>]8Z0&1>N8GZ-dlYG1UT%<<ffd3Bu7NTT4dX)_Qc`ArtF8JU"LJj7sSljMh
+gX'><,:(i0[+4h+oa?%G-sdd$SL7d0;`g59?@#O>j]bs(0.A/q@mfiEC]%C^_"uS@LpS5RMFfWk1j9A5
+.h1G"]g0V-i>Kj;1smc/,F%6tF5%BDc#N8["IFCn*&7>G3;be0I't5f8Cb1p%3A_oR.Jq=>gOc@@</.m
+o,Dai(/,_FEJb,G,`N5;aUf(T_/q.\:\T)9X[@sIGqS/jrS^TZ6K/4QJUs<k#W2km)l:?=.7P.kOt7RV
+4a-GK'rNMp,Y<kINP>5aLD_$mjAhVMbm9\('[Iqc<L"G##XD9W1WeYkgtdr_T4hJPrrAA;rG.peiQp5n
+PP[gsE(3_mq!1prX#>HO4%9H#N^=0OeN#G25&.Z_6Y4.`4VbU+<.UYuCA,kS2C<UYV]RRA?ISuJ@tuK$
+#q?G4ccW$3YN0@EPj($,-7dbsfoGdsac*Mr3QE,+TVB`>D5QRE`>-$Yk/SDY:Td2N0gH^T=<j*c@:bQ-
+7IQad5SHPJ1+JYg2R$R.3@&[+ZiRe4C/ETi40]D7$AkC>*;WT<Ja.5[#E<!HLJ>RV>1<jV5Xp*\C3`Vc
+o<ZG%cP`__qT,IZ:a`KZQ%!/`*.V]G'_PEkB6Z<Fh6'`KS<<KCECP_I76<pPdHpIW99Ga1lhiU?FEXf/
++uM+W<(+F>IeMgh5Sms<1>6(j1fCjdC$5?CF"f+2dAhoDA:<@=j[j=or'*#PT#;_QC'<t>.3Ob':'XAk
+E_+/(`uQV2^pFYi%?m71#.H'PW1XOlVerY\ji`1ioYI1,/ij*,]tp?K"cBnOe:0MT?mD/#bW:i$+;Whs
+@9"\S!u5QE%4g#a)odbY`lLFs$0TnAX:#CZbZk[h9F"i`0nI@i'jU),#oCe=:EXXT[fT:bn`sBZfj\(u
+mc:PrlVQMi`0jde39Y\NZXiX#U?0/uJUpXnat,)oWBJ&VX:&u>!6IGZkWS,2_LJUpf:CU`lTc1iD?TXm
+V#XG&_>W)J3e2_"JpC3iP-1I(O68et^H&ggnso\Y!I82Z<0fZ>k("Fh<\o8Nn!Y(!/trfGh0RR"l359%
+8CN.!#JFg9kQOVk_/RPJL'bmAopV'G`&Fo)-s%N'hm_WL!?KIq)&Z:1n92*M)5cQ_#!;+6a8fai4_l*N
+"P1#FhNH.i;>3g\Ip0%#%GQLU[B`,k/>Qc#\N[E7#MD?S%"s`13Am]Y!qMEYccsd7<5>D]E07=/Y?K8C
+JVOAL?;*omap0'`2#q!p!o=*:7ih]d(k\@XF>,M5b+u0E8Q3[g:o(n:*PT`-!$m!A<;$FH^):_;ra#5U
+E@,0G]$RoajE1%6IB+SbF(s;#,;`V7"e#[)Z8Rd3jR>*@1sVfr4A`QuXR%t=,Q@`jT.hN#QK]Z2qg?s<
+aMVmD3?WC%j/#=b-&G;Ddi2q4<SAKLIUru?4EdBO\AekM_APJD?(iS:h;%rW2("2^OUM8IfKMr`+9Hn/
+BIB$C-^Ii[7@R]jbYHgZeq/EYL:8=Ob_'=EF.+\"/G\8e6=VD)gV(/62#WS&0'e1Q=]EP;JKo]4pZ&(m
+0?84M#p>.I&-?7*D#XJ@@!L!i$0<d1Lj[;&%hTC.0t`np3WVh=:s:iQjQFef!6;QYq,TnU.fRm8@pK#[
+rr="pF0[g=F0;<6]Fg(45Wn29j@>`d&\-1qP0H>)b:%5$gB<PiitQMX3K/%<7e4\YUL60E:>^aFLcLER
+CIaO=95^Pf)3)f;d%k'A>`)9)3K2OTmbGc$1Ud\^%E)e*C&pl/E12LBgd5+ED?((k#<u(GBIn#FQ,U/Z
+mSsP7L*uadE^#]g:,bMB6_okq@QaBJVu_p^"Dh6r\[g#E_4V<AdjA:Y5247sOWFi'`EJH=2<'J2Cg?!#
+Sgqi[(^bj)F,n7laaDW$Cf-c[r_3APKu*S`-^95YhJ6o'^s%q4#98<6-a?1)0kfE4g/Ol9//Vo=e8\Ul
+ctK%.;7(.27Oh&RE5r)>1&=]Nlk]:m85`E6E$:BT@YBK%2'l3Airk5>Wp$ACg&W1P;d5*IQ?"E>++a_7
+X\%Yd_SCa6IOUpf-&O\'`_Bei/@qbgA95QGW!N)/c8p#3(2X7-am6LQ,OqE7;FV[PccaD&$7ucMNd0]:
+.a=Q(14'@`'F^XC0#M]bN:VcGiDN")DH9%CXc@?>WTp"6oh%oaDfUE=F[TNMn1(XK>e7(XpeVC#K^Z]>
+%hp?WP:n9Sai>CPMJTRmkKm4[;XP8MSoSQc'nF8g=[C*)A'86t*/k(.$@P]9or7+^=n;u:D<h%XQ0D"7
+JZTp(OCK@k#-8*cmGLeB3#b&UJ264_Vg%l\r2=!n,eI;(kf]-)5'@'<naKWA_N$\>Ncki2DD#KQ'IggW
+`dc!g@MF_Tg>1!qa?YiILS[_J=Qo+KAeDA3+?qU,'jeu_Gr41V/nZ1oERq1U!GL_upRU!Snj+LjIMG*r
+(=<2VC]n5LJ.#"QDC%;Mg]P[=3:BHo<s,7/M?j2XP_&E(HY0i1^g]_!H#c62`\n",dt?AZ>E'TE#2D-S
+oW=T3`2Po<E@^,1!<3$Kc^g/+Z$XLo8=L1OJ^i`MWBb>e)Fk(uV]Dem&/]U7Y%QHo[`1TMp@YN&Pp4pP
+ELoIqjZkTe12Y(RY_&Qp&io*Q%@o+QZ>3+0q&[oNq1"<miOruO&C[sLQIE6dY&#[J`3P4E"dnjJIKl!m
+faUfZ'Zh7b+TY373$-s^e=hd0`)dU?ZH>d$%k_@O_27(`Ng3@#&"/>2(iM%eAR2cBOlj^)39*$?a/rm_
+Xs>:7/8rhYU^,1c8PVOQ>Z#mi@R_tj,\$='&>;&aO%a%(l3\H*LDpAJ,[dqpjC^UI",[)$\JDYp6*nd>
+Jbu?-"_5o0I18'D(OVQLnsWHL2Ff!qVbWMU112@r0f5eDr2bG<6/r0IPn9b2"YoNIl1^HgCjQiPN^R#i
+VGAom&Hldr+lpa,LJ6WdoPu'2I+H?qO8XQrd.P`:V,+BbT/V5HbJ3*+`lDQ/Di]&!(Us<k92^&=A&Gg0
+'bR\RjHesC)35Cub!Q8s(^'(h'P34'^gsJI$?dQcTF+%][ZR"J[_XFmi/@\t9N:R*/?Dls5IjV\.ItPW
+e.+:R*/Lb-,?WDhb/Yc3Mo[e3N^aO"3rZLV:amH4-C#UQP/f8D/kZfj#P4lF)c)O<h@#Rf;4-EsgGArp
+IN1Xl@ZgTZDd[e_+/__HEAO<DbZRRM1"s#k*7-*16T.XBF"sC5#WY"D*6aKpjF(\OAj+N-I#O&_,OhN&
+"XD.X/Kp/6i`/J'>b.\\=Vb^RLuVhq$ri5J$,@q8is,dA#=0=V-&km<`C;"0&io@(Bukg@Y)!)KjNDP7
+ho^sY-:r-`R6]O6,,i`70X0`3.?/4IKiha@S9Co1Aqm*/,EuRtR]n*)@#@93KfK"/!RRK1JrGhQ1S7Oh
+!'!On+;G_@#(S$M#U@i.J1=-''.X]"U$b.^J9r-^>D,5Q9]Mg,rr<sm'.]0cVob9S8''LMPq-m>NO:66
+'D#g9?/LF6Cl9hVO9_[U[fp2'MJ%0rQ_6HR]k1lc-BBY!2mF5@BptC/,RUq;"6>GHE_jm-'lRJ/8Sj?e
+H-Qm\<WHW*CdqO05if+Y:u[#(o;G!-0c7q3J,8u>#&@C:[qoIl)g>iheYs+U?W@_ZgjLZq,\Y#!EcKG5
+!7$l3rr=^<rr=tu]D`KF7BC(W?:8AYUb4m6:EfcWFDAG253<k@1&S!25Yl<7YiWYPN^u@kPoQ`o;Ueaq
+bf->dJ\$EP5*XP3au'g\b>MI'W6$EdqUVeT#"gf@#bWsn"6l8u$Bi`A-s2f!5bJ<c=NPV>aS?FC#33E.
+]efsi(_JCM!"P9gJcdq0h9h=(nrPS'3OJ,Ug0M!O+..,ZrSi1P>Ce*NasKYB3NX9dMWQW#aa5@SncSIo
+C<[At\$Cl9\Q"I8Pq>81E`llIHK0QTcG66;#f=`*^-XRc8q8Gr$pssoGiSCg";X"FYrH'>.KHe'7>rL)
+k3-I\ZLE%Mel,f,>Y&.<EYLHBciH`)D$mCYHXZIk&=[kdO;_)^#:$_q`FcS?#a4"@>uZtljDI*k[P:sH
+6H.DD,K">$5im0t%gP4,V$+(3KM_0=6rRLo8^7ROk*+GX>A@B.!sI#YEg^Ac]j1gJEQI5%Ff^UjC5K)?
+OK<:3(s`68OgKVF7QXEKDJnCF[n0mh[hco2qk,qJmQ8dK`L&c.,\Z;_`+7_M`u48JHc5M\Os-GK8L[C#
+!Kjo#PLo<(+"`COp<qZaC[6eSMbh'4+L\omXh&0GQ;SDL5k<u1\aPsiUrU@UQP890W_%3k!A%,'"!arZ
+*<$X-bF=OII?Cl!GrYg(Dg$-r<da8+o0-pfUc",acf>$*`i(Q`9,ehL4E[gO*PKG-M4,kGmTMU^m9i4[
+;u"k6ET+rFd0U'TIn_1.JbHJro%H=!"Ls?#pP5V-='O/O`TdWN5TcoK5ls6HTY<d/qJ$\Z6Zitg4b+!1
+!(=NJA,2<idtqBrCSV2r@Rp$_!,=PoNX,9CNa.-h\U^9"!0EWM(XhJA`l!3/)iU1`N;N%9^/H6=8CM.7
+baONlG<>4(O3;LAj@'s,:9r[6YO*2]F,?Y!#H@O1;94:F[<ij>FcJQ\+iXOeM"/fpc-hVO#)J;cEj+57
+eX^^tgdFLN_*C$CW1Hs_jJgisdg<kNkFah4."i3<SI!?WI)(5*:`QF(=s+sdVEPNm!Qp6n]H@i)@N]dr
+idg,M%77uPM,bVQULTG`_4TgfaGLi=OCff_86&2">^n;%b(6$keQEUbT`NoT&ar[cOZHXCQ;Qg8,[b8e
+"cATi1(NB^oD)3Y.P@38pOj.iR;t;.BqXQ594UIOPsGEErrD@'^/Rr$L3DQ*:kQaoE_l[%'gPD<NP`Lf
+85XQ**0TSH*Q^tUmm%Y_[j>M%nIis'Z&pYeZ3nq]n_+af(m%6]!S@>I1scl3T&Ro3_dhg((_$@6`E0VZ
+7^4p&>6T`dbe=#V'1:k;js`K_l>aYd*D&Kl%;,;Zbe(*D"or-Uoi=<*ZWi['1nfY)YnB0/FCT'q7RS<a
+=I]n#>:n))/1?!mZD<W&V<)9O18>hZ[dFC7.n:mn/'2\N+\-I<iJ8t`pcU>Injrc\Da/qd:F[%"AW/TI
+k,SP`^/`qUEQ?Xa,Z/_%Sl)!Xh6nCZBAA"erQliKf/Pbm*WB":213ILI@=M=bT)(^e9diXeoEtY';&&V
+qSkaj(5Oaro157'+`IEAD5:\;rr=O(#h[IjW0[04OMXFJ7PIN'a8Pk9QJsf>,Bk4k7Mtd<RFg]betjfN
+l*ZX>D<pbOrQ.Q*p]Uhd>p\;KmhD'q0K80e9ZAN4--`g@,:C_:81,Van\UKIYB1-=!L!M^i:%GpIosZ2
+kS@[8@&3Toa#o!8`rONTJKRHi\q#,VPPW9`SK?u#d7hS3OoaHmMPi=>-sXE;!EA-.hj!f8H&rDDVTUN^
+Ck:6Dk9t=LQ/-uU<mtl37MN&^!"ki5`Gb*[e-IC\iD=JLl(@s_.ndqlfb8STaPSWrFQrR$F/IftTG"r`
+a9n_Fb)d,&H[Q.jXR;Gn*aQ_T7S[o)DArTnc``bU,mA6Fi3QP?n*JlHqkSZgE!!LFlir!K?jKZ9!^DCu
+-h%1(:Z*_Y3VBTkV7!gL!13bI]WOIT[^0p<5pArN=Oo>n;$FD7&jZ*3&*I)G^Ls&Gb7'<<S?U%+!+RsS
+-KTCqBfO-![pbDV!3[31m3KXVLj-Z;5@/")bYjW^Z&.I3+ZNN[Otq@D"-Gjt[\qJ9&%W[fPn`[:)/[8:
+_rV,Bqn2AWcdJ_Ul%HU5VeJ#QCB?Q.QZ'M>W__P2Ndhs`9&7IThD'+(MNL*ACM?-YaR30u4["Kh0jMf$
+(3kc^iDl%X_2)Jo#H%W`@n<Q?&k*PUmhRo*b$]CnKZDHu`t]miBbJI$Y0V$R^NtSJi,J$:3V.Z4%WjC=
+djk<bB^i8bjF!g2*hPSTmMs<63&%'_\ZilUmZ2<-^cVBnr8d&nc((ah"Wt?H:FP<\o+C`2HBOe\@3K_"
+4P!:[!ll4b'NX#-\.%O(JI6gUTZn+aSdt"\+m!hq/7eqF:BU(G+,))IV`G^YS8J..rb%_8mO.ktm`51M
+mWYagk5<QR?]4paniLTYn"9Ooe/Tish#@Ap[E&5eJ)k8Vf]?N<c1I[QjSVmT!$3&>rHh9=!2(51q$4l'
+lKA0IY&4)r!-nL@rr=2/6iOcqrrCCT"'_?]0D_Y4h*9&76QH++X-<M2r29[brrA*1rrDoS-iSX0!t$.F
+p-1qBVul.<rrD*j-iJ?_rrA]1!:\S:Xn4FN<e(bR1]\9g`qgSRb*2d7J+!p25S*kpT"j]cjZoEUnbq,>
+U4O0ArrDW?5Md(m(L-=:d*MidorJ)ToVT(uVu:(S]K_s%#*O'm8cVD3j6k\$\u5O\-j.lb^X^C)!*kTU
+TFQ63j5GLE+3p)&%=L>;6C)!Oo,%C\.j7':99]=%?gk2iVRJ?5anNbfp(<4_J&f7CrGmDKCGiXqE:CX=
+h(ScBT`5#>Mcr9'%mdkoF8k^2f&0ZErrACHqWVqr`G$ok&?l"Z+864bXh^.1qUV<1H5Zd3^\iIFrr?=@
+q2,1:/jIi]rr?<Yq&0D03Hb?%=MO;3%*S&4:XIQpJLhhU[AY\#LS=Q@C/qhAX%DX]B)D(I^;%t!"%I5%
+;Z?a,ho^Ht>5e6qU\W7@]\i"Nrr@&RPlP4,gi&m^p&bc=j5pmKkeGELNp$uQ!)*4:rC?I^`!5&DqRJiH
+5K^*Za^4uIXGd&Ir9H$Krp+tA.;ZepGQ.XaPCM1Br^OG.\cYaGJ*MLjls#&*<o<H+FoMGH?iL*l27OJn
+rC#Q22tAgkE\i3JMuE2Dl5m`HLTC@_?j1iPRK/Mor]MV)RK1$uJ&e#X!8#*f!9dA_0DrIUps98GHoV-+
+<N(E!B`A('#1WVfHNS]HV"QMn`W#o]I5h,Rr9GId>Mo5L[/*AlN<_m8MC8?nqG7Ai?ZofN^T@KN5Pg3#
+Xh_u4rHu@UkurXaJ+]$(A,_\og]pWlK1E0UfD:^1l(n"rDG^?5QN$sS&,i8+(]J(If`~>
+%%EndBinary
+grestore
+np
+grestore
+grestore
+pgrs
+%%PageTrailer
+[
+[/CSA [/0 ]]
+] del_res
+Adobe_AGM_Image/pt gx
+Adobe_CoolType_Core/pt get exec
+Adobe_AGM_Core/pt gx
+currentdict Adobe_AGM_Utils eq {end} if
+%%Trailer
+Adobe_AGM_Utils begin
+[/EMC pdfmark_5
+currentdict Adobe_AGM_Utils eq {end} if
+Adobe_AGM_Image/dt get exec
+Adobe_CoolType_Core/dt get exec
+Adobe_AGM_Core/dt get exec
+%%Pages: 1
+%%DocumentNeededResources:
+%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0
+%%+ procset Adobe_CoolType_Utility_T42 1.0 0
+%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0
+%%+ procset Adobe_CoolType_Core 2.31 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%+ procset Adobe_AGM_Utils 1.0 0
+%%DocumentNeededFeatures:
+%%DocumentSuppliedFeatures:
+%%DocumentCustomColors:
+%%CMYKCustomColor:
+%%RGBCustomColor:
+%%EOF
diff --git a/texmf-dist/doc/latex/graphicxsp/graphics/example.eps b/texmf-dist/doc/latex/graphicxsp/graphics/example.eps
new file mode 100644
index 00000000..01817d1d
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/graphics/example.eps
@@ -0,0 +1,389 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: MATLAB, The Mathworks, Inc.
+%%Title: example.eps
+%%CreationDate: 11/05/96 21:16:44
+%%DocumentNeededFonts: Helvetica
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%Pages: 1
+%%BoundingBox: 97 197 502 604
+%%EndComments
+
+%%BeginProlog
+
+% MathWorks dictionary
+/MathWorks 150 dict begin
+
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bind def
+/xdef {exch def} bdef
+/xstore {exch store} bdef
+
+% operator abbreviations
+/c /clip ldef
+/cc /concat ldef
+/cp /closepath ldef
+/gr /grestore ldef
+/gs /gsave ldef
+/mt /moveto ldef
+/np /newpath ldef
+/cm /currentmatrix ldef
+/sm /setmatrix ldef
+/rc {rectclip} bdef
+/rf {rectfill} bdef
+/rm /rmoveto ldef
+/rl /rlineto ldef
+/s /show ldef
+/sc {setcmykcolor} bdef
+/sr /setrgbcolor ldef
+/w /setlinewidth ldef
+/j /setlinejoin ldef
+/cap /setlinecap ldef
+
+% page state control
+/pgsv () def
+/bpage {/pgsv save def} bdef
+/epage {pgsv restore} bdef
+/bplot /gsave ldef
+/eplot {stroke grestore} bdef
+
+% orientation switch
+/portraitMode 0 def
+/landscapeMode 1 def
+
+% coordinate system mappings
+/dpi2point 0 def
+
+% font control
+/FontSize 0 def
+/FMS {
+ /FontSize xstore %save size off stack
+ findfont
+ [FontSize 0 0 FontSize neg 0 0]
+ makefont
+ setfont
+ }bdef
+
+/reencode {
+exch dup where
+{pop load} {pop StandardEncoding} ifelse
+exch
+dup 3 1 roll
+findfont dup length dict begin
+ { 1 index /FID ne {def}{pop pop} ifelse } forall
+ /Encoding exch def
+ currentdict
+end
+definefont pop
+} bdef
+
+/isroman {
+findfont /CharStrings get
+/Agrave known
+} bdef
+
+/FMSR {
+3 1 roll 1 index
+dup isroman
+{reencode} {pop pop} ifelse
+exch FMS
+} bdef
+
+/csm {
+ 1 dpi2point div -1 dpi2point div scale
+ neg translate
+ landscapeMode eq {90 rotate} if
+ } bdef
+
+% line types: solid, dotted, dashed, dotdash
+/SO { [] 0 setdash } bdef
+/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+/DA { [6 dpi2point mul] 0 setdash } bdef
+/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
+
+% macros for lines and objects
+/L {
+ lineto
+ stroke
+ } bdef
+/MP {
+ 3 1 roll moveto
+ 1 sub {rlineto} repeat
+ } bdef
+/AP {
+ {rlineto} repeat
+ } bdef
+/PP {
+ closepath fill
+ } bdef
+/DP {
+ closepath stroke
+ } bdef
+/MR {
+ 4 -2 roll moveto
+ dup 0 exch rlineto
+ exch 0 rlineto
+ neg 0 exch rlineto
+ closepath
+ } bdef
+/FR {
+ MR stroke
+ } bdef
+/PR {
+ MR fill
+ } bdef
+/L1i {
+ { currentfile picstr readhexstring pop } image
+ } bdef
+
+/tMatrix matrix def
+/MakeOval {
+ newpath
+ tMatrix currentmatrix pop
+ translate scale
+ 0 0 1 0 360 arc
+ tMatrix setmatrix
+ } bdef
+/FO {
+ MakeOval
+ stroke
+ } bdef
+/PO {
+ MakeOval
+ fill
+ } bdef
+
+/PD {
+ 2 copy moveto lineto stroke
+ } bdef
+
+
+currentdict end def
+%%EndProlog
+
+%%BeginSetup
+MathWorks begin
+
+0 cap
+
+end
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%BoundingBox: 97 197 502 604
+MathWorks begin
+bpage
+%%EndPageSetup
+
+%%BeginObject: graph1 1
+bplot
+
+/dpi2point 12 def
+portraitMode 0216 7344 csm
+
+ 956 91 4862 4883 MR c np
+76 dict begin %Colortable dictionary
+/c0 { 0 0 0 sr} bdef
+/c1 { 1 1 1 sr} bdef
+/c2 { 1 0 0 sr} bdef
+/c3 { 0 1 0 sr} bdef
+/c4 { 0 0 1 sr} bdef
+/c5 { 1 1 0 sr} bdef
+/c6 { 1 0 1 sr} bdef
+/c7 { 0 1 1 sr} bdef
+%%IncludeResource: font Helvetica
+/Helvetica /ISOLatin1Encoding 144 FMSR
+
+1 j
+c1
+ 0 0 6912 5185 PR
+6 w
+DO
+4 w
+c0
+1463 4613 mt 1463 388 L
+1463 388 mt 1463 388 L
+2308 4613 mt 2308 388 L
+2308 388 mt 2308 388 L
+3153 4613 mt 3153 388 L
+3153 388 mt 3153 388 L
+3999 4613 mt 3999 388 L
+3999 388 mt 3999 388 L
+4844 4613 mt 4844 388 L
+4844 388 mt 4844 388 L
+5689 4613 mt 5689 388 L
+5689 388 mt 5689 388 L
+1463 4613 mt 5689 4613 L
+5689 4613 mt 5689 4613 L
+1463 4191 mt 5689 4191 L
+5689 4191 mt 5689 4191 L
+1463 3768 mt 5689 3768 L
+5689 3768 mt 5689 3768 L
+1463 3346 mt 5689 3346 L
+5689 3346 mt 5689 3346 L
+1463 2923 mt 5689 2923 L
+5689 2923 mt 5689 2923 L
+1463 2501 mt 5689 2501 L
+5689 2501 mt 5689 2501 L
+1463 2078 mt 5689 2078 L
+5689 2078 mt 5689 2078 L
+1463 1655 mt 5689 1655 L
+5689 1655 mt 5689 1655 L
+1463 1233 mt 5689 1233 L
+5689 1233 mt 5689 1233 L
+1463 811 mt 5689 811 L
+5689 811 mt 5689 811 L
+1463 388 mt 5689 388 L
+5689 388 mt 5689 388 L
+1463 4613 mt 1463 388 L
+1463 388 mt 5689 388 L
+1463 4613 mt 1463 388 L
+1463 388 mt 5689 388 L
+1463 4613 mt 1463 388 L
+1463 388 mt 5689 388 L
+SO
+6 w
+1463 4613 mt 5689 4613 L
+1463 388 mt 5689 388 L
+5689 4613 mt 5689 388 L
+1463 4613 mt 1463 388 L
+5689 4613 mt 5689 4613 L
+1463 4613 mt 1463 4613 L
+1463 4613 mt 5689 4613 L
+1463 4613 mt 1463 388 L
+1463 4613 mt 1463 4613 L
+1463 4613 mt 1463 4571 L
+1463 388 mt 1463 430 L
+1423 4782 mt
+(0) s
+2308 4613 mt 2308 4571 L
+2308 388 mt 2308 430 L
+2268 4782 mt
+(2) s
+3153 4613 mt 3153 4571 L
+3153 388 mt 3153 430 L
+3113 4782 mt
+(4) s
+3999 4613 mt 3999 4571 L
+3999 388 mt 3999 430 L
+3959 4782 mt
+(6) s
+4844 4613 mt 4844 4571 L
+4844 388 mt 4844 430 L
+4804 4782 mt
+(8) s
+5689 4613 mt 5689 4571 L
+5689 388 mt 5689 430 L
+5609 4782 mt
+(10) s
+1463 4613 mt 1505 4613 L
+5689 4613 mt 5647 4613 L
+1264 4666 mt
+(-1) s
+1463 4191 mt 1505 4191 L
+5689 4191 mt 5647 4191 L
+1144 4244 mt
+(-0.8) s
+1463 3768 mt 1505 3768 L
+5689 3768 mt 5647 3768 L
+1144 3821 mt
+(-0.6) s
+1463 3346 mt 1505 3346 L
+5689 3346 mt 5647 3346 L
+1144 3399 mt
+(-0.4) s
+1463 2923 mt 1505 2923 L
+5689 2923 mt 5647 2923 L
+1144 2976 mt
+(-0.2) s
+1463 2501 mt 1505 2501 L
+5689 2501 mt 5647 2501 L
+1348 2554 mt
+(0) s
+1463 2078 mt 1505 2078 L
+5689 2078 mt 5647 2078 L
+1228 2131 mt
+(0.2) s
+1463 1655 mt 1505 1655 L
+5689 1655 mt 5647 1655 L
+1228 1708 mt
+(0.4) s
+1463 1233 mt 1505 1233 L
+5689 1233 mt 5647 1233 L
+1228 1286 mt
+(0.6) s
+1463 811 mt 1505 811 L
+5689 811 mt 5647 811 L
+1228 864 mt
+(0.8) s
+1463 388 mt 1505 388 L
+5689 388 mt 5647 388 L
+1348 441 mt
+(1) s
+1463 388 mt 5689 388 L
+1463 4613 mt 5689 4613 L
+1463 4613 mt 1463 388 L
+5689 4613 mt 5689 388 L
+1463 388 mt 1463 388 L
+5689 388 mt 5689 388 L
+gs 1463 388 4227 4226 MR c np
+42 183 43 192 42 200 42 206 42 210 43 211 42 210 42 208
+42 204 43 196 42 188 42 177 42 165 43 151 42 135 42 119
+42 100 43 82 42 61 42 42 42 20 43 -1 42 -22 42 -43
+42 -63 43 -83 42 -102 42 -120 43 -137 42 -152 42 -166 42 -178
+43 -188 42 -197 42 -204 42 -208 43 -211 42 -211 42 -209 42 -206
+43 -199 42 -192 42 -182 42 -170 43 -157 42 -142 42 -126 42 -108
+43 -89 42 -70 42 -50 43 -29 42 -8 42 13 42 34 43 55
+42 75 42 94 42 113 43 130 42 146 42 160 42 173 43 185
+42 193 42 202 42 206 43 210 42 211 42 211 42 207 43 202
+42 195 42 186 42 176 43 162 42 149 42 132 43 116 42 97
+42 79 42 58 43 37 42 17 42 -4 42 -26 43 -46 42 -67
+42 -86 42 -105 43 -123 42 -139 42 -155 42 -168 43 -180 42 -190
+42 -198 42 -205 43 -209 1505 2290 100 MP stroke
+42 -211 1463 2501 2 MP stroke
+42 -106 43 -87 42 -67 42 -48 42 -26 43 -5 42 15 42 37
+42 57 43 78 42 96 42 115 42 132 43 148 42 162 42 175
+42 185 43 195 42 202 42 207 42 210 43 211 42 211 42 206
+42 202 43 194 42 185 42 174 43 161 42 146 42 131 42 113
+43 95 42 76 42 56 42 35 43 14 42 -7 42 -28 42 -49
+43 -69 42 -89 42 -107 42 -125 43 -141 42 -157 42 -169 42 -182
+43 -191 42 -199 42 -205 43 -210 42 -211 42 -210 42 -209 43 -204
+42 -197 42 -189 42 -179 43 -166 42 -153 42 -137 42 -121 43 -103
+42 -84 42 -64 42 -44 43 -22 42 -2 42 19 42 40 43 61
+42 81 42 99 42 118 43 135 42 150 42 164 43 177 42 187
+42 197 42 203 43 207 42 211 42 211 42 210 43 206 42 200
+42 193 42 183 43 172 42 158 42 144 42 128 43 110 42 92
+42 73 42 52 43 31 1505 399 100 MP stroke
+42 11 1463 388 2 MP stroke
+
+gr
+3194 4942 mt
+(\\tex[t][t]{$t$}) s
+1090 3419 mt -90 rotate
+(\\tex[B][B]{$\\sin\(t\)$, $\\cos\(t\)$}) s
+90 rotate
+2314 273 mt
+(\\tex[B][B]{Plot of $\\sin\(t\)$ and $\\cos\(t\)$}) s
+2689 2048 mt
+(p1) s
+3956 3343 mt
+(p2) s
+5224 1495 mt
+(p2) s
+3486 2178 mt -78 rotate
+(p3) s
+78 rotate
+
+end
+
+eplot
+%%EndObject graph 1
+
+epage
+end
+
+showpage
+
+%%Trailer
+%%EOF
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_comp_aeb.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_comp_aeb.tex
new file mode 100644
index 00000000..f3725222
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_comp_aeb.tex
@@ -0,0 +1,200 @@
+\documentclass{article}
+% the driver is not listed here, we assume web.cfg
+% lists \ExecuteOptions{dvips} or \ExecuteOptions{dvipsone}
+% Standard_transparency.joboptions required to distill this file
+\usepackage[designiv,usetemplates,nodirectory]{web}
+\usepackage[preview]{graphicxsp}
+
+
+\title{\texorpdfstring{\textsf{GraphicxSP}\\\textsf{Graphicx} versus \textsf{GraphicxSP}}
+ {GraphicxSP: Graphicx versus GraphicxSP}}
+\author{D. P. Story}
+\university{Acro\negthinspace\TeX.Net}
+\email{dpstory@acrotex.net}
+\subject{Form XObjects and BP, EP and SP operators, transparency}
+\keywords{Distiller, Form XObjects, BP, EP, and SP operators,transparency}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon}
+\embedEPS[transparencyGroup]{ex}{graphics/example}
+
+\parindent0pt
+\setlength{\fboxsep}{0pt}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+We make direct visual comparisons between the results obtained from the
+\textsf{graphicx} package versus the \textsf{graphicxsp} package. In the sections
+that follow, \textsf{graphicx} image always appears \emph{on the left}, and the
+\textsf{graphicxsp} image appears \emph{on the right}.
+
+\section{The \texttt{width}/\texttt{height}/\texttt{scale} options}
+
+\begin{center}
+\includegraphics[width=1.5in]{graphics/AdobeDon}
+\insertEPS[width=1.5in]{AdobeDon}\\[1ex]
+\texttt{width=1.5in}
+\end{center}
+
+\goodbreak
+
+\begin{center}
+\includegraphics[height=1in]{graphics/AdobeDon}
+\insertEPS[height=1in]{AdobeDon}\\[1ex]
+ \texttt{height=1in}
+\end{center}
+
+
+\begin{center}
+\includegraphics[scale=.5]{graphics/AdobeDon}
+\insertEPS[,scale=.5]{AdobeDon}\\[1ex]
+\texttt{scale=.5}
+\end{center}
+
+\medskip
+To my eyes, the \textsf{graphicx} images on the left seems blurrier
+than the \textsf{graphicxsp} image and don't magnify as well.
+
+\newpage
+
+\section{Comparing \texttt{bb}}
+
+\vspace{1in}
+
+\begin{center}
+\includegraphics[width=.5in,bb=30 50 150 100]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,bb=30 50 150 100]{AdobeDon}\\[3ex]
+ \texttt{bb=30 50 150 100}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,bb=30 50 150 100,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,bb=30 50 150 100,clip]{AdobeDon}\\[1ex]
+ \texttt{bb=30 50 150 100,clip}
+\end{center}
+
+\newpage
+
+\section{trim}
+
+\begin{center}
+\includegraphics[width=.5in,trim=20 20 30 15]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,trim=20 20 30 15]{AdobeDon}\\[3ex]
+\texttt{trim=20 20 30 15}
+\end{center}
+
+\begin{center}
+
+\includegraphics[width=.5in,trim=20 20 30 15,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in, trim=20 20 30 15,clip]{AdobeDon}\\[1ex]
+\texttt{trim=20 20 30 15,clip}
+\end{center}
+
+\medskip
+Again, to my eyes, the \textsf{graphicx} images on the left seems blurrier
+than the \textsf{graphicxsp} image.
+
+\newpage
+
+\section{\protect\texttt{viewport}}
+
+\begin{center}
+\includegraphics[width=.5in,viewport=20 20 60 75]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in, viewport=20 20 60 75]{AdobeDon}\\[4ex]
+\texttt{viewport=20 20 60 75}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,viewport=20 20 60 75,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,viewport=20 20 60 75,clip]{AdobeDon}\\[3ex]
+\texttt{viewport=20 20 60 75,clip}
+\end{center}
+
+\section{\protect\texttt{keepaspectratio}}
+
+\begin{center}
+\includegraphics[width=1.5in,height=1in]{graphics/AdobeDon}
+\insertEPS[width=1.5in,height=1in]{AdobeDon}\\[1ex]
+\texttt{width=1.5in,height=1in}
+\end{center}
+
+\begin{center}
+\includegraphics[width=1.5in,height=1in,keepaspectratio]{graphics/AdobeDon}
+\insertEPS[width=1.5in,height=1in,keepaspectratio]{AdobeDon}\\[1ex]
+\texttt{width=1.5in,height=1in,keepaspectratio}
+\end{center}
+
+\newpage
+
+\section{rotations}
+
+\begin{center}
+\texttt{AdobeDon} \fbox{\includegraphics[width=.5in,origin=c,angle=-45]{graphics/AdobeDon}}
+\texttt{AdobeDon} \fbox{\insertEPS[width=.5in,origin=c,angle=-45]{AdobeDon}}\\[1ex]
+\texttt{angle=-45,origin=c}
+\end{center}
+
+\begin{center}
+\texttt{AdobeDon} \fbox{\includegraphics[width=.5in,origin=rt,angle=-45]{graphics/AdobeDon}}
+\texttt{AdobeDon} \fbox{\insertEPS[width=.5in,origin=rt,angle=-45]{AdobeDon}}\\[1ex]
+\texttt{angle=-45,origin=rt}
+\end{center}
+
+\newpage
+
+\section{rotations and \texttt{bb}/\texttt{trim}/\texttt{viewport}}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,bb=30 50 150 100,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,bb=30 50 150 100,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,bb=30 50 150 100,clip}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,trim=20 20 30 15,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,trim=20 20 30 15,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,trim=20 20 30 15,clip}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,viewport=20 20 60 75,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,viewport=20 20 60 75,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,viewport=20 20 60 75,clip}
+\end{center}
+
+\newpage
+
+\begin{center}\ifpreview\else\previewtrue\fi
+\textbf{MathLab Graphics}\\[1ex]
+\insertEPS[width=1in]{ex}
+\insertEPS[width=1in,clip]{ex}
+\insertEPS[width=1in,transparency={/ca .3}]{ex}\\[1ex]
+\textsf{GraphicxSP}: left insert, middle clip, right 30\% transparency
+\end{center}
+
+\begin{center}
+\includegraphics[width=1in]{graphics/example}
+\includegraphics[width=1in,clip]{graphics/example}
+\includegraphics[width=1in]{graphics/example}\\[1ex]
+\textsf{Graphicx}: left include, middle clip, right include
+\end{center}
+
+The bounding box for this graphic is
+\texttt{[\llxOf{ex}\space\llyOf{ex}\space\urxOf{ex}\space\uryOf{ex}]}.
+
+
+\end{document}
+
+The bounding box for this graphic is
+\texttt{[\llxOf{ex}\space\llyOf{ex}\space\urxOf{ex}\space\uryOf{ex}]}.
+The figure in the middle has been clipped using its bounding box (the \texttt{clip} option
+of \cs{includegraphics/\cs{insertEPS}}), the
+one on the right has 30\% opacity and has not been clipped.
+
+\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom
+\screensize{5in*\real{0.75}}{5in} % height, width
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_comp_noaeb.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_comp_noaeb.tex
new file mode 100644
index 00000000..6aaae286
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_comp_noaeb.tex
@@ -0,0 +1,168 @@
+\documentclass{article}
+\usepackage[dvips,preview]{graphicxsp}
+
+\title{\textsf{GraphicxSP}\\Comparing \textsf{Graphicx} and \textsf{GraphicxSP}}
+\author{D. P. Story}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon}
+\embedEPS[transparencyGroup]{ex}{graphics/example}
+
+\parindent0pt
+\setlength{\fboxsep}{0pt}
+
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+We make direct visual comparisons between the results obtained from the
+\textsf{graphicx} package versus the \textsf{graphicxsp} package. In the sections
+that follow, \textsf{graphicx} image always appears \emph{on the left}, and the
+\textsf{graphicxsp} image appears \emph{on the right}.
+
+\section{The \texttt{width}/\texttt{height}/\texttt{scale} options}
+
+\begin{center}
+\includegraphics[width=1.5in]{graphics/AdobeDon}
+\insertEPS[width=1.5in]{AdobeDon}\\[1ex]
+\texttt{width=1.5in}
+\end{center}
+
+\begin{center}
+\includegraphics[height=1in]{graphics/AdobeDon}
+\insertEPS[height=1in]{AdobeDon}\\[1ex]
+ \texttt{height=1in}
+\end{center}
+
+\begin{center}
+\includegraphics[scale=.5]{graphics/AdobeDon}
+\insertEPS[,scale=.5]{AdobeDon}\\[1ex]
+\texttt{scale=.5}
+\end{center}
+
+\medskip
+To my eyes, the \textsf{graphicx} images on the left seems blurrier
+than the \textsf{graphicxsp} image and don't magnify as well.
+
+\section{Comparing \texttt{bb}}
+
+\vspace{1in}
+
+\begin{center}
+\includegraphics[width=.5in,bb=30 50 150 100]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,bb=30 50 150 100]{AdobeDon}\\[3ex]
+ \texttt{bb=30 50 150 100}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,bb=30 50 150 100,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,bb=30 50 150 100,clip]{AdobeDon}\\[1ex]
+ \texttt{bb=30 50 150 100,clip}
+\end{center}
+
+\section{trim}
+
+\begin{center}
+\includegraphics[width=.5in,trim=20 20 30 15]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,trim=20 20 30 15]{AdobeDon}\\[3ex]
+\texttt{trim=20 20 30 15}
+\end{center}
+
+\begin{center}
+
+\includegraphics[width=.5in,trim=20 20 30 15,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in, trim=20 20 30 15,clip]{AdobeDon}\\[1ex]
+\texttt{trim=20 20 30 15,clip}
+\end{center}
+
+\medskip
+Again, to my eyes, the \textsf{graphicx} images on the left seems
+blurrier than the \textsf{graphicxsp} image.
+
+\section{\protect\texttt{viewport}}
+
+\begin{center}
+\includegraphics[width=.5in,viewport=20 20 60 75]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in, viewport=20 20 60 75]{AdobeDon}\\[4ex]
+\texttt{viewport=20 20 60 75}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,viewport=20 20 60 75,clip]{graphics/AdobeDon}\qquad\qquad
+\insertEPS[width=.5in,viewport=20 20 60 75,clip]{AdobeDon}\\[3ex]
+\texttt{viewport=20 20 60 75,clip}
+\end{center}
+
+\section{\protect\texttt{keepaspectratio}}
+
+\begin{center}
+\includegraphics[width=1.5in,height=1in]{graphics/AdobeDon}
+\insertEPS[width=1.5in,height=1in]{AdobeDon}\\[1ex]
+\texttt{width=1.5in,height=1in}
+\end{center}
+
+\begin{center}
+\includegraphics[width=1.5in,height=1in,keepaspectratio]{graphics/AdobeDon}
+\insertEPS[width=1.5in,height=1in,keepaspectratio]{AdobeDon}\\[1ex]
+\texttt{width=1.5in,height=1in,keepaspectratio}
+\end{center}
+
+
+\section{rotations}
+
+\begin{center}
+\texttt{AdobeDon} \fbox{\includegraphics[width=.5in,origin=c,angle=-45]{graphics/AdobeDon}}
+\texttt{AdobeDon} \fbox{\insertEPS[width=.5in,origin=c,angle=-45]{AdobeDon}}\\[1ex]
+\texttt{angle=-45,origin=c}
+\end{center}
+
+\begin{center}
+\texttt{AdobeDon} \fbox{\includegraphics[width=.5in,origin=rt,angle=-45]{graphics/AdobeDon}}
+\texttt{AdobeDon} \fbox{\insertEPS[width=.5in,origin=rt,angle=-45]{AdobeDon}}\\[1ex]
+\texttt{angle=-45,origin=rt}
+\end{center}
+
+
+\section{rotations and \texttt{bb}/\texttt{trim}/\texttt{viewport}}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,bb=30 50 150 100,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,bb=30 50 150 100,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,bb=30 50 150 100,clip}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,trim=20 20 30 15,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,trim=20 20 30 15,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,trim=20 20 30 15,clip}
+\end{center}
+
+\begin{center}
+\includegraphics[width=.5in,angle=45,viewport=20 20 60 75,clip]{graphics/AdobeDon}
+\insertEPS[width=.5in,angle=45,viewport=20 20 60 75,clip]{AdobeDon}\\[1ex]
+\texttt{angle=45,viewport=20 20 60 75,clip}
+\end{center}
+
+
+\begin{center}\ifpreview\else\previewtrue\fi
+\textbf{MathLab Graphics}\\[1ex]
+\insertEPS[width=1in]{ex}
+\insertEPS[width=1in,clip]{ex}
+\insertEPS[width=1in,transparency={/ca .3}]{ex}\\[1ex]
+\textsf{GraphicxSP}: left insert, middle clip, right 30\% transparency
+\end{center}
+
+\parbox{\linewidth}{%
+\begin{center}
+\includegraphics[width=1in]{graphics/example}
+\includegraphics[width=1in,clip]{graphics/example}
+\includegraphics[width=1in]{graphics/example}\\[1ex]
+\textsf{Graphicx}: left include, middle clip, right include
+\end{center}}
+
+The bounding box for this graphic is \texttt{[\bboxOf{ex}]}.
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_forms_aeb.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_forms_aeb.tex
new file mode 100644
index 00000000..184c0cd8
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_forms_aeb.tex
@@ -0,0 +1,205 @@
+\documentclass{article}
+\usepackage[designiv,usetemplates]{web}
+\usepackage{eforms}
+\usepackage{graphicxsp}
+
+%\previewMiKTeX
+
+%\textBgColor{cornsilk}
+
+\title{\textsf{GraphicxSP}\texorpdfstring{\\}{:} Forms}
+\author{D. P. Story}
+\university{Acro\negthinspace\TeX.Net}
+\email{dpstory@acrotex.net}
+\subject{Form XObjects and BP, EP and SP operators, transparency}
+\keywords{Distiller, Form XObjects, BP, EP, and SP operators,transparency}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon}
+\embedEPS{3Dcheck}{graphics/3Dcheck}
+\embedEPS{3Dx}{graphics/3Dx}
+
+% Normal,Multiply, Screen, Screen, Darken, Lighten, ColorDodge, ColorBurn, HardLight,
+% SoftLight, Difference, Exclusion
+
+\begin{createImage}{\bboxOf{3Dcheck}}{on3Dcheck}
+ [ {3Dcheck} /SP pdfmark
+\end{createImage}
+\begin{createImage}{\bboxOf{3Dx}}{off3Dx}
+ [ {3Dx} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{AdobeDon}}{nAdobeDon}
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{AdobeDon}}{dAdobeDon}
+ [ /ca .3 /SetTransparency pdfmark
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{AdobeDon}}{rAdobeDon}
+ [ /ca .5 /SetTransparency pdfmark
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{0 0 100 100}{xO}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto
+96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto
+2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill
+0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor /Helvetica 72 selectfont (O) show
+\end{createImage}
+
+\begin{createImage}{0 0 100 100}{xX}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto
+96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto
+2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill
+0 setgray 27 22.5 moveto 0 0 1 setrgbcolor /Helvetica 72 selectfont (X) show
+\end{createImage}
+
+\parindent0pt
+\setlength{\fboxsep}{0pt}
+
+\begin{insDLJS}[_setApp]{setapp}{Turn off highlighting}
+var _setApp = true;
+try { app.runtimeHighlight=false } catch(e) {};
+\end{insDLJS}
+
+\begin{document}
+
+\maketitle
+
+In the preamble, we make the following definitions: We embed for EPS
+files, one of which are set a transparency group:
+{\small\begin{verbatim}
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon}
+\embedEPS{3Dcheck}{graphics/3Dcheck}
+\embedEPS{3Dx}{graphics/3Dx}
+\end{verbatim}
+}
+We also use the \texttt{createImage} environment to create more images, some new, others made
+from the embedded files.\medskip
+
+Create variations on \texttt{AdobeDon} by giving the image various degrees of opacity:
+\begin{scriptsize}
+\begin{verbatim}
+\begin{createImage}{\bboxOf{AdobeDon}}{nAdobeDon} % normal appearance
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{AdobeDon}}{dAdobeDon} % down appearance
+ [ /ca .3 /SetTransparency pdfmark
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{AdobeDon}}{rAdobeDon} % rollover appearance
+ [ /ca .5 /SetTransparency pdfmark
+ [ {AdobeDon} /SP pdfmark
+\end{createImage}
+\end{verbatim}
+\end{scriptsize}
+
+
+\newpage
+
+Now create two new graphic images using raw PostScript. In all cases we use
+the \texttt{createImage} environment, first optional argument is the bounding box,
+the second is the symbolic name for the graphic. The symbolic name can be used
+in the \cs{includegraphics} command or the \cs{insertEPS} command.
+
+\begin{scriptsize}
+\begin{verbatim}
+\begin{createImage}{0 0 100 100}{xO}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto
+96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto
+2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill
+0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor /Helvetica 72 selectfont (O) show
+\end{createImage}
+
+\begin{createImage}{0 0 100 100}{xX}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto 98 98 lineto
+96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray 98 98 moveto 98 2 lineto
+2 2 lineto 4 4 lineto 96 4 lineto 96 96 lineto fill
+0 setgray 27 22.5 moveto 0 0 1 setrgbcolor /Helvetica 72 selectfont (X) show
+\end{createImage}
+\end{verbatim}
+\end{scriptsize}
+
+Subsequent pages demonstrate how to use these images in the context of form fields.
+
+Here are more traditional uses for a checkbox, but this time using
+custom checks and crosses.
+
+\medskip
+\noindent\hspace*{20pt}\resizebox{11bp}{!}{\checkBox[%
+ \A{\JS{%
+ var f = this.getField("reportCk");\r
+ f.value = !!event.target.isBoxChecked(0);\t
+ this.dirty=false;
+ }}
+ \V{Off}\DV{Off}\AS{Off}\H{N}\autoCenter{n}
+ \AP{/N << /Yes {xX} /Off {xO} >> }
+]{ckBoxXO}{\widthOf{xX}bp}{\heightOf{xX}bp}{Yes}}
+\textField[\Q1\Ff\FfReadOnly\autoCenter{n}]{reportCk}{.5in}{11bp}
+
+\smallskip
+\noindent\hspace*{20pt}\resizebox{11bp}{!}{\checkBox[%
+ \A{\JS{%
+ var f = this.getField("reportCk3D");\r
+ f.value = !!event.target.isBoxChecked(0);\r
+ this.dirty=false;
+ }}
+ \V{Off}\DV{Off}\AS{Off}\H{N}\autoCenter{n}
+ \AP{/N << /Yes {on3Dcheck} /Off {off3Dx} >> }
+]{ckBox3D}{\widthOf{3Dcheck}bp}{\heightOf{3Dcheck}bp}{Yes}}
+\textField[\Q1\Ff\FfReadOnly\autoCenter{n}]{reportCk3D}{.5in}{11bp}
+
+\medskip The verbatim listing of the second check box is, for example,
+\begin{small}
+\begin{verbatim}
+\resizebox{11bp}{!}{\checkBox[%
+ \A{\JS{%
+ var f = this.getField("reportCk3D");\r
+ f.value = !!event.target.isBoxChecked(0);\r
+ this.dirty=false;
+ }}
+ \V{Off}\DV{Off}\AS{Off}\H{N}\autoCenter{n}
+ \AP{/N << /Yes {on3Dcheck} /Off {off3Dx} >> }
+]{ckBox3D}{\widthOf{3Dcheck}bp}{\heightOf{3Dcheck}bp}{Yes}}
+\textField[\Q1\Ff\FfReadOnly\autoCenter{n}]{reportCk3D}{.5in}{11bp}
+\end{verbatim}
+\end{small}
+
+We use \cs{resizebox} from the \textsf{graphicx} package to adjust
+the sizes of the appearances.
+
+\newpage
+
+
+One last example, this one uses transparency. We now we create a push
+button with the face of AdobeDon as the normal appearance (somewhat
+paradoxically), AdobeDon at 50\% opacity for the rollover
+appearance, and AdobeDon at 30\% for the down appearance. Will it
+work, we'll see:\medskip
+
+Push button: \raisebox{-3pt}{\resizebox{.5in}{!}{\pushButton[%
+ \autoCenter{n}\BC{}\S{S}
+ \A{\JS{app.alert("AcroTeX rocks the world!"); this.dirty=false;}}
+ \I{nAdobeDon}\RI{dAdobeDon}\IX{rAdobeDon}\TP{1}\FB{true}
+]{pbAdobeDon}{\widthOf{AdobeDon}bp}{\heightOf{AdobeDon}bp}}}
+
+
+\medskip The verbatim listing is
+\begin{small}
+\begin{verbatim}
+Push button: \raisebox{-3pt}{\resizebox{.5in}{!}{\pushButton[%
+ \autoCenter{n}\BC{}\S{S}
+ \A{\JS{app.alert("AcroTeX rocks the world!");
+ this.dirty=false;}}
+ \I{nAdobeDon}\RI{dAdobeDon}\IX{rAdobeDon}\TP{1}\FB{true}
+]{pbAdobeDon}{\widthOf{AdobeDon}bp}{\heightOf{AdobeDon}bp}}}
+\end{verbatim}
+\end{small}
+
+\end{document}
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_layers_aebpro.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_layers_aebpro.tex
new file mode 100644
index 00000000..c0759533
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_layers_aebpro.tex
@@ -0,0 +1,102 @@
+\documentclass{article}
+\usepackage[uselayers,aebxmp,eforms,
+ web={designv,usetemplates,pro}]{aeb_pro}
+\usepackage{graphicxsp}
+
+%
+% This demo files uses AeB Pro because I wanted to demonstrate
+% that SP graphics can be put into separate layers.
+%
+
+% Uncomment this next line if you are using MiKTeX
+%\previewMiKTeX
+
+\DeclareDocInfo
+{
+ title=\textsf{GraphicxSP}\texorpdfstring{\\}{:} Layers and Forms,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject={Form XObjects and BP, EP and SP operators, transparency},
+ keywords={Distiller, Form XObjects, BP, EP, and SP operators,transparency},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={\today},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\embedEPS[hiresbb]{Airplane}{graphics/000_0151}
+
+\begin{createImage}{\bboxOf{Airplane}}{nAirplane}
+ [ {Airplane} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{Airplane}}{dAirplane}
+ 0 \heightOf{Airplane} rmoveto
+ currentpoint translate
+ 1 -1 scale [ {Airplane} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{Airplane}}{rAirplane}
+ \widthOf{Airplane} 0 rmoveto
+ currentpoint translate
+ -1 1 scale [ {Airplane} /SP pdfmark
+\end{createImage}
+
+
+\parindent0pt
+
+\begin{insDLJS}{setapp}{Turn off highlighting}
+try { app.runtimeHighlight=false } catch(e) {};
+\end{insDLJS}
+
+\begin{document}
+
+\maketitle
+
+This page demonstrates that graphics embedded by the \textbf{BP} and
+\textbf{EP} pdfmarks are part of the content of the page and can
+therefore be placed in different layers.
+
+\begin{center}\setlength{\fboxsep}{0pt}
+\fbox{\xBld{Airplane}%
+\insertEPS[width=2in]{Airplane}\kern-\fboxrule
+\insertEPS[width=1in]{Airplane}\kern-\fboxrule
+\insertEPS[width=.5in]{Airplane}\kern-\fboxrule
+\insertEPS[width=.25in]{Airplane}\kern-\fboxrule
+\insertEPS[width=.125in]{Airplane}\eBld}
+\end{center}
+
+Click here: \resizebox{.5in}{!}{\checkBox[%
+ \autoCenter{n}
+ \A{\JS{%
+ toggleSetThisLayer("Airplane");\r
+ this.dirty=false;
+ }}
+ \V{Yes}\DV{Yes}\AS{Yes}\H{N}
+ \AP{/N << /Yes {nAirplane} /Off {dAirplane} >>
+ /D << /Yes {nAirplane} /Off {dAirplane} >>
+ /R << /Yes {dAirplane} /Off {rAirplane} >>
+ }
+]{ckAirplane}{\widthOf{Airplane}bp}{\heightOf{Airplane}bp}{Yes}}
+\xBld{Airplane}Yes, we can ``show picture'' within a layer, cool!\eBld
+
+\medskip
+\textcolor[rgb]{1.00,0.00,0.00}{Note:}
+Need \verb!app.runtimeHighlight=false! for the checkboxes to work correctly.
+
+\medskip The appearance attributes of the check box above, yes it is
+a checkbox, is as follows:
+
+\begin{small}
+\begin{verbatim}
+ \AP{/N << /Yes {nAirplane} /Off {dAirplane} >>
+ /D << /Yes {nAirplane} /Off {dAirplane} >>
+ /R << /Yes {dAirplane} /Off {rAirplane} >>
+\end{verbatim}
+\end{small}
+\end{document}
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_man.pdf b/texmf-dist/doc/latex/graphicxsp/grxsp_man.pdf
new file mode 100644
index 00000000..ec05bebc
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_man.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_man.tex
new file mode 100644
index 00000000..f04db6db
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_man.tex
@@ -0,0 +1,772 @@
+% makeindex < aebpro_man.idx > aebpro_man.ind
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,forcolorpaper,tight*,latextoc,pro},
+ eforms,linktoattachments,aebxmp
+]{aeb_pro}
+\usepackage{aeb_mlink}
+\usepackage[dvipsone,showembeds]{graphicxsp}
+\usepackage{array,fancyvrb}
+
+%\usepackage[LY1]{fontenc}
+%\usepackage[scaled=0.93]{helvet}
+%\usepackage{mtpro}
+
+%\usepackage{myriadpro}
+
+%\usepackage{calibri}
+\usepackage[altbullet]{lucidbry}
+
+
+%\usepackage{makeidx}\makeindex
+
+\usepackage{acroman}
+\usepackage[active]{srcltx}
+
+\urlstyle{tt}
+
+\def\tutpath{doc/tutorial}
+\def\tutpathi{tutorial}
+\def\expath{../examples}
+
+\DeclareDocInfo
+{
+ university={\AcroTeX.Net},
+ title={ \texorpdfstring{\pkg{GraphicxSP}\\[1em]}
+ {GraphicxSP: }Using and re-using Embedded Graphics},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject={Documentation for AeB Pro from AcroTeX},
+ talksite={\url{www.acrotex.net}},
+ version={1.0},
+ Keywords={XMP, E4X, Adobe Acrobat, JavaScript},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net}
+}
+
+\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\meta#1{\textit{\texttt{#1}}}
+\let\meta\anglemeta
+\def\darg#1{\texttt{\{#1\}}}
+\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei}
+\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup}
+\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule}
+\let\pkg\textsf
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+
+\let\amtIndent\leftmargini
+\def\SUB#1{${}_{\text{#1}}$}
+
+\newdimen\aebdimen \aebdimen 0pt %\advance\aebdimen\partopsep
+\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}%
+\def\eVerb{\vskip\aebdimen\endgroup\noindent}
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.5em}}
+\renewcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont #1}
+\newcommand{\aebDescriptionlabel}[1]{%
+ \setlength\dimen@{\amtIndent+\labelsep}%
+ {\hspace*{\dimen@}#1}}
+\makeatother
+\newenvironment{aebDescript}
+ {\begin{list}{}{\setlength{\labelwidth}{0pt}%
+ \setlength{\leftmargin}{\leftmargin}%
+ \setlength{\leftmargin}{\leftmargin+\amtIndent}%
+ \setlength\itemindent{-\leftmargin}%
+ \let\makelabel\aebDescriptionlabel
+ }}{\end{list}}
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-31.25pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+%\pagestyle{empty}
+%\parindent0pt\parskip\medskipamount
+
+\special{!userdict begin
+ /Draw_Ellipse {
+ /m matrix currentmatrix def
+ 4 2 roll translate scale
+ 0 0 1 0 360 arc
+ closepath
+ m setmatrix
+ } def end
+}
+\embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon}
+\embedEPS[hiresbb,transparencyGroup]{myBG}{graphics/border1}
+
+\begin{createImage}{\bboxOf{myBestPic}}{upsideDownAD}
+ 0 \heightOf{myBestPic} rmoveto
+ currentpoint translate
+ 1 -1 scale [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{myBestPic}}{transparentAD}
+ [ /ca .3 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{myBestPic}}{nAdobeDon}
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+\begin{createImage}{\bboxOf{myBestPic}}{dAdobeDon}
+ [ /ca .3 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{myBestPic}}{rAdobeDon}
+ [ /ca .5 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{0 0 100 100}{xO}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto
+98 98 lineto 96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray
+98 98 moveto 98 2 lineto 2 2 lineto 4 4 lineto 96 4 lineto
+96 96 lineto fill 0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor
+/Helvetica 72 selectfont (O) show
+\end{createImage}
+
+
+\definePath\bgPath{"C:/Users/Public/Documents/%
+ ManualBGs/Manual_BG_Print_AeB.pdf"}
+\begin{docassembly}
+\addWatermarkFromFile({%
+ bOnTop: false,
+ cDIPath: \bgPath
+})
+\executeSave()
+\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+\tableofcontents
+\selectColors{linkColor=webgreen}
+
+\section{Introduction}
+
+Beginning with Version 5.0, ``Acrobat Distiller allows a PostScript
+language program to specify that a given set of graphical operations
+should be encapsulated and treated as a single object. The pdfmarks
+\textbf{BP} (Begin Picture) and \textbf{EP} (End Picture) enclose a
+set of graphic operations. The \textbf{SP} (Show Picture) pdfmark
+indicates where to insert an object (which may be inserted in more
+than one place).''\,\footnote{Section 4.6.1 of the \textit{pdfmark
+Reference Manual}, Technical Note \#5150, Version 5.0} This is the
+approach taken by this package.
+
+\pkg{GraphicxSP} includes commands for embedding an EPS graphic (using the
+\textbf{BP} and \textbf{EP} pdfmark operators) in a PDF derived from
+a {\LaTeX} source and for displaying the graphic, possibly multiple
+times. For documents that use the same graphic multiple times (for
+backgrounds, watermarks, company logos, appearances for form fields,
+etc.) using \pkg{GraphicxSP} will (greatly) reduce the size of the
+PDF.\footnote{The amount of reduction in file size depends on how
+many times a particular graphic is repeatedly used.}
+
+The PDF 1.4 (Acrobat version 5.0) introduces the notion of
+transparency into the Adobe imaging model. Support for transparency
+through the pdfmark paradigm does not appear until Version
+6.0.\,\footnote{Section 4.6.1 of the \textit{pdfmark Reference
+Manual}, Technical Note \#5150, Version 6.0, page~33.} This package
+also supports transparency feature through the
+\textbf{SetTransparency} pdfmark.
+
+\pkg{GraphicxSP}, as the name might suggest, is an extension of the
+graphicx package. Functionality for \pkg{GraphicxSP} is accessed through
+the \cs{includegrapics} command. Additional key-values for the
+\cs{includegrapics} command are defined that support the use
+\pkg{GraphicxSP}.
+
+\section{Requirements}
+
+{\LaTeX}, PDF, and transparency requirements are discussed in this section.
+
+\subsection{{\LaTeX} package requirements}
+
+This package requires the \pkg{graphicx} package (by D. P. Carlisle and S. P. Q.
+Rahtz), the \pkg{eso-pic} package (by Rolf Niepraschk) and the \pkg{everyshi}
+package (by Martin Schr\"oder). \pkg{GraphicxSP} redefines a few commands of the
+first two packages: the \pkg{graphics}/\pkg{graphicx} package commands \cs{Gin@setfile}
+and \cs{Gin@getbase} are redefined, as is the \pkg{eso-pic} command \cs{@ShipoutPicture}.
+
+\pkg{AeB} (Acro\negthinspace\TeX{} eDucation Bundle) is not a required
+package, but to successfully compile the example
+\texttt{grxsp\_forms\_aeb.tex}, you need the latest \pkg{AeB} as some
+modification to the eforms package were made. See
+\mlurl{http://www.math.uakron.edu/~dpstory/graphicxsp.html} for the latest
+version.
+
+\subsection{PDF creator requirements}
+
+The big restriction on this package is the requirement to use
+\textbf{Acrobat Distiller} (version 5.0, or version 6.0 for transparency).
+The package was developed using Acrobat Distiller 8.1. The package supports the
+creation of PostScript using \app{dvips} and \app{dvipsone}.
+
+Though distiller is required, there is no reason why, however, this
+package can't be modified to work for any PDF creator that supports
+the pdfmark; in particular, I invite anyone to extend this package
+to \app{GhostScript}.
+
+\subsection{Transparency requirements}
+
+To get the transparency effect, \app{Acrobat Distiller} version 6.0 or
+later is required. The default setting of the distiller does not
+support the \textbf{SetTransparency} pdfmark; it is necessary to
+edit the \texttt{.joboptions} file.
+
+\newtopic\noindent
+The procedure for editing \texttt{.joboptions} to support transparency is as follows:
+\begin{enumerate}
+ \item Start Acrobat Distiller
+
+ \item From the Default Settings list, select the setting you want to
+ edit, usually, this will be the \texttt{Standard} job options.
+ \item Select \textsf{Settings\;>\;Edit\;Adobe\;PDF\;Settings\;(Ctrl+E)}
+ from the distiller menu.
+ \item Click the \texttt{SaveAs} button at the bottom of the
+ \texttt{Adobe PDF Settings} dialog box. Save your
+ \texttt{.jobsettings} file under a new name, say
+ \texttt{Standard\_transparency} and make a note of where the
+ distiller saves this file.
+ \item With your favorite text editor, navigate to the folder where you
+ saved your new \texttt{.joboptions} file, and open it in your
+ editor.
+ \item Look for the line \texttt{/AllowTransparency false}, change
+ \texttt{false} to \texttt{true} so that it now reads
+ \texttt{/AllowTransparency true}. Save the changes and close the
+ file.
+ \item Use this \texttt{.joboptions} file,
+ \texttt{Standard\_transparency} for example, whenever you distill
+ with transparency pdfmarks. If your {\LaTeX} file uses
+ transparency, and you are using a \texttt{.joboptions} file with
+ \texttt{/AllowTransparency false}, distillation will fail and the
+ distiller log should say
+\begin{Verbatim}[fontsize=\small]
+%%[Error: The PostScript contains Transparency pdfmark, job aborted.]%%
+%%[ /AllowTransparency is false in job option settings.]%%
+%%[ Error: undefined; OffendingCommand: pdfmark;
+ ErrorInfo: Transparency Group ]%%
+\end{Verbatim}
+This suggests that you should use your \texttt{.joboptions} file that supports transparency!
+
+\end{enumerate}
+
+\section{Options of this package}
+
+Currently, there is a minimal of package options
+
+\begin{itemize}
+\item \texttt{dvips}: Use this option if you are a user of most any other
+ {\TeX} systems available to the community.
+\item \texttt{dvipsone}: Use this option if you are a user of the Y{\small\&}\!Y
+ {\TeX} system to create your PostScript file.
+\item \texttt{preview}: The dvi previewers are designed to show a preview
+ of the graphic, these previewers know nothing about the \textbf{SP}
+ pdfmark (Show Picture). If you use the \texttt{preview} option, a
+ \cs{fbox} is placed around all graphics inserted by the
+ \pkg{GraphicxSP} package. This option sets a boolean switch,
+ \cs{ifpreview} to true. You are free to locally set this switch to get
+ the \cs{fbox} to appear, use include \cs{previewtrue} in your document,
+ or, to turn the preview off again, type \cs{previewfalse}.
+\item \texttt{showembeds}: As just mentioned, dvi previewers are
+ designed to preview graphics; consequently, the graphic files
+ embedded by \pkg{GraphicxSP}, will have a preview as well. The
+ embedding command \cs{embedEPS} is required to appear only in
+ the preamble, so the preview for this embedded graphics always
+ appears on the first page. \pkg{GraphicxSP} covers these embedded
+ files using a white \texttt{colorbox}; content and other
+ graphics are placed on top of the white \texttt{colorbox}. Using
+ the \texttt{showembeds} will cause this white color box not to
+ be created, hence, you can see the dvi preview of the embedded
+ graphics, stacked one on top of the other.
+\item \texttt{draft}: Similar to the option of the same name in the
+ graphicx package. Instead of displaying an image, a rectangular
+ box is displayed with the name of the graphic in its interior.
+\item \texttt{shownonames}: If this option is chosen along with
+ the \texttt{draft} option, the name of the graphic is not displayed.
+\end{itemize}
+
+\section{The \texorpdfstring{\protect\pkg{GraphicxSP}}{GraphicxSP} commands}
+
+In this section we present the new commands defined in the \pkg{GraphicxSP} package.
+
+\subsection{Embedding commands}
+
+Before we can show a graphic, we first must embed it using the
+\cs{embedEPS} command.
+\bVerb\takeMeasure{\string\embedEPS[\meta{key-values}]\darg{\meta{name}}\darg{\meta{path}}}
+\begin{dCmd}[commandchars=!()]{\bxSize}
+\embedEPS[!meta(key-values)]{!meta(name)}{!meta(path)}
+\end{dCmd}
+\endgroup
+\CmdLoc This command is restricted to the preamble.
+
+\PD The parameters are as follows:
+\begin{enumerate}
+\item The first optional parameter takes key-value pairs:
+\begin{itemize}
+ \item \texttt{hiresbb}: This is a key from the graphicx package.
+ When this key is present, graphicx will look for the high
+ resolution bounding box; otherwise, is looks for the
+ bounding box.
+ \item \texttt{transparencyGroup}: Use this key if the embedded
+ graphic is to be used with transparency. The key is normally
+ used by itself, but it can be given values, a good old-fashion
+ reading of Chapter 7 on Transparency in the PDF Reference, sixth
+ edition, version 1.7, is necessary.
+\end{itemize}
+\item The second parameter \meta{name} is the symbolic name for
+the graphic. This symbolic name must be unique to the document (or
+distiller will crash); \pkg{GraphicxSP} will stop compilation if two
+embedded EPS files are given the same name.
+\item The third parameter is the path to the graphic, an EPS
+graphic. The graphic can be in the current folder, or on the
+graphics search path. The same rules hold here as in the graphicx
+package.
+\end{enumerate}
+For example,
+\bVerb\takeMeasure{\string\embedEPS[hiresbb,transparencyGroup]\darg{myBestPic}\darg{graphics/AdobeDon}}
+\begin{dCmd*}[commandchars=!()]{\bxSize}
+\embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon}
+\end{dCmd*}
+\eVerb
+When a file is embedded, certain parameters are saved and are
+available for use by the document author. Each of the commands below
+take the symbolic name, \meta{name} of the graphic as their only
+argument.
+\begin{itemize}
+\item \cs{bboxOf\darg{\meta{name}}}: The dimensions of the bounding box,
+ \texttt{llx} \texttt{lly} \texttt{urx} \texttt{ury}, of the graphic
+ with symbolic name \meta{name}. The individual values of this bounding box
+ can be accessed by the next four commands.
+
+\item \cs{llxOf\darg{\meta{name}}}: The lower left x-coordinate of the
+ (high res) bounding box as read by graphicx.
+
+\item \cs{llyOf\darg{\meta{name}}}: The lower left y-coordinate of the
+ (high res) bounding box as read by graphicx.
+
+\item \cs{urxOf\darg{\meta{name}}}: The upper left x-coordinate of the
+ (high res) bounding box as read by graphicx.
+
+\item \cs{uryOf\darg{\meta{name}}}: The upper left y-coordinate of the
+ (high res) bounding box as read by graphicx.
+
+\item \cs{heightOf\darg{\meta{name}}}: The height of the graphic, based on
+ the bounding box information, \cs{uryOf\darg{\meta{name}}} -
+ \cs{llyOf\darg{\meta{name}}}.
+
+\item \cs{widthOf\darg{\meta{name}}}: The width of the graphic, based on
+ the bounding box information, \cs{urxOf\darg{\meta{name}}} -
+ \cs{llxOf\darg{\meta{name}}}.
+\end{itemize}
+Each expands to a number representing Adobe points. To convert these
+numbers for use by {\TeX} just add the suffix \texttt{bp}, e.g., in
+{\TeX} space, the height of the graphic is \cs{heightOf\darg{\meta{name}}bp}.
+
+These commands are useful when creating variations on an
+\cs{embedEPS} graphic using the \texttt{createImage} environment
+defined below, or for creating form fields with an \cs{embedEPS}
+graphic as an appearance.
+
+The \cs{embedEPS} command is designed for graphics that are in an exterior
+EPS file. You can also define a graphic, or image, using raw
+PostScript using the \Indextt{createImage} environment.
+
+\bVerb\takeMeasure{\string\begin\darg{createImage}[\meta{key-values}]\darg{\meta{bbox}}\darg{\meta{name}}}
+\begin{dCmd}[commandchars=!()]{\bxSize}
+\begin{createImage}[!meta(key-values)]{!meta(bbox)}{!meta(name)}
+ !meta(postscript code)
+\end{createImage}
+\end{dCmd}
+\endgroup
+
+\PD The parameters are as follows:
+\begin{enumerate}
+\item The first optional parameter takes key-value pairs:
+\begin{itemize}
+ \item \texttt{transparencyGroup}: Use this key if the embedded
+ graphic is to be use with transparency. The key is normally
+ used by itself, but it can be given values, a good
+ old-fashion reading of Chapter 7 on Transparency in the PDF
+ Reference, sixth edition, version 1.7, is necessary.
+\end{itemize}
+\item The second parameter, \meta{bbox}, is the bounding box of the
+image being created.
+\item The third parameter \meta{name} is the symbolic name for
+the graphic. This symbolic name must be unique to the document (or
+distiller will crash); \pkg{GraphicxSP} will stop compilation if two
+embedded EPS files are given the same name.
+\end{enumerate}
+
+The following image appears in one of the demo files of this package, and is code
+written many years ago for a tic-tac-toe game in PDF.
+\begin{Verbatim}
+\begin{createImage}{0 0 100 100}{xO}
+.7529 setgray 0 0 100 100 rectfill 1 setgray 2 2 moveto 2 98 lineto
+98 98 lineto 96 96 lineto 4 96 lineto 4 4 lineto fill 0.34 setgray
+98 98 moveto 98 2 lineto 2 2 lineto 4 4 lineto 96 4 lineto
+96 96 lineto fill 0 setgray 22.5 22.5 moveto 1 0 0 setrgbcolor
+/Helvetica 72 selectfont (O) show
+\end{createImage}
+\end{Verbatim}
+
+\begin{Verbatim}
+\embedEPS[hiresbb,transparencyGroup]{myBestPic}{graphics/AdobeDon}
+\end{Verbatim}
+we can then manipulate this image a little
+\begin{Verbatim}
+\begin{createImage}{\bbox{myBestPic}}{upsideDownAD}
+ 0 \heightOf{myBestPic} rmoveto
+ currentpoint translate
+ 1 -1 scale [ {myBestPic} /SP pdfmark
+\end{createImage}
+\end{Verbatim}
+Notice that we reposition the graphic to fit inside the bounding box.
+
+I don't mean to get ahead of myself, but you can introduce transparency as well.
+
+\begin{Verbatim}
+\begin{createImage}{\bbox{myBestPic}}{transparentAD}
+ [ /ca .3 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+\end{Verbatim}
+All these examples will appear again below when \cs{includegraphics} and \cs{insertEPS}
+are discussed.
+
+\newtopic\noindent
+The commands \cs{llxOf}, \cs{llyOf}, \cs{urxOf}, \cs{uryOf}, \cs{bboxOf},
+\cs{heightOf} and \cs{widthOf} are also defined for images created by the
+\texttt{createImage} environment.
+
+\subsection{Inserting graphics commands}
+
+Once we have embedded our graphics using \cs{embedEPS} or create a
+new image or modified an old image using the \texttt{createImage}
+environment, we can display them to our heart's content. There are two
+commands for displaying a embedded graphic, \cs{includegraphics} and
+\cs{insertEPS}.
+
+\bVerb\takeMeasure{\string\includegraphics[name=\meta{name},\meta{key-values}]\darg{\meta{path}}}
+\begin{dCmd}[commandchars=!()]{\bxSize}
+\includegraphics[name=!meta(name),!meta(key-values)]{!meta(path)}
+\insertEPS[!meta(key-values)]{!meta(name)}
+\end{dCmd}
+\endgroup
+
+\PD The \meta{name} key is required in the \cs{includegraphics}
+command, the value is the symbolic \meta{name} of the graphic to
+be used. When the name key is used, the \meta{path} parameter is not
+used in \pkg{GraphicxSP} and can actually be empty; if the name key is not
+specified, then \cs{includegraphics} behaves just like it always
+does, includes the file in the document and displays it. Because
+\meta{path} is not used with SP graphics, \pkg{GraphicxSP} offers
+\cs{insertEPS} as an alternative; here the \meta{name} is given as the
+second argument. The \meta{key-values} are described next.
+
+\KVP Both commands take all the key-values of the \cs{includegraphics} command, plus
+a few more:
+\begin{enumerate}
+ \item \texttt{name=\meta{name}}: The symbolic name (\meta{name}) for
+ the graphic, it is required with the \cs{includegraphics} command,
+ and is ignored in the \cs{insertEPS} command. In the later command,
+ \meta{name} is entered as the second argument.
+
+ \item \texttt{transparency=\meta{key-values}}: Here you can enter
+ various key-value pairs for setting transparency. These
+ keys-values are listed in the pdfmark Reference in the section
+ on the SetTransparency pdfmark. Of the ones listed, I've only explored
+ \textbf{BM}, \textbf{ca} and \textbf{CA}. The following come from the pdfmark Reference on these three:
+ \begin{itemize}
+ \item \textbf{CA}: Current stroking alpha constant,
+ specifying the constant shape or constant opacity value to
+ be used for stroking operations. Default is 1.0.
+ \item \textbf{ca}: Same as CA, but for nonstroking operation. Default is 1.0.
+ \item \textbf{BM}: Current blend mode. Default is Normal.
+ Other blend modes are Normal, Multiply, Screen,
+ Darken, Lighten, ColorDodge, ColorBurn, HardLight,
+ SoftLight, Difference, Exclusion. See the PDF
+ Reference for a description of these.
+
+ \end{itemize}
+ The most useful of these is \textbf{ca}, and it is illustrated
+ in the demo files and well as here.
+
+ \item[] Example: \verb!transparency={/ca .3 /BM/Normal}!
+
+ \item \texttt{presp=\meta{postscript}}: This allows you to insert
+ PostScript commands just before \textbf{SP} pdfmark.
+ \item \texttt{postsp=\meta{postscript}}: This allows you to insert
+ PostScript commands just after \textbf{SP} pdfmark.
+\end{enumerate}
+The latter two key-values can be used to create special effects, as illustrated below.
+
+\subsection{Examples}
+
+%\previewtrue
+
+\begin{center}
+\includegraphics[name=myBestPic,width=1in]{}\\
+\small\verb!\includegraphics[name=myBestPic,width=1in]{}!
+\end{center}
+
+Below is the image created not from a EPS file, but from PostScript language code.
+
+\begin{center}
+\includegraphics[name=xO,width=1in]{}\\
+\small\verb!\includegraphics[name=x0,width=1in]{}!
+\end{center}
+
+The \meta{path} argument can remain empty as it is not used when the name key is
+present. Now, we'll switch over to the shorter \cs{embedEPS} command.
+
+Here is the image created earlier using the \texttt{createImage} environment. The same effect
+can be done with \cs{scalebox}.
+
+\begin{center}
+\insertEPS[width=1in]{upsideDownAD}\\
+\verb!\insertEPS[width=1in]{upsideDownAD}!
+\end{center}
+
+Below is the transparent image created using the \texttt{createImage} environment. The same effect
+can be done by setting the \texttt{transparency} key set to \verb!{/ca .3}!. The background is white
+and it is this white background you see showing through the image.
+
+\begin{center}
+\insertEPS[width=1in]{transparentAD}\\
+\verb!\insertEPS[width=1in]{transparentAD}!
+\end{center}
+
+Next, we set the \texttt{transparency} key to an opacity value ranging from 70\% on the left (\texttt{/ca .7})
+to 30\% on the right (\texttt{/ca .3}), and place a colorful background under the
+image so you can see the transparency of the image.
+
+\begin{center}\previewfalse
+\insertEPS[width=\linewidth,height=80pt]{myBG} %transparency={/ca .3 /BM/Normal},
+\smash{\raisebox{15pt}{\makebox[\linewidth][c]{%
+\insertEPS[width=1in,transparency={/ca .7}]{myBestPic}\hfill
+\insertEPS[width=1in,transparency={/ca .6}]{myBestPic}\hfill
+\insertEPS[width=1in,transparency={/ca .5}]{myBestPic}\hfill
+\insertEPS[width=1in,transparency={/ca .4}]{myBestPic}\hfill
+\insertEPS[width=1in,transparency={/ca .3}]{myBestPic}}}}
+\small\verb!transparency={/ca .7}...transparency={/ca .3}!
+\end{center}
+
+We can rotate the image using the usual graphicx controls, as below, or we can
+use \cs{rotatebox}.
+
+\begin{center}
+\insertEPS[width=1in,angle=45]{myBestPic}\\
+\small\verb!\insertEPS[width=1in,angle=45]{myBestPic}!
+\end{center}
+
+Any of the keys of \cs{includegraphics} can be used to manipulate
+the image. The images can also be manipulated using other graphicx
+commands, \cs{resizebox}, \cs{scalebox} and \cs{rotatebox}, for
+example.
+
+Finally, here is an example of the use of \texttt{presp} and \texttt{postsp}:
+
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ clip
+ newpath
+}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .4 /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 0.4 0.7 1 setrgbcolor
+ fill
+ grestore
+ gsave
+ [ /CA .5 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor
+ stroke
+ grestore
+}
+
+\begin{center}
+\includegraphics[name=myBestPic,width=1.5in,
+ presp={\mypreSP{myBestPic}},
+ postsp={\mypostSP{myBestPic}}]{myBestPic}
+\end{center}
+The \texttt{presp} code is
+
+\begin{Verbatim}[fontsize=\small]
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ clip
+ newpath
+}
+\end{Verbatim}
+and clips the image in the shape of an ellipse. In this case, the
+image is almost square, so the image is almost circular.
+
+The \texttt{postsp} is
+
+\begin{Verbatim}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .4 /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 0.4 0.7 1 setrgbcolor
+ fill
+ grestore
+ gsave
+ [ /CA .5 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor
+ stroke
+ grestore
+}
+\end{Verbatim}
+After clipping the image itself, and displaying the image, we then
+cover the image with an ellipse the same size, set the transparency
+to 40\% opacity and fill, giving the image a bluish haze. Next, draw
+the ellipse again and stroke it with a line 40 points wide. Give it an
+opacity of 50\%, so \texttt{AdobeDon} will shine through.
+
+
+\section{Special techniques for form appearances}\label{forms}
+
+In addition to using embedded graphics to display an image with
+\cs{includegraphics} or \cs{insertEPS}, these images can be
+used as appearances for form fields. Examples of a push button and
+checkbox can be found in the demo files, here reproduce the push
+button example.
+
+For this techniques, the eforms package is required. The forum
+support of hyperref may not support the \textbf{AP} key the way
+eforms does.
+
+In the preamble, we have
+\begin{Verbatim}
+\begin{createImage}{\bboxOf{myBestPic}}{nAdobeDon}
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{myBestPic}}{rAdobeDon}
+ [ /ca .5 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+
+\begin{createImage}{\bboxOf{myBestPic}}{dAdobeDon}
+ [ /ca .3 /SetTransparency pdfmark
+ [ {myBestPic} /SP pdfmark
+\end{createImage}
+\end{Verbatim}
+
+We use \cs{bboxOf} to set the bounding boxes to be the same as the
+original \texttt{myBestPic} image, and define a normal, rollover and
+down appearances for the button (\texttt{nAdobeDon},
+\texttt{rAdobeDon} and \texttt{dAdobeDon}), respectively. We use
+various opacity settings for the appearances.
+
+The button code is
+
+\begin{Verbatim}
+\resizebox{.5in}{!}{\pushButton[%
+ \autoCenter{n}
+ \A{\JS{app.alert("AcroTeX rocks the world!"); this.dirty=false;}}
+ \AP{/N {nAdobeDon} /D {dAdobeDon} /R {rAdobeDon}}
+]{pbAdobeDon}{\widthOf{myBestPic}bp}{\heightOf{myBestPic}bp}}
+\end{Verbatim}
+
+See the eforms manual for details of these key-value pairs.
+
+Finally, the button looks like this: \resizebox{.5in}{!}{\pushButton[%
+ \autoCenter{n}
+ \A{\JS{app.alert("AcroTeX rocks the world!");this.dirty=false;}}
+ \AP{/N {nAdobeDon} /D {dAdobeDon} /R {rAdobeDon}}
+]{pbAdobeDon}{\widthOf{myBestPic}bp}{\heightOf{myBestPic}bp}}
+
+When using \textbf{SP} images for form fields in this way, the images
+\textbf{must always pass} through a \texttt{createImage} environment where the
+bounding boxes can be precisely set, in the verbatim listing above,
+note \verb!\bboxOf{myBestPic}! sets the bounding box. The reason you
+can't use an embedded image directly is that the embedded image has
+had its bounding box reset to an enormous value. See the
+documentation in graphicxsp.dtx for more details.
+
+The dimensions of the push button are the last two arguments of the
+\cs{pushButton} command and are set to \verb!\widthOf{myBestPic}bp!
+and \verb!\heightOf{myBestPic}bp!, (Note the use of the \texttt{bp}
+dimension.) We then resize this field using \cs{resizebox}! Very
+swave how the graphicx and \pkg{GraphicxSP} work together.
+
+\section{Tips}
+
+Since you are using distiller, you have Acrobat as well. Try using
+the PDF Optimizer (\texttt{Advanced > PDF Optimizer} menu) to
+further reduce the size of the file. If you have Acrobat Pro 8.0,
+you can do a Save As, by selecting Adobe PDF Files, Optimized from
+the Save as type list. This is the same as using the PDF Optimizer.
+
+An example of the savings is this manual, after distillation
+document size was 176.6 KB, after the PDF Optimizer was done, the
+file size was 113.6 KB. That's a reduction of 63 KB or that's a
+reduction of 38\,\%. For some of the demo files, the reduction is
+much more dramatic since the images are used and re-used many more
+times than in this document.
+
+
+\section{\texorpdfstring{\protect\pkg{GraphicxSP}}{GraphicxSP} example files}
+
+The example files can be found in the \texttt{examples} folder of the \pkg{GraphicxSP}
+distribution. They are
+\begin{itemize}
+\item \texttt{grxsp\_tst\_noaeb.tex}: General test file demonstrating SP graphics,
+ does not require AeB (Acro\negthinspace\TeX{} eDucation Bundle).
+\item \texttt{grxsp\_tst\_aeb.tex}: Same as previous file, but using AeB.
+\item \texttt{grxsp\_comp\_noaeb.tex}: A comparison between graphicx \cs{includegraphics}
+ and SP graphics. AeB not used.
+\item \texttt{grxsp\_comp\_aeb.tex}: Same as previous file, but AeB is used.
+\item \texttt{grxsp\_forms\_aeb.tex}: This file demonstrates using SP graphics as appearances
+ of form fields. AeB required.
+\item \texttt{grxsp\_layers\_aebpro.tex}: Demonstrates the use of SP graphics with
+ Optional Content Groups, or layers. AeB Pro required.
+\end{itemize}
+
+\noindent
+That's all for now, I simply must get back to my retirement. \dps
+
+\end{document}
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_tst_aeb.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_tst_aeb.tex
new file mode 100644
index 00000000..718b24e7
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_tst_aeb.tex
@@ -0,0 +1,229 @@
+\documentclass{article}
+\usepackage[designiv,usetemplates]{web}
+\usepackage{graphicxsp}
+
+
+\title{\textsf{GraphicxSP}\texorpdfstring{\\}{:} Demonstration File}
+\author{D. P. Story}
+\university{Acro\negthinspace\TeX.Net}
+\email{dpstory@acrotex.net}
+\subject{Form XObjects and BP, EP and SP operators, transparency}
+\keywords{Distiller, Form XObjects, BP, EP, and SP operators,transparency}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\special{!userdict begin
+ /Draw_Ellipse {
+ /m matrix currentmatrix def
+ 4 2 roll translate scale
+ 0 0 1 0 360 arc
+ closepath
+ m setmatrix
+ } def end
+}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon} % /K true
+\embedEPS[hiresbb,transparencyGroup]{Airplane}{graphics/000_0151}
+\embedEPS[hiresbb]{AdobeDon_full}{graphics/AdobeDon_full}
+\embedEPS[transparencyGroup]{ex}{graphics/example}
+
+\parindent0pt
+
+\template[name=Airplane,transparency={/ca .3}]{000_0151}
+
+\begin{document}
+
+\maketitle
+
+The package, tentatively named \textsf{graphicxsp} and which is
+still under development, attempts to use the PostScript operators
+\textbf{BP}, \textbf{EP} and \textbf{SP} to embed graphics in the
+document once, then use and re-use them by emitting the \textbf{SP}
+operator. Though this document was created using \textsf{AeB Pro},
+the package only requires the \textsf{graphicx} and \textsf{eso-pic}
+packages.
+
+\medskip
+We begin by embedding out graphics in the preamble of the document
+using the \cs{embedEPS} command. The command takes one optional
+argument and two required. We can not only use these graphics over
+again, the package does support transparency as well, as this file
+also demonstrates.
+\begin{small}
+\begin{verbatim}
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{AdobeDon}
+\embedEPS[hiresbb,transparencyGroup]{Airplane}{000_0151}
+\embedEPS[hiresbb]{AdobeDon_full}{AdobeDon_full}
+\embedEPS[transparencyGroup]{ex}{example}
+\end{verbatim}
+\end{small}
+
+I'll use the \texttt{Airplane} photo as a background. The EPS file
+of this photo is 550KB, and we will use it multiple times. We
+declared \texttt{Airplane} to be a \texttt{transparencyGroup}, which
+means we can now set the transparency of the background.
+\begin{small}
+\begin{verbatim}
+\template[name=Airplane,transparency={/ca .3/BM/Normal}]{000_0151}
+\end{verbatim}
+\end{small}
+
+
+The package attempts to blend in with the \textsf{graphicx} package, and uses
+the \cs{includegraphics} command, with a few extra optional key-value
+pairs.
+\begin{small}%
+\begin{verbatim}
+\insertEPS[width=1.5in]{AdobeDon}
+\includegraphics*[name=AdobeDon,angle=45,
+ width=1.5in,bb=30 50 150 100]{AdobeDon}
+\end{verbatim}
+\end{small}%
+
+
+
+\begin{center}
+\insertEPS[width=1.5in]{AdobeDon}
+\includegraphics*[name=AdobeDon,width=1.5in,angle=45,bb=30 50 150 100]{AdobeDon}
+\end{center}
+The second command is in the form of \cs{includegraphics}, the first
+one, \cs{embedEPS}, is a shortened version. After embedding, the file name is no longer used,
+only the symbolic name.
+
+\newpage
+
+Let's have some fun with two of these images.
+
+\vspace*{.5in}
+
+\begin{center}\previewtrue
+\begin{minipage}{.5\linewidth}
+\begin{center}
+\makebox[0pt][l]{\rotatebox[origin=lb]{180}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{150}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{135}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{120}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{90}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{60}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{45}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{30}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\insertEPS[width=1in]{Airplane}}%
+\end{center}
+\end{minipage}\hfill%
+\begin{minipage}{.5\linewidth}
+\begin{center}
+\makebox[0pt][l]{\rotatebox[origin=lb]{180}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{150}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{135}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{120}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{90}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{60}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{45}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{30}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\insertEPS[width=1in]{AdobeDon}}%
+\end{center}
+\end{minipage}
+\end{center}
+
+\vspace{1in}
+
+Wow! That would normally take up gobs of file space. This file is about 180 KB.
+
+\newpage
+
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ clip
+ newpath
+}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .6 /CA .3 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 0.4 0.7 1 setrgbcolor
+ fill
+ grestore
+ gsave
+ [ /CA .5 /BM /Normal /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor
+ stroke
+ grestore
+}
+
+\medskip
+Let's try some clipping with some transparency settings.
+
+\medskip
+\begin{minipage}{1.6in}
+\begin{center}
+\includegraphics[name=AdobeDon_full,width=1.5in,
+ presp={\mypreSP{AdobeDon_full}},
+ postsp={\mypostSP{AdobeDon_full}}]{AdobeDon_full}
+\end{center}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-1.6in}\scriptsize
+\begin{verbatim}
+\includegraphics[name=AdobeDon_full,width=1.5in,
+ presp={\mypreSP{AdobeDon_full}},
+ postsp={\mypostSP{AdobeDon_full}}]{AdobeDon_full}
+\end{verbatim}
+{\normalsize where}
+\begin{verbatim}
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse clip newpath
+}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .6 /CA .3 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse 0.4 0.7 1 setrgbcolor fill
+ grestore gsave
+ [ /CA .5 /BM /Normal /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor stroke
+ grestore
+}
+\end{verbatim}
+\end{minipage}
+Demonstrating some transparent special effects. Swave!
+
+\newpage
+
+\null\vfil
+\begin{center}
+\texttt{AdobeDon} and \texttt{AdobeDon} with 50\% opacity\\[1ex]
+\insertEPS[width=1.5in]{AdobeDon} \insertEPS[width=1.5in,transparency={/ca .5 /BM/Normal}]{AdobeDon}
+\end{center}
+
+\newpage
+
+\null\vfil
+
+\begin{center}\previewtrue
+\textsf{\textbf{MathLab Graphics}}\\[1ex]
+\insertEPS[width=1in]{ex} \insertEPS[width=1in,clip]{ex} \insertEPS[width=1in,transparency={/ca .3}]{ex}\\
+\end{center}
+The bounding box for this graphic is
+\texttt{[\llxOf{ex}\space\llyOf{ex}\space\urxOf{ex}\space\uryOf{ex}]}.
+The figure in the middle has been clipped using its bounding box (the \texttt{clip} option
+of \cs{includegraphics/\cs{insertEPS}}), the
+one on the right has 30\% opacity and has not been clipped.
+\end{document}
+
+\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom
+\screensize{5.4in*\real{0.75}}{5in} % height, width
diff --git a/texmf-dist/doc/latex/graphicxsp/grxsp_tst_noaeb.tex b/texmf-dist/doc/latex/graphicxsp/grxsp_tst_noaeb.tex
new file mode 100644
index 00000000..68dc11f4
--- /dev/null
+++ b/texmf-dist/doc/latex/graphicxsp/grxsp_tst_noaeb.tex
@@ -0,0 +1,215 @@
+\documentclass{article}
+\usepackage{calc}
+\usepackage{graphicxsp}
+
+%
+% Since you are using distiller, you have Acrobat as well.
+% Try using the PDF Optimizer to further reduce the size
+% of the file. If you have Acrobat Pro 8.0, you can do
+% a Save As, by selecting Adobe PDF Files, Optimized
+% from the Save as type list. This is the same as using
+% the PDF Optimizer.
+%
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\special{!userdict begin
+ /Draw_Ellipse {
+ /m matrix currentmatrix def
+ 4 2 roll translate scale
+ 0 0 1 0 360 arc
+ closepath
+ m setmatrix
+ } def end
+}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{graphics/AdobeDon} % 284 KB
+\embedEPS[hiresbb,transparencyGroup]{Airplane}{graphics/000_0151} % 550 KB
+\embedEPS[hiresbb]{AdobeDon_full}{graphics/AdobeDon_full} % 370 KB
+\embedEPS[transparencyGroup]{ex}{graphics/example} % 7.7 KB
+
+
+\parindent0pt
+\setlength{\fboxsep}{0pt}
+
+\thispagestyle{empty}
+
+\begin{document}
+
+\begin{center}
+The GraphicxSP Package\\
+D. P. Story
+\end{center}
+
+The package, tentatively named \textsf{graphicxsp} and which is still under development,
+attempts to use the PostScript operators \textbf{BP}, \textbf{EP} and \textbf{SP} to embed
+graphics in the document once, then use and re-use them by emitting the \textbf{SP} operator.
+Though this document was created using \textsf{AeB Pro}, the package only requires
+the \textsf{graphicx} and \textsf{eso-pic} packages.
+
+\medskip
+We begin by embedding out graphics in the preamble of the document using the
+\cs{embedEPS} command. The command takes one optional argument and two required. We can
+not only use these graphics over again, the package does support transparency as well, as
+this file also demonstrates.
+\begin{small}
+\begin{verbatim}
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{AdobeDon} % 284 KB
+\embedEPS[hiresbb,transparencyGroup]{Airplane}{000_0151} % 550 KB
+\embedEPS[hiresbb]{AdobeDon_full}{AdobeDon_full} % 370 KB
+\embedEPS[transparencyGroup]{ex}{example} % 7.7 KB
+\end{verbatim}
+\end{small}
+
+% Normal,Multiply, Screen, Screen, Darken, Lighten, ColorDodge, ColorBurn, HardLight,
+% SoftLight, Difference, Exclusion
+
+
+The package attempts to blend in with the \textsf{graphicx} package, and uses
+the \cs{includegraphics} command, with a few extra optional key-value
+pairs.
+\begin{small}%
+\begin{verbatim}
+\insertEPS[width=1.5in]{AdobeDon}
+\includegraphics*[name=AdobeDon,angle=45,
+ width=1.5in,bb=30 50 150 100]{AdobeDon}
+\end{verbatim}
+\end{small}%
+
+
+
+\begin{center}
+\insertEPS[width=1.5in]{AdobeDon}
+\includegraphics*[name=AdobeDon,width=1.5in,angle=45,bb=30 50 150 100]{AdobeDon}
+\end{center}
+The second command is in the form of \cs{includegraphics}, the first
+one, \cs{embedEPS}, is a shortened version. After embedding, the file name is no longer used,
+only the symbolic name.
+
+Let's have some fun with two of these images.
+
+\vspace*{.5in}
+
+\begin{center}%\previewtrue
+\begin{minipage}{.5\linewidth}
+\begin{center}
+\makebox[0pt][l]{\rotatebox[origin=lb]{180}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{150}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{135}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{120}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{90}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{60}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{45}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{30}{\smash{\insertEPS[width=1in]{Airplane}}}}%
+\makebox[0pt][l]{\insertEPS[width=1in]{Airplane}}%
+\end{center}
+\end{minipage}\hfill%
+\begin{minipage}{.5\linewidth}
+\begin{center}
+\makebox[0pt][l]{\rotatebox[origin=lb]{180}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{150}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{135}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{120}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{90}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{60}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{45}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\rotatebox[origin=lb]{30}{\smash{\insertEPS[width=1in]{AdobeDon}}}}%
+\makebox[0pt][l]{\insertEPS[width=1in]{AdobeDon}}%
+\end{center}
+\end{minipage}
+\end{center}
+
+\vspace{1in}
+
+Wow! That would normally take up gobs of file space. This file is about 180 KB.
+
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ clip
+ newpath
+}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .6 /CA .3 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 0.4 0.7 1 setrgbcolor
+ fill
+ grestore
+ gsave
+ [ /CA .5 /BM /Normal /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse
+ 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor
+ stroke
+ grestore
+}
+
+\medskip
+Let's try some clipping with some transparency settings.
+
+\medskip
+\begin{minipage}{1.6in}
+\begin{center}
+\includegraphics[name=AdobeDon_full,width=1.5in,
+ presp={\mypreSP{AdobeDon_full}},
+ postsp={\mypostSP{AdobeDon_full}}]{AdobeDon_full}
+\end{center}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-1.6in}\scriptsize
+\begin{verbatim}
+\includegraphics[name=AdobeDon_full,width=1.5in,
+ presp={\mypreSP{AdobeDon_full}},
+ postsp={\mypostSP{AdobeDon_full}}]{AdobeDon_full}
+\end{verbatim}
+{\normalsize where}
+\begin{verbatim}
+\def\mypreSP#1{%
+ newpath
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse clip newpath
+}
+\def\mypostSP#1{%
+ gsave
+ [ /ca .6 /CA .3 /BM/Screen /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse 0.4 0.7 1 setrgbcolor fill
+ grestore gsave
+ [ /CA .5 /BM /Normal /SetTransparency pdfmark
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ \widthOf{#1} 2 div \heightOf{#1} 2 div
+ Draw_Ellipse 40 setlinewidth
+ 0.4 0.7 1 setrgbcolor stroke
+ grestore
+}
+\end{verbatim}
+\end{minipage}
+Demonstrating some transparent special effects. Swave!
+
+\begin{center}
+\texttt{AdobeDon} and \texttt{AdobeDon} with 50\% opacity\\[1ex]
+\insertEPS[width=1.5in]{AdobeDon} \insertEPS[width=1.5in,transparency={/ca .5 /BM/Normal}]{AdobeDon}
+\end{center}
+
+
+\begin{center}\previewtrue
+\textsf{\textbf{MathLab Graphics}}\\[1ex]
+\insertEPS[width=1in]{ex} \insertEPS[width=1in,clip]{ex} \insertEPS[width=1in,transparency={/ca .3}]{ex}\\
+\end{center}
+The bounding box for this graphic is
+\texttt{[\llxOf{ex}\space\llyOf{ex}\space\urxOf{ex}\space\uryOf{ex}]}.
+The figure in the middle has been clipped using its bounding box (the \texttt{clip} option
+of \cs{insertEPS} and \cs{includegraphics)}, the
+one on the right has 30\% opacity and has not been clipped.
+\end{document}
+
+\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom
+\screensize{5.4in*\real{0.75}}{5in} % height, width
diff --git a/texmf-dist/source/latex/aeb-mlink/aeb_mlink.dtx b/texmf-dist/source/latex/aeb-mlink/aeb_mlink.dtx
new file mode 100644
index 00000000..c4c7b7be
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-mlink/aeb_mlink.dtx
@@ -0,0 +1,624 @@
+% \iffalse
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_mlink.sty package, 2015-10-28 %%
+%% Copyright (C) 2006--2015 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% storyd@owc.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{aeb_mlink}
+%<package> [2016/02/16 v2.0 AeB MLink (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[colorlinks,hyperindex]{hyperref}
+\pdfstringdefDisableCommands{\let\\\textbackslash}%
+\EnableCrossrefs \CodelineIndex
+\OnlyDescription % comment out for implementation details
+\begin{document}
+ \GetFileInfo{aeb_mlink.sty}
+ \title{The \textsf{aeb\_mlink} Package\texorpdfstring{\\}{: }
+ A member of the AeB Pro family}
+ \author{D. P. Story\\
+ Email: \texttt{storyd@owc.edu}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \let\Email\texttt
+ \DocInput{aeb_mlink.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+% \section{Introduction}
+% This package creates \underbar{m}ultiline-\underbar{links}.
+% The package \textsf{hyperref} does create links, but generally
+% these links cannot be broken across lines, unless \textsf{pdflatex}
+% is used to create a PDF.
+%
+% This package uses the \texttt{QuadPoints} entry in the link annotation to create
+% a bounding region; consequently, this package requires \textbf{Acrobat Distiller}
+% to create a PDF. \texttt{QuadPoints} is a PDF 1.6 feature, so these multiline links
+% will work in Adobe Reader 7.0 or later. If viewed in a version of Adobe Reader previous
+% to 7.0, the viewer will use the underlying bounding box.
+%
+% LaTeX package requirements are the \textsf{eForms} and \textsf{hyperref}. Only the use
+% of \textsf{dvips} and \textsf{dvipsone} is supported.
+%
+%The key to creating a multi-line is contained in Table~8.24 of the
+%PDF Reference. The description of \texttt{QuadPoints} in the PDF Reference
+%is as follows:
+%
+%\begin{quote}\small
+%(Optional; PDF 1.6) An array of $8 \times n$ numbers specifying the
+%coordinates of $n$ quadrilaterals in default user space that comprise
+%the region in which the link should be activated. The coordinates
+%for each quadrilateral are given in the order
+%$$
+% x_1\ y_1\ x_2\ y_2\ x_3\ y_3\ x_4\ y_4
+%$$
+%specifying the four vertices of the quadrilateral in
+%counterclockwise order. For orientation purposes, such as when
+%applying an underline border style, the bottom of a quadrilateral is
+%the line formed by $(x_1 , y_1)$ and $(x_2 , y_2)$. If this entry is not
+%present or the viewer application does not recognize it, the region
+%specified by the \texttt{Rect} entry should be used. \texttt{QuadPoints} should be
+%ignored if any coordinate in the array lies outside the region
+%specified by \texttt{Rect}.
+%\end{quote}
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\newif\if@ml@dvips \@ml@dvipstrue
+% \end{macrocode}
+% \begin{macro}{dvipsone}
+% Set the driver for \texttt{dvipsone}
+% \begin{macrocode}
+\DeclareOption{dvipsone}{\def\eq@drivernum{0}\@ml@dvipsfalse
+ \PassOptionsToPackage{dvipsone}{eforms}
+ \PassOptionsToPackage{dvipsone}{hyperref} %,colorlinks
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{dvips}
+% Set the driver for \texttt{dvips}
+% \begin{macrocode}
+\DeclareOption{dvips}{\def\eq@drivernum{0}\@ml@dvipstrue
+ \PassOptionsToPackage{dvips}{eforms}
+ \PassOptionsToPackage{dvips}{hyperref} %,colorlinks
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\ml@err@msg{This package requires the driver dvips and\MessageBreak
+ Adobe Distiller as the PDF creator}
+\ifpdf\PackageError{aeb_mlink}{\ml@err@msg}\else
+ \ifxetex\PackageError{aeb_mlink}{\ml@err@msg}\else
+ \InputIfFileExists{web.cfg}{}{}
+\fi\fi
+\ProcessOptions
+% \end{macrocode}
+% We require hyperref, eforms and soul. For eforms, a recent version is needed,
+% \texttt{2008/03/14} or later.
+% \begin{macrocode}
+\RequirePackage{hyperref}
+\RequirePackage{eforms}[2008/03/14]
+\RequirePackage{soul}
+% \end{macrocode}
+%
+% \section{Driver Dependent Code}
+%
+% Driver dependent definitions for dvipsone and dvips.
+% \begin{macrocode}
+\def\ps@mark{[\space}
+\if@ml@dvips
+% \end{macrocode}
+% This next \cs{special} defines some standard conversion
+% formulas, {\TeX} to PDF and PDF to {\TeX} for \textsf{dvips}.
+% \begin{macrocode}
+\special{!userdict begin
+ /TeXtoPDF {65536 div DVImag mul} def % sp to pts
+ /PDFtoDvips {72.27 div Resolution mul} def % points to dots
+ /PDFtoVDvips {72.27 div VResolution mul} def % points to dots
+ /DvipstoPDF {72.27 mul Resolution div} def % dots to points
+ /HTeXtoDvips {TeXtoPDF PDFtoDvips} def % sp to dots
+ /VTeXtoDvips {TeXtoPDF PDFtoVDvips} def end} % sp to dots
+% \end{macrocode}
+% This command calculates the \cs{QuadPoints} array
+% when we are using the \textsf{dvips} driver.
+% \begin{macrocode}
+\def\setQuadBox{%
+ currentpoint DvipstoPDF \aeb@bbox@dp\space TeXtoPDF add
+ neg vsize add 72 sub % y1
+ exch DvipstoPDF 72 add exch % x1
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF add exch % x2
+ 2 copy \aeb@bbox@ht\space TeXtoPDF add % y3
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF sub exch % x4
+}
+% \end{macrocode}
+% For the bounding rectangle, we just enclose the entire page. This
+% simplifies things greatly.
+% \begin{macrocode}
+\def\par@@Rect
+{%
+ 72 neg PDFtoDvips vsize 72 sub PDFtoVDvips
+ hsize 72 sub PDFtoDvips 72 neg PDFtoVDvips
+}
+% \end{macrocode}
+% This next \cs{special} defines some standard conversion
+% formulas, {\TeX} to PDF and PDF to {\TeX} in the YandY TeX System.
+% \begin{macrocode}
+\else
+\special{!/TeXtoPDF {65536 div mag 1000 div mul} def
+/PDFtoTeX {65536 mul mag 1000 div div} def}
+% \end{macrocode}
+% This command calculates the \cs{QuadPoints} array
+% when we are using the \textsf{dvipsone} driver.
+% \begin{macrocode}
+\def\setQuadBox{%
+ currentpoint \aeb@bbox@dp\space add TeXtoPDF
+ neg PageHeight add 72 sub % y1
+ exch TeXtoPDF 72 add exch % x1
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF add exch % x2
+ 2 copy \aeb@bbox@ht\space TeXtoPDF add % y3
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF sub exch % x4
+}
+% \end{macrocode}
+% For the bounding rectangle, we just enclose the entire page. This
+% simplifies things greatly.
+% \begin{macrocode}
+\def\par@@Rect
+{%
+ 72 neg PDFtoTeX PageHeight 72 sub PDFtoTeX
+ PageWidth 72 sub PDFtoTeX 72 neg PDFtoTeX
+}
+\fi
+% \end{macrocode}
+%
+% \section{The Multi-line Linking Commands}
+%
+% We use a box, and two counters for this package.
+% \begin{macrocode}
+\newbox\aeb@bbox
+\newcount\aeb@arrayIndx \aeb@arrayIndx=0
+\newcount\aeb@mLinkCnt \aeb@mLinkCnt=0
+% \end{macrocode}
+% \begin{macro}{\mlhypertext}
+%
+% This is a general purpose hypertext link. Not only is it
+% a fine stand-alone linking command, but it also serves
+% as a building block to some convenience commends that follow.
+%
+% The commands takes two arguments, the first an optional one the second
+% one requires.
+% \begin{enumerate}
+% \item[\texttt{[\#1]}] A standard optional argument for eForms, to change
+% the appearance of the link and/or to include actions.
+% \item[\texttt{\#2}] The text to be enclosed in a link.
+% \end{enumerate}
+% \begin{macrocode}
+\def\CurrentBorderColor{\@linkbordercolor}
+\def\ml@nocolorHighlight{I}
+\def\ml@nocolorLineStyle{S}
+\def\ml@nocolorLineWidth{1}
+\def\ml@setnocolorDefaults{%
+\def\ml@nocolor@defaults{\H{\ml@nocolorHighlight}%
+ \S{\ml@nocolorLineStyle}\W{\ml@nocolorLineWidth}%
+ \Color{\CurrentBorderColor}}%
+}
+\ifHy@colorlinks
+ \let\ml@nocolor@defaults\@empty
+\else
+ \ml@setnocolorDefaults
+\fi
+\def\ml@earlyExecProps#1{%
+ \eq@setWidgetProps\relax{#1}%
+}
+\let\mlh@preambleCmdInsert\relax
+\newcommand{\mlhypertext}[1][]{\global\aeb@arrayIndx=0\relax
+ \global\advance\aeb@mLinkCnt1\relax
+% \end{macrocode}
+% We do something different, we process the options early, mostly
+% to get any change in \texttt{linktxtcolor}, but only if the user-friendly \texttt{ui} is
+% present.
+% \begin{macrocode}
+ \special{ps: \ps@mark/_objdef {mLink\the\aeb@mLinkCnt}
+ /type /array /OBJ pdfmark}%
+ \def\mlh@preambleCmdInsert{\ml@earlyExecProps{#1}}%
+ \def\mlh@postambleCmd{\setLinkPbox{\S{S}\W{0}%
+ \presets{\ml@nocolor@defaults}%
+ \QuadPoints{mLink\the\aeb@mLinkCnt}#1}\endgroup}%
+ \aeb@mlh
+}
+\def\mlh@setQuadSyllable#1{%
+ \setbox\aeb@bbox=\hbox{\strut#1}%
+ {%
+ \count\z@=\ht\aeb@bbox\xdef\aeb@bbox@ht{\the\count\z@}%
+ \count\z@=\wd\aeb@bbox\xdef\aeb@bbox@wd{\the\count\z@}%
+ \dp\aeb@bbox=1pt\relax
+ \count\z@=\dp\aeb@bbox\xdef\aeb@bbox@dp{\the\count\z@}%
+ }%
+ \special{ps: \ps@mark{mLink\the\aeb@mLinkCnt}
+ \the\aeb@arrayIndx\space [\setQuadBox]
+ \space /PUTINTERVAL pdfmark}%
+ \global\advance\aeb@arrayIndx8\relax
+}
+% \end{macrocode}
+% \end{macro}
+% The next four commands are used internally, though \cs{aebnameref},
+% \cs{labelRef} and \cs{atPage} are public, and can be used.
+% \begin{macrocode}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\def\aebnameref#1{\@ifundefined{r@#1}{??}
+ {\aeb@exiii\@thirdoffive\csname r@#1\endcsname}}
+\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
+ {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
+\def\atPage#1{\@ifundefined{r@#1}{1}
+ {\aeb@exiii\@secondoffive\csname r@#1\endcsname}}
+% \end{macrocode}
+% \begin{macro}{\mlhyperlink}
+% \begin{macro}{\mlhyperref}
+% \begin{macro}{\mlnameref}
+% \begin{macro}{\mlNameref}
+% These four commands mimic the hyperref commands of the same root name.
+% The commands \cs{mlhyperlink} and \cs{mlhyperref} take three
+% parameters (the first one optional). The optional parameter
+% modifies the appearance of the link, the second is the
+% target/destination of the link, the third is the text the link is
+% wrapped around. In the case of \cs{mlhyperlink} that target is a
+% defined by \cs{hypertarget}; for \cs{mlhyperref} the target is a
+% latex label.
+%
+% The commands \cs{mlnameref} and \cs{mlNameref} take two parameters
+% (the first is optional). As before, the first modifies the
+% appearance of the link, the second is the target, a latex label.
+% \begin{macrocode}
+\newcommand\mlhyperlink[3][]{%
+ \mlhypertext[#1\A{/S/GoTo/D (#2)}]{#3}}
+\newcommand\mlhyperref[3][]{%
+ \mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]{#3}}
+\newcommand\mlnameref[2][]{\protected@edef\ml@temp{\aebnameref{#2}}%
+ \def\ml@tempi{\mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]}%
+ \expandafter\ml@tempi\expandafter{\ml@temp}}
+% \end{macrocode}
+% We use a work around to a |\relax| problem encountered in the
+% |\mlNameRef| command. {\LaTeX} inserts a |relax| at the end of label
+% titles, which stops soul. We insert |\let\SOUL@stop\ml@SOUL@stop|,
+% this seems to work, no guarantees.
+% \begin{macrocode}
+\newcommand\mlNameref[2][]{\let\SOUL@stop\ml@SOUL@stop
+ \protected@edef\ml@temp{`\aebnameref{#2}' on page~\atPage{#2}}%
+ \def\ml@tempi{\mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]}%
+ \expandafter\ml@tempi\expandafter{\ml@temp}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\mlhref}
+% This command is similar to \cs{href}. This command also takes
+% three arguments, one optional. The first is usual optional argument
+% that allow one to modify the appearance of the link, the second one
+% is the URL that we are linking to, the third is the text that we are
+% wrapping this link around.
+%
+% The next three commands are modifications some low hyperref commands
+% found in the \texttt{pdfmark.def} file. Depending on the parsing,
+% \cs{href} calls one of these three; we intercept them, and insert
+% our own command \cs{mlhypertext} so the link string gets wrapped around
+% if needed.
+% \begin{macrocode}
+\def\ml@hyper@linkurl#1#2{\hyper@chars
+ \let\ef@thislinkcolor\@urlcolor
+ \let\CurrentBorderColor\@urlbordercolor
+ \mlhypertext[\presets{\mlhref@args}\A{/S/URI/URI(#2)}]{#1}%
+ \endgroup
+}%
+\def\ml@hyper@linkfile#1#2#3{%
+ \let\ef@thislinkcolor\@filecolor
+ \let\CurrentBorderColor\@filebordercolor
+ \def\theView{[0 \@pdfstartview]}%
+ \@ifundefined{ifHy@pdfnewwindow}
+ {\ifHy@newwindow}{\ifHy@pdfnewwindow}%
+ \def\isWindow{/NewWindow true}\else
+ \let\isWindow\@empty\fi
+ \mlhypertext[\presets{\mlhref@args}\A{/S/GoToR \isWindow
+ /F (#2) /D \ifx\\#3\\\theView\else(#3)\fi}]{#1}%
+ \endgroup
+}
+\def\ml@hyper@launch run:#1\\#2#3{%
+ \let\ef@thislinkcolor\@filecolor
+ \let\CurrentBorderColor\@runbordercolor
+ \@ifundefined{ifHy@pdfnewwindow}
+ {\ifHy@newwindow}{\ifHy@pdfnewwindow}%
+ \def\isWindow{/NewWindow true}\else
+ \let\isWindow\@empty\fi
+ \mlhypertext[\presets{\mlhref@args}\A{/S/Launch\isWindow
+ /F (#1) \ifx\\#3\\\else /Win << /P (#3) /F (#1) >> \fi}]{#2}%
+ \endgroup
+}
+% \end{macrocode}
+% Below is the code for \cs{mlhref}. We first let the old commands found in \texttt{pdfmark.def}
+% equal to the new versions, then we call \cs{href} to do all the parsing. Things
+% eventually comes back to the above three commands.
+% \begin{macrocode}
+\let\aeb@saved@href\href
+\newcommand{\mlhref}[1][]{%
+ \begingroup
+ \def\mlhref@args{#1}%
+ \let\hyper@linkurl\ml@hyper@linkurl
+ \let\hyper@linkfile\ml@hyper@linkfile
+ \let\@hyper@launch\ml@hyper@launch
+ \aeb@saved@href
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mlurl}
+% The multi-line version of Donald Arseneau's url package. There
+% are problems with this one, will continue to work on it.
+% \changes{v2.0}{2016/02/16}{Added support for the \cs{url} command.}
+%
+% The problem is not as ``easy'' as the previous cases. Arseneau places the URL in math mode
+% and it does not reconstruct (\texttt{soul} terminology) as it should. Our solution is to
+% hijack three commands of \texttt{soul} \cs{SOUL@doword}, \cs{SOUL@analyze}, and \cs{SOUL@dosyllable},
+% and modify them to do the work on an URL.
+% \begin{macrocode}
+\newbox\ml@urlbuild
+\setbox\ml@urlbuild\hbox{}
+% \end{macrocode}
+% We modify \cs{SOUL@doword} and name it \cs{ml@SOUL@doword}.
+% \begin{macrocode}
+\def\ml@SOUL@doword{%
+ \global\setbox\ml@urlbuild\hbox{}%
+ \edef\x{\the\SOUL@word}%
+ \ifx\x\empty
+ \else
+ \SOUL@buffer={}%
+ \setbox\z@\vbox{%
+ \SOUL@tt
+ \hyphenchar\font`\-
+ \hfuzz\maxdimen
+ \hbadness\@M
+ \pretolerance\m@ne
+ \tolerance\@M
+ \leftskip\z@
+ \rightskip\z@
+ \hsize1sp
+ \everypar{}%
+ \parfillskip\z@\@plus1fil
+ \hyphenpenalty-\@M
+ \noindent
+ \hskip\z@
+ \relax
+ \the\SOUL@word}%
+% \end{macrocode}
+% We don't do the reconstruction, so no need for the message.
+% \begin{macrocode}
+ \let\SOUL@errmsg\relax
+% \let\SOUL@errmsg\SOUL@error
+ \let\-\relax
+ \count@\m@ne
+% \end{macrocode}
+% Here is the first major change, rather than splitting off to \cs{SOUL@analyze}, we go
+% to our modified version, \cs{ml@SOUL@analyze}.
+% \begin{macrocode}
+ \ml@SOUL@analyze
+ \SOUL@word={}%
+ \fi
+}
+% \end{macrocode}
+% We modify \cs{SOUL@analyze} and name it \cs{ml@SOUL@analyze}.
+% \begin{macrocode}
+\def\ml@SOUL@analyze{{%
+ \setbox\z@\vbox{%
+ \unvcopy\z@
+ \unskip
+ \unpenalty
+ \global\setbox\@ne=\lastbox}%
+ \ifvoid\@ne
+ \else
+ \setbox\@ne\hbox{\unhbox\@ne}%
+% \end{macrocode}
+% If we say \verb!\mlurl{http://www.math.uakron.edu/~dpstory}!, then the \cs{box\cs{z@}} above contains
+% the following tokens, listed at their breakpoints:\goodbreak
+% \begin{flushleft}
+% \texttt{http:}\\
+% \texttt{\string\\}\\
+% \texttt{www.}\\
+% \texttt{math.}\\
+% \texttt{uakron.}\\
+% \texttt{edu/}\\
+% \texttt{\string~dpstory}
+% \end{flushleft}
+% The idea is to get each of these using \verb~\global\setbox\@ne=\lastbox~ (bottom to top)
+% and to build the URL with the quad points calculated. Each new token is added in front
+% of the URL as we build it. Results are held in \cs{ml@urlbuild}. We insert \cs{penalty0} to
+% promote a break point between components, as each component is enclosed in an \cs{hbox} now.
+% \begin{macrocode}
+ \global\setbox\ml@urlbuild=\hbox{%
+ \mlh@setQuadSyllable{\unhcopy\@ne}%
+ \hbox{\unhcopy\@ne}\penalty0\unhcopy\ml@urlbuild}%
+ \SOUL@syllgoal=\wd\@ne
+ \advance\count@\@ne
+% \end{macrocode}
+% We get the tokens recursively, be we jump back to \cs{ml@SOUL@analyze} not
+% \cs{SOUL@analyze}.
+% \begin{macrocode}
+ \ml@SOUL@analyze
+ \SOUL@syllwidth\z@
+ \SOUL@syllable={}%
+ \ifnum\count@>\z@
+ \advance\SOUL@syllgoal-\SOUL@ttwidth
+% \end{macrocode}
+% At this point, we jump to \cs{ml@SOUL@dosyllable} rather than
+% \cs{SOUL@dosyllable}.
+% \begin{macrocode}
+ \ml@SOUL@dosyllable
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@hyphkern}%
+ {\SOUL@sethyphenchar}%
+ \SOUL@everyhyphen
+ \else
+% \end{macrocode}
+% Use \cs{ml@SOUL@dosyllable} not \cs{SOUL@dosyllable}.
+% \begin{macrocode}
+ \ml@SOUL@dosyllable
+ \fi
+ \fi
+}}
+% \end{macrocode}
+% We modify \cs{SOUL@dosyllable} and name it \cs{ml@SOUL@dosyllable}.
+% \begin{macrocode}
+\def\ml@SOUL@dosyllable{%
+ \SOUL@gettoken
+ \SOUL@eventuallyexhyphen{\the\SOUL@token}%
+ \edef\x{\the\SOUL@token}%
+ \ifx\x\SOUL@hyphenhintM
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \else\ifx\x\SOUL@lowerthanM
+ \SOUL@gettoken
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
+ {\the\SOUL@token}%
+ \SOUL@everylowerthan
+ \SOUL@puttoken
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \else\ifdim\SOUL@syllwidth=\SOUL@syllgoal
+ \SOUL@everysyllable
+ \SOUL@puttoken
+ \let\SOUL@n\relax
+ \else
+ \ifx\x\SOUL@stopM
+ \SOUL@errmsg
+ \global\let\SOUL@errmsg\relax
+ \let\SOUL@n\relax
+ \else
+ \setbox\tw@\hbox{\SOUL@tt\the\SOUL@token}%
+ \advance\SOUL@syllwidth\wd\tw@
+ \global\SOUL@lasttoken=\SOUL@token
+ \SOUL@gettoken
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
+ {\the\SOUL@token}%
+ \SOUL@puttoken
+ \global\SOUL@token=\SOUL@lasttoken
+ \SOUL@everytoken
+ \edef\x{\SOUL@syllable={\the\SOUL@syllable\the\SOUL@token}}\x
+% \end{macrocode}
+% Here is the only change, we direct flow back to \cs{ml@SOUL@dosyllable}
+% \begin{macrocode}
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \fi\fi\fi\fi
+ \SOUL@n
+}
+% \end{macrocode}
+% After the above preliminaries, we finally define \DescribeMacro{\mlurl}\cmd{\mlurl}.
+% \begin{macrocode}
+\newcommand{\mlurl}{\begingroup\def~{\string~}%
+ \ef@sanitize@toks\mlurl@}
+% \end{macrocode}
+% After sanitizing, we save the URL (\texttt{\#2}) an a macro
+% \cs{ml@url} using the \cs{urldef} command, defined in the \textsf{url} package.
+% \begin{macrocode}
+\newcommand{\mlurl@}[2][]{\urldef\ml@url\nolinkurl{#2}%
+\def\SOUL@mlhpreamble{%\begingroup
+ \mlh@preambleCmdInsert\ef@colorthislink}\hyper@chars
+ \let\ef@thislinkcolor\@urlcolor
+ \let\CurrentBorderColor\@urlbordercolor
+% \end{macrocode}
+% Within this group, we direct the \textsf{soul} package to our customized versions of the
+% commands.
+% \begin{macrocode}
+ \let\ml@SOUL@doword@SAVE\SOUL@doword
+ \let\SOUL@doword\ml@SOUL@doword
+% \end{macrocode}
+% The next several lines are taken from the definition of \cs{mlhypertext}, the basic command
+% for construction many of the `\cs{ml}' commands of this package.
+% \begin{macrocode}
+ \global\aeb@arrayIndx=0\relax
+ \global\advance\aeb@mLinkCnt1\relax
+ \special{ps: \ps@mark/_objdef {mLink\the\aeb@mLinkCnt}%
+ /type /array /OBJ pdfmark}%
+ \def\mlh@preambleCmdInsert{\ml@earlyExecProps{#1}}%
+ \def\mlh@postambleCmd{\setLinkPbox{\S{S}\W{0}\A{\URI{#2}}%
+ \presets{\ml@nocolor@defaults}
+ \QuadPoints{mLink\the\aeb@mLinkCnt}#1}\expandafter
+% \end{macrocode}
+% The coloring of the hypertext does not work unless we make the definition
+% global, so we do so and hope this does not mess other things up.
+% \begin{macrocode}
+ \gdef\expandafter\ef@thislinkcolor
+ \expandafter{\ef@thislinkcolor}}%
+% \end{macrocode}
+% Finally, we call \cs{aeb@mlh} which starts \textsf{soul} with \cs{SOUL@}.
+% This does this analysis, the custom command build the url in \cs{ml@urlbuild}, which
+% we then unbox.
+% \begin{macrocode}
+ \aeb@mlh\ml@url\ef@colorthislink\unhcopy\ml@urlbuild\endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \section{Macros used by the SOUL Interface}
+% \begin{macrocode}
+\ifHy@colorlinks
+ \def\ef@colorthislink{\color{\ef@thislinkcolor}}
+\else
+ \let\ef@colorthislink\relax
+\fi
+% \end{macrocode}
+% I've inserted \verb|\let\protect\@empty| to make |mlnameref| and |mlNameref| work.
+% \begin{macrocode}
+\def\ml@SOUL@stop{\relax}
+\def\SOUL@mlhpreamble{\begingroup
+% \end{macrocode}
+% (2011/12/27) Originally, I had \verb|\let\protect\@empty| here, but removing this
+% seems to do no harm, so, we'll go for it.
+% \begin{macrocode}
+% \mlh@preambleCmdInsert\ef@colorthislink\let\protect\@empty}
+ \mlh@preambleCmdInsert\ef@colorthislink}
+\def\SOUL@mlheverysyllable{%
+ \mlh@setQuadSyllable{\the\SOUL@syllable}%
+ \the\SOUL@syllable%
+ \SOUL@setkern\SOUL@charkern}%
+%\def\SOUL@mlheveryspace#1{%
+% \mlh@setQuadSyllable{ #1\space\hskip\spaceskip}%
+% #1\space\hskip\spaceskip}%
+\def\SOUL@mlheveryspace#1{#1\space\hskip\spaceskip}%
+\def\SOUL@mlheveryhyphen{%
+ \discretionary{%
+ \unkern
+ \SOUL@setkern\SOUL@hyphkern
+ \SOUL@sethyphenchar
+ }{}{}%
+}
+\def\SOUL@mlheveryexhyphen#1{%
+ \mlh@setQuadSyllable{\SOUL@setkern\SOUL@hyphkern#1}%
+ \SOUL@setkern\SOUL@hyphkern#1%
+ \discretionary{}{}{%
+ \SOUL@setkern\SOUL@charkern
+ }%
+}
+\def\mlh@postambleCmd{\relax}
+\def\SOUL@mlhpostamble{\mlh@postambleCmd}
+\def\SOUL@mlhsetup{\SOUL@setup
+ \let\SOUL@preamble\SOUL@mlhpreamble
+ \let\SOUL@everysyllable\SOUL@mlheverysyllable
+ \let\SOUL@everyspace\SOUL@mlheveryspace
+ \let\SOUL@everyhyphen\SOUL@mlheveryhyphen
+ \let\SOUL@everyexhyphen\SOUL@mlheveryexhyphen
+ \def\SOUL@postamble{\SOUL@mlhpostamble}%
+}
+\DeclareRobustCommand*\aeb@mlh{\SOUL@mlhsetup\SOUL@}
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/texmf-dist/source/latex/aeb-mlink/aeb_mlink.ins b/texmf-dist/source/latex/aeb-mlink/aeb_mlink.ins
new file mode 100644
index 00000000..db8819d8
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-mlink/aeb_mlink.ins
@@ -0,0 +1,59 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2006 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2007/05/14}
+\def\batchfile{aeb_mlink.ins}
+%
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+\generate
+{%
+ \file{aeb_mlink.sty}{\from{aeb_mlink.dtx}{copyright,package}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.pdf b/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.pdf
new file mode 100644
index 00000000..2d697917
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.tex b/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.tex
new file mode 100644
index 00000000..4295fd8d
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-mlink/doc/aebmlink_man.tex
@@ -0,0 +1,544 @@
+% makeindex < aebpro_man.idx > aebpro_man.ind
+\documentclass{article}
+%\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,forcolorpaper,
+ tight*,latextoc,pro,usetemplates},
+ eforms={useui},
+ aebxmp
+]{aeb_pro}
+\usepackage{aeb_mlink}
+
+%\usepackage{myriadpro}
+\usepackage[altbullet]{lucidbry}
+
+\usepackage{acroman}
+
+\usepackage[active]{srcltx}
+
+\DeclareDocInfo
+{
+ university={\AcroTeX.Net},
+ title={The \textsf{aeb\_mlink} Package\texorpdfstring{\\[1em]}{: }AeB Pro Family},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject={Wrapping links around to the next line},
+ keywords={XMP, E4X, Adobe Acrobat, JavaScript},
+ talksite={\url{www.acrotex.net}},
+ version={2.0},
+ copyrightStatus={True},
+ copyrightNotice={Copyright (C) 2006-\the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net}
+}
+\nocopyright
+\DeclareInitView{windowoptions=showtitle}
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+\def\unskipparskip{\vskip-\parskip}
+\renewenvironment{sverbatim}
+{\parskip0pt\noindent\small\verbatim}{\endverbatim\par\aftergroup\unskipparskip}
+\renewenvironment{ssverbatim}
+{\parskip0pt\noindent\footnotesize\verbatim}{\endverbatim\par\aftergroup\unskipparskip}
+
+\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\meta#1{\textit{\texttt{#1}}}
+\def\darg#1{\texttt{\{#1\}}}
+\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei}
+\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup}
+\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule}
+\let\pkg\textsf
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+
+\let\amtIndent\leftmargini
+\def\SUB#1{${}_{\text{#1}}$}
+
+\newdimen\aebdimen \aebdimen 0pt %\advance\aebdimen\partopsep
+\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}%
+\def\eVerb{\vskip\aebdimen\endgroup\noindent}
+
+\def\cmdtitle#1{\texorpdfstring{\protect\cs{#1}}{\textbackslash{#1}}}
+
+\renewcommand\hproportionwebauthor{.5}
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-31.25pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}}
+\makeatother
+
+%\parindent0pt\parskip\medskipamount
+
+
+\definePath\bgPath{"C:/Users/Public/Documents/%
+ ManualBGs/Manual_BG_Print_AeB.pdf"}
+\begin{docassembly}
+\addWatermarkFromFile({%
+ bOnTop: false,
+ cDIPath: \bgPath
+})
+\executeSave()
+\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+
+\tableofcontents
+
+\selectColors{linkColor=webgreen}
+
+\section{Introduction}
+
+This package creates \underbar{m}ulti-line \underbar{link}s, a dream
+that I have had for a number of years. The package \pkg{hyperref}
+does create links, but generally these links cannot be broken across
+lines, unless the application \app{pdflatex} is used to create a
+PDF; however, since my workflow is primarily through \app{Acrobat
+Distiller}, this does me little good.
+
+This package uses the \texttt{QuadPoints} entry of the link
+annotation dictionary to create a bounding region; consequently,
+\textbf{this package requires \app{Acrobat Distiller}} to create a PDF. The
+\texttt{QuadPoints} entry in the link annotation is a PDF 1.6
+feature, so these multi-line links will work in Adobe Reader 7.0 or
+later. If viewed in a version of Adobe Reader previous to 7.0, the
+viewer will use the underlying bounding box, which in the case of
+this package, is the entire page. \emph{Because the multi-line links don't
+work for versions of Adobe Reader prior to 7.0, this package should
+be used only when the reading audience has the required version}.
+
+
+\section{Requirements}
+
+The following {\LaTeX} packages are the major ones required by \texttt{aeb\_mlink}.
+\begin{itemize}
+ \item \pkg{eforms} provides form and link support, \`a la
+ {Acro\negthinspace\TeX} (\url{ctan.org/pkg/acrotex}).
+ \item \pkg{hyperref} provides link support, including the
+ commands \cs{hyperref}, \cs{hyperlink}, \cs{href}, \cs{nameref},
+ \cs{Nameref}, and \cs{href}.
+ \item \pkg{soul} a very nice package by Melchior FRANZ, used by
+ \pkg{aeb\_mlink} to hyphenate links (\url{ctan.org/pkg/soul}).
+% \nolinkurl{CTAN: tex-archive/macros/latex/contrib/soul/}}
+
+\end{itemize}
+
+\section{Package options}
+
+There are only two package options---the name of the dvi-to-ps converter application to be used---,
+these are \opt{dvips} and \opt{dvipsone}.\footnote{\app{dvipsone.exe} is the dvi-to-ps converter
+of the Y\&Y {\TeX} System, no longer available, but is used by this author.} The default is \opt{dvips}.
+
+%\Hy@colorlinksfalse
+
+\bVerb[\aebdimen=6pt]
+\begin{minipage}[t]{.5\linewidth}
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!(),fontsize=\small]
+\documentclass{article}
+\usepackage{xcolor}
+\usepackage[colorlinks]{hyperref}
+\usepackage[!anglemeta(driver)]{aeb_mlink}
+\end{Verbatim}
+\end{minipage}\quad\begin{minipage}[t]{.4\linewidth}
+\begin{Verbatim}[commandchars=!(),fontsize=\small]
+\documentclass{article}
+\usepackage[designi]{web}
+\usepackage[!anglemeta(driver)]{aeb_mlink}
+\end{Verbatim}
+\end{minipage}
+\eVerb Above are two typical preambles for the use of \pkg{aeb\_mlink}:
+\begin{itemize}
+ \item The one on the left inputs \pkg{xcolor} (recommended) and
+ \pkg{hyperref} explicitly. The \opt{colorlinks} option is
+ recommended for \pkg{hyperref}. These two are followed by
+ \pkg{aeb\_mlink}.
+ \item The preamble representation on the right uses the \pkg{web}
+ package, which internally inputs both \pkg{xcolor} (if available) and
+ \pkg{hyperref} (with \opt{colorlinks} option). Again, \pkg{aeb\_mlink}
+ comes last.
+\end{itemize}
+
+Since \pkg{eforms} is a required package, the \pkg{acrotex} bundle
+(\pkg{AeB}) is installed; consequently, if you've set up the \texttt{web.cfg}
+configuration file (that accompanies \pkg{AeB}) with either
+\cs{ExecuteOptions\darg{dvips}} or \cs{ExecuteOptions\darg{dvipsone}}, the
+specification of the \anglemeta{driver} is not normally needed.
+
+\section{Multi-line link commands}
+
+We define seven multi-line hypertext link commands: \cs{mlhypertext},
+\cs{mlhyperlink}, \cs{mlhyperref}, \cs{mlnameref}, \cs{mlNameref},
+\cs{href}, and \cs{mlurl}. The first is a basic command that is used in the definitions of
+the other six.
+
+\newtopic\noindent\textbf{Note:} Because of the way the bounding boxes are
+constructed, it is best that the bounding rectangle is set on invisible, that
+is, the line width of the boundary line is zero. The \opt{colorlinks} option
+of \app{hyperref} should be taken.
+
+\exSrc{mlink_tst}The demo file is \texttt{mlink\_tst.tex}, it illustrates all
+the commands -- with the exception of \cs{mlurl} -- of this package. The
+demo file for \cs{mlurl} is a separate file and is mentioned in
+\hyperref[ss:mlrul]{Section~\ref*{ss:mlrul}}.
+
+\subsection{\cmdtitle{mlhypertext} (\cmdtitle{mlsetLink})} A general purpose multi-line link command.
+
+\bVerb[\aebdimen=8pt]\takeMeasure{\string\mlhypertext[\#1]\darg{\#2}}%
+\begin{minipage}{\bxSize}
+\begin{Verbatim}[frame=single,rulecolor=\color{webblue}]
+\mlhypertext[#1]{#2}
+\end{Verbatim}
+\end{minipage}\quad\takeMeasure{\string\mlsetLink[\#1]\darg{\#2}}%
+\begin{minipage}{\bxSize}
+\begin{Verbatim}[frame=single,rulecolor=\color{webblue}]
+\mlsetLink[#1]{#2}
+\end{Verbatim}
+\end{minipage}
+\endgroup
+
+
+\PD The first parameter is optional, and is used to set the appearance and the actions of the link.
+The second parameter is the text around which the link is constructed.
+
+\CmdDescription The \pkg{eforms} package defines \cs{mlsetLink} to
+\cs{mlhypertext} (this is to conform to the naming conventions of
+\pkg{eforms}). Either command sets a hypertext link having a default
+appearance, and no action. The default appearance is the same as that of
+\cs{hyperlink}, the command from \pkg{hyperref}. If \opt{colorlinks}
+option was taken in the hyperref package, the text is colored \cs{@linkcolor}
+(usually red); otherwise, the text is the default color at the time, and a
+boundary rectangle is created by AcroForms with color \cs{@linkbordercolor}
+(usually red).\footnote{The \pkg{web} package changes the default coloring of \pkg{hyperref}.}
+
+\newtopic
+For example, the following link is constructed using
+\cs{mlhypertext}: \mlhypertext[\A{\JS{app.alert("AcroTeX rocks!")}}]%
+{Acrobat Distiller, version~7.0 or greater} was used to
+create this PDF document.
+
+\bVerb\takeMeasure{\string\mlhypertext[\string\A\darg{\string\JS\darg{app.alert("AcroTeX rocks!")}}]\%}%
+\begin{dCmd*}{\bxSize}
+\mlhypertext[\A{\JS{app.alert("AcroTeX rocks!")}}]%
+ {Acrobat Distiller, version~7.0 or greater}
+\end{dCmd*}
+\eVerb In the above example, the link, shown in \textcolor{webgreen}{green}
+is broken across lines. Though is is not shown in this example, these links
+can break a line at a hyphenation point as well. The optional argument is
+used to create an alert box that appears when the link is clicked.
+
+\subsection{\cmdtitle{mlhyperlink}} A multi-line version of the \cs{hyperlink} command.
+
+\bVerb\takeMeasure{\string\mlhyperlink[\#1]\darg{\#2}\darg{\#3}}%
+\begin{dCmd}{\bxSize}
+\mlhyperlink[#1]{#2}{#3}
+\end{dCmd}
+\endgroup
+
+\PD The first parameter is optional, and is used to set the appearance, but \textit{not the actions} of the link.
+The second parameter is a named destination, perhaps created by the \cs{hypertarget} command of
+\pkg{hyperref}. The third parameter is the text around which the link is constructed.
+
+\CmdDescription This command is the multi-line version of the \pkg{hyperref} command \cs{hyperlink}.
+The default appearance is the same as \cs{hyperlink}, as described above in \cs{mlhypertext}.
+The action of this link is to jump to a named destination; the action cannot be changed by defining
+a different action through the first parameter.
+
+This link uses the \cs{mlhyperlink} command:
+\so{Welcome!} \mlhyperlink{retire}{Welcome, $\dots$ to my humble retirement residence, such as it is!}
+\bVerb\takeMeasure{\string\mlhyperlink\darg{retire}\{Welcome, \$\string\dots\$ to my humble}%
+\begin{dCmd*}{\bxSize}
+\mlhyperlink{retire}{Welcome, $\dots$ to my humble
+retirement residence, such as it is!}
+\end{dCmd*}
+\eVerb In this example, the line is broken at a hyphenation, cool! We jump to
+the named destination, \texttt{retire}. On the last page,
+the following text appears
+\begin{quote}
+\verb!My humble retirement \hypertarget{retire}{home}.!
+\end{quote}
+creating the named destination of \texttt{retire}.
+
+\subsection{\cmdtitle{mlhyperref}} A multi-line version of the \cs{hyperref} command.
+
+\bVerb\takeMeasure{\string\mlhyperref[\#1]\darg{\#2}\darg{\#3}}%
+\begin{dCmd}{\bxSize}
+\mlhyperref[#1]{#2}{#3}
+\end{dCmd}
+\endgroup
+\PD The first parameter is optional, and is used to set the
+appearance, but \textit{not the actions} of the link. The second
+parameter is a label name created by the \cs{label} command of
+\LaTeX. The third parameter is the text around which the link is
+constructed.
+
+\CmdDescription This is the multi-line version of \cs{hyperref}, the command
+defined by the \pkg{hyperref} package. The default appearance is the same
+as \cs{hyperref}. The action of this link is to jump to a destination created
+by the \cs{label} command of the cross-referencing system of \LaTeX; the
+action cannot be changed by defining a different action through the first
+parameter.
+
+\newtopic
+This link uses the \cs{mlhyperref} command: \mlhyperref[\ui{linktxtcolor=red}]{retirement}
+{Welcome! Welcome to my humble retirement residence, such as it is!}
+
+\bVerb\takeMeasure{\string\mlhyperref[\string\ui\darg{linktxtcolor=red}]\darg{retirement}}%
+\begin{dCmd*}{\bxSize}
+\mlhyperref[\ui{linktxtcolor=red}]{retirement}
+{Welcome! Welcome to my humble retirement
+residence, such as it is!}
+\end{dCmd*}
+\eVerb The user-friendly interface is used to change the appearance of the
+color of the link text. The second argument is \texttt{retirement}, which is
+the label
+affixed to the last section of this document,
+\begin{quote}
+\verb!\section{My \textbf{Retirement} Home}\label{retirement}!
+\end{quote}
+See \mlNameref{retirement}.
+
+
+\subsection{\cmdtitle{mlnameref}} A multi-line version of the \cs{nameref} command.
+
+\bVerb\takeMeasure{\string\mlnameref[\#1]\darg{\#2}}%
+\begin{dCmd}{\bxSize}
+\mlnameref[#1]{#2}
+\end{dCmd}
+\endgroup
+
+\PD The first parameter is optional, and is used to set the appearance, but
+ \textit{not the actions} of the link. The second parameter is a name of
+ a {\LaTeX} label.
+
+\CmdDescription This is the multi-line version of the
+\pkg{hyperref} (\pkg{nameref}) command, \cs{nameref}. The default appearance is
+the same as \cs{hyperref}. The action of this link is to jump to a
+destination created by the \cs{label} command of the
+cross-referencing system of \LaTeX; the action cannot be changed by
+defining a different action through the first parameter.
+
+\newtopic
+This link uses the \cs{mlnameref} command: Click the link to witness \mlnameref{retirement}.
+The code for this link is seen below:
+\bVerb\takeMeasure{\string\mlnameref\darg{retirement}}%
+\begin{dCmd*}{\bxSize}
+\mlnameref{retirement}
+\end{dCmd*}
+\endgroup
+
+\subsection{\cmdtitle{mlNameref}} A multi-line version of the
+\pkg{hyperref} command, \cs{Nameref}.
+
+\bVerb\takeMeasure{\string\mlNameref[\#1]\darg{\#2}}%
+\begin{dCmd}{\bxSize}
+\mlNameref[#1]{#2}
+\end{dCmd}
+\endgroup
+\PD The first parameter is optional, and is used to set the
+ appearance, but \textit{not the actions} of the link. The second
+ parameter is a name of a {\LaTeX} label.
+
+\CmdDescription This is the multi-line version of the \pkg{hyperref}
+(\pkg{nameref}) command, \cs{Nameref}. The default appearance is the same as
+\cs{hyperref}. The action of this link is to jump to a destination created by
+the \cs{label} command of the cross-referencing system of \LaTeX; the action
+cannot be changed by defining a different action through the first parameter.
+
+\newtopic
+This link uses the \cs{mlNameref} command: Click the link or go to
+the page, \mlNameref{retirement}. The code for the link is seen below:
+\bVerb\takeMeasure{\string\mlNameref\darg{retirement}}%
+\begin{dCmd*}{\bxSize}
+\mlNameref{retirement}
+\end{dCmd*}
+\endgroup
+
+\subsection{\cmdtitle{mlhref}} A multi-line version of the
+\pkg{hyperref} command, \cs{href}.
+\bVerb\takeMeasure{\string\mlhref[\#1]\darg{\#2}\darg{\#3}}%
+\begin{dCmd}{\bxSize}
+\mlhref[#1]{#2}{#3}
+\end{dCmd}
+\endgroup
+
+\PD The first parameter is optional, and is used to set the
+ appearance, but \textit{not the actions} of the link. The
+ second parameter is a URL, while the third parameter is the link text.
+
+\CmdDescription This is the multi-line version of the
+\pkg{hyperref} command, \cs{href}. The default appearance is
+the same as \cs{hyperref}. There is one of three actions, depending on the
+third argument, just as with \cs{href}. The action cannot be changed by
+defining a different action through the first parameter.
+
+%\begingroup
+%\makeatletter
+%\def\Hy@temp#1{\expandafter\Hy@@temp\csname @#1color\endcsname{#1}}
+%\Hy@temp{link}{red}
+%\Hy@temp{anchor}{black}
+%\Hy@temp{cite}{green}
+%\Hy@temp{file}{cyan}
+%\Hy@temp{url}{magenta}
+%\Hy@temp{menu}{red}
+%\makeatother
+
+\newtopic
+The next link uses the \cs{mlhref} command with URL: \mlhref{%
+http://www.math.uakron.edu/~dpstory/acrotex.html#educational}
+{See the educational offerings of the {Acro\negthinspace{\TeX}} Web
+Site at the University of Akron}
+\bVerb\takeMeasure{\{See the educational offerings of the \darg{Acro\string\negthinspace\darg{\string\TeX}} Web}%
+\begin{dCmd*}{\bxSize}
+\mlhref{%
+http://www.math.uakron.edu/~dpstory/acrotex.html#educational}
+{See the educational offerings of the {Acro\negthinspace{\TeX}} Web
+Site at the University of Akron}
+\end{dCmd*}
+\eVerb
+Use the \cs{mlhref} command with mailto URL: My email address at Acro\negthinspace\TeX.Net,
+\mlhref{mailto:dpstory@acrotex.net}{dpstory at acrotex dot net}.
+\bVerb\takeMeasure{\string\mlhref\darg{mailto:dpstory@acrotex.net}\darg{dpstory at acrotex dot net}}%
+\begin{dCmd*}{\bxSize}
+\mlhref{mailto:dpstory@acrotex.net}{dpstory at acrotex dot net}
+\end{dCmd*}
+\eVerb
+If the second argument is a PDF file, the PDF viewer will open it from your local file system,
+or if you are in a browser, will open it from the web, provided it can find the relative path
+\bVerb\takeMeasure{shameless advertisement for Acro\string\negthinspace\string\TeX\}.}%
+\begin{dCmd*}{\bxSize}
+\mlhref{shameless_ad.pdf}{Here is a
+shameless advertisement for Acro\negthinspace\TeX}.
+\end{dCmd*}
+\eVerb If the key word `\texttt{run:}' is used, the link is set up to launch
+an application. The PDF viewer will attempt to open the file with the
+application associated with the extension of the file provided.
+\bVerb\takeMeasure{\string\mlhref\darg{run:\string\jobname.tex}\darg{This is the source file of this document}.}%
+\begin{dCmd*}{\bxSize}
+\mlhref{run:\jobname.tex}{This is the source file of this document}.
+\end{dCmd*}
+\endgroup
+
+\subsection{\cmdtitle{mlurl}}\label{ss:mlrul}
+
+A multi-line version of the \cs{url} command of the \pkg{url} package.
+The \pkg{hyperref} modifies this command to make it into an unbreakable link (at least for those
+using \app{Distiller}).
+\bVerb\takeMeasure{\string\mlurl[\#1]\darg{\#2}}%
+\begin{dCmd}{\bxSize}
+\mlurl[#1]{#2}
+\end{dCmd}
+\endgroup
+
+\PD The first parameter is optional, and is used to set the
+ appearance, but \textit{not the actions} of the link. The
+ second parameter is a URL, the text of the link is the same as the URL.
+
+\CmdDescription This is the multi-line version of the
+\pkg{url}/\pkg{hyperref} command, \cs{hurl}. The default appearance is
+the same as set by \cs{hyperref}.
+
+\newtopic
+The next link is an example of \cs{mlurl}:
+\mlurl{http://www.math.uakron.edu/~dpstory/acrotex.html#educational}. The code for this link is found below:
+\bVerb\takeMeasure{\string\mlurl\darg{http://www.math.uakron.edu/\string~dpstory/acrotex.html\#educational}}%
+\begin{dCmd*}{\bxSize}
+\mlurl{http://www.math.uakron.edu/~dpstory/acrotex.html#educational}
+\end{dCmd*}
+\eVerb The \pkg{url} package typesets the URL in math mode, which makes it
+very difficult to wrap it to the next line with a hypertext link around it.
+In math mode, spaces are ignored; consequently, if the URL contains spaces,
+use \verb!\%20! (with backslash), the URL encoding for the space character.
+See the Internet reference
+\mlurl{http://www.w3schools.com/tags/ref_urlencode.asp} for a discussion of
+the \textbf{\caps{HTML URL Encoding Reference}}.
+
+
+\exSrc{mlink_tst_url}The demo file that illustrate all the commands to
+follow is \texttt{mlink\_tst\_url.tex}. Additional details and examples are found in this
+example file.
+
+\section{Setting the appearance and action}
+
+The appearance and the action (at least for \cs{mlhypertex}) can be set through the first
+optional parameter. The optional parameter takes key-value pairs of two types:
+\paragraph*{Key-value Pairs.} The optional first parameter of each of the form and link commands take
+two styles of key-values:
+\begin{enumerate}
+ \item eForms KVP: This is the key-value system originally developed, where each KVP has the form
+ \cs{\anglemeta{key}\darg{\anglemeta{val}}}. Through these keys, the appearance
+ and action of a link---if otherwise not restricted---may be set.
+ For example, \mlhypertext[\S{U}\W{1}\Color{0 0.6 0}
+ \linktxtcolor{webgreen} \A{\JS{app.alert("AcroTeX
+ rocks!")}}]{AcroTeX can be found at
+ \texttt{www.acrotex.net}, as close as your nearest web
+ browser.}
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\mlhypertext[\S{U}\W{1}\Color{0 0.6 0}\linktxtcolor{webgreen}
+\A{\JS{app.alert("AcroTeX rocks!")}}]{AcroTeX...browser.}
+\end{Verbatim}
+
+ The eForms KVP system is explained in the eforms manual,
+ \textsl{\mlhref{http://www.math.uakron.edu/~dpstory/acrotex/eformman.pdf}{Support for AcroForms and Links, and for Document JavaScript and Open Page Events}},\footnote
+ {\url{http://www.math.uakron.edu/~dpstory/acrotex/eformman.pdf}}
+ where a complete listing of all supported KVPs is found in the appendices.
+
+ \item \pkg{xkeyval} KVP: When the \opt{useui} option is taken of the eforms package, key-value pairs are
+ defined of the form \texttt{\anglemeta{key}[\,=\,\anglemeta{value}]}. The key-value pairs are actually a value of
+ a special eForms key, \cs{ui}. The value of \cs{ui} consists of a comma-delimited list of
+ \pkg{xkeyval} key-value pairs. For example,
+ \mlsetLink[\ui{%
+ border=visible,
+ linestyle=underlined,
+ bordercolor={0 0.6 0},
+ linktxtcolor=webgreen,
+ js={app.alert("AcroTeX rocks!")}}]{AcroTeX
+ can be found at \texttt{www.acrotex.net}, as
+ close as your nearest web browser.}
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\mlsetLink[\ui{%
+ border=visible,
+ linestyle=underlined,
+ bordercolor={0 0.6 0},
+ linktxtcolor=webgreen,
+ js={app.alert("AcroTeX rocks!")}}]{AcroTeX...browser.}
+\end{Verbatim}
+
+
+ \item[] The \pkg{xkeyval} KVP system is described in the document
+ \textsl{\mlhref{http://www.math.uakron.edu/~dpstory/acrotex/eformman.pdf}{Support for AcroForms and Links, and for Document JavaScript and Open Page Events}}.\footnote
+ {ibid.}
+
+\end{enumerate}
+
+\newpage
+
+\section{My \textbf{Retirement} Home}\label{retirement}
+
+My humble retirement \hypertarget{retire}{home}.
+\begin{flushleft}
+\setLink[\H{N}\A{\Named{GoBack}}]{\includegraphics[scale=.5]{DSC01404}}\quad \raisebox{75pt}{\textbf{Click image to return from jump}}
+\end{flushleft}
+
+
+\newtopic\noindent
+Now, I simply must get back to my retirement. \dps
+
+
+
+\end{document}
diff --git a/texmf-dist/source/latex/aeb-pro/aeb.js b/texmf-dist/source/latex/aeb-pro/aeb.js
new file mode 100644
index 00000000..09310d2e
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/aeb.js
@@ -0,0 +1,24 @@
+/*
+ AEB Import FDF Methods
+
+ Copyright (C) 2006--2016 AcroTeX.Net
+ D. P. Story
+ http://www.acrotex.net
+
+ Version 1.0
+*/
+if ( typeof aebTrustedFunctions == "undefined") {
+ aebTrustedFunctions = app.trustedFunction( function ( doc, oFunction, oArgs )
+ {
+ app.beginPriv();
+ var retn = oFunction( oArgs, doc )
+ app.endPriv();
+ return retn;
+ });
+}
+aebImportAnFDF = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ doc.importAnFDF(oArgs);
+ app.endPriv();
+});
diff --git a/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx b/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx
new file mode 100644
index 00000000..3cde5508
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx
@@ -0,0 +1,4903 @@
+%\iffalse
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+%<package>\ProvidesPackage{aeb_pro}
+%<package> [2017/03/08 v2.8a aeb_pro: A support package (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[colorlinks,hyperindex=false]{hyperref}
+\pdfstringdefDisableCommands{\let\\\textbackslash}
+\def\CMD#1{\textbackslash{#1}}\def\EXCL{!}
+\let\opt\texttt \let\app\textsf \let\pkg\textsf \let\env\texttt
+\OnlyDescription % comment out for implementation details
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\bgroup\ttfamily
+\gdef\brpr#1{\char123\relax#1\char125\relax}\egroup
+\let\darg\brpr
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+\def\visispace{\symbol{32}}
+\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
+\def\meta#1{\textsl{\texttt{#1}}}
+\def\SUB#1{\ensuremath{{}_{\mbox{\scriptsize\ttfamily#1}}}}
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{aeb_pro}{Inputting aebdocfmt.def}}
+ {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{aeb_pro}{aebdocfmt.def cannot be found}}
+\begin{document}
+ \GetFileInfo{aeb_pro.sty}
+ \title{aeb\_pro\\as suggested by J\"{u}rgen Gilg}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@acrotex.net}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \DocInput{aeb_pro.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
+ \texttt{makeindex -s gind.ist -o aeb\_pro.ind aeb\_pro.idx} on the command line and recompile
+ \texttt{aeb\_pro.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
+ \texttt{makeindex -s gglo.ist -o aeb\_pro.gls aeb\_pro.glo} on the command line and recompile
+ \texttt{aeb\_pro.dtx}.}
+\end{document}
+%</driver>
+% \fi
+% \MakeShortVerb{|}
+% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{aeb_pro}{Inputting aebdonotindex.def}}
+% {\PackageInfo{aeb_pro}{cannot find aebdonotindex.def}}
+%
+% \begin{macrocode}
+% Begin package segment
+%<*package>
+% \end{macrocode}
+% \changes{v1.9}{2016/03/03}{Allow users of pdftex and xetex to access JavaScript related
+% methods provided they use \string\textsf{Acrobat} as their PDF reader.}
+% \changes{v2.5}{2016/08/31}{Revised \string\texttt{aeb\_pro.js} to include
+% \string\texttt{aebDocSaveAs()}.}
+%
+% \section{Introduction}
+%
+% The \pkg{aeb\_pro} package that access the `advanced' features of the PDF
+% specification. It uses various combinations of driver-dependent code,
+% \textbf{pdfmark} code, and JavaScript methods and techniques that require
+% \app{Acrobat~7.0 Professional} for document assembly. The package provides
+% the \textbf{AeB Control Central}. Use the \textbf{AeB Control Central} to
+% load all your Acro\negthinspace\TeX packages in the correct order. See
+% additional remarks in the titled paragraph \textbf{\nameref{para:beast}}
+% below.
+%
+% \section{Declare Options}
+%
+% We declare some options for this package.
+%\changes{v2.2}{2016/07/26}{Removed the generation of \string\texttt{fsprodef.js} from the INS file.}
+% \begin{macrocode}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{xkeyval}
+% \end{macrocode}
+% Some standard flags used by this package.
+% \begin{macrocode}
+\let\aebp@One=1 \let\aebp@Zero=0
+\let\aebp@YES=y \let\aebp@NO=n
+% \end{macrocode}
+% \subsection{AeB Control Central}
+%
+% \noindent\IndexOpt{web}^^A
+% \IndexOpt{exerquiz}^^A
+% \IndexOpt{dljslib}^^A
+% \IndexOpt{eforms}
+% \IndexOpt{insdljs}^^A
+% \IndexOpt{eq2db}\par
+% \IndexOpt{aebxmp}^^A
+% \IndexOpt{hyperref}^^A
+% \IndexOpt{graphicxsp}^^A
+% \IndexOpt{rmannot}^^A
+% \vskip-\baselineskip\noindent AeB control central
+% is simply a set of options for including the
+% other members of the AeB family. This assures that the package are
+% loaded in the correct order.
+% The values of each of these option
+% keys are the options of the packages they reference.
+% \par\medskip\noindent
+% (2016/12/09) Incorporate the version argument into package specification, for example,
+%\begin{verbatim}
+% \usepackage[web={designi,forpaper,req=2016/11/03}]{aeb_pro}
+%\end{verbatim}
+% The version takes a key of \texttt{req}, as shown above.
+% \changes{v0.8f}{2008/06/15}{Added \textsf{graphicxsp} to the list of support packages}
+% \changes{v2.7}{2016/12/10}{Incorporate the version argument into package specification}
+% \par\medskip\noindent
+% \cs{ap@csarg} is a convenience macro for working with command names.
+% \begin{macrocode}
+\def\ap@csarg#1#2{\expandafter#1\csname#2\endcsname}
+% \end{macrocode}
+% Define an \pkg{xkeyval} family \texttt{aebpreq} with a single key \IndexKey{req}\texttt{req}. Later, we
+% use this key to separate package options from the key-value \texttt{req=\ameta{release date}}.
+% \begin{macrocode}
+\define@key{aebpreq}{req}[]{\def\eq@pkgReq{#1}}
+% \end{macrocode}
+% A convenience command to save the value of package for later use.
+% \begin{macrocode}
+\def\aebp@setCCOptions#1#2{%#1=package #2=options
+ \ap@csarg\edef{aeb@#1@opts}{#2}}
+% \end{macrocode}
+% We not define options for \pkg{aeb\_pro} of \texttt{web}, \texttt{exerquiz}, \texttt{eforms}, \texttt{insdljs},
+% \texttt{eq2db}, \texttt{aebxmp}, \texttt{hyperref}, \texttt{graphicxsp}, and \texttt{rmannot}.
+% \begin{macrocode}
+\@tfor\aeb@pcks:={web}{exerquiz}{dljslib}%
+{eforms}{insdljs}{eq2db}{aebxmp}{hyperref}{graphicxsp}{rmannot}\do
+{%
+ \ap@csarg\let{aeb@\aeb@pcks @req}\@empty
+ \ap@csarg\let{aeb@\aeb@pcks @opts}\relax
+ \edef\aeb@pack@def{\noexpand
+ \define@key{aeb_pro.sty}{\aeb@pcks}[]{%
+ \noexpand\aebp@setCCOptions{\aeb@pcks}{##1}}%
+ }\aeb@pack@def
+}
+% \end{macrocode}
+% We provide a convenient way to pass the \texttt{driver}\IndexOpt{driver} used, \texttt{dvips} or
+% \texttt{dvipsone}. If the user chooses the \opt{web} option, then he/she might
+% have a \texttt{web.cfg} file, so using this option may not be
+% needed, in this case.
+% \begin{macrocode}
+\let\aebp@passDriver\aebp@YES
+\ifpdf\let\aebp@passDriver\aebp@NO\else
+\ifxetex\let\aebp@passDriver\aebp@NO\fi\fi
+\define@choicekey+{aeb_pro.sty}{driver}%
+ {dvipsone,dvips,pdftex,dvipdfm,textures,%
+ dvipdfmx,xetex}{%
+ \def\aeb@driver{#1}\ifx\aeb@driver\@empty\else
+ \PassOptionsToPackage{#1}{web}
+ \PassOptionsToPackage{#1}{exerquiz}
+\def\aebp@PassToHYIns{\PassOptionsToPackage{#1}{hyperref}
+ \PassOptionsToPackage{#1}{insdljs}}
+\ifx\aebp@passDriver\aebp@YES
+ \expandafter\aebp@PassToHYIns\fi
+ \PassOptionsToPackage{#1}{eforms}
+ \PassOptionsToPackage{#1}{graphicxsp}
+ \fi
+}{\PackageError{aeb_pro}{Bad choice for the driver, permissible values
+ \MessageBreak are dvipsone, dvips, pdftex, dvipdfm,
+ textures,\MessageBreak dvipdfmx, and xetex}
+ {Try again with a permissible driver name}}
+\let\aeb@driver\@empty
+% \end{macrocode}
+%
+% \paragraph*{On the nature of the beast}\label{para:beast} There are three types of commands
+% (and environments) in this package: (1) commands that use driver dependent
+% code, available to all workflows; (2) commands that depend on the
+% \textbf{pdfmark} operator, available only to the \app{dvips/Distiller}
+% workflow; and (3) commands that use `post-PDF creation' methods that rely
+% on the document author having the full \app{Acrobat} application.
+%
+% For the workflow \app{dvips/Distiller}, all three code types are
+% available; for whose authors that prefer \app{pdflatex/\penalty0
+% lualatex/\penalty0 xelatex}, but \emph{do not have} the full
+% \texttt{Acrobat} product, the commands of type~(1) are available through
+% the \opt{nopro} option. Finally, for authors that prefer
+% \app{pdflatex/\penalty0 lualatex/\penalty0 xelatex} and \emph{do have}
+% \app{Acrobat}, the commands of type~(1) and~(3) are available through
+% the \opt{useacrobat} option.
+
+% \subsection{The \texttt{useacrobat} option}
+%
+% If the document author has \app{Acrobat}, but wants to use
+% \app{pdflatex}, \app{xelatex}, etc, we shall let them but under
+% restricted conditions using the \opt{useacrobat}\IndexOpt{useacrobat} option.
+% Essentially, all of \pkg{aeb\_pro} is available except for any commands that use
+% layers; hence, the \opt{uselayers} and \opt{ocganime} options are not supported.
+% \begin{macrocode}
+\newif\if@useacrobat \@useacrobatfalse
+\DeclareOptionX{useacrobat}{\@useacrobattrue}
+% \end{macrocode}
+%
+% \subsection{\texttt{nopro} option}
+%
+% The normally \pkg{aeb\_pro} will brings in all the
+% code that would require the use of the \app{Distiller} and \app{Acrobat Pro},
+% this is the default. The \opt{nopro}\IndexOpt{nopro} option gives
+% access, for non-\app{Distiller} workflows, to the \textbf{AeB Control Center} and to all commands that do
+% no involve layers or post-PDF creation methods.
+% \begin{macrocode}
+\newif\if@gopro \@goprotrue
+\DeclareOptionX{nopro}{\@useacrobattrue\@goprofalse
+ \PassOptionsToPackage{nopro}{insdljs}}
+% \end{macrocode}
+% \paragraph*{Input \texttt{aebpro.def}} We input \texttt{aebpro.def} at the end of the package.
+% \begin{macrocode}
+\def\aeb@InputAeBPro{\InputIfFileExists{aebpro.def}%
+ {\PackageInfo{aeb_pro}{Inputting code for the pro option}}%
+ {\PackageInfo{aeb_pro}{Cannot find aebpro.def.
+ Reinstall or refresh your file name database, as needed.}}}
+\AtEndOfPackage{\aeb@InputAeBPro}
+% \end{macrocode}
+%
+% \subsection{\texttt{uselayers} option}
+% The \texttt{uselayers}\IndexOpt{uselayers} option activates the use of
+% Optional Content Groups, a.k.a., layers.
+% \begin{macrocode}
+\let\aebp@uselayers=0
+\DeclareOptionX{uselayers}{%
+ \ifx\aebp@uselayers0\AtEndOfPackage{\aeb@InputAeBLayers}%
+ \global\let\aebp@uselayers=1\fi
+}
+\def\aeb@InputAeBLayers{\InputIfFileExists{aeblayers.def}%
+ {\PackageInfo{aeb_pro}{Inputting code for uselayers option}}%
+ {\PackageInfo{aeb_pro}{Cannot find aeblayers.def.
+ Reinstall or refresh your file name database.}}}
+% \end{macrocode}
+%
+% \subsection{\texttt{gopro} option}
+% Some of the components of AeB have the pro option. Use \texttt{gopro}\IndexOpt{gopro} to
+% pass the \texttt{pro} option to all components that take it.
+% \begin{macrocode}
+\DeclareOptionX{gopro}{\PassOptionsToPackage{pro}{web}}
+% \end{macrocode}
+% \subsection{\texttt{attachsource} option}
+% A simple interface, \texttt{attachsource}\IndexOpt{attachsource} to attaching the source file(s) of \cs{jobname}.
+% \begin{macrocode}
+\DeclareOptionX{attachsource}{\def\aeb@attachsource{#1}}
+\let\aeb@attachsource\@empty
+% \end{macrocode}
+% \subsection{\texttt{attachments} option}
+% The \texttt{attachments}\IndexOpt{attachments} option is a general routine
+% for attaching files other than the \cs{jobname}.
+% \begin{macrocode}
+\DeclareOptionX{attachments}{\def\aeb@attachments{#1}}
+\let\aeb@attachments\@empty
+% \end{macrocode}
+% \changes{v1.4}{2013/02/24}{Support for optional attachments}
+% The two options, \texttt{optattachments}\IndexOpt{optattachments} and \texttt{!optattachments}\IndexOpt{!optattachments},
+% set the Booleaqn switch \cs{ifoptattachments} to true or false, respectively.
+% the default is false. When the command \cs{prjInput} is used, files are input into
+% the source file, but also attached to the PDF when \texttt{optattachments} is used, and not
+% attached when \texttt{!optattachments} is used.
+% \begin{macrocode}
+\newif\ifoptattachments\optattachmentsfalse
+\newif\ifoptattachmentsTaken\optattachmentsTakenfalse
+\DeclareOptionX{optattachments}{%
+ \optattachmentsTakentrue
+ \optattachmentstrue}
+\DeclareOptionX{!optattachments}{%
+ \optattachmentsTakentrue
+ \optattachmentsfalse}
+% \end{macrocode}
+% \subsection{The \texttt{linktoattachments} option}
+% The option \texttt{linktoattachments}\IndexOpt{linktoattachments} is a
+% general routine for linking to attached PDF files.
+% \begin{macrocode}
+\def\@aeb@InputUnicodes{\InputIfFileExists{unicodes.def}%
+ {\typeout{aeb_pro: Inputting code for the linktoattachments option}}%
+ {\typeout{aeb_pro: Cannot find unicodes.def.
+ Reinstall or refresh your file name database, as needed.}}}
+\let\aeb@InputUnicodes\@empty
+% \end{macrocode}
+% \changes{v1.7k}{2015/08/06}{Added code so that the childof is read after linktoattachments}
+% (2015/08/06) Added code so that the childof is read after linktoattachments
+% \changes{v2.4}{2016/08/03}{Removed the \string\texttt{latin1} option as unworkable across some workflows}
+% \begin{macrocode}
+\DeclareOptionX{linktoattachments}{%
+ \let\aeb@InputUnicodes\@aeb@InputUnicodes}
+\let\aeb@childofInput\@empty
+\let\aeb@childof\@empty
+\DeclareOptionX{childof}{\def\aeb@childof{#1}\def\aeb@childofInput{%
+ \InputIfFileExists{\aeb@childof_xref.cut}{}{}}}
+\def\inputAttachmentRelatedFiles{%
+ \aeb@InputUnicodes
+ \aeb@childofInput
+}
+\AtEndOfPackage{\inputAttachmentRelatedFiles}
+% \end{macrocode}
+% When the \texttt{ocganime}\IndexOpt{ocganime} option is taken, the code for ocg animation is included.
+% \begin{macrocode}
+\let\inputCommonAnimeCode\relax
+\DeclareOptionX{ocganime}{%
+ \ifx\aebp@uselayers0\ExecuteOptionsX{uselayers}
+ \global\let\aebp@uselayers=1\fi
+ \ifx\inputCommonAnimeCode\relax
+ \let\inputCommonAnimeCode\aebp@inputCommonAnimeCode
+ \AtEndOfPackage{\inputCommonAnimeCode}\fi
+ \AtEndOfPackage{\inputOcgAnimeCode}
+}
+% \end{macrocode}
+% When the \texttt{btnanime}\IndexOpt{btnanime} option is taken, the code for button animation is included.
+% \begin{macrocode}
+\DeclareOptionX{btnanime}{%
+ \ifx\inputCommonAnimeCode\relax
+ \let\inputCommonAnimeCode\aebp@inputCommonAnimeCode
+ \AtEndOfPackage{\inputCommonAnimeCode}\fi
+ \AtEndOfPackage{\inputBtnAnimeCode}
+}
+\def\inputBtnAnimeCode{\InputIfFileExists{btnnanime.def}
+ {\PackageInfo{aeb_pro}{inputting btnnanime.def}}
+ {\PackageWarning{aeb_pro}{cannot find btnnanime.def}}}%
+\def\inputOcgAnimeCode{\InputIfFileExists{ocganime.def}
+ {\PackageInfo{aeb_pro}{inputting ocganime.def}}
+ {\PackageWarning{aeb_pro}{cannot find ocganime.def}}}%
+\def\aebp@inputCommonAnimeCode{\InputIfFileExists{anime_support.def}
+ {\PackageInfo{aeb_pro}{inputting anime_support.def}}
+ {\PackageWarning{aeb_pro}{cannot find anime_support.def}}}%
+% \end{macrocode}
+% We allow for a configuration file, usually of the form
+%\begin{verbatim}
+% \ExecuteOptionsX{driver=<driver>} % dvips, dvipsone, pdftex, xetex
+%\end{verbatim}
+% For the last two, \app{AeB Pro} can only act as a central control of
+% the \app{AeB} Family.
+% \changes{v1.7}{2015/06/12}{Added a test for \texttt{pdftex} and \texttt{xetex}}
+% If the driver being used (automatically detected) is \texttt{pdftex} or \texttt{xetex}, we
+% use the \texttt{nopro} option and don't input \texttt{aebpro.cfg}.
+% \begin{macrocode}
+\let\pathToBtnCtrlIcons\@empty
+\let\ExecuteOptionsXSAVE\ExecuteOptionsX
+\let\ExecuteOptionsX\@gobble
+\InputIfFileExists{aebpro.cfg}{}{}
+\let\ExecuteOptionsX\ExecuteOptionsXSAVE
+\ifpdf\ExecuteOptionsX{driver=pdftex}\else
+ \ifxetex\ExecuteOptionsX{driver=xetex}\else
+ \@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{driver=dvips}}
+ {\ExecuteOptionsX{driver=dvipsone}}\fi\fi
+% \end{macrocode}
+% \paragraph*{Process the options}
+% \begin{macrocode}
+\ProcessOptionsX
+\edef\ap@restoreCats{%
+ \catcode`\noexpand\"=\the\catcode`\"\relax
+ \catcode`\noexpand\,=\the\catcode`\,\relax
+ \catcode`\noexpand\(=\the\catcode`\(\relax
+ \catcode`\noexpand\!=\the\catcode`\!\relax
+}
+\@makeother\"\@makeother\,\@makeother\(\@makeother\!
+% \end{macrocode}
+% \paragraph*{Set up variables}
+% We set a switch to indicate we are using the \textbf{pdfmark} operator or not.
+% Initially we assume so.
+% \changes{v1.9}{2016/03/03}{Set up \string\cs{ifpdfmark} switch earlier}
+% \begin{macrocode}
+\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}
+\pdfmarkuptrue
+% \end{macrocode}
+%\changes{v2.2}{2016/07/26}{Added support for luatex .85}
+% Added support for luatex .85. Moved this code to \pkg{insdljs} (2016/07/31); \pkg{aeb\_pro} requires
+% \pkg{insdljs} so put it there.
+%\begin{verbatim}
+% \ifpdf\ifx\pdffeedback\@undefined\else
+% \def\pdfpageref{\pdffeedback pageref}\fi\fi
+%\end{verbatim}
+% Set the variables for the case of \opt{dvips} and \opt{dvipsone}.
+% \changes{v1.9}{2016/03/03}{Modified driver check, adding \string\cs{@useacrobattrue}}
+% \begin{macrocode}
+\def\aeb@testdriver{dvips}%
+\ifx\aeb@testdriver\aeb@driver
+ \@useacrobattrue\else
+\def\aeb@testdriver{dvipsone}%
+\ifx\aeb@testdriver\aeb@driver
+ \@useacrobattrue\else
+% \end{macrocode}
+% If not \texttt{dvips} or \texttt{dvipsone}, the user is
+% not to use the \textbf{pdfmark} operator.
+% \changes{v1.9}{2016/03/03}{Mark as non-pdfmark}
+% \begin{macrocode}
+ \pdfmarkupfalse
+\fi\fi
+% \end{macrocode}
+% \paragraph*{Summary of switch settings}
+% \begin{itemize}
+% \item \app{Distiller} workflow: \cs{pdfmarkuptrue}, \cs{@useacrobatrue}, \cs{@goprotrue}
+% \item non-\app{Distiller}/non-\app{Acrobat} workflow (the \opt{nopro} option):
+% \cs{pdfmarkupfalse}, \cs{@useacrobatrue}, \cs{@goprofalse}
+% \item non-\app{Distiller}/\app{Acrobat} workflow (the \opt{useacrobat} option):
+% \cs{pdfmarkupfalse}, \cs{@useacrobatrue}, \cs{@goprotrue}
+% \end{itemize}
+% Some options are not valid when using the \opt{nopro}, such as attachments.
+% \begin{macrocode}
+\if@gopro\else
+\let\aebp@isattach\aebp@NO
+\ifx\aeb@attachsource\@empty\else\let\aebp@isattach\aebp@YES\fi
+\ifx\aeb@attachments\@empty\else\let\aebp@isattach\aebp@YES\fi
+ \let\aeb@attachsource\@empty
+ \let\aeb@attachments\@empty
+ \optattachmentsfalse\optattachmentsTakenfalse
+ \let\inputAttachmentRelatedFiles\relax
+\ifx\aebp@isattach\aebp@YES
+ \PackageWarningNoLine{aeb_pro}{The various attachment options
+ are not\MessageBreak supported with the nopro option,
+ ignoring them}\fi
+\fi
+% \end{macrocode}
+% \paragraph*{Disallow some options that use the \textsf{pdfmark}}
+% We do what we say.
+% \begin{macrocode}
+\ifpdfmarkup\else
+\if\aebp@uselayers1
+ \def\aeb@InputAeBLayers{\PackageError{aeb_pro}
+ {The uselayers and ocganime options are not supported,\MessageBreak
+ with the useacrobat and nopro options,\MessageBreak
+ ignoring these options}{Remove dependence on layers,
+ or obtain\MessageBreak the full Acrobat product}}
+ \let\texHelpIndicator\@gobble
+ \let\addJStexHelpEnter\@gobble
+ \let\addJStexHelpExit\@gobble
+ \let\texHelp\@gobbletwo
+ \def\xBld#1\eBld{}
+ \let\defineRC\@gobbletwo
+ \let\insertRC\@gobble
+ \let\definePR\@gobbletwo
+ \let\insertPR\@gobble
+ \let\proofRollovers\relax
+ \let\texPHProof\@gobbletwo
+ \newcommand\animeBld[1][]{}
+ \def\DeclareAnime#1#2#3{}
+ \newcommand\backAnimeBtn[3][]{}
+ \newcommand\clearAnimeBtn[3][]{}
+ \newcommand\forwardAnimeBtn[3][]{}
+\fi\fi
+% \end{macrocode}
+%
+% \section{Package requirements}
+%
+% AeB builds on the \textsf{web} package to a certain extent,
+% hence requires \textsf{insdljs}.
+% \begin{macrocode}
+\def\aebp@PkgWarningi#1{\ifpdfmarkup\else\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller,\MessageBreak
+ do not load this package}\fi}
+\def\aebp@PkgWarningii#1{\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller,\MessageBreak
+ ignoring #1\space as an option}}
+\def\aebp@PkgWarningiii#1{\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller or\MessageBreak
+ the useacrobat option (Acrobat required),\MessageBreak
+ ignoring #1\space as an option}}
+\providecommand\getargsii[2]{\def\aeb@argi{#1}\def\aeb@argii{#2}}
+% \end{macrocode}
+% \cs{ap@RP} is a command that computes the appropriate
+% \cs{PassOptionsToPackage} and \cs{RequiredPackage} commands
+%\begin{verbatim}
+% #1 aeb_pro required options, #2 = package name
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand\ap@RP[2][]{\def\@rgi{#1}\def\@rgii{#2}%
+ \ifx\@rgi\@empty\else\edef\@rgi{[\@rgi]}\fi
+ \@ifnextchar[%]
+ {\ap@@RP}{\ap@@RP[]}}
+% \end{macrocode}
+% \cs{ap@@RP} continues \cs{ap@RP} and is the one that formulates
+% \cs{PassOptionsToPackage} and \cs{RequiredPackage} commands
+%\begin{verbatim}
+% #1 = aeb_pro required date
+%\end{verbatim}
+% \begin{macrocode}
+\def\ap@@RP[#1]{\def\@rgiii{#1}%
+ \let\XKV@rm\@empty\let\eq@pkgReq\@empty
+ \@ifundefined{aeb@\@rgii @opts}
+ {\ifx\@rgi\@empty\else
+ \ap@csarg\edef{aeb@\@rgii @req}{#1}\fi
+ }{%
+% \end{macrocode}
+% Calculate \cs{PassOptionsToPackage} and its arguments
+% \begin{macrocode}
+ \edef\x{\noexpand
+ \setkeys*{aebpreq}{\@nameuse{aeb@\@rgii @opts}}}\x
+ \edef\eq@theseOpts{\XKV@rm}%
+ \ap@csarg\edef{aeb@\@rgii @req}{\eq@pkgReq}%
+ \edef\x{\noexpand
+ \PassOptionsToPackage{\eq@theseOpts}{\@rgii}}\x
+ }%
+% \end{macrocode}
+% Construct \cs{RequirePackage} and its arguments
+% \begin{macrocode}
+ \ifx\@rgiii\@empty
+ \if!\@nameuse{aeb@\@rgii @req}!\else
+ \ap@csarg\edef{aeb@\@rgii @req}{[\@nameuse{aeb@\@rgii @req}]}\fi
+ \else
+ \@ifl@t@r{#1}{\@nameuse{aeb@\@rgii @req}}%
+ {\if!\@nameuse{aeb@\@rgii @req}!\else
+ \ap@csarg\edef{aeb@\@rgii @req}%
+ {[\@nameuse{aeb@\@rgii @req}]}\fi
+ }{\ap@csarg\edef{aeb@\@rgii @req}{[#1]}}%
+ \fi
+ \edef\x{\noexpand
+ \RequirePackage{\@rgii}\@nameuse{aeb@\@rgii @req}}\x
+}
+\@ifpackageloaded{web}{}
+{%
+ \@ifundefined{aeb@web@opts}{}{\ap@RP{web}}%
+}
+\@ifpackageloaded{exerquiz}{}
+{%
+ \@ifundefined{aeb@exerquiz@opts}{}{\ap@RP{exerquiz}}%
+}
+\@ifpackageloaded{hyperref}{}
+{%
+ \@ifundefined{aeb@hyperref@opts}{}{\ap@RP{hyperref}}%
+}
+\@ifpackageloaded{eq2db}{}
+{%
+ \@ifundefined{aeb@eq2db@opts}{}{\ap@RP{eq2db}}%
+}
+\@ifpackageloaded{dljslib}{}
+{%
+ \@ifundefined{aeb@dljslib@opts}{}{\ap@RP{dljslib}}%
+}
+\@ifpackageloaded{insdljs}{\let\execjs\aebp@YES}
+{%
+ \ap@RP[execJS]{insdljs}[2016/07/31]% incls conv-xkv
+}
+\@ifpackageloaded{eforms}{\let\execjs\aebp@YES}
+{%
+ \@ifundefined{aeb@eforms@opts}{}
+ {\ap@RP[execJS]{eforms}[2017/01/03]}%
+}
+\@ifpackageloaded{aebxmp}{\aebp@PkgWarningi{aebxmp}}
+{%
+ \@ifundefined{aeb@aebxmp@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup
+ \noexpand\ap@RP{aebxmp}\else
+ \if@useacrobat
+ \noexpand\ap@RP{aebxmp}[2016/05/12]\else
+ \noexpand\aebp@PkgWarningiii{aebxmp}\fi\fi}\temp@exp}
+}
+\@ifpackageloaded{graphicxsp}{\aebp@PkgWarningi{graphicxsp}}
+{%
+ \@ifundefined{aeb@graphicxsp@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup
+ \noexpand\ap@RP{graphicxsp}\else
+ \noexpand\aebp@PkgWarningii{graphicxsp}\fi}\temp@exp}
+}
+\@ifpackageloaded{rmannot}{\aebp@PkgWarningi{rmannot}}
+{%
+ \@ifundefined{aeb@rmannot@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup\noexpand\ap@RP{rmannot}\else
+ \noexpand\aebp@PkgWarningii{rmannot}\fi}\temp@exp}
+}
+\let\execjs\aebp@YES
+\RequirePackage{comment}
+\RequirePackage{calc}
+\RequirePackage{eso-pic}
+\ifpdfmarkup\else\if\aebp@uselayers1
+ \excludecomment{printRollover}%
+ \excludecomment{rollover}%
+\fi\fi
+% \end{macrocode}
+% The following write command is used by both the layers stuff, and the attachments routines.
+% \begin{macrocode}
+\def\aeb@IWVO{\immediate\write\verbatim@out}
+% \end{macrocode}
+% \section{Support for PDF help}
+% The \DescribeMacro{\pdfHelp}\cs{pdfHelp} macro requires \textsf{eforms}. We define
+% the necessary commands for PDF help, as well as some comments needed for \cs{texHelp},
+% which uses layers.
+% \changes{v2.1}{2016/05/15}{Moved \string\cs{pdfHelp} from \texttt{aeblayers} to
+% \texttt{package} to support non-Distiller workflows.}
+% \begin{macrocode}
+\newsavebox{\aebsavehelp}
+\newcommand{\pdfHelpIndicator}[1]{#1\thinspace${}^{\mbox
+ {\footnotesize\negthinspace\ding{109}}%
+ \raisebox{.225ex}{\llap{\color{webblue}\tiny?\hspace{1.3ex}}}}$}
+\def\pdfHelpCnt{0}
+\newcommand{\pdfHelp}{\@ifstar{{\count0=\pdfHelpCnt\relax
+\advance\count0by1\relax\xdef\pdfHelpCnt{\the\count0 }}%
+ \pdfHelpi{pdfhelp-\pdfHelpCnt}}{\pdfHelpi}}
+\newcommand{\pdfHelpi}[3]{%
+ \let\rollormargstring\texorpdfstring
+ \sbox{\aebsavehelp}{\pdfHelpIndicator{#3}}%
+ \makebox[0pt][l]{\makespecialJS\pushButton[\S{S}\BG{}\BC{}\H{N}
+ \TU{#2}]{#1}{\wd\aebsavehelp}{11bp}}\usebox{\aebsavehelp}%
+ \let\rollormargstring\@gobbletwo
+}
+\newcommand\pdfPHProof[3]{\small\raggedright\texttt{#3}: #2}
+\newcommand\pdfPrintHelp{\@ifstar{{\count0=\pdfHelpCnt\relax
+\advance\count0by1\relax\xdef\pdfHelpCnt{\the\count0}}%
+ \pdfPrintHelpi{pdfhelp-\pdfHelpCnt}}{\pdfPrintHelpi}}
+\newcommand\pdfPrintHelpi[3]{%
+ \let\rollormargstring\texorpdfstring
+ \ifeqforpaper
+ \ifeq@proofing
+ \pdfHelp{#1}{#2}{#3}\marginpar{\Hy@pdfstringfalse
+ \pdfPHProof{#1}{#2}{{\Hy@pdfstringtrue#3}}}\else
+ \pdfHelpIndicator{#3}\fi
+ \else
+ \pdfHelp{#1}{#2}{#3}\ifeq@proofing
+ \marginpar{\Hy@pdfstringfalse
+ \pdfPHProof{#1}{#2}{{\Hy@pdfstringtrue#3}}}\fi
+ \fi
+ \let\rollormargstring\@gobbletwo
+}
+% \end{macrocode}
+% \begin{macrocode}
+% End of package segment
+%</package>
+%<*aeblayers>
+% \end{macrocode}
+% \begin{macrocode}
+% \end{macrocode}
+% \section{Support for OCG}
+% We place PostScript code in the document that supports OCG.
+% \subsection{Initialization}
+% \begin{macrocode}
+\newif\ifaeb@ocOn \aeb@ocOntrue
+\ifaeb@ocOn
+\AtBeginDocument{%
+\headerps@out{%
+{/OCProcSet /ProcSet findresource} stopped not
+{/initialize get exec}
+{
+/BeginOC /pop load def
+/EndOC {} def
+/SimpleOC /pop load def
+/SetOCGInitState {pop pop} bind def
+/OCEndPage {} def
+/SetOCGIntent {pop pop} bind def
+/SetOCGUsage {pop pop} bind def
+/AddASEvent {pop pop pop} bind def
+}
+ifelse
+}
+}\fi
+\ifaeb@ocOn
+ \AtEndDocument{\literalps@out{{/OCProcSet /ProcSet findresource
+ /terminate get exec} stopped pop}}
+\fi
+% \end{macrocode}
+% \subsection{Supporting commands for OCG}
+% In this section we install the necessary code creating and
+% navigating through PDF layers.
+% \subsubsection{Document JavaScript in support of OCG}
+% \begin{macrocode}
+\begin{insDLJS}[getxBld]{aebocg}{AeB Pro: OCG Support}
+var ocgs = this.getOCGs();
+var xBlds = new Array();
+%console.println("Reindexing ocgs and creating xBlds");
+if ( ocgs != null ) {
+ var l = ocgs.length;
+ for ( i=0; i<l; i++ ) {
+ if (ocgs[0].name.substring(0,3) == "xb." )
+ xBlds.push(ocgs.shift());
+ else ocgs.push(ocgs.shift());
+ }
+}
+var assocxLayers = new Array();
+if ( xBlds != null ) {
+ for ( var i=0; i<xBlds.length; i++)
+ assocxLayers[xBlds[i].name]=i;
+}
+function getxBld (name) {
+ var i = assocxLayers["xb."+name];
+ return ( i == undefined ) ? null : xBlds[i];
+}
+function toggleHelp (name)
+{
+ var o = getxBld(name);
+ if ( o != null ) o.state = (event.name.indexOf("Enter") != -1);
+}
+function toggleSetThisLayer(name, bState) {
+ var oLayer = getxBld(name);
+ if ( oLayer != null )
+ oLayer.state = (arguments.length > 1) ? bState : !oLayer.state;
+}
+function getLayerState(name) {
+ var oLayer = getxBld(name);
+ return ( oLayer != null ) ? oLayer.state : null;
+}
+\end{insDLJS}
+% \end{macrocode}
+% \subsubsection{Macros for creating rollovers}
+% The following commands were taken from the \textsf{APB}
+% package, and slightly modified.
+% \changes{v1.3f}{2012/06/01}{Added controls for adding JS code to a
+% rollover; used for starting and stopping an anime.}
+% \begin{macrocode}
+\newcommand{\texHelpIndicator}[1]{#1\thinspace${}^{\mbox
+ {\footnotesize\negthinspace\ding{109}}\raisebox{.225ex}
+ {\llap{\color{webblue}\tiny?\hspace{1.3ex}}}}$}
+\newcommand{\addJStexHelpEnter}[1]{\def\aebp@addJStexHelpEnter{\r#1}}
+\newcommand{\addJStexHelpExit}[1]{\def\aebp@addJStexHelpExit{\r#1}}
+\newcommand{\resetaddJStexHelp}{%
+ \let\aebp@addJStexHelpEnter\@empty
+ \let\aebp@addJStexHelpExit\@empty
+}
+\resetaddJStexHelp
+\newcommand{\texHelp}[2]{%
+ \let\rollormargstring\texorpdfstring
+ \sbox{\aebsavehelp}{\texHelpIndicator{#2}}%
+ \makebox[0pt][l]{\pushButton[\S{S}\BG{}\BC{}\H{N}
+ \AA{\AAMouseEnter{\JS{toggleHelp("#1");\aebp@addJStexHelpEnter}}%
+ \AAMouseExit{\JS{toggleHelp("#1");\aebp@addJStexHelpExit}}}]{#1}%
+% \end{macrocode}
+%\changes{v1.3h}{2012/11/25}{Changed height calculation in \cs{texHelp}}
+% Changed height calculation in \cs{texHelp} to allow a rollover of more
+% than text.
+% \begin{macrocode}
+ {\wd\aebsavehelp}{\ht\aebsavehelp+\dp\aebsavehelp}}%
+ \usebox{\aebsavehelp}\resetaddJStexHelp
+ \let\rollormargstring\@gobbletwo
+}
+% \end{macrocode}
+%
+% \subsubsection{Macros for layers}
+% We have some basic commands for creating layers in AeB Pro.
+% \begin{macrocode}
+\newif\ifaeb@SimpleOCOn \aeb@SimpleOCOnfalse
+\newcommand{\@SOC}[2][false]{\global\aeb@SimpleOCOntrue%
+ \ifaeb@ocOn\literalps@out{(#2) SimpleOC (#2) #1 SetOCGInitState}\fi}
+\newcommand{\b@OC}[2][false]{\ifaeb@SimpleOCOn\@aebSimpleNesterror\fi
+ \ifaeb@ocOn\literalps@out{(#2) BeginOC (#2) #1 SetOCGInitState}\fi}
+\newcommand{\e@OC}{\ifaeb@ocOn\literalps@out{EndOC}\fi}
+% \end{macrocode}
+% \begin{macro}{\xBld}
+% We have some basic commands for creating layers in AeB Pro.
+% The syntax for \cs{xBld} is as follows:
+%\begin{verbatim}
+% \xBld[true|false|print=(true|false)]
+% {<layer_name>}<content in layer>\eBld
+%\end{verbatim}
+%The description of the optional parameters follows:
+%\begin{itemize}
+% \item \texttt{true}\IndexKey{true}: Inserting \texttt{true} as an optional argument causes the layer to be initially visible.
+% \item \texttt{false}\IndexKey{false}: Inserting \texttt{false} as an optional argument causes the layer to be initially hidden.
+% The default is \texttt{false}, so if no \texttt{true} or \texttt{false} argument is passed as an optional argument,
+% the layer will be initially hidden.
+% \item \texttt{print}\IndexKey{print}: This key allows you to set the printability of the layer: If \texttt{print=true},
+% the layer \emph{always prints}, no matter if it is visible or not. If \texttt{print=false},
+% the layer \emph{never prints}, no matter if it is visible or not. If the print key is not specified,
+% then the layer will print if visible, otherwise, it does not print. Normally, the \texttt{print}
+% key is not specified, and the layer is printed if visible.
+%\end{itemize}
+% \begin{macrocode}
+\newcommand{\xBld}[2][]{%
+ \setkeys{aebpxBld}{false,#1}\b@OC[\aebpxBld@visible]{xb.#2}%
+ \ifx\aebpxBld@print\@empty\else
+ \literalps@out{/Print [/Print] [(xb.#2)] AddASEvent}%
+ \ifAEBP@aebpxBld@print
+ \literalps@out{(xb.#2) << /Print<<
+ /PrintState/ON >> >> SetOCGUsage}%
+ \else
+ \literalps@out{(xb.#2) << /Print<<
+ /PrintState/OFF >> >> SetOCGUsage}%
+ \fi
+ \global\let\aebpxBld@print\@empty
+ \fi
+}
+\let\eBld\e@OC
+\def\@aebSimpleNesterror{\PackageWarning{aeb}
+{The scope of the last \string\Bld\space command
+\MessageBreak includes the scope of the nested Bld.
+\MessageBreak Executing \protect\ocOff\space to correct this.
+\MessageBreak The problem occurs}\ocOff}
+% \end{macrocode}
+% \end{macro}
+% The \textsf{keyval} definitions of the optional parameters for \cs{xBld}.
+%\changes{v1.7m}{2015/08/08}{Made \texttt{print} key into a choice field}
+%(2015/08/08) Made \texttt{print} key into a choice field.
+% \begin{macrocode}
+\newif\ifAEBP@aebpxBld@print \AEBP@aebpxBld@printfalse
+\define@choicekey+{aebpxBld}{print}[\val\nr]{true,false,%
+ visible,always,never}[visible]{%
+ \ifcase\nr\relax
+ \def\aebpxBld@print{true}\AEBP@aebpxBld@printtrue\or
+ \def\aebpxBld@print{false}\AEBP@aebpxBld@printfalse\or
+ \let\aebpxBld@print\@empty\or
+ \def\aebpxBld@print{true}\AEBP@aebpxBld@printtrue\or
+ \def\aebpxBld@print{false}\AEBP@aebpxBld@printfalse\fi
+}{\PackageWarning{aeb_pro}{Bad choice for initState, permissible values
+ are true, false, visible, always, and never. Try again}}
+\let\aebpxBld@print\@empty
+\define@key{aebpxBld}{true}[true]{\def\aebpxBld@visible{#1}}
+\define@key{aebpxBld}{false}[false]{\def\aebpxBld@visible{#1}}
+% \end{macrocode}
+% The \texttt{initState}\IndexKey{initState} sets the initial state of the OCG, the
+% default is \texttt{false}, meaning the layer is initially not shown.
+% \begin{macrocode}
+\define@choicekey+{aebpxBld}{initState}[\val\nr]{on,off,%
+ true,false}[false]{%
+ \ifcase\nr\relax
+ \def\aebpxBld@visible{true}\or
+ \def\aebpxBld@visible{false}\or
+ \def\aebpxBld@visible{true}\or
+ \def\aebpxBld@visible{false}\fi
+}{\PackageWarning{aeb_pro}{Bad choice for initState, permissible values
+ are on, off, true and false. Try again}}
+% \end{macrocode}
+% \subsubsection{The behavior of the rollovers}
+% \begin{macro}{\defineRC}
+% \begin{macro}{\insertRC}
+% RC stands for rollover content. \cs{defineRC} is used to define the content of the rollover
+% so the content can be used for the \texttt{rollover} and the \texttt{printRollover} environments.
+% These two environments are comment environments that are included or excluded depending on various
+% conditions.
+%
+% The command \cs{csarg} is a convenience command defined in the \texttt{comment} package.
+% The \texttt{comment} package is required so this command is available.
+% \begin{macrocode}
+\long\def\defineRC#1#2{\csarg\def{RC#1}{#2}}
+\def\insertRC#1{\@nameuse{RC#1}}
+\long\def\definePR#1#2{%
+ \ifeqforpaper\csarg\def{PR#1}{#2}\else
+ \ifeq@proofing\csarg\def{PR#1}{#2}\else
+ \csarg\let{PR#1}\relax\fi\fi
+}
+\def\insertPR#1{%
+ \ifeq@proofing\@nameuse{PR#1}\else
+ \csarg\let{insertPR}\@gobble\fi
+ \csarg\let{PR#1}\relax
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{environment}{rollover}
+% \begin{environment}{printRollover}
+% \begin{macro}{\definePR}
+% \begin{macro}{\insertPR}
+% Depending on the switches \cs{ifeqforpaper} and \cs{ifeq@proofing}, the comment environments
+% \texttt{rollover} and \texttt{printRollover} are included or excluded. Also defined here are the
+% two commands \cs{definePR} and \cs{insertPR} (PR stands for print rollover). These two commands
+% are set equal to either \cs{defineRC} and \cs{insertRC}, or \cs{relax}, depending on the switches.
+%
+% If \textsf{exerquiz} is not loaded, then the switch \cs{ifeq@proofing} is undefined. We must
+% define this switch in this case, and set it to \texttt{false}.
+% \begin{macrocode}
+\@ifundefined{ifeqforpaper}{\newif\ifeqforpaper \eqforpaperfalse}{}
+\@ifundefined{ifeq@proofing}{\newif\ifeq@proofing \eq@proofingfalse}{}
+\providecommand\turnProofingOn{\eq@proofingtrue}
+\providecommand\turnProofingOff{\eq@proofingfalse}
+% \end{macrocode}
+% \DescribeMacro\proofRollovers turns on the \texttt{printRollover} environment, if there
+% any defined in the document.
+% \changes{v1.7}{2015/07/21}{Modified \cs{proofRollovers} command and added
+% a number of other related commands.}
+% \begin{macrocode}
+\def\proofRollovers{%
+ \ifeqforpaper
+ \ifeq@proofing
+ \includecomment{rollover}%
+ \includecomment{printRollover}%
+ \else
+ \excludecomment{printRollover}%
+ \includecomment{rollover}%
+ \fi
+ \else
+ \ifeq@proofing
+ \includecomment{rollover}%
+ \includecomment{printRollover}%
+ \else
+ \excludecomment{printRollover}%
+ \includecomment{rollover}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% We expand \cs{proofRollovers} immediately, but may be expanded in preamble with \cs{turnProofingOn}.
+% \begin{macrocode}
+\proofRollovers
+\@onlypreamble\proofRollovers
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+% \end{environment}
+% \begin{macro}{\texPrintHelp}
+% The \cs{texPrintHelp} command reduces to \cs{texHelp} or typesets its second argument.
+% \begin{macrocode}
+\newcommand\texPHProof[2]{\small\raggedright\texttt{#1}: #2}
+\let\rollormargstring\@gobbletwo
+\def\texPrintHelp#1#2{%
+ \let\rollormargstring\texorpdfstring
+ \ifeqforpaper
+ \ifeq@proofing
+ \texHelp{#1}{#2}\marginpar{\Hy@pdfstringfalse
+ \texPHProof{#1}{#2}}\else
+ \texHelpIndicator{#2}\fi
+ \else
+ \texHelp{#1}{#2}\ifeq@proofing\marginpar{\Hy@pdfstringfalse
+ \texPHProof{#1}{#2}}\fi
+ \fi
+ \let\rollormargstring\@gobbletwo
+}
+% \end{macrocode}
+% \end{macro}
+% \subsection{In Support of Anime using Layers}
+% Using layers, it is possible to create a sort of animation (anime). The following
+% are some rudimentary methods for creating anime. An example can be found below,
+% as well as in \texttt{aebpro\_ex4.tex}.
+%
+% \subsubsection{\protect\LaTeX{} Support}
+% \begin{macro}{\animeBld}
+% \begin{macro}{\DeclareAnime}
+% The command \cs{animeBld} increments \texttt{ocSeq}, and names
+% the layer so that the JS can run through the layers in an orderly way.
+%
+% \cs{DeclareAnime} takes three arguments, the anime base name, the speed at which
+% you wish the anime to be played, and the number of frames of this animation. It
+% saves these three parameters in macros, and creates \cs{animBldName}, which is used
+% in the creation of the anime. See example file \texttt{aebpro\_ex4.tex}.
+% \begin{macrocode}
+\newcommand{\animeBld}[1][]{\stepcounter{ocSeq}%
+ \xBld[#1]{\animBldName}}
+\newcounter{ocSeq}
+% \end{macrocode}
+% (10/01/01) We give an animation the special `\texttt{anime!!}' prefix, so JavaScript can identify
+% animation layers.
+% \begin{macrocode}
+\newcommand{\animeName}[1]{anime!!#1}%01/01/2010
+\newcommand{\DeclareAnime}[3]
+{%
+ \setcounter{ocSeq}{0}%
+ \xdef\animBaseName{anime!!#1}%01/01/2010
+ \xdef\animSpeed{#2}\xdef\nFrames{#3}%
+ \gdef\animBldName{\animBaseName\#\theocSeq}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\backAnimeBtn}
+% \begin{macro}{\clearAnimeBtn}
+% \begin{macro}{\forwardAnimeBtn}
+% The command \cs{animeBld} increments \texttt{ocSeq}, and names
+% the layer so that the JS can run through the layers in an orderly way.
+%
+% \cs{DeclareAnime} takes three arguments, the anime base name, the speed at which
+% you wish the anime to be played, and the number of frames of this animation. It
+% saves these three parameters in macros, and creates \cs{animBldName}, which is used
+% in the creation of the anime. See example file \texttt{aebpro\_ex4.tex}.
+% \begin{itemize}
+% \item \texttt{\#1}: This is an optional parameter for changing the appearance
+% of the button, See the \textsf{eforms} package documentation.
+% \item \texttt{\#2}: width of the button
+% \item \texttt{\#3}: height of the button
+% \end{itemize}
+% \begin{macrocode}
+\newcommand{\backAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings3}\uCA{FEFF00C5}\TU{Reverse}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersBackward(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnBack}{#2}{#3}%
+}
+\newcommand{\clearAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings}\CA{n}\TU{Clear}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersClear(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnClear}{#2}{#3}%
+}
+\newcommand{\forwardAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings3}\uCA{FEFF00C6}\TU{Graph It!}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersForward(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnForward}{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Here is a simple example if anime, using the above commands. The code
+% below uses the \textsf{pstricks-add} and \textsf{fp} packages.
+%\begin{verbatim}
+%\begin{center}
+%\DeclareAnime{sinegraph}{10}{40}
+%\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+%\psset{llx=-12pt,lly=-12pt,urx=12pt,ury=12pt}
+%\begin{psgraph*}[arrows=->](0,0)(-.5,-1.5)(6.5,1.5){164pt}{70pt}
+% \psset{algebraic=true}%
+% \rput(4,1){$y=\sin(x)$}
+% \FPdiv{\myDelta}{\psPiTwo}{\nFrames}%
+% \def\xi{0}%
+% \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\thisframe}
+%\end{psgraph*}
+%
+%\backAnimeBtn{24bp}{12bp}\kern1bp\clearAnimeBtn{24bp}{12bp}\kern1bp
+%\forwardAnimeBtn{24bp}{12bp}
+%\end{center}
+%\end{verbatim}
+% \subsubsection{JavaScript Support}
+% \begin{macrocode}
+\begin{insDLJS}[_animeLayers]{animelayers}
+ {AeB Pro: JS in Support of Anime}
+var _animeLayers = true;
+var aebAnimeTimeOutF = new Object();
+aebAnimeTimeOutF.running=false;
+var aebAnimeTimeOutB = new Object();
+aebAnimeTimeOutB.running=false;
+var aebAnimeTimeOutC = new Object();
+function aebAnimeLayersForward(animSpeed,nFrames,baseName)
+{
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutF = app.setInterval("aebAnimeTimeOutF.count++;"
+ + "if (aebAnimeTimeOutF.count > "
+ + nFrames + " || !aebAnimeTimeOutF.running )"
+ +" app.clearInterval(aebAnimeTimeOutF);\r"
+ + "else { if (aebAnimeTimeOutF.count == 1 )"
+ +" getxBld('"+baseName+"\#1').state=true;\t"
+ + "else { getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutF.count-1)).state=false;\t"
+ + "getxBld('"+baseName+"\#'"
+ + "+aebAnimeTimeOutF.count).state=true;}}", timeinterval);
+ aebAnimeTimeOutF.running = true;
+ aebAnimeTimeOutF.start = 1;
+ aebAnimeTimeOutF.count=0;
+}
+function aebAnimeLayersBackward(animSpeed,nFrames,baseName)
+{
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutB = app.setInterval("aebAnimeTimeOutB.count++;\r"
+ + "if (aebAnimeTimeOutB.count > "+nFrames
+ +"|| !aebAnimeTimeOutB.running )"
+ +" app.clearInterval(aebAnimeTimeOutB);\r"
+ + "else { if (aebAnimeTimeOutB.count == "
+ +nFrames+") getxBld('"+baseName+"\#1').state=false;\r"
+ + "else { getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutB.start-%
+aebAnimeTimeOutB.count+1)).state=false;\r"
+ + "getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutB.start-%
+aebAnimeTimeOutB.count)).state=true;}}",
+ timeinterval);
+ aebAnimeTimeOutB.running = true;
+ aebAnimeTimeOutB.start = nFrames;
+ aebAnimeTimeOutB.count=0;
+}
+function aebAnimeLayersClear(animSpeed,nFrames,baseName)
+{
+ aebAnimeTimeOutF.running = false;
+ aebAnimeTimeOutB.running = false;
+ clearFrames = app.setTimeOut(
+ "hideAllFrames("+nFrames+",\""+baseName+"\")",animSpeed);
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutC = app.setInterval("aebAnimeTimeOutC.count++;\r"
+ + "if (aebAnimeTimeOutC.count >= "+nFrames
+ +") app.clearInterval(aebAnimeTimeOutC);\r"
+ + "else { getxBld('"+baseName+"\#'"
+ +"+(aebAnimeTimeOutC.start-aebAnimeTimeOutC.count)).state=false;}",
+ timeinterval);
+ aebAnimeTimeOutC.start = nFrames;
+ aebAnimeTimeOutC.count=0;
+}
+function hideAllFrames(n, baseName)
+{
+ for ( var i=1; i <= n ; i++ )
+ getxBld(baseName+"\#"+i).state=false;
+}
+\end{insDLJS}
+% \end{macrocode}
+% \begin{macrocode}
+% End of the layers segment
+%</aeblayers>
+%<*aebpro>
+% \end{macrocode}
+%
+% \section{Initial View}
+% Supported preferences include \texttt{HideToolbar}, \texttt{HideMenubar}, \texttt{FitWindow},
+% \texttt{Center\-Window}, \texttt{DisplayDocTitle},
+% \texttt{NonFullScreenPageMode} (\texttt{UseNone}, \texttt{UseOutlines}, \texttt{UseThumbs},
+% \texttt{UseOC}, \texttt{UseAttachments})
+%
+% \subsection{Window Options}
+%
+% The keys recognized for the windows options are \texttt{fit}\IndexKey{fit},
+% \texttt{center}\IndexKey{center}, \texttt{fullscreen}\IndexKey{fullscreen},
+% and \texttt{showtitle}\IndexKey{showtitle}.
+% \begin{macrocode}
+\@tfor\aeb@windowopts:={{fit}{FitWindow}}{{center}{CenterWindow}}%
+ {{fullscreen}{FullScreen}}{{showtitle}{DisplayDocTitle}}\do
+{%
+ \expandafter\getargsii\aeb@windowopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{aebWindowOpts}{\aeb@argi}[true]{%
+ \noexpand\def\csname aeb@windowopts\aeb@argii\endcsname{%
+ /\aeb@argii\space##1}%
+ }%
+ }\temp@expand@def
+ \csarg\let{aeb@windowopts\aeb@argii}\@empty
+}
+% \end{macrocode}
+% \begin{macro}{\setWindowOptions}
+% Set the User Window options on the Initial View tab of the Document Properties dialog box.
+% \begin{macrocode}
+\newcommand{\setWindowOptions}[1]{\cxkvsetkeys{aebWindowOpts}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \subsection{User Interface Options}
+% Key recognized for the use interface options are \texttt{hidetoolbar}\IndexKey{hidetoolbar},
+% \texttt{hidemenubar}\IndexKey{hidemenubar}, and \texttt{hidewindowui}\IndexKey{hidewindowui}.
+% \begin{macrocode}
+\@tfor\aeb@uiopts:={{hidetoolbar}{HideToolbar}}
+ {{hidemenubar}{HideMenubar}}{{hidewindowui}{HideWindowUI}}\do{%
+ \expandafter\getargsii\aeb@uiopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{aebUIOpts}{\aeb@argi}[true]%
+ {%
+ \noexpand\edef\csname aeb@uiopts\aeb@argii\endcsname{%
+ /\aeb@argii\space##1}%
+ }%
+ }\temp@expand@def
+ \csarg\let{aeb@uiopts\aeb@argii}\@empty
+}
+% \end{macrocode}
+% \begin{macro}{\setUIOptions}
+% Set the User Interface options on the Initial View tab of the Document Properties dialog box.
+% \begin{macrocode}
+\newcommand{\setUIOptions}[1]{\cxkvsetkeys{aebUIOpts}{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Layout and Magnification}
+%
+% \subsubsection{Navigation Tab (Page Mode)}
+% Supported values for the \texttt{navitab}\IndexKey{navitab} key are:
+%\begin{itemize}
+% \item \texttt{UseNone}: Page Only
+% \item \texttt{UseOutlines}: Bookmarks Panel and Page
+% \item \texttt{UseThumbs}: Pages Panel and Page
+% \item \texttt{FullScreen}: Fullscreen mode
+% \item \texttt{UseOC}: Layers Panel and Page
+% \item \texttt{UseAttachments}: Attachments Panel and Page
+%\end{itemize}
+% \begin{macrocode}
+\define@choicekey+{aebLayoutMag}{navitab}{UseNone,UseOutlines,%
+ UseThumbs,FullScreen,UseOC,UseAttachments}[UseNone]{%
+ \def\aeb@layoutMagNaviTab{#1}%
+}{\PackageWarning{aeb}{Bad choice for PageLayout, permissible values
+ are UseNone, UseOutlines, UseThumbs, FullScreen,%
+ UseOC, UseAttachments. Try again}}
+\let\aeb@layoutMagNaviTab\@empty
+% \end{macrocode}
+% \subsubsection{Page Layout}
+% Supported value for the \texttt{pagelayout}\IndexKey{pagelayout} key are:
+%\begin{itemize}
+% \item \texttt{SinglePage}: Single page
+% \item \texttt{OneColumn}: Single page continuous
+% \item \texttt{TwoPageLeft}: Two-Up (Facing)
+% \item \texttt{TwoColumnLeft}: Two-Up Continuous (Facing)
+% \item \texttt{TwoPageRight}: Two-Up (Cover Page)
+% \item \texttt{TwoColumnRight}: Two-Up Continuous (Cover Page)
+%\end{itemize}
+% \begin{macrocode}
+\define@choicekey+{aebLayoutMag}{pagelayout}{SinglePage,OneColumn,%
+ TwoColumnLeft,TwoColumnRight,TwoPageLeft,TwoPageRight}[SinglePage]{%
+ \def\aeb@layoutMagPageLayout{#1}%
+}{\PackageWarning{aeb}{Bad choice for PageLayout, permissible values
+ are SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight,
+ TwoPageLeft,TwoPageRight. Try again}}
+\let\aeb@layoutMagPageLayout\@empty
+% \end{macrocode}
+% \subsubsection{Magnification}
+% Supported values for the \texttt{mag}\IndexKey{mag} key are:
+%\begin{verbatim}
+% Actual Size <</D[1 0 R/XYZ -32768 -32768 1.0]/S/GoTo>>
+% Fit Page <</D[1 0 R/Fit]/S/GoTo>>
+% Fit Width <</D[21 0 R/FitH -32768]/S/GoTo>>
+% Fit Height <</D[1 0 R/FitV -32768]/S/GoTo>>
+% Fit Visible <</D[21 0 R/FitBH -32768]/S/GoTo>>
+%\end{verbatim}
+% \begin{macrocode}
+\define@choicekey+{aebLayoutMag}{mag}[\val\nr]%
+ {ActualSize,FitPage,FitWidth,FitHeight,FitVisible}[FitPage]%
+{%
+ \ifcase\nr\relax
+ \edef\aeb@layoutMagMag{\dl@actualsize}\or
+ \def\aeb@layoutMagMag{\dl@fitpage}\or
+ \def\aeb@layoutMagMag{\dl@fitwidth}\or
+ \def\aeb@layoutMagMag{\dl@fitheight}\or
+ \def\aeb@layoutMagMag{\dl@fitvisible}\fi
+% \end{macrocode}
+%\changes{v2.2}{2016/07/26}{Change division from postscript operation to a tex calculation}
+% Change division from postscript operation to a tex calculation to support the \texttt{useacrobat} option.
+% \begin{macrocode}
+}{\setlength\@tempdima{1pt*\ratio{\val pt}{100pt}}%
+ \edef\aeb@layoutMagMag{\dl@mag{\strip@pt\@tempdima}}}
+\let\aeb@layoutMagMag\@empty
+% \end{macrocode}
+% \subsubsection{Open to page}
+% The \texttt{openatpage}\IndexKey{openatpage} key takes a page number as its value.
+% \begin{macrocode}
+\define@key{aebLayoutMag}{openatpage}[1]{\def\aeb@openatpageChoice{#1}%
+ \ifpdfmarkup\def\aeb@layoutMagPage{Page#1}\else
+ \def\aeb@layoutMagPage{#1}\fi}
+\let\aeb@openatpageChoice\@empty
+\let\aeb@layoutMagPage\@empty
+% \end{macrocode}
+% \begin{macro}{\setLayoutMag}
+% Set the Layout and Magnifications options on the Initial View tab of the Document Properties dialog box.
+% \begin{macrocode}
+\newcommand{\setLayoutMag}[1]{\setkeys{aebLayoutMag}{openatpage=1}%
+ \cxkvsetkeys{aebLayoutMag}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\DeclareInitView}
+% This command is the ultimate holder of the Initial View data. It has three keys
+% \texttt{layoutmag}\IndexKey{layoutmag},
+% \texttt{windowoptions}\IndexKey{windowoptions} and \texttt{uioptions}\IndexKey{uioptions}. The
+% values for each of these three are key values for the commands defined above:
+% \cs{setLayoutMag}, \cs{setWindowOptions} and \cs{setUIOptions}.
+% \begin{macrocode}
+\define@key{aebDeclareInitView}{layoutmag}
+ {\def\aebDeclareInitView@layoutmag{#1}}
+\let\aebDeclareInitView@layoutmag\@empty
+\define@key{aebDeclareInitView}{windowoptions}
+ {\def\aebDeclareInitView@windowoptions{#1}}
+\let\aebDeclareInitView@windowoptions\@empty
+\define@key{aebDeclareInitView}{uioptions}
+ {\def\aebDeclareInitView@uioptions{#1}}
+\let\aebDeclareInitView@uioptions\@empty
+\newcommand{\DeclareInitView}[1]{%
+ \setkeys{aebDeclareInitView}{#1}%
+ \edef\temp@expand@sets{%
+ \noexpand\setLayoutMag{\aebDeclareInitView@layoutmag}%
+ \noexpand\setWindowOptions{\aebDeclareInitView@windowoptions}%
+ \noexpand\setUIOptions{\aebDeclareInitView@uioptions}%
+ }\temp@expand@sets
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\taggedPDF}
+% Added 07/08/09 to support tagged pdf, principally tabbing using structure. Strictly
+% speaking, the document need not be marked as tagged.
+% \begin{macrocode}
+\providecommand{\taggedPDF}{\def\aeb@TaggedPDF{true}}
+\let\aeb@TaggedPDF\@empty
+\@onlypreamble\taggedPDF
+% \end{macrocode}
+% \end{macro}
+% Additional Open action
+% \begin{macro}{\additionalOpenAction}
+% Document open action, this command is renamed to \cmd{\addToDocOpen} and enhanced.
+% \begin{macro}{\addToDocOpen}
+% \changes{v1.7}{2015/06/11}{Renamed \cmd{\additionalOpenAction} to
+% \cmd{\addToDocOpen}, this version is additive.}
+% This command enhances \cmd{\additionalOpenAction}. This version can be used
+% several times in the preamble with possibly different action types.
+% Use the command \cmd{\addToDocOpen} to include additional action to be performed when the
+% document opens. This is different from the actions that may be performed when the first page
+% is opened. In fact, \emph{this action is independent of what what page is initially opened}.
+% \begin{macro}{\requiresVersion}
+%\changes{v0.8h}{2008/07/19}
+%{
+% Added an optional argument to \cs{requiresVersion}, to give the option
+% of only warning the user that a certain version is required; no exiting
+% of the document is forced on the user.
+%}
+% \cmd{\requiresVersion} can be used to put a version condition on viewing the document. \cs{requiresVersion}
+% uses \cmd{\addToDocOpen}. If you want to combine several actions, including a version requirement
+% you''ll have to use \cmd{\addToDocOpen}. Usage:
+%\begin{verbatim}
+% \requiresVersion{7}
+%\end{verbatim}
+% \begin{macro}{\alternateDocumentURL}
+% An URL to direct the user to, it is used by \cmd{requiresVersion} when the version requirement
+% is not met.
+% \begin{macro}{\requiredVersionMsg}
+% \cs{requireVersionMsg} is the message that is displayed when the version condition is not met.
+% \begin{macro}{\requiredVersionMsgRedirect}
+% An redirect message when the version requirement fails, and the document is in a browser.
+% \begin{macro}{\afterRequirementPassedJS}
+% A hook into the end of the \cmd{\requiresVersion} command for additional JS to be
+% executed.
+% \begin{macrocode}
+\let\aeb@addOpenAction\@empty
+\let\aeb@addActionCode\@empty
+\let\aeb@addOpenActionArg\@empty
+\def\AEB@psMrk{[\space}
+\let\aebpopentoks\@empty
+\let\aebpFA\aebp@NO
+\def\aebp@rightDelimiters{}
+% \end{macrocode}
+% \begin{macro}{\addToDocOpen}
+% The argument of \cmd{\addToDocOpen} is an action, usually
+% JavaScript or named.
+%\begin{verbatim}
+% \addToDocOpen{/S/GoTo/D[\Page{2}/Fit]}
+% \addToDocOpen{\JS{console.println("Public: Open it baby!");}}
+%\end{verbatim}
+% As of 2015/06/15, the original version of \cs{addToDocOpen} was moved to
+% \textsf{insdljs} (v2.1). This redefinition extends that capability slightly
+% by incorporating into it the \cs{dev@addToDocOpen} command, see definition
+% below.
+% \changes{v1.9}{2016/03/03}{Redefine \string\cs{addtoDocOpen} only for pdfmarkup}
+% \par\medskip\noindent
+% The \cmd{\addToDocOpen} command is the major interface
+% between the document author for inserting open actions (not first page actions).
+% At least in the case of \textsf{pdflatex}, \textsf{hyperref} has the potential of
+% overwriting the user's choices with its own choice. We turn off the open page
+% action of \textsf{hyperref} by setting the following two commands to empty.
+% \begin{macrocode}
+\let\@pdfstartview\@empty
+\let\@pdfstartpage\@empty
+% \end{macrocode}
+% Now for the definition of \cmd\addToDocOpen.
+% \changes{v2.1}{2016/05/15}{Finalized changes to \string\cs{addToDocOpen} for
+% non-Distiller workflows.}
+% \begin{macrocode}
+\renewcommand{\addToDocOpen}[1]{%
+% \end{macrocode}
+% The \cs{aebpFA} flag indicates whether this command has been used. The first it is
+% used, we set things up.
+% \begin{macrocode}
+ \ifx\aebpFA\aebp@NO
+ \gdef\aeb@addOpenActionArg{#1}%
+ \g@addto@macro\aebpopentoks{#1}%
+ \def\aeb@addActionCode{\bgroup\makeJSspecials\dl@preProcDefns
+\ifpdfmarkup
+ \literalps@out{\AEB@psMrk/_objdef {pubAddToDocOpen}
+ /type/dict /OBJ pdfmark^^J%
+ \AEB@psMrk{pubAddToDocOpen}
+ << \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters
+ >> /PUT pdfmark}%
+ \gdef\pubAddToDocOpen{{pubAddToDocOpen}}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\else\ifpdf
+ \immediate\pdfobj{<< \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters
+ >>}\xdef\pubAddToDocOpen{\the\pdflastobj\space 0 R}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\else\ifxetex
+ \immediate\@pdfm@mark{obj @pubAddToDocOpen << \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters >> }%
+ \gdef\pubAddToDocOpen{@pubAddToDocOpen}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\fi\fi\fi\egroup}%
+% \end{macrocode}
+% Set the \cs{aebpFA} flag to \cs{aebp@YES} to indicate this command has been executed
+% at least once.
+% \begin{macrocode}
+ \global\let\aebpFA\aebp@YES
+ \else
+% \end{macrocode}
+% If the document author uses this command a second time, the code goes to here.
+% \begin{macrocode}
+ \edef\aebp@dljstmp{\aebp@rightDelimiters}%
+ \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
+ \g@addto@macro\aebpopentoks{/Next << #1 }%
+ \fi
+}
+\let\additionalOpenAction\addToDocOpen
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dev@addToDocOpen}
+% \changes{v1.7}{2015/06/07}{Added private additional action}
+% The \cs{dev@addToDocOpen} is similar to
+% \cs{addToDocOpen} but is meant for package developers. These actions are executed
+% \emph{after the actions} of \cs{addToDocOpen}.
+% \changes{v2.1}{2016/05/15}{Extended \string\cs{dev@addToDocOpen} to include
+% non-Distiller workflows.}
+% \begin{macrocode}
+\let\dev@addOpenAction\@empty
+\let\dev@addOpenActionArg\@empty
+\let\dev@addActionCode\@empty
+\let\aebpFAP\aebp@NO
+\let\aebpopentoksP\@empty
+\def\aebp@rightDelimitersP{}
+\newcommand{\dev@addToDocOpen}[1]{%
+% \end{macrocode}
+% The \cs{aebpFAP} flag indicates whether this command has been used. The first it is
+% used, we set things up.
+% \begin{macrocode}
+ \ifx\aebpFAP\aebp@NO
+ \gdef\dev@addOpenActionArg{#1}%
+ \g@addto@macro\aebpopentoksP{#1}%
+ \def\dev@addActionCode{\bgroup\makeJSspecials\dl@preProcDefns
+\ifpdfmarkup
+ \literalps@out{\AEB@psMrk/_objdef {privAddDocOpen}
+ /type/dict /OBJ pdfmark^^J%
+ \AEB@psMrk{privAddDocOpen} << \aebpopentoksP
+ \aebp@rightDelimitersP\space>> /PUT pdfmark}%
+ \gdef\privAddDocOpen{{privAddDocOpen}}%
+ \gdef\dev@addOpenAction{/Next {privAddDocOpen}}%
+\else\ifpdf
+ \immediate\pdfobj{<< \aebpopentoksP
+ \aebp@rightDelimitersP\space>>}%
+ \xdef\privAddDocOpen{\the\pdflastobj\space 0 R}%
+ \xdef\dev@addOpenAction{/Next \privAddDocOpen}%
+\else\ifxetex
+ \immediate\@pdfm@mark{obj @privAddToDocOpen << \aebpopentoksP
+ \aebp@rightDelimitersP\space>> }%
+ \gdef\privAddDocOpen{@privAddToDocOpen}%
+ \gdef\dev@addOpenAction{/Next \privAddDocOpen}%
+\fi\fi\fi\egroup}%
+% \end{macrocode}
+% Set the \cs{aebpFAP} flag to \cs{aebp@YES} to indicate this command has been executed
+% at least once.
+% \begin{macrocode}
+ \global\let\aebpFAP\aebp@YES
+% \end{macrocode}
+% If the package developer uses this command a second time, the code goes to here.
+% \begin{macrocode}
+ \else
+ \edef\aebp@dljstmpP{\aebp@rightDelimitersP}%
+ \xdef\aebp@rightDelimitersP{\aebp@dljstmpP >> }%
+ \g@addto@macro\aebpopentoksP{/Next << #1 }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\def\aebp@warnonly{warnonly}
+\newcommand{\aebp@app@title}{AcroTeX Message}
+% \end{macrocode}
+%\begin{verbatim}
+% #1 = warnonly or empty
+% #2 = version number
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\requiresVersion}[2][]{\def\aebp@argi{#1}%
+ \def\requiredVersionNumber{#2}\dev@addToDocOpen{\JS{%
+\ifx\aebp@argi\aebp@warnonly
+ var warnOnly=true;
+\else
+ var warnOnly=false;
+\fi
+% \end{macrocode}
+% (2015/10/14) Inserted parentheses to prevent dvips from breaking lines within a string.
+% \changes{v1.7n}{2015/10/14}{Inserted parentheses to prevent dvips from breaking lines within a string.}
+% \begin{macrocode}
+ var reqVerMsgC=("\aeb@requiredVersionMsg\space")
+ + ((warnOnly) ? ("\aeb@reqVerMsgW") : ("\aeb@reqVerMsgC"));
+ var reqVerMsgR=("\aeb@requiredVersionMsgRedirect\space")
+ + ((warnOnly) ? ("\aeb@reqVerMsgW") : ("\aeb@reqVerMsgR"));
+ if( app.viewerVersion < #2 ) {
+ var viewerPassedReq=false;
+ try {
+ if (this.external) {
+ app.alert({cTitle:"\aebp@app@title", cMsg: reqVerMsgR});
+ if (!warnOnly) {
+ if (app.viewerVersion >= 7.0)
+ app.launchURL("\aebAlternateDocumentURL");
+ else
+ this.getURL("\aebAlternateDocumentURL",false);
+ }
+ } else {
+ app.alert({cTitle:"\aebp@app@title", cMsg: reqVerMsgC});
+ if (!warnOnly) this.closeDoc(true);
+ }
+ } catch(e) {}
+ } else {
+ var viewerPassedReq=true;
+ \aeb@ViewerPassedRequirementJS
+ }
+}}}
+\def\requiredVersionNumber{7}
+\newcommand{\alternateDocumentURL}[1]{\def\aebAlternateDocumentURL{#1}}
+\alternateDocumentURL{http://www.acrotex.net/}
+\newcommand{\requiredVersionMsg}[1]{\def\aeb@requiredVersionMsg{#1}}
+\requiredVersionMsg{This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.}
+\newcommand{\requiredVersionResult}[3]{\def\aeb@reqVerMsgC{#1}%
+ \def\aeb@reqVerMsgR{#2}\def\aeb@reqVerMsgW{#3}}
+\requiredVersionResult{The document is now closing.}
+ {Redirecting browser to an alternate page.}
+ {Some features of this document may not work properly.}
+\newcommand{\requiredVersionMsgRedirect}[1]{%
+ \def\aeb@requiredVersionMsgRedirect{#1}}
+\requiredVersionMsgRedirect{%
+ This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.}
+\newcommand{\afterRequirementPassedJS}[1]{%
+ \def\aeb@ViewerPassedRequirementJS{#1}}
+\let\aeb@ViewerPassedRequirementJS\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% Now let's put it all together. The two flags, \cs{aebpFA} and \cs{aebpFAP} indicate
+% whether the commands \cs{addToDocOpen} and \cs{dev@addToDocOpen} were used.
+% \begin{macrocode}
+\def\aeb@SetCatalog{%
+ \ifx\aebpFA\aebp@NO\addToDocOpen{\JS{;}}\fi
+ \ifx\aebpFAP\aebp@YES\dev@addActionCode\fi
+ \aeb@addActionCode
+% \end{macrocode}
+% The viewer preferences.
+% \begin{macrocode}
+\def\aeb@CatEntry{/ViewerPreferences<<%
+ \ifx\aeb@windowoptsFitWindow\@empty\else
+ \aeb@windowoptsFitWindow\fi
+ \ifx\aeb@windowoptsCenterWindow\@empty\else
+ \aeb@windowoptsCenterWindow\fi
+ \ifx\aeb@windowoptsDisplayDocTitle\@empty\else
+ \aeb@windowoptsDisplayDocTitle\fi
+ \ifx\aeb@uioptsHideToolbar\@empty\else
+ \aeb@uioptsHideToolbar\fi
+ \ifx\aeb@uioptsHideMenubar\@empty\else
+ \aeb@uioptsHideMenubar\fi
+ \ifx\aeb@uioptsHideWindowUI\@empty\else
+ \aeb@uioptsHideWindowUI\fi
+ \ifx\aeb@layoutMagNaviTab\@empty\else
+ /NonFullScreenPageMode/\aeb@layoutMagNaviTab\fi
+>>%
+ \ifx\aeb@TaggedPDF\@empty\else
+ /MarkInfo<</Marked true>>\fi
+ \ifx\aeb@layoutMagPageLayout\@empty\else
+ /PageLayout/\aeb@layoutMagPageLayout\fi
+ \ifx\aeb@windowoptsFullScreen\@empty
+ \ifx\aeb@layoutMagNaviTab\@empty\else
+ /PageMode/\aeb@layoutMagNaviTab\fi
+ \else/PageMode/FullScreen\fi
+% \end{macrocode}
+% The open action key (\textsf{\textbf{OpenAction}}) is implemented any of three ways,
+% depending on the driver. The command \cs{pubAddToDocOpen} is an indirect reference
+% to additional open actions; this is defined in \cs{addToDocOpen}.
+%\changes{v1.9}{2016/03/03}{Removing pdfmark code for non-Distiller workflow}
+% \begin{macrocode}
+\ifpdfmarkup
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction<</D[{Page1}\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[{\aeb@layoutMagPage}/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<</D[{\aeb@layoutMagPage}\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\else\ifpdf
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction <<%
+ /D[\pdfpageref1\space\space 0 R\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[\expandafter
+ \pdfpageref\aeb@layoutMagPage\space\space 0 R/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<</D[\expandafter\pdfpageref
+ \aeb@layoutMagPage\space\space 0 R\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\else\ifxetex
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction<</D[@page1 \aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[@page\aeb@layoutMagPage\space/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<<%
+ /D[@page\aeb@layoutMagPage\space\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\fi\fi\fi}%
+% \end{macrocode}
+% Load \cs{aeb@SetCatalog} only if a Distiller user.
+%\changes{v1.9}{2016/03/03}{Removing pdfmark code for non-Distiller workflow}
+%\changes{v2.0}{2016/05/08}{Attempt to extend package to include more features
+%for pdftex and xetex. Modified \string\cs{aeb@SetCatalog}.}
+% \begin{macrocode}
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{Catalog}
+ <<\aeb@CatEntry>> /PUT pdfmark}\else
+ \ifpdf\pdfcatalog{\aeb@CatEntry}\else
+ \ifxetex\immediate\@pdfm@mark{put @catalog <<\aeb@CatEntry>>}%
+ \fi\fi\fi
+}
+\AtBeginDocument{\aeb@SetCatalog}
+% \end{macrocode}
+%
+% \section{Fullscreen and Transitions}
+%
+% \subsection{\texorpdfstring{\cs{setDefaultFS}}{\textbackslash setDefaultFS}}
+% \begin{macro}{\setDefaultFS}
+% Use \cs{setDefaultFS} to set the defaults for fullscreen
+% mode in the Adobe Reader or Acrobat.
+% \begin{macrocode}
+\newcommand{\setDefaultFS}[1]
+{%
+ \setkeys{aebDefFS}{Trans=Replace}\setkeys{aebDefFS}{#1}%
+ \makeatletter
+ \InputIfFileExists{fsprodef.js}{}{\PackageWarning{aeb_pro}
+ {Cannot find fsprodef.js, please run aeb_pro.ins again}}
+ \makeatother
+}
+\@onlypreamble\setDefaultFS
+% \end{macrocode}
+% \end{macro}
+% Definitions of the values of the \texttt{Trans}\IndexKey{Trans} key for
+% supported transitions; these are set using the command
+% \cs{setDefaultFS}.
+%
+% \begin{macrocode}
+\def\aeb@NoTransition{NoTransition}
+\define@choicekey+{aebDefFS}{Trans}
+{NoTransition,UncoverLeft,UncoverRight,UncoverDown,UncoverUp,%
+UncoverLeftDown,UncoverLeftUp,UncoverRightDown,UncoverRightUp,%
+CoverLeft,CoverRight,CoverDown,CoverUp,CoverLeftDown,CoverLeftUp,%
+CoverRightDown,CoverRightUp,PushLeft,PushRight,PushDown,PushUp,%
+PushLeftDown,PushLeftUp,PushRightDown,PushRightUp,FlyInRight,%
+FlyInLeft,FlyInDown,FlyInUp,FlyOutRight,FlyOutLeft,FlyOutDown,%
+FlyOutUp,FlyIn,FlyOut,Blend,Fade,Random,Dissolve,%
+GlitterRight,GlitterDown,GlitterRightDown,BoxIn,BoxOut,%
+BlindsHorizontal,BlindsVertical,SplitHorizontalIn,%
+SplitHorizontalOut,SplitVerticalIn,SplitVerticalOut,WipeLeft,%
+WipeRight,WipeDown,WipeUp,WipeLeftDown,WipeLeftUp,%
+WipeRightDown,WipeRightUp,Replace,ZoomInDown,ZoomInLeft,%
+ZoomInLeftDown,ZoomInLeftUp,ZoomInRight,ZoomInRightDown,%
+ZoomInRightUp,ZoomInUp,ZoomOutDown,ZoomOutLeft,ZoomOutLeftDown,%
+ZoomOutLeftUp,ZoomOutRight,ZoomOutRightDown,ZoomOutRightUp,%
+ZoomOutUp,CombHorizontal,CombVertical}[Replace]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fsTran\@empty\else
+ \ifx\aeb@arg\aeb@NoTransition
+ \def\aeb@fsTran{app.fs.defaultTransition = "";^^J}
+ \else
+ \def\aeb@fsTran{app.fs.defaultTransition = "#1";^^J}\fi\fi}
+{\PackageWarning{aeb}{Bad choice, try again. Meanwhile,
+ will use the default, Replace}%
+ \def\aeb@fsTran{app.fs.defaultTransition = "Replace";^^J}}
+% \end{macrocode}
+% The \texttt{bgColor}\IndexKey{bgColor} key.
+% \begin{macrocode}
+\define@key{aebDefFS}{bgColor}[]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fsBGColor\@empty\else
+ \def\aeb@fsBGColor{app.fs.backgroundColor = #1;^^J}\fi}
+\let\aeb@fsBGColor\@empty
+% \end{macrocode}
+% The \texttt{timeDelay}\IndexKey{timeDelay} key.
+% \begin{macrocode}
+\define@key{aebDefFS}{timeDelay}[]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fstimeDelay\@empty\else
+ \def\aeb@fstimeDelay{app.fs.timeDelay = #1;^^J}\fi}
+\let\aeb@fstimeDelay\@empty
+% \end{macrocode}
+% The \texttt{loop}\IndexKey{loop} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{loop}[true]{%
+ \def\aeb@fsLoop{app.fs.loop = #1;^^J}}
+\let\aeb@fsLoop\@empty
+% \end{macrocode}
+% The \texttt{cursor}\IndexKey{cursor} key.
+% \begin{macrocode}
+\define@choicekey+{aebDefFS}{cursor}{hidden,delay,visible}{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fscursor\@empty\else
+ \def\aeb@fscursor{app.fs.cursor = cursor.#1;^^J}\fi
+}{\PackageWarning{aeb}{Bad choice for cursor, permissible values
+ are hidden, delay and visible. Try again}}
+\let\aeb@fscursor\@empty
+% \end{macrocode}
+% The \texttt{escape}\IndexKey{escape} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{escape}[true]{%
+ \def\aeb@fsEscape{app.fs.escapeExits = #1;^^J}}
+\let\aeb@fsEscape\@empty
+% \end{macrocode}
+% The \texttt{clickAdv}\IndexKey{clickAdv} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{clickAdv}[true]{%
+ \def\aeb@fsclickAdv{app.fs.clickAdvances = #1;^^J}}
+\let\aeb@fsclickAdv\@empty
+% \end{macrocode}
+% The \texttt{fullscreen}\IndexKey{fullscreen} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{fullscreen}[true]{%
+ \def\aeb@windowoptsFullScreen{true}%
+}
+\let\aeb@fsFS\@empty
+% \end{macrocode}
+% The \texttt{useTimer}\IndexKey{useTimer} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{useTimer}[true]{%
+ \def\aeb@fsuseTimer{app.fs.useTimer = #1;^^J}}
+\let\aeb@fsuseTimer\@empty
+% \end{macrocode}
+% The \texttt{usePageTiming}\IndexKey{usePageTiming} key.
+% \begin{macrocode}
+\define@boolkey{aebDefFS}{usePageTiming}[true]{%
+ \def\aeb@fsusePageTiming{app.fs.usePageTiming = #1;^^J}}
+\let\aeb@fsusePageTiming\@empty
+% \end{macrocode}
+% \subsection{\texorpdfstring{\cs{setPageTransition}}{\textbackslash setPageTransition}}
+%
+% \begin{macro}{\setPageTransition}
+% By setting the \texttt{aebTrans} family of keys, you can change the transition
+% effect of the next slide.
+% \changes{v2.1}{2016/05/15}{Finalized changes in \string\cs{setPageTransition} for
+% non-Distiller workflows.}
+% \begin{macrocode}
+\def\aebp@PageTransCnt{0}
+\def\aebp@Step@PageTransCnt{{\count0=\aebp@PageTransCnt\relax
+ \advance\count0by1\relax
+ \xdef\aebp@PageTransCnt{\the\count0 }}}
+\newcommand{\setPageTransition}[1]{%
+ \begingroup
+ \aebp@Step@PageTransCnt
+ \setkeys{aebTrans}{TransDur,Speed,#1}%
+ \edef\aeb@pagetranschoices{\aeb@Page@Dur
+ /Trans <<\aeb@Trans@Dur\aeb@TranChoice>>}%
+ \csarg{\xdef}{aeb@pagetransCodeL\aebp@PageTransCnt}{%
+ \ifpdfmarkup
+ \noexpand\literalps@out{\AEB@psMrk{ThisPage} <<
+ \aeb@pagetranschoices\space>> /PUT pdfmark}%
+ \else\ifpdf
+% \end{macrocode}
+% There may be open / close page actions already defined, so we combine
+% previous page actions with current page actions. This seems necessary
+% only for \textsf{pdftex}.
+% \begin{macrocode}
+ \noexpand\global\noexpand\pdfpageattr=\noexpand\expandafter
+ {\noexpand\the\noexpand\pdfpageattr\aeb@pagetranschoices}%
+ \else\ifxetex
+ \noexpand\immediate\noexpand\@pdfm@mark{put @thispage <<
+ \aeb@pagetranschoices\space >>}
+ \fi\fi\fi
+ }
+ \ifx\aeb@TranChoice\@empty\else
+ \csarg\xdef{aebpP@geTr@nsP@ge\arabic{page}}%
+ {\noexpand\@nameuse{aeb@pagetransCodeL\aebp@PageTransCnt}}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\setPageTransitionAt}
+% Set the transition for a particular page
+% \changes{v2.1}{2016/05/15}{Finalized changes in \string\cs{setPageTransitionAt} for
+% non-Distiller workflows.}
+% \begin{macrocode}
+\newcommand{\setPageTransitionAt}[2]{%
+ \begingroup
+ \aebp@Step@PageTransCnt
+ \setkeys{aebTrans}{#2}%
+ \edef\aeb@pagetranschoices{\aeb@Page@Dur
+ /Trans <<\aeb@Trans@Dur\aeb@TranChoice>>}%
+ \csarg{\xdef}{aeb@pagetransCode\aebp@PageTransCnt}{%
+ \ifpdfmarkup
+ \noexpand\literalps@out{\AEB@psMrk{ThisPage} <<
+ \aeb@pagetranschoices\space>> /PUT pdfmark}%
+ \else\ifpdf
+% \end{macrocode}
+% There may be open / close page actions already defined, so we combine
+% previous page actions with current page actions. This seems necessary
+% only for \textsf{pdftex}.
+% \begin{macrocode}
+ \noexpand\global\noexpand\pdfpageattr=\noexpand\expandafter
+ {\noexpand\the\noexpand\pdfpageattr\aeb@pagetranschoices}%
+ \else\ifxetex
+ \noexpand\immediate\noexpand\@pdfm@mark{put @thispage <<
+ \aeb@pagetranschoices\space>>}
+ \fi\fi\fi
+ }
+ \ifx\aeb@TranChoice\@empty\else
+ \expandafter\aebp@rse\expandafter{#1}%
+ \edef\shakeandbake{%
+ \noexpand\@for\noexpand\@mypage:=\the\aeb@parsetoks}%
+ \shakeandbake \do {%
+ \csarg\xdef{aebpP@geTr@nsP@ge\@mypage}%
+ {\noexpand\@nameuse{aeb@pagetransCode\aebp@PageTransCnt}}%
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% The values of the \texttt{Trans}\IndexKey{Trans} key. There are the 50 transitions effects as listed by
+% \texttt{app.fs.transitions} plus one more called
+% ``\texttt{NoTransition}''. The \texttt{pdfmark} code accurately
+% represents each of this options.
+% \begin{macrocode}
+\define@choicekey+{aebTrans}{Trans}
+{NoTransition,UncoverLeft,UncoverRight,UncoverDown,UncoverUp,%
+UncoverLeftDown,UncoverLeftUp,UncoverRightDown,UncoverRightUp,%
+CoverLeft,CoverRight,CoverDown,CoverUp,CoverLeftDown,CoverLeftUp,%
+CoverRightDown,CoverRightUp,PushLeft,PushRight,PushDown,PushUp,%
+PushLeftDown,PushLeftUp,PushRightDown,PushRightUp,FlyInRight,%
+FlyInLeft,FlyInDown,FlyInUp,FlyOutRight,FlyOutLeft,FlyOutDown,%
+FlyOutUp,FlyIn,FlyOut,Blend,Fade,Random,Dissolve,%
+GlitterRight,GlitterDown,GlitterRightDown,BoxIn,BoxOut,%
+BlindsHorizontal,BlindsVertical,SplitHorizontalIn,%
+SplitHorizontalOut,SplitVerticalIn,SplitVerticalOut,WipeLeft,%
+WipeRight,WipeDown,WipeUp,WipeLeftDown,WipeLeftUp,%
+WipeRightDown,WipeRightUp,Replace,ZoomInDown,ZoomInLeft,%
+ZoomInLeftDown,ZoomInLeftUp,ZoomInRight,ZoomInRightDown,%
+ZoomInRightUp,ZoomInUp,ZoomOutDown,ZoomOutLeft,ZoomOutLeftDown,%
+ZoomOutLeftUp,ZoomOutRight,ZoomOutRightDown,ZoomOutRightUp,%
+ZoomOutUp,CombHorizontal,CombVertical}[Replace]%
+ {\edef\aeb@TranChoice{\csname aeb@Trans@#1\endcsname}%
+}{\PackageWarning{aeb}{Bad choice, try again}}
+\let\aeb@TranChoice\@empty
+\define@key{aebTrans}{TransDur}[]{\def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@Trans@Dur\@empty\else\def\aeb@Trans@Dur{/D #1}\fi}
+\let\aeb@Trans@Dur\@empty
+% \end{macrocode}
+% Length\IndexKey{Speed} of duration of transition effect: \texttt{Slow}, \texttt{Medium}, \texttt{Fast}
+% \begin{macrocode}
+\define@choicekey+{aebTrans}{Speed}[\val\nr]%
+ {Slow,Medium,Fast}[Slow]{%dps/change 02/27/07
+ \ifcase\nr\relax
+ \let\aeb@Trans@Speed\@empty\or
+ \def\aeb@Trans@Speed{/D 0.666656}\or
+ \def\aeb@Trans@Speed{/D 0.333328}\fi
+}{\PackageWarning{aeb}{Bad choice for Speed, permissible values
+ are Slow, Medium and Fast. Try again}}
+\let\apb@apbTrans@Speed\@empty
+% \end{macrocode}
+% The page duration\IndexKey{PageDur} key
+% \begin{macrocode}
+\define@key{aebTrans}{PageDur}[]{\def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@Page@Dur\@empty\else\def\aeb@Page@Dur{/Dur #1}\fi}
+% \end{macrocode}
+% The code for the values of the \texttt{Trans} key
+% \begin{macrocode}
+\let\aeb@Page@Dur\@empty
+\def\aeb@Trans@NoTransition{}
+\def\aeb@Trans@SplitHorizontalIn{/Dm/H/M/I/S/Split}
+\def\aeb@Trans@SplitHorizontalOut{/Dm/H/M/O/S/Split}
+\def\aeb@Trans@SplitVerticalIn{/Dm/V/M/I/S/Split}
+\def\aeb@Trans@SplitVerticalOut{/Dm/V/M/O/S/Split}
+\def\aeb@Trans@BlindsHorizontal{/Dm/H/S/Blinds}
+\def\aeb@Trans@BlindsVertical{/Dm/V/S/Blinds}
+\def\aeb@Trans@BoxIn{/M/I/S/Box}
+\def\aeb@Trans@BoxOut{/M/O/S/Box}
+\def\aeb@Trans@WipeLeft{/Di 180/S/Wipe}
+\def\aeb@Trans@WipeRight{/Di 0/S/Wipe}
+\def\aeb@Trans@WipeDown{/Di 270/S/Wipe}
+\def\aeb@Trans@WipeUp{/Di 90/S/Wipe}
+\def\aeb@Trans@Dissolve{/S/Dissolve}
+\def\aeb@Trans@GlitterRight{/Di 0/S/Glitter}
+\def\aeb@Trans@GlitterDown{/Di 270/S/Glitter}
+\def\aeb@Trans@GlitterRightDown{/Di 315/S/Glitter}
+\def\aeb@Trans@Replace{/S/R}
+\def\aeb@Trans@FlyInRight{/Di 0/M/I/S/Fly}
+\def\aeb@Trans@FlyInLeft{/Di 180/M/I/S/Fly}
+\def\aeb@Trans@FlyInDown{/Di 270/M/I/S/Fly}
+\def\aeb@Trans@FlyInUp{/Di 90/M/I/S/Fly}
+\def\aeb@Trans@FlyOutRight{/Di 0/M/O/S/Fly}
+\def\aeb@Trans@FlyOutLeft{/Di 180/M/O/S/Fly}
+\def\aeb@Trans@FlyOutDown{/Di 270/M/O/S/Fly}
+\def\aeb@Trans@FlyOutUp{/Di 90/M/O/S/Fly}
+\def\aeb@Trans@FlyIn{/M/I/S/Fly}
+\def\aeb@Trans@FlyOut{/M/O/S/Fly}
+\def\aeb@Trans@PushLeft{/Di 180/S/Push}
+\def\aeb@Trans@PushRight{/Di 0/S/Push}
+\def\aeb@Trans@PushDown{/Di 270/S/Push}
+\def\aeb@Trans@PushUp{/Di 90/S/Push}
+\def\aeb@Trans@CoverLeft{/Di 180/S/Cover}
+\def\aeb@Trans@CoverRight{/Di 0/S/Cover}
+\def\aeb@Trans@CoverDown{/Di 270/S/Cover}
+\def\aeb@Trans@CoverUp{/Di 90/S/Cover}
+\def\aeb@Trans@CoverLeftDown{/Di 225.0/S/Cover}
+\def\aeb@Trans@CoverLeftUp{/Di 135.0/S/Cover}
+\def\aeb@Trans@CoverRightDown{/Di 315.0/S/Cover}
+\def\aeb@Trans@CoverRightUp{/Di 45.0/S/Cover}
+\def\aeb@Trans@UncoverLeft{/Di 180/S/Uncover}
+\def\aeb@Trans@UncoverRight{/Di 0/S/Uncover}
+\def\aeb@Trans@UncoverDown{/Di 270/S/Uncover}
+\def\aeb@Trans@UncoverUp{/Di 90/S/Uncover}
+\def\aeb@Trans@UncoverLeftDown{/Di 225.0/S/Uncover}
+\def\aeb@Trans@UncoverLeftUp{/Di 135.0/S/Uncover}
+\def\aeb@Trans@UncoverRightDown{/Di 315.0/S/Uncover}
+\def\aeb@Trans@UncoverRightUp{/Di 45.0/S/Uncover}
+\def\aeb@Trans@Fade{/S/Fade}
+\def\aeb@Trans@Random{/S/Random}
+\def\aeb@Trans@Blend{/S/Blend}
+% \end{macrocode}
+% New Transitions for Acrobat 8.0
+% \begin{macrocode}
+\def\aeb@Trans@PushLeftDown{%
+ /S/Push/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@PushLeftUp{%
+ /S/Push/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@PushRightDown{%
+ /S/Push/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@PushRightUp{%
+ /S/Push/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@WipeLeftDown{%
+ /S/Wipe/Directional/BiDir/Di 225/Curve/Easy}
+\def\aeb@Trans@WipeLeftUp{%
+ /S/Wipe/Directional/BiDir/Di 135/Curve/Easy}
+\def\aeb@Trans@WipeRightDown%
+ {/S/Wipe/Directional/BiDir/Di 315/Curve/Easy}
+\def\aeb@Trans@WipeRightUp{%
+ /S/Wipe/Directional/BiDir/Di 45/Curve/Easy}
+\def\aeb@Trans@ZoomInDown{%
+ /S/ZoomIn/Directional/BiDir/Di 270.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeft{%
+ /S/ZoomIn/Directional/BiDir/Di 180.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeftDown{%
+ /S/ZoomIn/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeftUp{%
+ /S/ZoomIn/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRight{%
+ /S/ZoomIn/Directional/BiDir/Di 0.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRightDown{%
+ /S/ZoomIn/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRightUp{%
+ /S/ZoomIn/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@ZoomInUp{%
+ /S/ZoomIn/Directional/BiDir/Di 90.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutDown{%
+ /S/ZoomOut/Directional/BiDir/Di 270.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeft{%
+ /S/ZoomOut/Directional/BiDir/Di 180.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeftDown{%
+ /S/ZoomOut/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeftUp{%
+ /S/ZoomOut/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRight{%
+ /S/ZoomOut/Directional/BiDir/Di 0.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRightDown{%
+ /S/ZoomOut/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRightUp{%
+ /S/ZoomOut/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutUp{%
+ /S/ZoomOut/Directional/BiDir/Di 90.0/Curve/Easy}
+\def\aeb@Trans@CombHorizontal{%
+ /S/Comb/Directional/BiDir/Dm/H/Curve/Easy}
+\def\aeb@Trans@CombVertical{%
+ /S/Comb/Directional/BiDir/Dm/V/Curve/Easy}
+% \end{macrocode}
+% \begin{macrocode}
+% End of aebpro segment
+%</aebpro>
+%<*fsdefjs>
+% \end{macrocode}
+% \subsection{JS for Fullscreen Support}
+% The ``Presentation Defaults'' are used in conjunction with the
+% \cs{setDefaultFS} for setting the defaults of the application. These
+% settings can be viewed under the \texttt{Edit > Preferences >
+% General > Full Screen}. This script save the viewers preferences,
+% sets them according the needs of the document author, and upon
+% closing the document, resets the original preferences. The last task
+% is performed by the \texttt{willClose} environment.
+% \begin{macrocode}
+\begin{insDLJS}[_fsDefaults]{fsdef}{AeB Pro: Presentation Defaults}
+var _fsDefaults = true;
+%if ( typeof global.fsexec == "undefined" )
+if ( typeof fsexec == "undefined" )
+{
+ try {
+ var fsexec = true;
+% global.fsexec = true;
+ var aebdefaultTransition = app.fs.defaultTransition;
+ var aebbackgroundColor = app.fs.backgroundColor;
+ var aebloop = app.fs.loop;
+ var aebtimeDelay = app.fs.timeDelay;
+ var aebuseTimer = app.fs.useTimer
+ var aebusePageTiming = app.fs.usePageTiming;
+ var aebclickAdvances = app.fs.clickAdvances;
+ var aebcursor = app.fs.cursor;
+ var aebescapeExits = app.fs.escapeExits;
+\aeb@fsTran%
+\aeb@fsBGColor%
+\aeb@fsLoop%
+\aeb@fsclickAdv%
+\aeb@fscursor%
+\aeb@fstimeDelay%
+\aeb@fsuseTimer%
+\aeb@fsusePageTiming%
+\aeb@fsEscape%
+\aeb@fsFS%
+ } catch(e) {}
+}
+\end{insDLJS}
+% \end{macrocode}
+% This is a series of script lines that will be inserted into the \texttt{willClose}
+% section of the document. These will attempt to restore the user's full screen
+% defaults.
+% \begin{macrocode}
+\begin{fs@willClose}
+try {
+ delete global.fsexec;
+ app.fs.defaultTransition = aebdefaultTransition;
+ app.fs.backgroundColor = aebbackgroundColor;
+ app.fs.loop = aebloop;
+ app.fs.timeDelay = aebtimeDelay;
+ app.fs.useTimer = aebuseTimer;
+ app.fs.usePageTiming = aebusePageTiming;
+ app.fs.clickAdvances = aebclickAdvances;
+ app.fs.cursor = aebcursor;
+ app.fs.escapeExits = aebescapeExits;
+} catch(e) { console.println("Could not reset one of the defaults"); }
+\end{fs@willClose}
+% \end{macrocode}
+% \begin{macrocode}
+% End of fsdefjs segment
+%</fsdefjs>
+%<*aebpro>
+% \end{macrocode}
+% \section{Set Page Actions}
+% \begin{environment}{addJSToPageOpen}
+% \begin{environment}{addJSToPageOpenAt}
+% \begin{environment}{addJSToPageClose}
+% \begin{environment}{addJSToPageCloseAt}
+% The document author can add to the default page open action through
+% this environment. Use this environment between slides, effective
+% the next slide. The first slide (possibly generated by
+% \cs{maketitle}) is a special case: When setting the open and close
+% page actions for the first page, these environments \emph{must go}
+% in the preamble.
+% \begin{macrocode}
+\def\canceleveryPageOpen{\global\@everyPageOpenfalse
+ \global\let\every@PageOpen\@empty}
+\def\canceleveryPageClose{\global\@everyPageClosefalse
+ \global\let\every@PageClose\@empty}
+\newenvironment{everyPageOpen}[1][]
+{\global\@everyPageOpentrue\@defineJS[#1]{\every@PageOpen}}
+{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\every@PageOpen}}{}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
+}
+\newenvironment{everyPageClose}[1][]
+{\global\@everyPageClosetrue\@defineJS[#1]{\every@PageClose}}
+{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoCloseJS{\thisPageAction{}{\JS{\every@PageClose}}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
+}
+\let\every@PageOpen\@empty
+\let\every@PageClose\@empty
+\newenvironment{addJSToPageOpen}[1][]
+{\@defineJS[#1]{\addJST@PageOpen}}{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\addJST@PageOpen}}{}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
+}
+\newenvironment{addJSToPageOpenAt}[2][]
+{\@@defineJS[#1]{addJST@PageOpenAt}{#2}}{\end@@defineJS
+% \end{macrocode}
+%\changes{v1.7}{2015/06/17}{\texttt{addJSToPageOpenAt} can now be used in preamble}
+% The \texttt{addJSToPageOpenAt} and \texttt{addJSToPageCloseAt} can now be used
+% in the preamble on the first page.
+% \begin{macrocode}
+ \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \thisPageAction{\JS{\@nameuse{addJST@PageOpenAt1}}}{}\fi\fi
+}
+\newenvironment{addJSToPageClose}[1][]
+{\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoCloseJS{%
+ \thisPageAction{}{\JS{\addJST@PageClose}}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
+}
+\newenvironment{addJSToPageCloseAt}[2][]
+{\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
+ \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \thisPageAction{}{\JS{\@nameuse{addJST@PageCloseAt1}}}\fi\fi
+}
+\let\addJST@PageOpen\@empty
+\let\addJST@PageClose\@empty
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \begin{macro}{\aebp@PageOpenCloseHandler}
+% This command gets expanded by \cs{AddToShipoutPicture} for each page. Here we
+% define how our page actions are to be inserted.
+% \begin{macrocode}
+\def\aebp@PageOpenCloseHandler{%
+ \@ifundefined{addJST@PageOpenAt\arabic{page}}%
+ {\global\let\thisOpenPageActionAt\@empty}%
+ {\gdef\thisOpenPageActionAt{%
+ \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
+ \@ifundefined{addJST@PageCloseAt\arabic{page}}%
+ {\global\let\thisClosePageActionAt\@empty}%
+ {\gdef\thisClosePageActionAt{%
+ \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
+ \aebPageAction{\thisOpenPageActionAt\addJST@PageOpen}%
+ {\thisClosePageActionAt\addJST@PageClose}%
+ \global\let\addJST@PageOpen\@empty
+ \global\let\addJST@PageClose\@empty
+}
+% \end{macrocode}
+% (2016/05/15) Added \cs{aebp@PageTransHandler} to handle the page
+% transitions.
+% \changes{v2.1}{2016/05/15}{Added the command \string\cs{aebp@PageTransHandler} to handle the page
+% transitions}
+% \begin{macrocode}
+\def\aebp@PageTransHandler{\@ifundefined{aebpP@geTr@nsP@ge\arabic{page}}
+ {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
+% \end{macrocode}
+% The two handlers are executed on each page
+% \changes{v2.1}{2016/05/15}{Added the command \string\cs{aebp@PageTransHandler}
+% to the shipout cmd \string\cs{AddToShipoutPicture}.}
+% \begin{macrocode}
+\AddToShipoutPicture{\aebp@PageOpenCloseHandler
+ \aebp@PageTransHandler}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\@@defineJS} is a variation of \cs{@defineJS}, as defined in the \textsf{insdljs} package.
+% This version, at the end of the environment, calls the \cs{aebp@rse} command to parse the
+% complex command argument, then makes a series of definitions to be used in the open/close
+% page events.
+% \begin{macrocode}
+\newenvironment{@@defineJS}[3][]
+{%
+ \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}%
+ \def\verbatim@processline
+ {%
+ \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
+ \global\JStoks=\expandafter{\JS@temp}%
+ }%
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ #1%
+ \verbatim@start
+}{%
+ \expandafter\aebp@rse\expandafter{\defineJSArg}%
+ \edef\shakeandbake{%
+ \noexpand\@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
+ \aeb@parsecnt=0 \shakeandbake \do {%
+ \ifnum\aeb@parsecnt=0
+ \edef\firsttok{\@mytoks}%
+ \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
+ \else
+ \edef\letsmakelet{\global\let\expandafter\noexpand
+ \csname\argType\@mytoks\endcsname=\expandafter\noexpand
+ \csname\argType\firsttok\endcsname}%
+ \letsmakelet
+ \fi
+ \advance\aeb@parsecnt1\relax
+ }%
+}
+% \end{macrocode}
+% \begin{macrocode}
+\newif\ifaeb@PageOpen
+\newif\ifaeb@PageClose
+\newif\if@everyPageOpen\@everyPageOpenfalse
+\newif\if@everyPageClose\@everyPageClosefalse
+% \end{macrocode}
+% \begin{macro}{\aebPageAction}
+% This is used internally, but can be used by the document author. The commands creates the code
+% to set an open page and a close page action. The first (optional) argument is a the page number (base 1),
+% this optional argument defaults to the current page if no page number is given. The second and third
+% arguments are the open and closed JavaScript actions.
+%
+% If the document author uses this command, he may overwrite actions created by the \texttt{addJSTo...}
+% environments. See \cs{aeb@addToPageOpenCloseActions} for usage by this package.
+% \changes{v2.1}{2016/05/15}{Final changes to \string\cs{aebPageAction} to include non-Distiller
+% workflows.}
+% \begin{macrocode}
+\newcommand\aebPageAction[3][ThisPage]{%
+ \let\ispageactions=0\aeb@PageOpenfalse\aeb@PageClosefalse
+ \def\@aebOpen{#2}%
+ \if1\@aebOpen1%
+ \if@everyPageOpen
+ \aeb@PageOpentrue\let\ispageactions=1%
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
+ \fi
+ \else
+ \let\ispageactions=1%
+ \aeb@PageOpentrue
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
+ \fi
+ \def\@aebClose{#3}%
+ \if1\@aebClose1%
+ \if@everyPageClose
+ \aeb@PageClosetrue\let\ispageactions=1%
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
+ \fi
+ \else
+ \let\ispageactions=1%
+ \aeb@PageClosetrue
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
+ \fi
+ \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions=1\fi
+ \if@everyPageClose\@everyPageClosetrue\let\ispageactions=1\fi
+ \if\ispageactions1%
+ \xdef\aebp@PageActionCode{/AA <<
+ \ifaeb@PageOpen\@aebOpen\space\fi
+ \ifaeb@PageClose\@aebClose\space\fi >>}
+% \end{macrocode}
+% For page 1, the open page is handled by \textsf{insdljs}
+% \changes{v2.0a}{2016/05/11}{Let \string\textsf{insdljs} handle page open
+% for page 1.}
+% \begin{macrocode}
+ \ifnum\value{page}=1\relax\else
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
+ \aebp@PageActionCode\space >> /PUT pdfmark}\else
+ \ifpdf\global\pdfpageattr=\expandafter
+ {\aebp@PageActionCode}\else
+ \ifxetex\@pdfm@mark{put @thispage <<
+ \aebp@PageActionCode\space>>}\fi\fi\fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\atPage}
+% \cs{atPage} is a modification of \cs{pageref}, so its value will always be an integer.
+% returned in the token register \cs{aeb@parsetoks}. Used in the arguments of such environments
+% as \texttt{addJSToPageOpenAt} and \texttt{addJSToPageCloseAt}.
+% \begin{macrocode}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\let\ahrefexafter\aeb@exiii
+\def\atPage#1{\@ifundefined{r@#1}{1}
+ {\aeb@exiii\@secondoffive\csname r@#1\endcsname}}
+\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
+ {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
+% \end{macrocode}
+% \end{macro}
+% The command \cs{aebp@rse} parses such arguments as
+%\begin{verbatim}
+% {1,3,4-6,8-12,15,\atPage{firstlabel}-\atPage{secondlabel},30-}
+%\end{verbatim}
+% The expanded list is returned in the token register \cs{aeb@parsetoks}.
+% \begin{macrocode}
+\newtoks\aeb@parsetoks
+\newcount\aeb@parsecnt
+\def\ap@gobtonil#1\@nil{}
+\def\ap@gettonil#1\@nil{\def\to@nilarg{#1}}
+\def\ap@ifspc{\ifx\@let@token\@sptoken
+ \let\ap@next\ap@xifspc\else
+ \let\ap@next\ap@gettonil\fi\ap@next}
+\begingroup
+\def\:{\ap@xifspc}
+\expandafter\gdef\: {\futurelet\@let@token\ap@ifspc}
+\endgroup
+% \end{macrocode}
+% \cmd{\ap@strpspcs} strips any spaces, usage: \verb~\expandafter\ap@strpspcs\cmd\@nil~
+% where \cs{cmd} is a command that expands to text; the text is returned in \cs{to@nilarg}
+% without any leading spaces.
+% \begin{macrocode}
+\def\ap@strpspcs{\futurelet\@let@token\ap@ifspc}
+\def\ap@pgrngLabelsInPream{\@ifundefined{aebLastPage}
+ {\PackageWarning{aeb_pro}{The \string\atPage\space
+ command is not supported\MessageBreak in the preamble}}{}}
+\def\aeb@removelastcomma#1,\@nil{\aeb@parsetoks={#1}}
+\def\aebp@rse#1{\global\let\frstPageSpec\aebp@NO
+ \aeb@parsetoks={}\aeb@parse#1,\relax}
+\def\aeb@parse{\@ifnextchar\relax
+ {\expandafter\aeb@removelastcomma\the\aeb@parsetoks\@nil}
+ {\aeb@@parse}}
+\def\aeb@@parse#1,{\aeb@@@parse#1-\@nil}
+\def\aeb@@@parse#1-#2\@nil{%
+ \def\argi{#2}\ifx\argi\@empty\def\aeb@next{\aeb@@@@parse{#1}}\else
+ \def\aeb@next{\aeb@@@@@parse#1-#2}\fi\aeb@next}
+\def\aeb@@@@parse#1{%single page #1
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#1\@nil
+ \aeb@parsecnt=#1\relax
+ \edef\edefaeb@parsetoks{\the\aeb@parsetoks\the\aeb@parsecnt,}%
+ \aeb@parsetoks=\expandafter{\edefaeb@parsetoks}%
+% \end{macrocode}
+%\changes{v1.7}{2015/06/17}{Use \cs{frstPageSpec}}
+% The \cs{frstPageSpec} signals that page 1 is specified in the
+% page specification argument.
+% \begin{macrocode}
+ \ifnum\aeb@parsecnt=1\relax\global\let\frstPageSpec\aebp@YES\fi
+ \aeb@parse}
+\def\aeb@@@@@parse#1-#2-{\def\aeb@lowerlimit{#1}\def\aeb@upperlimit{#2}%
+ % range argument from #1 to \csname aebLastPage\endcsname
+ \ifx\aeb@upperlimit\@empty
+ \@ifundefined{aebLastPage}{\aeb@parsecnt=#1}
+ {\expandafter\aeb@parsecnt\expandafter=
+ \csname aebLastPage\endcsname}%
+ \else % page range #1 to #2, switch the two if #2 < #1
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+ \edef\aeb@lowerlimit{\the\aeb@parsecnt}
+ \aeb@parsecnt=\aeb@upperlimit\relax
+ \ifnum\aeb@parsecnt<\aeb@lowerlimit\relax
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+ \def\aeb@lowerlimit{#2}%
+ \def\aeb@upperlimit{#1}%
+ \fi
+ \fi
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#1\@nil
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#2\@nil
+ \advance\aeb@parsecnt1\relax
+ \edef\aeb@upperlimit{\the\aeb@parsecnt}%
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+% \end{macrocode}
+%\changes{v1.7}{2015/06/17}{Use \cs{frstPageSpec}}
+% If page 1 is there, is will be as the lower limit.
+% The \cs{frstPageSpec} signals that page 1 is specified in the
+% page specification argument.
+% \begin{macrocode}
+ \ifnum\aeb@parsecnt=1\relax\global\let\frstPageSpec\aebp@YES\fi
+ \loop
+ \edef\edefaeb@parsetoks{\the\aeb@parsetoks\the\aeb@parsecnt,}%
+ \aeb@parsetoks=\expandafter{\edefaeb@parsetoks}%
+ \advance\aeb@parsecnt1\relax
+ \ifnum\aeb@parsecnt < \aeb@upperlimit\relax\repeat
+ \aeb@parse}
+% \end{macrocode}
+% \section{Set Document Actions}
+%
+% \begin{environment}{willClose}
+% \begin{environment}{willSave}
+% \begin{environment}{didSave}
+% \begin{environment}{willPrint}
+% \begin{environment}{didPrint}
+% We add a \texttt{willClose} environment, not really meant for the document
+% author to use. This environment is used with \cs{setDefaultFS} for saving
+% setting and restoring the application preferences for full screen.
+% \begin{macrocode}
+\@ifpackageloaded{insdljs}{%
+ \newenvironment{fs@willClose}
+ {\@defineJS{\fs@will@Close}}
+ {\end@defineJS}
+ \let\fs@will@Close\@empty
+}{%
+ \newenvironment{willClose}
+ {\@defineJS{\will@Close}}
+ {\end@defineJS}
+ \let\will@Close\@empty
+ \newenvironment{fs@willClose}
+ {\@defineJS{\fs@will@Close}}
+ {\end@defineJS}
+ \let\fs@will@Close\@empty
+ \newenvironment{willSave}
+ {\@defineJS{\will@Save}}
+ {\end@defineJS}
+ \let\will@Save\@empty
+ \newenvironment{didSave}
+ {\@defineJS{\did@Save}}
+ {\end@defineJS}
+ \let\did@Save\@empty
+ \newenvironment{willPrint}
+ {\@defineJS{\will@Print}}
+ {\end@defineJS}
+ \let\will@Print\@empty
+ \newenvironment{didPrint}
+ {\@defineJS{\did@Print}}
+ {\end@defineJS}
+ \let\did@Print\@empty
+}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% In addition to the provided environments, there are developer hooks, the package developer
+% can use to insert page actions, in addition to what the package user may do.
+% Now put the \texttt{willClose} JS into the document \texttt{Catalog}. The developer's
+% actions will possibly overwrite that of the user; under the theory that the developer's
+% actions are critical to the functioning of the package. The hooks are
+% \begin{macrocode}
+\let\developer@will@Close\@empty
+\let\developer@will@Save\@empty
+\let\developer@did@Save\@empty
+\let\developer@will@Print\@empty
+\let\developer@did@Print\@empty
+% \end{macrocode}
+%\changes{v0.8g}{2008/06/30}
+%{
+% Added developer hooks to this open page events.
+%}
+%\changes{v2.1}{2016/05/15}{Changes to \string\cs{@setDocAction} for non-Distiller workflows.}
+% (2016/05/15) modify to include non-Distiller workflows.
+% \begin{macrocode}
+\newcommand\@setDocActions{%
+ \edef\test@will@Close{%
+ \fs@will@Close\will@Close\developer@will@Close}%
+ \edef\test@will@Save{\will@Save\developer@will@Save}%
+ \edef\test@did@Save{\did@Save\developer@did@Save}%
+ \edef\test@will@Print{\will@Print\developer@will@Print}%
+ \edef\test@did@Print{\did@Print\developer@did@Print}%
+ \def\aebp@DocActionsCode{/AA << %
+ \ifx\test@will@Close\@empty\else/WC <<
+ \JS{\fs@will@Close\will@Close\developer@will@Close} >>\fi
+ \ifx\test@will@Save\@empty\else/WS <<
+ \JS{\will@Save\developer@will@Save} >>\fi
+ \ifx\test@did@Save\@empty\else/DS <<
+ \JS{\did@Save\developer@did@Save} >>\fi
+ \ifx\test@will@Print\@empty\else/WP <<
+ \JS{\will@Print\developer@will@Print} >>\fi
+ \ifx\test@did@Print\@empty\else/DP <<
+ \JS{\did@Print\developer@did@Print} >>\fi
+ >>
+ }
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{Catalog}
+ << \aebp@DocActionsCode\space>> /PUT pdfmark}\else
+ \ifpdf\pdfcatalog{\aebp@DocActionsCode}\else
+ \ifxetex\immediate
+ \@pdfm@mark{put @catalog <<\aebp@DocActionsCode\space>>}\fi
+ \fi\fi
+}
+\AtBeginDocument{\@setDocActions}
+% \end{macrocode}
+%
+% \section{In support of attachments}
+%
+% \subsection{Processing the \texttt{attachsource} and \texttt{attachments} key}
+%
+% If the value of either the \texttt{\texttt{attachsource}} or
+% \texttt{attachments} keys are non empty, the values are contained
+% in the macros \cs{aeb@attachsource} and \cs{aeb@attachments}. If
+% either of these text macros is different from \cs{empty}, we need
+% to write out a cut file that lists the requested attachments, then
+% input the cut file back in at the end of the package.
+% \begin{macro}{\aref}
+% This command, whose argument is \textit{delimited by parentheses},
+% is to be used with \cs{inputDataObject}, defined below, to expand
+% the value of the \texttt{cName} key, when the label is defined by
+% \cs{labelName}. It is also used by this package to set the
+% description of the attachment.
+% \begin{macrocode}
+\def\aref(#1){\csname aeb@aDescript@#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+% The next command \cs{aeb@initAttachWrite} we prepare to write by opening a stream, and
+% starting the \texttt{execJS} environment, but only if we have an attachment request.
+% \begin{macrocode}
+\def\aeb@initAttachWrite{%
+ \newwrite \aeb@attachmentswrite
+ \immediate\openout \aeb@attachmentswrite \jobname_attach.cut
+ \let\verbatim@out\aeb@attachmentswrite
+ \aeb@IWVO{\string\begin{execJS}{aebpro_attach}}%
+ {\lccode`P=`\{\lowercase{\aeb@IWVO{try P}}}%
+}
+% \end{macrocode}
+% \changes{v1.4}{2013/02/24}{Support for optional attachments}
+% \paragraph{Optional attachments.} Support for optional attachments.
+% \begin{macro}{\prjInputUser}
+% \begin{macro}{\prjIncludeUser}
+% \begin{macro}{\addtoOptAttachments}
+% User interface to project for \cs{input} and \cs{include}. These commands
+% may be redefined, but they need to include the appropriate input/include
+% command in them. The \cs{addtoOptAttachments} command is a way of optionally
+% attaching a file without the input.
+% \begin{macrocode}
+\newcommand{\prjInputUser}[1]{\input{#1}}
+\newcommand{\prjIncludeUser}[1]{\include{#1}}
+\newcommand{\addtoOptAttachments}[1]{%
+ \g@addto@macro\AP@addtoAttachments{,#1}}
+\newcommand{\getcNameFromFileName}[1]{\@nameuse{descrip4#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The main code for optional attachments.
+% \begin{macrocode}
+\def\AP@addtoAttachments{}
+% \end{macrocode}
+% The attachments are listing in a comma-delimited list. If there is a space following a comma, it may appear
+% as part of the path of the next attachment. So, we'll get JavaScript to strip away any leading spaces to
+% avoid the need to instruct the user to insert a \texttt{\%} if the attachment list is on multiple lines.
+% \begin{macrocode}
+\def\jsstrsps{replace(/^\string\s*/, "")}
+\def\jsstrdotsp{replace(/\string\.\string\s*/g, ".")}
+\ifoptattachments
+ \def\AP@writeOptAttach{%
+ \newwrite\AP@OptAttachlist
+ \immediate\openout \AP@OptAttachlist \jobname_oa.cut
+% \end{macrocode}
+% Define the optional attachments list command, |\APOptAttachments|.
+% \begin{macrocode}
+ \immediate\write\AP@OptAttachlist{\string\def\string
+ \APOptAttachments{\AP@addtoAttachments}}
+ \immediate\closeout\AP@OptAttachlist}
+% \end{macrocode}
+% Write the optional attachments list (|\APOptAttachments|) at the end of the document.
+% \begin{macrocode}
+ \AtEndDocument{\AP@writeOptAttach}
+% \def\AP@addtoAttachments{}
+ \def\AP@pathInput#1{%
+ \addtoOptAttachments{#1}\prjInputUser{#1}}
+ \def\AP@pathInclude#1{%
+ \addtoOptAttachments{#1.tex}\prjIncludeUser{#1}}
+% \end{macrocode}
+% Input the optional attachments list (|\APOptAttachments|) here.
+% \begin{macrocode}
+ \InputIfFileExists{\jobname_oa.cut}{%
+ \def\AP@next{\edef\aeb@attachments
+ {\aeb@attachments\APOptAttachments}}%
+ }{\let\AP@next\relax}
+ \AP@next
+\else
+% \end{macrocode}
+% When \texttt{!optattachments} is taken, we use the user commands \cs{prjInputUser} and
+% \cs{prjIncludeUser} versions.
+% \begin{macrocode}
+ \def\AP@pathInput#1{\prjInputUser{#1}}
+ \def\AP@pathInclude#1{\prjIncludeUser{#1}}
+\fi
+% \end{macrocode}
+% \DescribeMacro{\prjinput}\DescribeMacro{\prjinclude}These are the main
+% commands for inputting project files where the files themselves are optionally
+% attached.
+% \begin{macrocode}
+\ifoptattachmentsTaken
+ \def\prjinput{\hyper@normalise\AP@pathInput}
+ \def\prjinclude{\hyper@normalise\AP@pathInclude}
+% \end{macrocode}
+% The \cs{include} command makes the following comparison.
+%\begin{verbatim}
+% \@for\reserved@a:=\@partlist\do
+% {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
+%\end{verbatim}
+% The elements from \cs{@parlist} they come from the \cs{includeonly} command.
+% The argument of \cs{include} has been normalized using \cs{hyper@normalise} but
+% the filenames listed in \cs{includeonly} have not. So the comparison can fail.
+% We normalize the file list as well.
+%
+% When the \texttt{optattachments} is present in the option list,
+% the definition of \cs{optattachmentsTaken} is \cs{relax}, hence,
+% the redefinition occurs.
+% \begin{macrocode}
+ \let\AP@includeonly\includeonly
+ \def\includeonly{\hyper@normalise\AP@includeonly}
+\else
+ \def\prjinput{\prjInputUser}
+ \def\prjinclude{\prjIncludeUser}
+\fi
+% \end{macrocode}
+% \paragraph*{Attaching files.}
+% If either the two attachments keys is used, then we execute \cs{aeb@initAttachWrite}.
+% \begin{macrocode}
+\ifx\aeb@attachsource\@empty
+ \ifx\aeb@attachments\@empty
+ \else\aeb@initAttachWrite\fi
+\else
+ \@ifundefined{aeb@attachmentswrite}
+ {\aeb@initAttachWrite}{}
+\fi
+% \end{macrocode}
+% If \cs{aeb@attachsource} is non empty, go through the comma delimited list, and write to the
+% cut file we just opened.
+%
+%\changes{v0.8i}{2008/10/08}{%
+% Beginning with version 7.05, there is a \texttt{description} property.
+% Prior to that, the value of \texttt{cname} was used for the description.
+% I've added an additional line that sets the description equal to
+% \texttt{cname} for 7.05 or later.
+%}
+%\changes{v1.4d}{2014/02/24}{%
+% Within this and the next \cs{@for} look, added a test for the empty
+% argument.
+%}
+% Some commands for setting \texttt{cName} and description.
+% \begin{macrocode}
+\def\ap@cName(#1){\csname aeb@aName@attach#1\endcsname}
+\def\ap@cNamexdef(#1){\expandafter
+ \xdef\csname aeb@aName@attach#1\endcsname}
+\def\ap@cDescript(#1){\csname aeb@aDescript@attach#1\endcsname}
+\def\ap@cDescriptSource(#1){\csname aeb@aDescript@#1\endcsname}
+\def\ap@cDescriptxdef(#1){\expandafter
+ \xdef\csname aeb@aDescript@attach#1\endcsname}
+\def\ap@cDescriptSourcexdef(#1){\expandafter
+ \xdef\csname aeb@aDescript@#1\endcsname}
+% \end{macrocode}
+% We now process the list from the \texttt{attachsource} key.
+% \begin{macrocode}
+\ifx\aeb@attachsource\@empty\else
+ \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\aeb@attachsource}
+ \temp@expand\do{%
+ \ifx\@@tmp\@empty\else
+ \expandafter\ap@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
+ \ap@cDescriptSourcexdef(\@@tmp){\jobname.\@@tmp}%
+ \aeb@IWVO{\space\space\space\space
+ var retn=\string\importDataObject({%
+% \end{macrocode}
+% \changes{v1.7}{2015/07/01}{Changed cName from \cs{jobname.\cs{@@tmp}} to
+% just \cs{@@tmp}}
+% (2015/07/01) Changed cName from \cs{jobname.}\cs{@@tmp} to
+% just \cs{@@tmp}.
+% \begin{macrocode}
+ cName: "\@@tmp",
+ cDIPath: "\jobname.\@@tmp".\jsstrdotsp});}%
+ \aeb@IWVO{\space\space\space\space
+ if ( (app.viewerVersion>7) && retn )
+% \end{macrocode}
+% \changes{v1.7}{2015/07/01}{Changed \texttt{"\cs{jobname.\cs{@@tmp}}"} to
+% just \texttt{"\cs{@@tmp}"}}
+% (2015/07/01) Changed \texttt{"\cs{jobname.\cs{@@tmp}}"} to
+% just \texttt{"\cs{@@tmp}"} within argument of \texttt{this.getDataObject}.
+% \begin{macrocode}
+ this.getDataObject("\@@tmp").description=%
+ "\string\ap@cDescriptSource(\@@tmp)".\jsstrdotsp;}%
+ \expandafter
+ \edef\csname aeb@aName@\@@tmp\endcsname{\jobname.\@@tmp}%
+ \fi
+ }%
+\fi
+% \end{macrocode}
+% Similarly, if \cs{aeb@attachments} is non empty, go through the comma delimited list, and write to the
+% cut file we just opened.
+% \begin{macrocode}
+\ifx\aeb@attachments\@empty\else
+\typeout{\string\aeb@attachments: \aeb@attachments}%
+ \aeb@parsecnt=0
+ \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\aeb@attachments}
+ \temp@expand\do
+ {%
+ \ifx\@@tmp\@empty\else
+ \expandafter\ap@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
+ \advance\aeb@parsecnt1\relax
+% \end{macrocode}
+% Set default definitions of the name and description
+% \begin{macrocode}
+ \ap@cNamexdef(\the\aeb@parsecnt){attach\the\aeb@parsecnt}%
+ \ap@cDescriptxdef(\the\aeb@parsecnt)%
+ {AeB Attachment \the\aeb@parsecnt}%
+ \aeb@IWVO{\space\space\space\space
+ var retn=\string\importDataObject({%
+% \end{macrocode}
+%\changes{v1.7}{2015/07/01}{Remove \cs{aref} in \texttt{cName}}
+% (2015/07/01) Remove \cs{aref} in \texttt{cName}
+% \begin{macrocode}
+ cName:"\string\ap@cName(\the\aeb@parsecnt)",%
+ cDIPath: "\@@tmp".\jsstrsps});}%
+ \aeb@IWVO{\space\space\space\space
+ if ( (app.viewerVersion>7) && retn )
+% \end{macrocode}
+%\changes{v1.7}{2015/07/01}{Remove \cs{aref} in first argument}
+% (2015/07/01) Remove \cs{aref} in first argument
+% \begin{macrocode}
+ this.getDataObject(%
+ "\string\ap@cName(\the\aeb@parsecnt)").description=%
+ "\string\ap@cDescript(\the\aeb@parsecnt)";}%
+ \expandafter
+% \end{macrocode}
+% We associate the filename (path) with the label \texttt{cName}. This makes it convenient
+% to reference an attachment. We can say |\@usenname{descrip4<name>}|. Also defined
+% a convenience command \cs{getcNameFromFileName} for that purpose; for example,
+% |\getcNameFromFileName{<name>}|.
+% \begin{macrocode}
+ \expandafter\xdef\csname descrip4\@@tmp\endcsname
+ {\noexpand\ap@cName(\the\aeb@parsecnt)}%
+ \fi
+ }
+\fi
+% \end{macrocode}
+% Now, if \cs{aeb@attachmentswrite} is defined, which means we have attachments and we opened a stream,
+% we'll close off the environment, and close the file.
+% \begin{macrocode}
+\@ifundefined{aeb@attachmentswrite}{}
+{%
+ {\lccode`P=`\}\def\jsMsg{"Attachments error: "
+ + e.toString()}\lowercase{\aeb@IWVO{P catch(e)
+ { console.println( \jsMsg\space); }}}}%
+ \aeb@IWVO{\string\end{execJS}}
+ \immediate\closeout \aeb@attachmentswrite
+}
+% \end{macrocode}
+% Create a little macro to input the file \cs{jobname\_attach.cut} at the end of the package.
+% \begin{macrocode}
+\def\aeb@inputAttachments{\@ifundefined{aeb@attachmentswrite}{}
+ {\InputIfFileExists{\jobname_attach.cut}%
+ {\typeout{Inputting attachments file}}%
+ {\typeout{Cannot find attachments file}}}%
+}
+% \end{macrocode}
+% \subsection{Creating a PDF Package}
+% Beginning with Version 8, there is a special "Package" interface to access attachments.
+% The commands in this section support creating a PDF Package using the specified attachments.
+%
+% The \texttt{viewmode}\IndexKey{viewmode} has values of \texttt{details},
+% \texttt{tile}, \texttt{layout}, and \texttt{hidden}.
+% \begin{macrocode}
+\define@choicekey+{aebpdfpack}{viewmode}[\val\nr]%
+ {details,tile,layout,hidden}{%
+ \ifcase\nr\relax
+ \def\aeb@pdfpack@viewmode{/D}\or
+ \def\aeb@pdfpack@viewmode{/T}\or
+ \def\aeb@pdfpack@viewmode{/T}\or
+ \def\aeb@pdfpack@viewmode{/H}\fi
+}{}
+% \end{macrocode}
+% The \texttt{initview}\IndexKey{initview} of the package. The value of \texttt{initview}
+% is a label name of one of the attached files.
+% \begin{macrocode}
+\define@key{aebpdfpack}{initview}[]{\def\aeb@pdfpack@initview{#1}}
+\let\aeb@pdfpack@initview\@empty
+% \end{macrocode}
+% \begin{macro}{\earlyAttachForPkgs}
+% Use this command to package the attachments to the parent document.
+% \begin{macrocode}
+\newcommand{\earlyAttachForPkgs}{%
+% \end{macrocode}
+%\changes{v1.7}{2015/07/11}{Added \string\texttt{CollectionPreview} menu item to assure the Hidden view
+% is displayed.}
+% (2015/07/11) Recent versions of \textsf{Acrobat DC} seem not to support the Hidden view. There is no
+% difference between Hidden and Tiles, so we use \texttt{'CollectionPreview'}
+% menu item to force the viewer into Preview mode, which I'm assuming is the same
+% as Hidden mode.
+% \begin{macrocode}
+if (this.collection!=null&&this.collection.initialView == "Hidden")
+var hideto=app.setTimeOut("app.clearTimeOut(hideto);"
+ +"app.execMenuItem('CollectionPreview');",1);
+\if@gopro
+if(typeof _aebpro_attach == "undefined")
+( app.viewerVersion > 8 ) ? %
+aebTrustedFunctions(this,aebImportAnFDF,"aebpro_attach.fdf") : %
+this.importAnFDF("aebpro_attach.fdf");\fi
+% \end{macrocode}
+% For Version XI (or prior), there seems to be a bug. When
+% no initial view is specified, the cover sheet should be displayed. It is
+% but is disappears after a moment in favor of the first listed attachment
+% in the package. To compensate for this, we force the Cover Sheet to appear
+% after 2 seconds (trial and error value).
+% \begin{macrocode}
+\ifisPDFPackage\ifx\aeb@pdfpack@initview\@empty^^J%
+if(app.viewerVersion<15)^^J%
+var pkto=app.setTimeOut("app.clearTimeOut(pkto);"
++"app.execMenuItem('CollectionShowRoot');",5000);\fi\fi}
+% \end{macrocode}
+% \changes{v1.7k}{2015/08/05}{Added a \cs{ifisPDFPackage} switch}
+% (2015/08/05) Added a \cs{ifisPDFPackage} switch.
+% \changes{v2.1}{2016/05/15}{Finalized changes in \string\cs{makePDFPackage} to accommodate
+% non-Distiller workflows.}
+% \begin{macrocode}
+\newif\ifisPDFPackage\isPDFPackagefalse
+\newcommand{\makePDFPackage}[1]{\isPDFPackagetrue
+ \setkeys{aebpdfpack}{viewmode=details,#1}%
+ \ifx\aeb@pdfpack@initview\@empty
+ \let\aeb@pdfpackage@initview\@empty
+ \else
+% \end{macrocode}
+% \changes{v1.7}{2015/07/01}{Removed \cs{aeb@exiii} and \cs{aref()},
+% replaced with \cs{expandafter} and argument.}
+% (2015/07/01) Removed \cs{aeb@exiii} and \cs{aref()},
+% replaced with \cs{expandafter} and argument.
+% \changes{v2.0}{2016/05/08}{Extend \string\cs{makePDFPackage} to include
+% pdftex and xetex.}
+% \begin{macrocode}
+ {\obeyspaces\sanitize@attach\gdef\aeb@pdfpackage@initview%
+{/D<\expandafter\stringiiUnicode\aeb@pdfpack@initview\relax>}}%
+ \fi
+ \def\aeb@PDFPackageCode{/PageMode/UseAttachments%
+ /Collection<</Type/Collection%
+ \aeb@pdfpackage@initview/View\aeb@pdfpack@viewmode>>}%
+ \ifpdfmarkup
+ \def\aeb@setPDFPackage{\literalps@out{\AEB@psMrk{Catalog}
+ <<\aeb@PDFPackageCode>>/PUT pdfmark}}%
+ \else\ifpdf\def\aeb@setPDFPackage{%
+ \pdfcatalog{\aeb@PDFPackageCode}}\else
+ \ifxetex\def\aeb@setPDFPackage{\immediate
+ \@pdfm@mark{put @catalog <<\aeb@PDFPackageCode>>}}\else
+ \let\aeb@setPDFPackage\relax\PackageWarning{aeb_pro}
+ {The \string\makePDFPackage/string\makePDFPortfolio\space
+ is supported for\MessageBreak
+ dvips, pdftex, and xetex only}\fi\fi\fi
+}
+% \end{macrocode}
+% \DescribeMacro{\makePDFPortfolio} is an alias for \cs{makePDFPackage}. The accepted
+% name for a PDF Package is now a PDF Portfolio.
+% \begin{macrocode}
+\let\makePDFPortfolio\makePDFPackage
+\@onlypreamble\makePDFPackage
+% \end{macrocode}
+% We check to see if there are any attachments, if there are, we'll
+% import them early; useful for \cs{makePDFPackage} and for open events
+% that cause the view to display a page other than the first one on opening.
+% \begin{macrocode}
+\let\aebp@attachments\aebp@Zero
+\ifx\aeb@attachsource\@empty\else\let\aebp@attachments\aebp@One\fi
+\ifx\aeb@attachments\@empty\else\let\aebp@attachments\aebp@One\fi
+\ifx\aebp@attachments\aebp@One
+ \dev@addToDocOpen{\JS{\earlyAttachForPkgs}}%
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End of aebpro segment
+%</aebpro>
+%<*package>
+\AtEndOfPackage{\@nameuse{aeb@inputAttachments}}
+\AtBeginDocument{\@nameuse{aeb@setPDFPackage}}
+\@ifpackageloaded{web}{}
+ {\def\aebwritelastpage{%
+ \immediate\write\@auxout{\string\expandafter\string\gdef
+ \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}}
+ \AtEndDocument{\clearpage\addtocounter{page}{-1}\aebwritelastpage
+ \addtocounter{page}{1}}%
+}
+% End of package segment
+%</package>
+%<*unicode>
+% \end{macrocode}
+% \section{Support for linking to attachments.}
+%
+% \subsection{\texorpdfstring{\cs{ahyperref}, \cs{ahyperlink}, \cs{ahyperextract}}
+% {\CMD{ahyperref}, \CMD{ahyperlink}, \CMD{ahyperextract}}}
+%
+% The \cs{ahyperref} command is for linking between parent and child, or
+% between child and child. \cs{ahyperref} takes three arguments, the first optional
+% and the second two required.
+%\begin{verbatim}
+% \ahyperref[<optargs>]{<label>}{<text>}
+%\end{verbatim}
+% where \texttt{<label>} is one defined by either \cs{autolabelNum} or \cs{labelName}. The
+% \texttt{<text>} is the text to be typeset around the link. The optional arguments are defined
+% and described below.
+% \begin{itemize}
+% \item \verb!goto=p2c,c2p,c2c!: The type of jump, parent to child, child to parent, and child to
+% child. The default is \texttt{p2c}
+% \item \texttt{page=<number>}: the page of the embedded document to jump to. Default is \texttt{0}
+% \item \texttt{view=<value>}: the view to be used for the jump. Default is \texttt{Fit}
+% \item \texttt{dest=<string>}: jump to a named destination. When this key has a value, the values
+% of the keys \texttt{page} and \texttt{view} are ignored.
+% \item \verb!open=usepref|new|existing!: open the attachment according to the user preferences,
+% a new window, or the existing window. The default is \texttt{userpref}
+% \item \verb!border=visible|invisible!: Determines whether a visible rectangle appears around the
+% link. The default is \texttt{invisible}
+% \item \verb!highlight=none|invert|outline|insert!: How the viewer highlights the link when the
+% link is clicked. The default is \texttt{invert}.
+% \item \texttt{bordercolor=r g b}: The color of the border when it is visible. The default is black.
+% \item \verb!linestyle=solid|dashed|underlined!: The line style of the border when it is visible.
+% The default is \texttt{solid}
+% \item \texttt{textcolor=<color>}: the color of the text in the hypertext link. An empty
+% value is equivalent to \cs{normalcolor}.
+% \item \verb!linewidth=thin|medium|thick!: The line width when the border is visible. When invisible,
+% this is set to a width of zero. The default is \texttt{thin}
+% \item \texttt{preset=\cs{presetCommand}}: A convenience key. You can define some preset values, like so
+%\begin{verbatim}
+%\def\preseti{bordercolor={0 0 1},highlight=outline,border=visible,%
+% linestyle=dashed}
+%\end{verbatim}
+% Then you can say, for example,
+%\begin{verbatim}
+%\ahyperref[dest={target1-s:intro},preset=\preseti]{target1}{Jump!}
+%\end{verbatim}
+% \end{itemize}
+% \paragraph*{Key-value pairs of attachment links.}
+% The following are the key-values of the optional first argument of \cs{ahyperref}
+% \cs{hyperlink} and \cs{hyperextract}.\par\medskip
+%\noindent
+% The \texttt{page}\IndexKey{page} key, takes a zero-based page number.
+% \begin{macrocode}
+\define@key{ahref}{page}[0]{\def\ahref@page{#1}}
+\def\ahref@page{0}
+% \end{macrocode}
+% The key \texttt{view}\IndexKey{view} represents an ``explicit destination,'' as termed by the PDF Ref, \S8.2.1.
+%\begin{itemize}
+% \item \texttt{/XYZ left top zoom}
+% \item \texttt{/Fit}
+% \item \texttt{/FitH top}
+% \item \texttt{/FitV left}
+% \item \texttt{/FitR left bottom right}
+% \item \texttt{/FitB}
+% \item \texttt{/FitBH top}
+% \item \texttt{/FitBV left}
+%\end{itemize}
+% For the \texttt{view} key, enter view=Fit or view=XYB null null null, for example. The forward slash
+% is added later.
+%
+% (2015/07) More recent advances allows \cs{fitpage}, \cs{fitvisible},
+% \cs{actualsize}, \cs{fitheight}, \cs{fitwidth}, and \cs{inheritzoom} to be used.
+% These are defined in \textsf{insdljs}.
+%
+% Each of these is preceded by a page number. The page number is entered via the \texttt{page}
+% key.
+%
+% If a named destination is given with the dest key, then the \texttt{view} and \texttt{page} are ignored.
+% \begin{macrocode}
+\def\ap@fslash{/}
+\def\@isfirstslash#1#2\@nil{\def\arg@i{#1}\ifx\ap@fslash\arg@i
+ \else\edef\ahref@view@keyvalue{/\ahref@view@keyvalue}\fi}
+\define@key{ahref}{view}[/Fit]{\edef\ahref@view@keyvalue{#1}%
+ \expandafter\@isfirstslash\ahref@view@keyvalue\@nil
+}
+\def\ahref@view@keyvalue{/Fit}
+% \end{macrocode}
+% The \texttt{dest}\IndexKey{dest} key
+% \begin{macrocode}
+\define@key{ahref}{dest}[]{\def\ahref@dest{#1}}
+\let\ahref@dest\@empty
+% \end{macrocode}
+% The \texttt{open}\IndexKey{open} key takes values of \texttt{userpref}, \texttt{new}, and \texttt{existing}.
+% \begin{macrocode}
+\define@choicekey{ahref}{open}[\val\nr]{userpref,new,existing}
+{%
+ \ifcase\nr\relax
+ \let\ahref@open@keyvalue\@empty\or
+ \def\ahref@open@keyvalue{/NewWindow true }\or
+ \def\ahref@open@keyvalue{/NewWindow false }\fi
+}{}
+\let\ahref@open@keyvalue\@empty
+% \end{macrocode}
+% The \texttt{border}\IndexKey{border} key takes values of \texttt{visible} and \texttt{invisible}.
+% \begin{macrocode}
+\define@choicekey{ahref}{border}[\val\nr]{visible,invisible}
+{%
+ \ifcase\nr\relax
+ \def\ahref@border{0 0 1}%
+ \def\ahef@invisible@border{1}\or
+ \def\ahref@border{0 0 0}% W = 0 also?
+ \let\ahef@invisible@border\@empty\fi
+}{}
+% \end{macrocode}
+% The \texttt{highlight}\IndexKey{highlight} key takes values of \texttt{none},
+% \texttt{invert}, \texttt{outline}, and \texttt{insert}.
+% \begin{macrocode}
+\define@choicekey{ahref}{highlight}[\val\nr]{none,invert,outline,insert}
+{%
+ \ifcase\nr\relax
+ \let\ahref@highlight\@empty\or
+ \def\ahref@highlight{/H/I}\or
+ \def\ahref@highlight{/H/O}\or
+ \def\ahref@highlight{/H/P}\fi
+}{}
+% \end{macrocode}
+% The \texttt{bordercolor}\IndexKey{bordercolor} key\par\medskip\noindent
+% (2017/03/08) \cs{ahref@bordercolor} can be a named color,
+% \changes{v2.8a}{2017/03/08}{\string\cs{ahref@bordercolor} can be a named color}
+% \begin{macrocode}
+\define@key{ahref}{bordercolor}[]{\def\ap@argi{#1}\ifx\ap@argi\@empty
+ \let\ahref@bordercolor\@empty\else
+ \HyColor@IfXcolor{\HyColor@XZeroOneThreeFour{#1}
+ {\ahref@bordercolor}{}{}}
+ {\edef\ahref@bordercolor{#1}}\fi
+} % PDF color
+\let\ahref@bordercolor\@empty
+% \end{macrocode}
+% The \texttt{linestyle}\IndexKey{linestyle} key takes values of \texttt{solid},
+% \texttt{dashed}, and \texttt{underlined}.
+% \begin{macrocode}
+\define@choicekey{ahref}{linestyle}[\val\nr]{solid,dashed,underlined}
+{%
+ \ifcase\nr\relax
+ \def\ahref@linestyle@keyvalue{/S/S}\or
+ \def\ahref@linestyle@keyvalue{/S/D}\or % Dashed [0 0 1[3.0]]
+ \def\ahref@linestyle@keyvalue{/S/U}\fi
+}
+\def\ahref@dashedlinetyle{/S/D}
+% \end{macrocode}
+% The \texttt{linewidth}\IndexKey{linewidth} key takes values of \texttt{thin},
+% \texttt{medium}, and \texttt{thick}.
+% \begin{macrocode}
+\define@choicekey{ahref}{linewidth}[\val\nr]{thin,medium,thick}
+{%
+ \ifcase\nr\relax
+ \def\ahref@linewidth{1}\or
+ \def\ahref@linewidth{2}\or
+ \def\ahref@linewidth{3}\fi
+}
+% \end{macrocode}
+% The \texttt{goto}\IndexKey{goto} key takes values of \texttt{p2c},
+% \texttt{c2p}, and \texttt{c2c}.
+% \begin{macrocode}
+\define@choicekey{ahref}{goto}[\val\nr]{p2c,c2p,c2c}
+{%
+ \ifcase\nr\relax
+ \global\let\targetDictionary\targetDictionary@pc\or
+ \global\let\targetDictionary\targetDictionary@cp\or
+ \global\let\targetDictionary\targetDictionary@cc\fi
+}{}
+% \end{macrocode}
+% The \texttt{launch}\IndexKey{launch} key takes values of \texttt{save},
+% \texttt{view}, and \texttt{viewnosave}.
+% \begin{macrocode}
+\define@choicekey{ahref}{launch}[\val\nr]{save,view,viewnosave}
+ {\edef\ahref@launch@type{\nr}}{}
+\def\ahref@launch@type{0}%
+% \end{macrocode}
+% The \texttt{preset}\IndexKey{preset} key
+% \begin{macrocode}
+\define@key{ahref}{preset}[]{\def\ahref@preset{#1}}
+\let\ahref@preset\@mpty
+% \end{macrocode}
+% Color of the link text by command \DescribeMacro{\ahrefcolor}\cs{ahrefcolor}
+% or as a key \texttt{textcolor}\IndexKey{textcolor}.
+% \begin{macrocode}
+\def\ahypertxtcolor#1{\def\ahrefcolor{#1}}
+\def\ahrefcolor{red}
+\define@key{ahref}{textcolor}[]{\def\ahrefcolor{#1}}
+% \end{macrocode}
+%\changes{v1.7}{2015/07/01}{Changed \cs{aeb@exiii} to \cs{expandafter}, changed
+% \cs{aref(\#1)} to \texttt{\#1}.}
+% (2015/07/01) Changed \cs{aeb@exiii} to \cs{expandafter}, changed
+% \cs{aref(\#1)} to \texttt{\#1} in \cs{targetDictionary@pc}
+% and \cs{targetDictionary@cc}.
+% \begin{macrocode}
+\def\targetDictionary@pc#1{%
+/T<</N<\expandafter\stringiiUnicode#1\relax>/R/C>>}
+\def\targetDictionary@cp#1{/T<</R/P>>}
+\def\targetDictionary@cc#1{%
+/T<</R/P/T<</N<\expandafter\stringiiUnicode#1\relax>/R/C>>>>}
+% \end{macrocode}
+% \begin{macro}{\factory@ahyperref@defaults}
+% \begin{macro}{\setahyperDefaults}
+% \begin{macro}{\resetahyperDefaults}
+% The defaults, \cs{factory@ahyperref@defaults}, of \cs{ahyperref}, as indicated above in the descriptions of the keys. Can be redefined, I suppose.
+% Perhaps the better approach is to use \cs{setahyperDefaults} to set the defaults, possibly overwriting the factory defaults.
+% Use \cs{resetahyperDefaults} to cancel out the user defined defaults. You can also use the \texttt{preset} key for conveniently changing
+% the attributes of the link.
+% \begin{macrocode}
+\def\factory@ahyperref@defaults{goto=p2c,page,dest,open=userpref,view,%
+ border=invisible,highlight=invert,linestyle=solid,linewidth=thin,%
+ bordercolor,textcolor=red,preset}
+\newcommand{\setahyperDefaults}[1]{\def\aeb@setahyperrefDefaults{#1}}
+\let\aeb@setahyperrefDefaults\@empty
+\newcommand{\resetahyperDefaults}{%
+ \let\aeb@setahyperrefDefaults\@empty}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ahyperref}
+% \begin{macro}{\ahyperlink}
+% The \cs{ahyperref} command links a parent to its embedded children, or a child to a child. Cool.
+% \changes{v1.7}{2015/07/01}{Rewrite the link to stuff, we'll use \texttt{cName} rather than description
+% to link to the attachments, this is how it should have been to begin with.}
+% (2015/07/01) Rewrite the link to stuff, we'll use \texttt{cName} rather than description
+% to link to the attachments, this is how it should have been to begin with. All changes
+% dated as (2015/07/01) are the changes needed.
+% \begin{macrocode}
+\def\aeb@initahref#1{%
+ \edef\expand@setkeys{%
+ \noexpand\setkeys{ahref}{\factory@ahyperref@defaults}}%
+ \expand@setkeys
+ \ifx\aeb@setahyperrefDefaults\@empty\else
+% \end{macrocode}
+% For the \cmd{\setahyperrefDefaults} we do not allow \texttt{dest}, \texttt{goto},
+% \texttt{page}, or \texttt{preset}.
+% \begin{macrocode}
+ \edef\expand@setkeys{\noexpand\setkeys{ahref}%
+ [dest,goto,page,preset]{\aeb@setahyperrefDefaults}}%
+ \expand@setkeys
+ \fi
+ \setkeys{ahref}{#1}%
+ \ifx\ahref@preset\@empty\else
+ \edef\expand@setkeys{%
+ \noexpand\setkeys{ahref}{\ahref@preset}}\expand@setkeys\fi
+ \let\ahref@dasharray\@empty
+ \ifx\ahref@linestyle@keyvalue\ahref@dashedlinetyle
+ \def\aeb@border@parameters{0 0 \ahref@linewidth[3.0]}%
+ \def\ahref@dasharray{/D[3.0]}%
+ \else
+ \edef\aeb@border@parameters{\ahref@border}%
+ \fi
+ \ifx\ahef@invisible@border\@empty\def\ahref@linewidth{0}\fi
+ \def\ahref@BS@Dict{/BS<<%
+ \ahref@dasharray\ahref@linestyle@keyvalue/W \ahref@linewidth>>
+ \ifx\ahref@bordercolor\@empty\else
+ /C[\ahref@bordercolor]\fi\ahref@highlight}%
+}
+\newcommand{\ahyperref}[3][]{%
+ \begingroup
+ \dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahref@dest\@empty
+ \def\ahref@dest@keyvalue{%
+ /D[\ahref@page\space\ahref@view@keyvalue]}%
+ \else
+ \edef\ahref@dest@keyvalue{/D(\labelRef{\ahref@dest})}%
+ \fi
+ \aeb@ahref@setlink{#2}{#3}%
+}
+\newcommand{\ahyperlink}[3][]{%
+ \begingroup
+ \dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahref@dest\@empty
+ \def\ahref@dest@keyvalue{%
+ /D[\ahref@page\space\ahref@view@keyvalue]}%
+ \else
+ \def\ahref@dest@keyvalue{/D(\ahref@dest)}%
+ \fi
+ \aeb@ahref@setlink{#2}{#3}%
+}
+\def\aeb@ahref@setlink#1#2{%
+ \ifx\ahrefcolor\@empty
+ \@eqlinktxtcolor{}\let\ahypercolor\@empty\else
+ \def\ahypercolor{\textcolor{\ahrefcolor}}\fi
+ \setLink[\Border{\aeb@border@parameters}%
+ \rawPDF{\ahref@BS@Dict}%
+ \A{\ahref@dest@keyvalue/S/GoToE%
+ \ahref@open@keyvalue\targetDictionary{#1}}]{\ahypercolor{#2}}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\ahyperextract}
+% The \cs{ahyperextract} command extracts an embedded file from the parent
+% to simple view the document, to save and view, or simply to save. The
+% \texttt{open} key determines the resulting action.
+% \begin{macrocode}
+\newcommand{\ahyperextract}[3][]
+{%
+ \begingroup\dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahrefcolor\@empty
+ \@eqlinktxtcolor{}\let\ahypercolor\@empty\else
+ \def\ahypercolor{\textcolor{\ahrefcolor}}\fi
+ \setLink[\Border{\aeb@border@parameters}%
+ \rawPDF{\ahref@BS@Dict}%
+% \end{macrocode}
+%\changes{v1.7}{2015/07/01}{Removed \cs{aref(\#2)}, replaced with \texttt{\#2}}
+% (2015/07/01) Removed \cs{aref(\#2)}, replaced with \texttt{\#2}
+% \begin{macrocode}
+% \A{\JS{this.exportDataObject({cName: "\aref(#2)",%
+ \A{\JS{this.exportDataObject({cName: "#2",%
+nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \subsection{Unicodes}
+% \begin{macro}{\convertChriiUnicode}
+% A simple command for mapping a character to its unicode
+% \begin{macrocode}
+\def\convertChriiUnicode#1#2{\csarg\gdef{uni@#1}{#2}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\convertChriiUnicode\space{0020}
+\convertChriiUnicode{!}{0021}
+{\@makeother\"
+\convertChriiUnicode{"}{0022}}
+%\convertChriiUnicode{"}{0022} % not available, but use \u0022 instead
+\convertChriiUnicode{#}{0023}
+\convertChriiUnicode{$}{0024}
+{\@makeother\%
+\convertChriiUnicode{%}{0025}}
+\convertChriiUnicode{&}{0026}
+\convertChriiUnicode{'}{0027}
+\convertChriiUnicode{(}{0028}
+\convertChriiUnicode{)}{0029}
+\convertChriiUnicode{*}{002A}
+\convertChriiUnicode{+}{002B}
+\convertChriiUnicode{,}{002C}
+\convertChriiUnicode{-}{002D}
+\convertChriiUnicode{.}{002E}
+\convertChriiUnicode{/}{002F}
+\convertChriiUnicode{0}{0030}
+\convertChriiUnicode{1}{0031}
+\convertChriiUnicode{2}{0032}
+\convertChriiUnicode{3}{0033}
+\convertChriiUnicode{4}{0034}
+\convertChriiUnicode{5}{0035}
+\convertChriiUnicode{6}{0036}
+\convertChriiUnicode{7}{0037}
+\convertChriiUnicode{8}{0038}
+\convertChriiUnicode{9}{0039}
+\convertChriiUnicode{:}{003A}
+\convertChriiUnicode{;}{003B}
+\convertChriiUnicode{<}{003C}
+\convertChriiUnicode{=}{003D}
+\convertChriiUnicode{>}{003E}
+\convertChriiUnicode{?}{003F}
+\convertChriiUnicode{@}{0040}
+\convertChriiUnicode{A}{0041}
+\convertChriiUnicode{B}{0042}
+\convertChriiUnicode{C}{0043}
+\convertChriiUnicode{D}{0044}
+\convertChriiUnicode{E}{0045}
+\convertChriiUnicode{F}{0046}
+\convertChriiUnicode{G}{0047}
+\convertChriiUnicode{H}{0048}
+\convertChriiUnicode{I}{0049}
+\convertChriiUnicode{J}{004A}
+\convertChriiUnicode{K}{004B}
+\convertChriiUnicode{L}{004C}
+\convertChriiUnicode{M}{004D}
+\convertChriiUnicode{N}{004E}
+\convertChriiUnicode{O}{004F}
+\convertChriiUnicode{P}{0050}
+\convertChriiUnicode{Q}{0051}
+\convertChriiUnicode{R}{0052}
+\convertChriiUnicode{S}{0053}
+\convertChriiUnicode{T}{0054}
+\convertChriiUnicode{U}{0055}
+\convertChriiUnicode{V}{0056}
+\convertChriiUnicode{W}{0057}
+\convertChriiUnicode{X}{0058}
+\convertChriiUnicode{Y}{0059}
+\convertChriiUnicode{Z}{005A}
+\convertChriiUnicode{[}{005B}
+%\convertChriiUnicode{\}{005C} % not available, use unicode \u005C
+\convertChriiUnicode{]}{005D}
+\convertChriiUnicode{^}{005E}
+\convertChriiUnicode{_}{005F}
+\convertChriiUnicode{`}{0060}
+\convertChriiUnicode{a}{0061}
+\convertChriiUnicode{b}{0062}
+\convertChriiUnicode{c}{0063}
+\convertChriiUnicode{d}{0064}
+\convertChriiUnicode{e}{0065}
+\convertChriiUnicode{f}{0066}
+\convertChriiUnicode{g}{0067}
+\convertChriiUnicode{h}{0068}
+\convertChriiUnicode{i}{0069}
+\convertChriiUnicode{j}{006A}
+\convertChriiUnicode{k}{006B}
+\convertChriiUnicode{l}{006C}
+\convertChriiUnicode{m}{006D}
+\convertChriiUnicode{n}{006E}
+\convertChriiUnicode{o}{006F}
+\convertChriiUnicode{p}{0070}
+\convertChriiUnicode{q}{0071}
+\convertChriiUnicode{r}{0072}
+\convertChriiUnicode{s}{0073}
+\convertChriiUnicode{t}{0074}
+\convertChriiUnicode{u}{0075}
+\convertChriiUnicode{v}{0076}
+\convertChriiUnicode{w}{0077}
+\convertChriiUnicode{x}{0078}
+\convertChriiUnicode{y}{0079}
+\convertChriiUnicode{z}{007A}
+%\convertChriiUnicode{{}{007B} % not available, use unicode \u007B
+\convertChriiUnicode{|}{007C}
+%\convertChriiUnicode{}}{007D} % not available, use unicode \u007D
+{\@makeother~
+\convertChriiUnicode{~}{007E}}
+% \end{macrocode}
+% \begin{macro}{\EURO}
+% \begin{macro}{\BSLASH}
+% \begin{macro}{\LBRACE}
+% \begin{macro}{\RBRACE}
+% \begin{macro}{\DQUOTE}
+% These characters are entered into the description parameter of \cs{autolabelNum}
+% or \cs{labelName} as either as literal characters or as its unicode \cs{uXXXX}.
+% When \cs{u} is detected \cs{@stringiiUnicode}, the command that converts the string
+% to all unicode hex, it calls \cs{getRawUnicode} to get the next four characters, which
+% should be XXXX, place them in the stream, followed by \cs{@stringiiUnicode} so as to
+% continue the processing of the next character in the description string. I've placed
+% an \cs{expandafter} in the definition of \cs{getRawUnicode} to allow the commands below
+% to be used. Thus instead of using \cs{u20AC}, which might necessitate the user to
+% look up the code, \verb!\u\EURO! can be used instead. Additional shortcut commands
+% like these can be created. Except for \cs{EURO}, these are the ones \TeX{} has trouble
+% processing.
+% \begin{macrocode}
+\def\EURO{20AC}
+\def\BSLASH{005C}
+\def\LBRACE{007B}
+\def\RBRACE{007D}
+\def\DQUOTE{0022}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Display the Unicode encoding of a character
+%
+% \begin{macrocode}
+\def\displayUnicode#1{\csname uni@#1\endcsname}
+% \end{macrocode}
+% \begin{macro}{\stringiiUnicode}
+% This is the primary command for converting a string, which
+% may contain \cs{uXXXX} control sequences into unicode encoding.
+% The first four hex digits must be \texttt{FEFF} to signal that
+% the hex represents unicode.
+% \begin{macrocode}
+\def\stringiiUnicode{FEFF\expandafter\@stringiiUnicode}
+\def\@stringiiUnicode#1{%
+ \ifx#1\relax\else
+ \ifx#1\u\aeb@exiii\getRawUnicode
+ \else
+ \displayUnicode{#1}\aeb@exiii\@stringiiUnicode
+ \fi
+ \fi
+}
+\def\getRawUnicode{\expandafter\@getRawUnicode}
+\def\@getRawUnicode#1#2#3#4{#1#2#3#4\@stringiiUnicode}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\unicodeStr}
+% A convenience command for setting the initial value of a form field with unicode.
+% Usage:
+%\begin{verbatim}
+%\labelName{myCoolIV}{\u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022}
+%\textField[\textSize{10}\textFont{MyriadPro-Regular}
+% \uDV{\unicodeStr(myCoolIV)}\uV{\unicodeStr(myCoolIV)}
+%]{myCoolIV}{1.5in}{12bp}
+%\end{verbatim}
+% First you set the string using \cs{labelName}. The argument for \cs{unicodeStr}
+% is delimited by parentheses, the argument itself is the label defined with
+% \cs{labelName}.
+%
+%\medskip\noindent
+% (2015/07/12) If \texttt{\#1} does not define a recognizable label (defined by \cs{labelName}
+% we assume \texttt{\#1} is raw hex digits.
+% \begin{macrocode}
+\def\unicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ FEFF#1\else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{\texorpdfstring{\cs{labelName} and \cs{autolabelNum}}
+% {\CMD{labelName} and \CMD{autolabelNum}}}
+%
+% \begin{macro}{\autolabelNum}
+% \begin{macro}{\autolabelNum*}
+% \begin{macro}{\labelName}
+% Commands for defining the description string for the attachments.
+% It is important that the description of the attached file, and the reference
+% to in in the \texttt{/GoToE} exactly match. The commands define here set up the
+% mapping between a ``\LaTeX'' label and the description. These commands also allow
+% the document author to overwrite the default attachment descriptions. Usage:
+%\begin{enumerate}
+%\item\verb!\autolabelNum[<label>]{<attachment_number>}!
+%\item\verb!\autolabelNum*[<label>]{<attachment_number>}{<description>}!
+%\item\verb!\labelName{<label>}{<description>}!
+%\end{enumerate}
+% \cs{autolabelNum} and \cs{autolabelNum*} are used with attachments attached using the
+% \texttt{attachments} option, while \cs{labelName} is used it the document author attached
+% a file using the \texttt{docassembly} environment. \cs{labelName} is also used by
+% \cs{autolabelNum} and \cs{autolabelNum*} to make definitions, in that respect, \cs{labelName}
+% is the low-level command for setting up the mappings and definitions.
+% \begin{macrocode}
+\def\ucspace{\u0020}
+\begingroup\catcode`\"=\active \gdef\DQ{\string\"}%
+ \gdef\@handledblquotes{\catcode`\"=\active\def"{\DQ}}%
+ \toks0=\expandafter{\DLspecialDefs\@handledblquotes}%
+ \xdef\DLspecialDefs{\the\toks0}%
+\endgroup
+% \end{macrocode}
+%\changes{v1.7l}{2015/08/07}{Add the switch \cs{ifHandleDblQuotes} switch}
+% (2015/08/07) Add the switch \cs{ifHandleDblQuotes} switch.
+% \begin{macrocode}
+\newif\ifHandleDblQuotes \HandleDblQuotesfalse
+\def\sanitize@attach{\ifHandleDblQuotes\@handledblquotes\fi%
+\@makeother\#\@makeother\$\@makeother\%\@makeother~}
+{\obeyspaces\gdef\getdscrptCont#1{\gdef\aebp@description{#1}%
+\aeb@labelName}%
+\gdef\getdscrptStrCont#1{\gdef\aebp@description{#1}%
+\aeb@labelNamestar}}%
+% \end{macrocode}
+% \changes{v1.7}{2015/07/05}{Modified the commands \string\cs{labelName} and \string\cs{labelName@star} to
+% gobble up any spaces between arguments before we switch to \string\cs{obeyspaces}.}
+% (2015/07/05) Modified \cs{labelName} and \cs{labelName@star} to
+% gobble up any spaces between arguments before we switch to \cs{obeyspaces}.
+% \begin{macrocode}
+\let\aeb@isFromAutoLabelNum\aebp@Zero
+\def\labelName#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@Zero
+ \@for\x:=ABCDEFabcdef\do{\@makeother\x}%
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@i}{}}
+% \end{macrocode}
+%\changes{v1.7k}{2015/08/02}{Added \cs{labelName@a}}
+% (2015/08/02) \cs{autoLabelNum} used to call \cs{labelName}, not it calls
+% \cs{labelName@a}, which sets a switch to notify \cmd{\aeb@labelName} of the origins
+% of the call.
+% \begin{macrocode}
+\def\labelName@a#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@One
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@i}{}}
+\def\labelName@i{\obeyspaces\sanitize@attach\getdscrptCont}%
+\def\labelName@star#1{\bgroup\@for\x:=ABCDEFabcdef\do{\@makeother\x}%
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@star@i}{}}%
+\def\labelName@star@i{\obeyspaces\sanitize@attach\getdscrptStrCont}%
+\newcommand{\autolabelNum}{%
+ \@ifstar{\aeb@autoLabelNumstar}{\aeb@autoLabelNum}}
+\newcommand\aeb@autoLabelNum[2][]{\def\alnargi{#1}%
+ \def\@thisattachnum{#2}%
+ \ifx\alnargi\@empty
+ \def\aeb@next{%
+ \labelName@a{attach#2}{AeB\space Attachment\space #2}}%
+ \else
+ \def\aeb@next{%
+ \labelName@a{#1}{AeB\space Attachment\space #2}}%
+ \fi
+ \aeb@next%
+}
+\newcommand{\aeb@autoLabelNumstar}[2][]{%
+ \def\alnargi{#1}\gdef\@thisattachnum{#2}%
+ \ifx\alnargi\@empty\def\aeb@next{\labelName@star{attach#2}}\else
+ \def\aeb@next{\labelName@star{#1}}\fi
+ \aeb@next%
+}
+\def\aeb@labelName{%
+% \end{macrocode}
+% \changes{v1.7k}{2015/08/02}{Added additional logic to \cs{aeb@labelName}}
+% (2015/08/02) The definitions differ depending on whether it comes from
+% the command \cs{autoLabelNum} or from \cs{labelNum}.
+% \begin{macrocode}
+ \if\aeb@isFromAutoLabelNum\aebp@One
+ \global\csarg\let
+ {aeb@aDescript@attach\@thisattachnum}\aebp@description
+ \global\csarg\let
+ {aeb@aName@attach\@thisattachnum}\aebp@labelname
+ \else
+ \global\csarg\let
+ {aeb@aDescript@\aebp@labelname}\aebp@description
+ \global\csarg\let
+ {aeb@aName@\aebp@labelname}\aebp@labelname\fi\egroup}
+\def\aeb@labelNamestar{%
+ \global\csarg\let
+ {aeb@aDescript@attach\@thisattachnum}\aebp@description
+ \global\csarg\let{aeb@aName@attach\@thisattachnum}\aebp@labelname
+ \global\csarg\let{aeb@aDescript@\aebp@labelname}\aebp@description
+ \global\csarg\let{aeb@aName@\aebp@labelname}\aebp@labelname\egroup}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% We need a general verbatim write environment, here is the one used by \textsf{exerquiz} and several other packages.
+% If \textsf{exerquiz} is loaded, no need to redefine it.
+% \begin{macrocode}
+\@ifpackageloaded{exerquiz}{}
+{%
+ \def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active\catcode`\^^I=12%
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start}
+ \def\endverbatimwrite{\@esphack}
+}
+% \end{macrocode}
+% \begin{environment}{attachmentNames}
+% Enclose the \cs{labelName} and \cs{autolabelNum} commands this environment, which writes
+% it contents verbatim to the file \cs{jobname\_xref.cut} and inputs it back in. Child files can input this
+% file to get the labels assigned for them by the parent document.
+% \begin{macrocode}
+\newenvironment{attachmentNames}{%
+ \newwrite \aeb@attachments@xref
+ \immediate\openout \aeb@attachments@xref \jobname_xref.cut
+ \let\verbatim@out\aeb@attachments@xref
+% \end{macrocode}
+%\changes{v1.7l}{2015/08/07}{Set \cs{ifHandleDblQuotes} to true}
+% (2015/08/07) Set \cs{ifHandleDblQuotes} to true, added a group.
+% \begin{macrocode}
+ \immediate\write\verbatim@out{\string\begingroup
+ \string\HandleDblQuotestrue}%
+ \verbatimwrite}{%
+ \endverbatimwrite
+ \immediate\write\verbatim@out{\string\endgroup}%
+ \immediate\closeout \aeb@attachments@xref
+ \aftergroup\aeb@Input@xref}
+\def\aeb@Input@xref{\InputIfFileExists{\jobname_xref.cut}{}{}}
+% \end{macrocode}
+% \end{environment}
+% \begin{macrocode}
+% End of unicode segment
+%</unicode>
+% \end{macrocode}
+% \texttt{(2013/04/01)} The \texttt{createicon} block separates out the
+% import icon macros, doc and pre-\texttt{docassembly} stuff.
+%\changes{v1.4b}{2013/04/01}{The \texttt{createicon} block separates the
+%import icon macros, doc and pre-\texttt{docassembly} stuff.}
+% \begin{macrocode}
+% Begin aebpro and createicon segments
+%<*aebpro|createicon>
+% \end{macrocode}
+%
+% \section{Document Assembly Methods}
+% Special commands and environment to take advantage of \app{Acrobat}'s extensive
+% library of security restricted methods. It is assumed the document author has properly
+% installed \texttt{aeb\_pro.js}.
+%
+% \subsection{The \texttt{docassembly} Environment}
+%
+% \begin{environment}{docassembly}
+% This is a wrapper environment for the \texttt{execJS} environment of the
+% \textsf{insDLJS} Package. Place JavaScript lines in this environment and
+% the script will execute one time after the file has been distilled and opened
+% in Acrobat Pro for the fist time.
+% \begin{macrocode}
+\newenvironment{docassembly}{%
+\execJS{docassembly}
+}{\endexecJS}
+% \end{macrocode}
+% \end{environment}
+% \subsection{Supported Assembly JS API}
+%
+% These are convenience commands -- called JavaScript helper commands -- to
+% executing security restricted JavaScript. The JS methods are defined in the
+% \texttt{aeb\_pro.js} file, kept as folder JavaScript. These commands are
+% executed in a verbatim environment where `\verb!\!' is still the escape
+% character. Each of the JavaScript helper commands expects a left
+% parenthesis `\texttt{(}' following the command name \emph{on the
+% same line} as the command name.\footnote{This requirement is consistent with JavaScript function usage.}
+% See the example below for correct usage.
+%\begin{verbatim}
+%\begin{docassembly}
+%\addWatermarkFromFile({
+% bOnTop:false,
+% cDIPath:"/C/AcroTeX/AcroPackages/ManualBGs/Manual_BG_Print_AeB.pdf"
+%});
+%\end{docassembly}
+%\end{verbatim}
+% For each of the methods below, see the \textsl{JavaScript for Acrobat API Reference}.
+%
+%\medskip\noindent The command \cs{theDocObject} is normally set to \texttt{this}, meaning
+% the current document. You may need to set it to some other doc object if you are trying to
+% access a doc object other than the current one.
+% \par\medskip\noindent
+% Revised all these function that use \cs{theDocObject}; the revisions allow you to change
+% the use of \cs{theDocObject}. The following are support commands for changing \cs{theDocObject}
+% from within the \texttt{docassembly} environment.
+% \changes{v2.5}{2016/08/03}{Revised all these function that use \string\cs{theDocObject}.}
+% \begin{macro}{\chngDocObjectTo}
+% All the JavaScript helper commands use \cs{theDocObject}, which is defined to be the \texttt{this}
+% object. To change it within the \env{docassembly} environment is difficult. The next command
+% aids in that problem.
+% \begin{macrocode}
+\let\ap@mrk\@empty
+\def\ap@gobtocomma#1,{}
+\providecommand\chngDocObjectTo[2]{%
+ \def#1##1\ap@mrk{#2,\ap@gobtocomma##1}}
+% \end{macrocode}
+% \end{macro}
+% The above defines a new command given by \texttt{\#1}. The command has one argument which is all content
+% up to the terminating mark \cs{sp@mrk}. The trick to removing \cs{thisDocObject} and replacing it with
+% \texttt{\#2}, in the above definition, we insert `\texttt{(\#2}' followed by \cs{ap@gobtocomma}, which absorbs
+% \cs{thisDocObject,} (absorbs everything through the first comma), followed by all content (\texttt{\#\#1}); the second \cs{@gobble} absorbs the left
+% parenthesis that opens the argument.
+% \begin{macrocode}
+\def\ap@TF{aebTrustedFunctions}
+% \end{macrocode}
+% An example of usage of \cs{chngDocObject} is \verb~\chngDocObjectTo{\newDO}{doc}~
+% expanded above the \texttt{docassembly} environment. Later, we can say,
+%\begin{verbatim}
+% \chngDocObjectTo{\newDO}{doc}
+% \begin{docassembly}
+% ...
+% \docSaveAs\newDO({ cPath: _path });
+% ...
+% \end{docassembly}
+%\end{verbatim}
+%That is, it is placed immediately after any of the commands below that uses \cs{theDocObject}.
+% \begin{macro}{\theDocObject}
+% This command is used in the definition of all JavaScript helper commands, as seen in the
+% definition of \cs{DeclareJSHelper} below. It is set to the doc object \texttt{this}. It can
+% be changed using \cs{chngDocObjectTo}, as described above.
+% \begin{macrocode}
+\def\theDocObject{this}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\DeclareJSHelper}
+% A general purpose command for defining what I am calling JavaScript helper commands.
+% \begin{macrocode}
+\providecommand\DeclareJSHelper[2]{%
+ \def#1##1({\ap@TF(##1\theDocObject,#2,\ap@mrk}}
+% \end{macrocode}
+% For example, we declare |\DeclareJSHelper{\docSaveAs}{aebDocSaveAs}| below, the declaration defines a new command,
+% \cs{docSaveAs}:
+%\begin{verbatim}
+% \def\docSaveAs#1({\ap@TF(#1\theDocObject,aebDocSaveAs,\ap@mrk}}
+%\end{verbatim}
+% Note that the argument of \cs{docSaveAs} is delimited by the left parenthesis, thus \texttt{\#1} is everything through that opening
+% parenthesis. This approach allows more flexibility in the definition, there can be spaces following the
+% command name |\docSaveAs ({path: _path})|, for example.
+% \end{macro}
+% \begin{macrocode}
+% End aebpro and createicon segments
+%</aebpro|createicon>
+%<*aebpro>
+% \end{macrocode}
+% \begin{macro}{\addWatermarkFromFile}
+% This is the method \texttt{Doc.addWatermarkFromFile}.
+% \begin{macrocode}
+\DeclareJSHelper{\addWatermarkFromFile}{aebAddWatermarkFromFile}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End aebpro segment
+%</aebpro>
+%<*aebpro|createicon>
+% \end{macrocode}
+% \begin{macro}{\importIcon}
+% This is the method \texttt{Doc.importIcon}.
+% \begin{macrocode}
+\DeclareJSHelper{\importIcon}{aebImportIcon}
+% \end{macrocode}
+% \begin{macrocode}
+% End aebpro and createicon segments
+%</aebpro|createicon>
+%<*aebpro>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\importSound}
+% This is the method \texttt{Doc.importSound}.
+% \begin{macrocode}
+\DeclareJSHelper{\importSound}{aebImportSound}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\appopenDoc}
+% This is the method \texttt{app.openDoc}.
+% \begin{macrocode}
+\DeclareJSHelper{\appopenDoc}{aebAppOpenDoc}
+% \end{macrocode}
+% \end{macro}
+% This is the method \texttt{Doc.saveAs}.
+% \changes{v2.5}{2016/08/31}{Added \string\cs{docSaveAs}}
+% \begin{macro}{\docSaveAs}
+% This is the document method \texttt{Doc.saveAs}.
+% \begin{macrocode}
+\DeclareJSHelper{\docSaveAs}{aebDocSaveAs}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\insertPages}
+% This is the method \texttt{Doc.insertPages}.
+% \begin{macrocode}
+\DeclareJSHelper{\insertPages}{aebInsertPages}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\createTemplate}
+% This is the method \texttt{Doc.createTemplate}.
+% \begin{macrocode}
+\DeclareJSHelper{\createTemplate}{aebCreateTemplate}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\importDataObject}
+% This is the method \texttt{Doc.importDataObject}.
+% \begin{macrocode}
+\DeclareJSHelper{\importDataObject}{aebImportDataObject}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\executeSave}
+% To save the document, use at the \emph{end of the doc assembly environment}. Usage:
+% \verb!\executeSave()!. The \cs{@gobble} used below absorbs the comma that is placed immediately
+% after the second argument by \cs{DeclareJSHelper}.
+% \begin{macrocode}
+\DeclareJSHelper{\executeSave}{aebSaveAs,"Save"\@gobble}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\extractPages}
+% API to extract pages from a newly formed document.
+% \begin{macrocode}
+\DeclareJSHelper{\extractPages}{aebExtractPages}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mailDoc}
+% Used by eEnvelope to programmatically mail a document.
+% \begin{macrocode}
+\DeclareJSHelper{\mailDoc}{aebMailDoc}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\sigInfo}
+% \begin{macro}{\signatureSign}
+% \begin{macro}{\signatureSetSeedValue}
+% The \cs{signInfo} command is used for entering signing formation into what will
+% become an object. \cs{signatureSign} takes no arguments, but uses the info
+% entered by \cs{signInfo}. An example is
+%\begin{verbatim}
+%\begin{docassembly}
+%\signInfo{
+% cSigFieldName: "sigOfDPS", ohandler: security.PPKLiteHandler,
+% cert: "D_P_Story.pfx", password: "dps017",
+% oInfo: { location: "Niceville, FL",
+% reason: "I am approving this document",
+% contactInfo: "dpstory@acrotex.net",
+% appearance: "My Signature" }
+%};
+%\signatureSign
+%\end{docassembly}
+%\end{verbatim}
+% The \cs{sigInfo} command is a latex interface to creating the
+% \texttt{oSigInfo} object.
+% \begin{macrocode}
+\newcommand{\sigInfo}{var oSigInfo=}
+\def\sigFieldObj(#1){var oSigField=this.getField(#1)}
+% \end{macrocode}
+% For the \cs{signatureSetSeedValue}, the field object is required.
+% This function assumes that the JavaScript variable \texttt{oSigField}
+% is the field object. For examle,
+%\begin{verbatim}
+%\begin{docassembly}
+%\sigFieldObj("sigOfDPS");
+%\signatureSetSeedValue({
+% lockDocument:true,
+% appearanceFilter:"My Signature",
+% reasons: ["This is a reason", "This is a better reason"],
+% flags:0x80|0x100|0x8
+%});
+%\end{docassembly}
+%\end{verbatim}
+% The signatureSetSeedValue() methods seeds a signature field with various default values
+% available to the signer.
+%\begin{verbatim}
+%\begin{docassembly}
+%var sv={
+% mdp: "defaultAndComments",
+% reasons: ["This is a reason", "This is a better reason"],
+% flags:0x80|0x100|0x8
+%};
+%\sigFieldObj("sigOfDPS");
+%\signatureSetSeedValue(sv);
+%\end{docassembly}
+%\end{verbatim}
+% \begin{macrocode}
+\def\signatureSetSeedValue#1{%
+ \ap@TF( oSigField, aebSignatureSetSeedValue, }
+% \end{macrocode}
+% The function \cs{signatureSign} takes the info in the \texttt{oSigInfo} object,
+% gets the security handler object, logs into the handler, calls
+% \texttt{signatureSetSeedValue} if the \texttt{sv} property is in the
+% \texttt{oSigInfo} object, and signs the field.
+% \begin{macrocode}
+\begin{defineJS}[\def\defineJSjsR{^^J}]{\signatureSign}
+if ( typeof oSigInfo.oHandler=="undefined" )
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,
+ aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ?
+ aebTrustedFunctions( this, aebAppGetPath,
+ {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert :
+ oSigInfo.path2Cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,
+ { cPassword: oSigInfo.password, cDIPath: path2Cert});
+var oSigField = this.getField(oSigInfo.cSigFieldName);
+oSigInfo.oInfo.password=oSigInfo.password;
+if ( typeof oSigInfo.sv!="undefined" ) {
+ for (var o in oSigInfo.sv )
+ oSigInfo.oInfo[o]=oSigInfo.sv[o];
+}
+var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
+if ( typeof oSigInfo.cLegalAttest!="undefined" )
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+if ( typeof oSigInfo.cDIPath!="undefined")
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
+if ( typeof oSigInfo.bUI!="undefined")
+ oSigArgs.bUI=oSigInfo.bUI;
+aebTrustedFunctions( oSigField, aebSignatureSign, oSigArgs );
+\end{defineJS}
+% \end{macrocode}
+% \begin{macro}{\certifyInvisibleSign}
+% This command uses the trusted version of \texttt{certifyInvisibleSign} to sign. The command
+% requires that \cs{sigInfo} is populated appropriately.
+%\begin{verbatim}
+%\begin{docassembly}
+%\sigInfo{
+% cert: "DonStory.pfx", password: "myPassword",
+% cLegalAttest: "Certified using JavaScript",
+% bUI:false,
+% oInfo: {
+% location: "Niceville, FL",
+% reason: "I am certifying this document",
+% mdp: "defaultAndComments",
+% }
+%};
+%\certifyInvisibleSign
+%\end{docassembly}
+%\end{verbatim}
+% \begin{macrocode}
+\begin{defineJS}[\def\defineJSjsR{^^J}]{\certifyInvisibleSign}
+if ( typeof oSigInfo.oHandler=="undefined" )
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,
+ aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert=aebTrustedFunctions( this, aebAppGetPath,
+ {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,
+ { cPassword: oSigInfo.password, cDIPath: path2Cert});
+oSigInfo.oInfo.password=oSigInfo.password;
+var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
+if ( typeof oSigInfo.cLegalAttest!="undefined" )
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+if ( typeof oSigInfo.cDIPath!="undefined")
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
+if ( typeof oSigInfo.bUI!="undefined")
+ oSigArgs.bUI=oSigInfo.bUI;
+aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
+\end{defineJS}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+% End aebpro segment
+%</aebpro>
+%<*aebpro|createicon>
+% \end{macrocode}
+% \subsection{Pre-docassembly Commands}
+%
+% In this section, we'll gather some ``useful'' commands
+% for combining several \texttt{docassembly} tasks together.
+% The \texttt{docassembly} environment is a partial-verbatim
+% environment, expansion is severely limited. (\verb!\! is
+% the escape sequence, but \verb!{}! are no longer grouping characters; hence
+% macros with no argument can be expanded.) The trick is to expand
+% before placing the lines in the \texttt{docassembly} environment.
+%
+% \subsubsection{Import and Place Images}
+%
+% \begin{macro}{\declareImageAndPlacement}
+% With this command, the document author can import images (icons)
+% into the document give them names, and associate the image with a
+% push button, specifically, once created by the \cs{placeImage}
+% command, defined below. The command may be used several times, once
+% for each image (icon) that is to be embedded and placed.
+%
+% This command should appear outside the \texttt{docassembly} environment.
+%
+% In the example below, give an image a name manAvatar, specify the
+% path (\texttt{man1.pdf}) and list the names of the push buttons
+% (ones created by \cs{placeImage}) where this image is to appear as
+% a button face.
+%\begin{verbatim}
+% \declareImageAndPlacement
+% {
+% name=manAvatar,path=man1.pdf,placement={Avatar1,Avatar2}
+% }
+%\end{verbatim}
+%\par\medskip\noindent
+%The macro \cs{@importIconToks} will contain all JavaScript the commands created
+% by the command \cs{declareImageAndPlacement}. \cs{aebp@image@cnt} is used
+% for automatically generating a name if one is not given.
+% \begin{macrocode}
+\let\predocassemJS\@empty
+\def\aeb@image@cnt{0}
+% \end{macrocode}
+% These keys are^^A
+% valid for the argument of \cs{declareImageAndPlacement}:
+% name, path, and placement are required; if the image is a PDF, \texttt{page=0} is the
+% default, otherwise, you can specify from which page the PDF image is to be
+% extracted from the PDF file.
+% \IndexKey{name}\IndexKey{path}\IndexKey{page}\IndexKey{placement}\IndexKey{embedonly}%
+% \IndexKey{firstpage}\IndexKey{lastpage}^^A
+% \begin{macrocode}
+\define@key{importIcons}{name}[]{\def\importIcons@name{#1}}
+\define@key{importIcons}{path}[]{\def\importIcons@path{#1}}
+\define@key{importIcons}{page}[]{\def\importIcons@page{#1}}
+\define@key{importIcons}{placement}[]{\def\importIcons@placement{#1}}
+\define@boolkey{importIcons}{embedonly}[true]{}
+\define@key{importIcons}{firstpage}[]{\def\importIcons@firstpage{#1}}
+\define@key{importIcons}{lastpage}[]{\def\importIcons@lastpage{#1}}
+% \end{macrocode}
+% The next two macros parse \cs{importIcons@placement} after it has been
+% broken down into its comma-delimited parts. We pick off the optional
+% argument using \cs{aebp@getFace}, then we call \cs{aebp@getPlacement} to
+% get the field name. These are executed from within \cs{declareImageAndPlacement}
+% below.
+%
+% If there is no optional argument, the default is 0, for the normal appearance state.
+% \begin{macrocode}
+\newcommand{\aebp@getFace}[1][0]{%
+ \def\importIcons@face{#1}\aebp@getPlacement}
+\def\aebp@getPlacement#1\@nil{\def\importIcons@fieldname{#1}%
+ \expandafter\ap@strpspcs\importIcons@fieldname\@nil
+ \edef\importIcons@fieldname{\to@nilarg}%
+}
+% \end{macrocode}
+% The command \cs{declareImageAndPlacement} takes one argument, key-value
+% pairs as described above. This command may be use many times, once for
+% each image.
+% \begin{macro}{\declareMultiImages}
+% Here is another macro, created after \cs{declareImageAndPlacement},
+% that enables the declaration of multiple images and placements.
+% The following is an example of usage:
+%\begin{verbatim}
+%\declareMultiImages{%
+% {name=manAvatar,path=man1.pdf,placement={Avatar1,Avatar2}}
+% {path=girl.png,placement={Avatar3,Avatar4}}
+% {path=AcroFord.jpg,placement=AcroFord}
+% {path=scot.gif,placement=Scot}
+%}
+%\end{verbatim}
+% (9/24/2009) Now you can enter the face number as an optional argument
+% in the placement value: \texttt{[0]} (default, normal icon), \texttt{[1]} (down icon)
+% \texttt{[2]} (rollover icon). The optional argument precedes the field name. For Example
+%\begin{verbatim}
+%\declareMultiImages
+%{%
+% {path=graphics/man1.pdf,placement={Avatar1,Avatar2}}
+% {path=graphics/girl.png,placement={[2]Avatar1,[2]Avatar2}}
+%}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\declareMultiImages}[1]{%
+ \edef\@tforExp{\noexpand\@tfor\noexpand\@dipArgs:=#1}%
+ \@tforExp\do{%
+ \expandafter\declareImageAndPlacement
+ \expandafter{\@dipArgs}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% The definition of \cs{declareImageAndPlacement}. Keys recognized are
+% defined above: \texttt{name}, \texttt{path}, \texttt{page}, \texttt{placement}.
+% \begin{macrocode}
+\newcommand{\declareImageAndPlacement}[1]{%
+ \edef\@tempexp{\noexpand\setkeys{importIcons}{name,path,page,%
+ placement,embedonly=false,#1}}\@tempexp
+ \ifx\importIcons@name\@empty{\count0=\aeb@image@cnt
+ \advance\count0by1\relax\xdef\aeb@image@cnt{\the\count0}}%
+ \edef\importIcons@name{aebImage\aeb@image@cnt}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \ifx\importIcons@placement\@empty\ifKV@importIcons@embedonly\else
+ \PackageWarningNoLine{aeb_pro}{%
+ The `placement' key was not found for the\MessageBreak
+ image named "\importIcons@name".\MessageBreak
+ Specify this key, or insert the image manually in\MessageBreak
+ the docassembly environment.}\fi\fi
+ \xdef\predocassemJS{\predocassemJS
+ var retn=\importIcon({cName:"\importIcons@name",%
+ cDIPath:"\importIcons@path"%
+ \ifx\importIcons@page\@empty\else,%
+ nPage:\importIcons@page\fi});^^J%
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not be opened.");^^J%
+ if ( retn==-2 ) console.println("Selected page
+ (page=\importIcons@page) for \string\"\importIcons@path\string\"
+ is invalid.");^^J}%
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \xdef\predocassemJS{\predocassemJS
+ var f = this.getField("\importIcons@fieldname");^^J%
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname\string\"
+ does not exist.");^^J%
+ try { f.buttonSetIcon(this.getIcon("\importIcons@name"),%
+ \importIcons@face); }
+ catch(e){};^^J}%
+ }%
+ \fi
+}
+\@onlypreamble\declareImageAndPlacement
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Embed Multi-page Images}
+%
+% \begin{macro}{\iconNameI}
+% \cs{iconNameI} is the ``template name'' for the icons, this template is a JavaScript string and expands to a
+% function of \texttt{i}. The default definition is given below.
+% \begin{macrocode}
+\newcommand{\iconNameI}[1]{\def\IconNameI(##1){#1}}
+\iconNameI{#1+"."+i}
+%\iconNameI{#1+i}
+\@onlypreamble\iconNameI
+% \end{macrocode}
+% \begin{macro}{\embedMultiPageImages}
+% \cs{embedMultiPageImages} is designed for a PDF filled with icon pages. It sets up a JavaScript
+% loop, and imports the specified page range. The name of the icon is determined by
+% the command \cs{iconNameI}, this is function of the JavaScript variable \texttt{i}, the index
+% for the loop. The command embeds the icons only. The parameters are\dots
+% \begin{itemize}
+% \item[] key-value pairs: \texttt{firstpage}, \texttt{lastpage}, \texttt{placement},
+% \texttt{name} and \texttt{path} are the only keys recognized.
+%\end{itemize}
+% \begin{macrocode}
+\newcommand{\embedMultiPageImages}[1]{%
+ \setkeys{importIcons}{name,path,page,placement,%
+ firstpage,lastpage,#1}%
+ \ifx\importIcons@firstpage\@empty
+ \def\importIcons@firstpage{1}\else
+ {\count0=\importIcons@firstpage}\fi
+ \ifx\importIcons@lastpage\@empty
+ \def\importIcons@lastpage{this.numPages}\else
+ {\count0=\importIcons@lastpage}\fi
+ \ifx\importIcons@name\@empty
+ \PackageError{aeb_pro}{The `name' key is required}
+ {Please give the icon family a name.}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \def\r{^^J}\def\t{\space\space\space\space}%
+ \let\predocassemJSPlace\@empty
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \edef\predocassemJSPlace{\predocassemJSPlace\t
+ var f = this.getField("\importIcons@fieldname."+i);\r\t
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname."+i+"\string\"
+ does not exist.");\r\t
+ try { f.buttonSetIcon(this.getIcon(%
+\IconNameI("\importIcons@name")),%
+ \importIcons@face); }
+ catch(e){};\r}%
+ }%
+ \fi
+ \xdef\predocassemJS{\predocassemJS
+ var l=\importIcons@lastpage-\importIcons@firstpage+1;\r
+ for (var i=0; i<l; i++) {\r\t
+ var retn=\importIcon({%
+ cName:\IconNameI("\importIcons@name"),%
+ cDIPath:"\importIcons@path",%
+ nPage:\importIcons@firstpage+i-1});\r\t
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not
+ be opened.");\r\t
+ if ( retn==-2 ) console.println("Selected page
+ (page="+(i+1)+") for \string\"\importIcons@path\string\"
+ is invalid.");\r
+ \predocassemJSPlace
+ }\r
+ var oIcon=this.getIcon("nullIcon");\r
+ if ( oIcon == null )
+ this.addIcon("nullIcon", this.createIcon("", 0, 0));\r
+ }%
+}
+\@onlypreamble\embedMultiPageImages
+% End aebpro and createicon segments
+%</aebpro|createicon>
+%<*aebpro>
+% \end{macrocode}
+% \begin{macrocode}
+% End aebpro segment
+%</aebpro>
+%<*animecommon>
+% \end{macrocode}
+% \begin{macro}{\placeAnimeCtrlBtnFaces}
+% This command is part of the button anime set. It embeds (using the command \cs{declareMultiImages})
+% the icon appearances of the anime controls, The field names for these controls have a name
+% of the form
+%\begin{quote}
+%\texttt{<anime\_basename>4BtnCtrl.<fieldName>}
+%\end{quote}
+% where \texttt{<anime\_basename>} is the
+% base name of the field that displays the images; and \texttt{<fieldName>} is the name of
+% the particular control.
+%
+% The first parameter is the relative or absolute path to the icons set (this path is
+% used by Acrobat JavaScript, not by {\LaTeX}; the second parameter is a comma-delimited
+% list of button animes to be controlled. An example follows:
+%\begin{verbatim}
+%\placeAnimeCtrlBtnFaces{graphics/btn_anime_icons1.pdf}%
+% {myAnimation,mysine,FamPhotos}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand{\placeAnimeCtrlBtnFaces}[3][\pathToBtnCtrlIcons]{\begingroup
+ \toks@={\aep@I{\aep@setAFirst}{animeFirst}%
+ \aep@I{\aep@setASB}{animeSB}%
+ \aep@I{\aep@setAPB}{animePB}%
+ \aep@I{\aep@setAPaus}{animePause}%
+ \aep@I{\aep@setAPF}{animePF}%
+ \aep@I{\aep@setASF}{animeSF}%
+ \aep@I{\aep@setALast}{animeLast}%
+ \aep@I{\aep@setAPlus}{animePlus}%
+ \aep@I{\aep@setAMinus}{animeMinus}}%
+ \def\aep@I##1##2{\let##1\@empty}\the\toks@
+ \def\aep@I##1##2{\edef##1{##1,\aep@thisAnime4BtnCtrl.##2}}%
+ \@for\aep@thisAnime:=#3\do{\the\toks@}%
+ \def\aep@I##1##2{\edef##1{\expandafter\@gobble##1}}\the\toks@
+ \ifx\pathToBtnCtrlIcons\@empty
+ \let\@pathsep\@empty\else\def\@pathsep{/}\fi
+ \declareMultiImages{%
+% \end{macrocode}
+% A document author may supply his own icon set, they must be placed in a
+% PDF document in the expected order:\par
+% \begin{center}
+% \begin{tabular}{cl}
+% Page & Icon\\\hline
+% 0 & Go to first frame\\
+% 1 & Go to last frame\\
+% 2 & Step back one frame\\
+% 3 & Step forward one frame\\
+% 4 & Play backward\\
+% 5 & Play forward\\
+% 6 & Pause\\
+% 7 & Increase speed\\
+% 8 & Decrease speed
+% \end{tabular}
+% \end{center}
+% \begin{macrocode}
+ {path=#1\@pathsep#2,page=0,placement={\aep@setAFirst}}
+ {path=#1\@pathsep#2,page=2,placement={\aep@setASB}}
+ {path=#1\@pathsep#2,page=4,placement={\aep@setAPB}}
+ {path=#1\@pathsep#2,page=6,placement={\aep@setAPaus}}
+ {path=#1\@pathsep#2,page=5,placement={\aep@setAPF}}
+ {path=#1\@pathsep#2,page=3,placement={\aep@setASF}}
+ {path=#1\@pathsep#2,page=1,placement={\aep@setALast}}
+ {path=#1\@pathsep#2,page=7,placement={\aep@setAPlus}}
+ {path=#1\@pathsep#2,page=8,placement={\aep@setAMinus}}
+ }%
+ \endgroup
+}
+\@onlypreamble\placeAnimeCtrlBtnFaces
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End animecommon segment
+%</animecommon>
+%<*aebpro>
+% \end{macrocode}
+% \begin{macrocode}
+% \end{macrocode}
+% \begin{macro}{\placeImageToBtn}
+% \cs{iconNameI} is the ``template name'' for the icons, this template is a
+% JavaScript string and expands to a function of \texttt{i}. The default
+% definition is given below.
+% \begin{macrocode}
+\newcommand{\placeImageToBtn}[1]{%
+ \setkeys{importIcons}{name,path,page,placement,#1}%
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \xdef\predocassemJS{\predocassemJS
+ var f = this.getField("\importIcons@fieldname");^^J%
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname\string\"
+ does not exist.");^^J%
+ try { f.buttonSetIcon(this.getIcon("\importIcons@name"),%
+ \importIcons@face); }
+ catch(e){};^^J}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \subsubsection{\texorpdfstring{\cs{insertPreDocAssembly}}{\CMD{insertPreDocAssembly}}}
+% \begin{macro}{\insertPreDocAssembly}
+% This command is to be used within the \texttt{docassembly} environment,
+% and expands to all the JavaScript lines created by
+% \cs{declareImageAndPlacement}.
+% \begin{macrocode}
+% End aebpro segment
+%</aebpro>
+%<*aebpro|createicon>
+\newcommand{\insertPreDocAssembly}{\predocassemJS}
+\let\importAndSetImages\insertPreDocAssembly
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Placing an Image (\texorpdfstring{\cs{placeImage}}{\CMD{placeImage}})}
+%
+% \begin{macro}{\placeImage}
+% This command creates the target push buttons for the images imported using
+% \cs{declareImageAndPlacement} and \cs{importAndSetImages}. It creates a readonly
+% push button with an icon only appearance. The first argument can be used
+% to modify the appearance (as described in the eforms manual), the second is
+% the name of the field (this is referenced in the \texttt{placement} key of
+% \cs{declareImageAndPlacement}, the third and fourth parameters are the width
+% and height, respectively of the push button.
+% \begin{macrocode}
+\newcommand{\placeImage}[4][]{\pushButton[%
+ \BC{}\BG{}\S{S}\Ff{\FfReadOnly}\autoCenter{n}\FB{true}
+ #1\I{null}\TP{1}]{#2}{#3}{#4}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End of aebpro and createicon segments
+%</aebpro|createicon>
+%<*animecommon>
+% \end{macrocode}
+%
+% \subsection{Button and Ocg Animation (Anime)}
+%
+% The following are the key-value pairs common to both button and ocg anime.
+% \begin{macro}{\animeSetup}
+% \begin{macro}{\widthFirstRow}
+% \cs{animeSetup} can be used to set the anime parameters when controls=none, and
+% you want to move button set to a place other than the default location, which is
+% below the anime. After setting the parameters, we have some code for calculating
+% the \cs{widthFirstRow}. this value is used by \cs{insertCtrlButtons} to set the
+% width of an enclosing \cs{parbox}, the first row is always wider than the second.
+% \begin{macrocode}
+\newcommand{\animeSetup}[1]{%
+ \let\animeSetupPresets\@empty
+ \edef\@tempExp{\noexpand\setkeys{btnAnime}{#1}}\@tempExp
+% \setkeys{btnAnime}{#1}%
+ \ifx\btnAnimeCtrlBdryColor\@empty\else
+% \end{macrocode}
+% Calculate the presets for the buttons as passed by the key-values of
+% \cs{animeSetup}.
+% \begin{macrocode}
+ \edef\@tmpExp{\noexpand\g@addto@macro%
+ \noexpand\animeSetupPresets{%
+ \noexpand\BC{\btnAnimeCtrlBdryColor}}}\@tmpExp
+ \edef\@tmpExp{\noexpand\g@addto@macro%
+ \noexpand\animeSetupPresets{%
+ \noexpand\W{\btnAnimeCtrlBdryWidth}}}\@tmpExp\fi
+% \end{macrocode}
+% Calculate the value of \cs{@btnanimerowsep}, the distance between rows
+% \begin{macrocode}
+ \edef\@btnanimerowsep{\btnanimerowsep}% dps10
+% \setlength{\@tempdima}{\btnanimerowsep+2bp}%
+% \edef\@btnanimerowsep{\the\@tempdima}%
+% \end{macrocode}
+% Calculate the width of the widest row, usually the first.
+% \begin{macrocode}
+ \setlength{\@tempdima}{%
+ (\btnAnimeCtrlW+2bp)*\numWidgetsFirstRow+%
+ (\btnanimebtnsep*(\numWidgetsFirstRow-1))}%
+ \addtolength{\@tempdima}{\addSpaceBtwnPMBtns}%
+ \edef\widthFirstRow{\the\@tempdima}%
+}
+% \end{macrocode}
+% \begin{macro}{\insertCtrlButtons}
+% This command can be used to place the anime controls somewhere other than at
+% the default location (under the anime).
+% \begin{macrocode}
+\newcommand{\insertCtrlButtons}[1][c]{%
+ \parbox[#1][\totalheight+2bp]{\widthFirstRow}{%
+ \offinterlineskip\centering\aep@btn@anime@controls}}
+\newcommand{\setspaceBtwnPMBtns}[1]{{%
+ \settowidth{\@tempdima}{#1\kern2bp}%
+ \xdef\tmp@spaceBtwnPMBtns{\the\@tempdima}}%
+ \edef\@spaceBtwnPMBtns{\tmp@spaceBtwnPMBtns}}
+\setspaceBtwnPMBtns{\space}
+\def\addSpaceBtwnPMBtns{\ifKV@btnAnime@usetworows0bp\else
+ \ifKV@btnAnime@nospeedcontrol0bp\else\@spaceBtwnPMBtns\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \paragraph{Define Key-value Pairs for anime.} The next set of code
+% defines the key-value pairs for \cs{btnAnime} and \texttt{ocgAnime}.\IndexKey{type}
+% \IndexKey{fieldName}\IndexKey{ocgAnimeName}\IndexKey{iconName}\IndexKey{speed}\par
+% \IndexKey{nFrames}
+% \begin{macrocode}
+\define@choicekey+{btnAnime}{type}[\val\nr]%
+ {loop,palindrome,stopatboundary}[stopatboundary]{%
+ \edef\aebp@btnAnime@type{\nr}}{}
+\define@key{btnAnime}{fieldName}[]{\gdef\animeBtnFieldName{#1}}
+\define@key{btnAnime}{ocgAnimeName}[]{\gdef\animeBtnFieldName{#1}}
+\define@key{btnAnime}{iconName}[]{\gdef\animeBtnBaseName{#1}}
+\define@key{btnAnime}{speed}[200]{\gdef\animeBtnSpeed{#1}}
+\define@key{btnAnime}{nFrames}[]{\gdef\nFrames{#1}}
+% \end{macrocode}
+% Additional keys
+% \IndexKey{autorun}\IndexKey{autopause}\IndexKey{autoplayevent}
+% \IndexKey{autopauseevent}
+% \IndexKey{poster}%
+% \begin{macrocode}
+\define@boolkey{btnAnime}{autorun}[true]{}
+\define@boolkey{btnAnime}{autopause}[true]{}
+\define@choicekey+{btnAnime}{autoplayevent}[\val\nr]%
+ {pageopen,pagevisible}[pageopen]{\ifcase\nr\relax
+ \def\aebp@autoplayevent{\AAPageOpen}\or
+ \def\aebp@autoplayevent{\AAPageVisible}\fi}{}%
+\def\aebp@autoplayevent{\AAPageOpen}
+\define@choicekey+{btnAnime}{autopauseevent}[\val\nr]%
+ {pageclose,pageinvisible}[pageclose]{\ifcase\nr\relax
+ \def\aebp@autopauseevent{\AAPageClose}\or
+ \def\aebp@autopauseevent{\AAPageInvisible}\fi}{}%
+\def\aebp@autopauseevent{\AAPageClose}
+\define@choicekey+{btnAnime}{poster}[\val\nr]%
+ {first,last,none}[first]{\edef\aebp@btnAnime@poster{\nr}}{}
+% \end{macrocode}
+% (Needs FIX) Behavior of the poster. When \texttt{poster=first} this is OK, no bugs.
+% When \texttt{poster=last} and the animation begins (at least for button)
+% the animation does not appear to be running until the last frame, then
+% it starts up. In this case, we display the last frame but when play is pressed
+% the animation is `cleared' and begins from frame 1.
+% \begin{macrocode}
+% \end{macrocode}
+% The following are key-values for the control buttons, in addition
+% to \texttt{ctrlwidth}\IndexKey{ctrlwidth} and \texttt{ctrlheight}\IndexKey{ctrlheight},
+% we also include \texttt{ctrlbdrywidth}\IndexKey{ctrlbdrywidth}
+% and \texttt{ctrlbdrycolor}\IndexKey{ctrlbdrycolor} the latter two so we can get the spacing
+% correct.
+% \begin{macrocode}
+\define@key{btnAnime}{ctrlwidth}[18bp]{\def\btnAnimeCtrlW{#1}}
+\define@key{btnAnime}{ctrlheight}[9bp]{\def\btnAnimeCtrlH{#1}}
+\define@choicekey{btnAnime}{ctrlbdrywidth}[\val\nr]{none,%
+ thin,medium,thick}[thin]{\edef\btnAnimeCtrlBdryWidth{\nr}}
+% \end{macrocode}
+% (2017/03/08) Let \texttt{ctrlbdrycolor} accept \pkg{xcolor}, if loaded
+% \changes{v2.8a}{2017/03/08}{\string\texttt{ctrlbdrycolor} accepts \string\pkg{xcolor}, if loaded}
+% \begin{macrocode}
+\define@key{btnAnime}{ctrlbdrycolor}[]{\def\ap@argi{#1}%
+ \ifx\ap@argi\@empty\let\btnAnimeCtrlBdryColor\@empty\else
+ \HyColor@IfXcolor{\HyColor@XZeroOneThreeFour{#1}
+ {\btnAnimeCtrlBdryColor}{}{}}
+ {\edef\btnAnimeCtrlBdryColor{#1}}\fi
+} % PDF color
+\let\animeSetupPresets\@empty
+% \end{macrocode}
+% A command to set the space between control buttons, uses \cs{btnanimebtnsep}
+% \begin{macrocode}
+\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]} % dps10
+% \end{macrocode}
+% \begin{macro}{\btnanimebtnsep}
+% The space between buttons
+% \begin{macro}{\vspacectrlsep}
+% The vertical space between the bottom of the anime and the control button set.
+% \begin{macro}{\btnanimerowsep}
+% The vertical distance between two rows of control buttons.
+% \begin{macrocode}
+\newcommand{\btnanimebtnsep}{1bp}
+\newcommand{\vspacectrlsep}{3bp}
+\newcommand{\aep@vspacectrlsep}{\vspacectrlsep}
+\newcommand{\btnanimerowsep}{1bp}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \paragraph{Definitions of ``skins'' may be redefined.}
+% \begin{macro}{\btnAnimeSkini}
+% \begin{macro}{\btnAnimeSkinii}
+% \begin{macro}{\btnAnimeSkiniii}
+% \begin{macro}{\btnAnimeSkiniv}
+% \begin{macro}{\btnAnimeSkinv}
+% \begin{macro}{\btnAnimeSkinvi}
+% The definitions of the various control button layouts. These are normally
+% not used by the document author.
+% \begin{macrocode}
+\newcommand{\btnAnimeSkini}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}\ifKV@btnAnime@nospeedcontrol\else
+ \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
+ \makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast
+ \ifKV@btnAnime@nospeedcontrol\else
+ \kern\@spaceBtwnPMBtns\btnAnimePlus
+ \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkinii}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}%
+ \ifKV@btnAnime@nospeedcontrol\else\vcgBdry[\@btnanimerowsep]%
+ \makebox[\linewidth][c]{\btnAnimePlus\@ctrlsbtnsep
+ \btnAnimeMinus}\fi\else\makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst\@ctrlsbtnsep
+ \btnAnimePlayBack\@ctrlsbtnsep\btnAnimePause%
+ \@ctrlsbtnsep\btnAnimePlayForward\@ctrlsbtnsep
+ \btnAnimeGoToLast\ifKV@btnAnime@nospeedcontrol\else
+ \kern\@spaceBtwnPMBtns\btnAnimePlus
+ \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkiniii}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward}%
+ \ifKV@btnAnime@nospeedcontrol\else
+ \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
+ \makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \ifKV@btnAnime@nospeedcontrol\else\kern\@spaceBtwnPMBtns
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkiniv}{%
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}}
+\newcommand{\btnAnimeSkinv}{\PackageWarning{aeb_pro}
+ {skin5 is undefined.\MessageBreak You may customize
+ by defining skin5;\MessageBreak meanwhile, using default,
+ skin1}\btnAnimeSkini}
+\newcommand{\btnAnimeSkinvi}{\PackageWarning{aeb_pro}
+ {skin6 is undefined.\MessageBreak You may customize
+ by defining skin6;\MessageBreak meanwhile, using default,
+ skin1}\btnAnimeSkini}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The choice for the \texttt{controls}\IndexKey{controls} key. \texttt{skin5} and \texttt{skin6}
+% default to \texttt{skin1}. These can be redefined for a custom configuration.
+% \begin{macrocode}
+\newcommand{\aepnumWidgetsFirstRow}[2]{\def\numWidgetsFirstRow{%
+ \ifKV@btnAnime@nospeedcontrol#1\else
+ \ifKV@btnAnime@usetworows#1\else#2\fi\fi}}
+\newcommand{\numWidgetsFirstRowV}{\aepnumWidgetsFirstRow{7}{9}}
+\newcommand{\numWidgetsFirstRowVI}{\aepnumWidgetsFirstRow{7}{9}}
+\define@choicekey+{btnAnime}{controls}[\val\nr]%
+ {none,skin1,skin2,skin3,skin4,skin5,skin6}[skin1]{%
+ \ifcase\nr\relax
+ \let\aep@btn@anime@controls\@empty
+ \def\widthFirstRow{0pt}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkini}%
+ \aepnumWidgetsFirstRow{7}{9}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinii}%
+ \aepnumWidgetsFirstRow{5}{7}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkiniii}%
+ \aepnumWidgetsFirstRow{3}{5}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkiniv}%
+ \aepnumWidgetsFirstRow{4}{4}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinv}%
+ \numWidgetsFirstRowV\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinvi}%
+ \numWidgetsFirstRowVI\fi
+ }{}
+% \end{macrocode}
+% The \texttt{usetworows}\IndexKey{usetworows} and
+% \texttt{nospeedcontrol}\IndexKey{nospeedcontrol} key
+% \begin{macrocode}
+\define@boolkey{btnAnime}{usetworows}[true]{}
+\define@boolkey{btnAnime}{nospeedcontrol}[true]{}
+% \end{macrocode}
+% Set the defaults for button animation.
+% \begin{macrocode}
+\setkeys{btnAnime}{fieldName,iconName,speed,nFrames,type,poster,
+ controls,usetworows=false,nospeedcontrol=false,ctrlwidth,ctrlheight,
+ ctrlbdrywidth,ctrlbdrycolor}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\btnAnimePresets}[1]{\def\aeb@btnAnimePresets{#1}}
+\def\aeb@btnAnimePresets{}
+% \end{macrocode}
+% \begin{macro}{\ctrlButtonsWrapper}
+% The \cs{ctrlButtonsWrapper} command takes one argument, and that is
+% \cs{in\-sert\-Ctrl\-But\-tons}. Redefine this command to, for example, place
+% a \cs{colorbox} around the button set,
+%\begin{verbatim}
+% \renewcommand\ctrlButtonsWrapper}[1]{\colorbox{red}{#1}}
+%\end{verbatim}
+% The default definition is\dots
+% \begin{macrocode}
+\newcommand{\ctrlButtonsWrapper}[1]{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End animecommon segment
+%</animecommon>
+%<*btnanime>
+% \end{macrocode}
+% \subsubsection{Define \texorpdfstring{\cs{btnAnime}}{\CMD{btnAnime}}}
+% \begin{macro}{\btnAnime}
+% The command \cs{btnAnime} supplies basic animation support using buttons.
+% The command \cs{btnAnime} assumes the images are embedded in the document using
+% \cs{embedMultiPageImages}, icon images for the controls are supplied by
+% \cs{placeAnimeCtrlBtnFaces}.
+% \begin{macrocode}
+\newcommand{\btnAnime}[3]{\begingroup\animeSetup{#1}%
+ \ifx\animeBtnFieldName\@empty\PackageError{aeb_pro}%
+ {The fieldName key is required}{}\fi
+ \ifx\animeBtnBaseName\@empty\PackageError{aeb_pro}%
+ {The iconName key is required}{}\fi
+ \ifx\nFrames\@empty\PackageError{aeb_pro}%
+ {The nFrames key is required}{}\fi
+ \parbox[t][#3]{#2}{%
+% \end{macrocode}
+% Set the properties of the pushbutton to be created.
+% \begin{macrocode}
+ \everyPushButton{\BC{}\BG{}\S{S}\autoCenter{n}\FB{true}\TP{1}%
+ \Ff{\FfReadOnly}\presets{\aeb@btnAnimePresets}\I{null}}%
+% \end{macrocode}
+% Set the options for the first frame, it is either visible if \texttt{poster=first}
+% or hidden, otherwise.
+% \begin{macrocode}
+ \edef\termLoop{\nFrames}\edef\firstBtnOpts{%
+ \ifnum\aebp@btnAnime@poster=0 \else\noexpand\F{\FHidden}\fi
+ \noexpand\AA{\ifKV@btnAnime@autorun
+ \aebp@autoplayevent{\noexpand\btnAnimePFAction}\fi
+ \ifKV@btnAnime@autopause
+ \aebp@autopauseevent{\noexpand\btnAnimePauseAction}\fi}}%
+% \end{macrocode}
+% Begin with the first button.
+% \begin{macrocode}
+ \makebox[0pt][l]{\expandafter\pushButton
+ \expandafter[\firstBtnOpts]{\animeBtnFieldName.0}{#2}{#3}}%
+% \end{macrocode}
+% If \texttt{poster=last}, decrement \cs{termLoop} by one.
+% \begin{macrocode}
+ \ifnum\aebp@btnAnime@poster=1
+ \count0=\nFrames\relax\advance\count0by-1
+ \edef\termLoop{\the\count0}\fi\@tempcnta=1
+% \end{macrocode}
+% Begin to `stack' the buttons (first button already in place)
+% \begin{macrocode}
+ \loop\ifnum\@tempcnta<\termLoop\relax
+ \makebox[0pt][l]{\pushButton[\F{\FHidden}]{%
+ \animeBtnFieldName.\the\@tempcnta}{#2}{#3}}%
+ \advance\@tempcnta1\relax\repeat
+% \end{macrocode}
+% Finished with the look, if \texttt{poster=last}, then we did not stack
+% the last button, we do it now.
+% \begin{macrocode}
+ \ifnum\aebp@btnAnime@poster=1\relax\makebox[0pt][l]{%
+ \pushButton{\animeBtnFieldName.\termLoop}{#2}{#3}}%
+ \fi\hfill\ifx\aep@btn@anime@controls\@empty\else
+ \offinterlineskip\vcgBdry[\vspacectrlsep]%
+% \end{macrocode}
+% Now build the control buttons
+% \begin{macrocode}
+ \everyPushButton{}\centering
+ \ctrlButtonsWrapper{\insertCtrlButtons}\fi
+ }%parbox
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+% End btnanime segment
+%</btnanime>
+%<*ocganime>
+% \end{macrocode}
+% \subsubsection{Define \texttt{ocgAnime}}
+% \begin{environment}{ocgAnime}
+% We upgrade the ocg animation to the same level of button animation. We define the
+% \texttt{ocgAnime} environment. Between he \verb!\begin{ocgAnime}! and \verb!\end{ocgAnime}!,
+% place the code for creating the animation. The only required parameters consist of the same
+% key-value pairs accepted by \cs{btnAnime}. Some keys are not used, such as \texttt{iconName}.
+% The fields \texttt{ocgAnimeName} and \texttt{nFrames} are required.
+% \begin{macrocode}
+\newenvironment{ocgAnime}[1]{\animeSetup{#1}%
+ \ifx\animeBtnFieldName\@empty\PackageError{aeb_pro}%
+ {The ocgAnimeName key is required}{}\fi
+ \ifx\nFrames\@empty\PackageError{aeb_pro}%
+ {The nFrames key is required}{}\fi
+ \DeclareAnime{\animeBtnFieldName}{\animeBtnSpeed}{\nFrames}%
+}{%
+ \edef\aep@ExpOpts{\noexpand\AA{\ifKV@btnAnime@autorun
+ \aebp@autoplayevent{\noexpand\btnAnimePFAction}\fi
+ \ifKV@btnAnime@autopause\aebp@autopauseevent{%
+ \noexpand\btnAnimePauseAction}\fi}}\smash{\makebox[0pt][l]%
+ {\expandafter\pushButton\expandafter[\aep@ExpOpts\W0\BC{}\BG{}\S{S}]%
+ {\animeBtnFieldName-autorunpause}{0bp}{0bp}}}%
+ \ifx\aep@btn@anime@controls\@empty\else\offinterlineskip
+ \vcgBdry[\vspacectrlsep]\everyPushButton{}%
+ \centering\ctrlButtonsWrapper{\insertCtrlButtons}\fi
+}
+% \end{macrocode}
+% \end{environment}
+% \begin{macrocode}
+% End of ocganime segment
+%</ocganime>
+%<*animecommon>
+% \end{macrocode}
+% \begin{macro}{\btnAnimeCtrlPresets}
+% Use \cs{btnAnimeCtrlPresets} to set the appearances for all these buttons below.
+% \begin{macro}{\btnAnimeGoToFirst}
+% \begin{macro}{\btnAnimeStepBack}
+% \begin{macro}{\btnAnimePlayBack}
+% \begin{macro}{\btnAnimePause}
+% \begin{macro}{\btnAnimePlayForward}
+% \begin{macro}{\btnAnimeStepForward}
+% \begin{macro}{\btnAnimeGoToLast}
+% \begin{macro}{\btnAnimePlus}
+% \begin{macro}{\btnAnimeMinus}
+% The control buttons for button anime. These commands are not normally used by
+% the document author, but can be used for a custom layout.
+% \begin{macrocode}
+\newcommand{\btnAnimeCtrlPresets}[1]{\def\aeb@btnAnimeCtrlPresets{#1}}
+\def\aeb@btnAnimeCtrlPresets{}
+\newcommand{\btnAnimeGoToFirst}{%
+ \pushButton[\TU{Go to first frame}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeFirstAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeFirst}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}%
+\newcommand{\btnAnimeStepBack}{%
+ \pushButton[\TU{Step Back}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeSBAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeSB}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePlayBack}{%
+ \pushButton[\TU{Play Backwards}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePBAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePB}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePause}{%
+ \pushButton[\TU{Pause}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePauseAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePause}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePlayForward}{%
+ \pushButton[\TU{Play Forwards}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePFAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePF}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeStepForward}{%
+ \pushButton[\TU{Step Forward}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeSFAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeSF}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeGoToLast}{%
+ \pushButton[\TU{Go to last frame}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeLastAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeLast}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+% These last two do not take an icon.
+\newcommand{\btnAnimePlus}{%
+ \pushButton[\TU{Increase speed\r Shift-click to restore
+ default speed}%\textFont{HeBo}\CA{+}
+ \S{S}\BC{}\FB{false}\I{null}\TP{1}
+ \presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePlusAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePlus}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeMinus}{%
+ \pushButton[\TU{Decrease speed\r Shift-click to restore
+ default speed}%\textFont{HeBo}\uCA{FEFF2212}
+ \S{S}\BC{}\FB{false}\I{null}\TP{1}
+ \presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeMinusAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeMinus}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% The following are the field events for the controls for \cs{btnAnime}
+% and \texttt{acgAnime}.
+% \begin{macrocode}
+\newcommand{\btnAnimeFirstAction}{%
+if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeFirst(\animeBtnFieldName);
+}
+\newcommand{\btnAnimeSBAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
+ \aebp@btnAnime@type,true);
+}
+\newcommand{\btnAnimePBAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
+ \aebp@btnAnime@type,false);
+}
+\newcommand{\btnAnimePauseAction}{%
+ if ((typeof \animeBtnFieldName\space == "object")&&%
+ \animeBtnFieldName.animeStart)\r\t
+ btnAnimePause(\animeBtnFieldName);
+}
+\newcommand{\btnAnimePFAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
+ \aebp@btnAnime@type,false);
+}
+\newcommand{\btnAnimeSFAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
+ \aebp@btnAnime@type,true);
+}
+\newcommand{\btnAnimeLastAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeLast(\animeBtnFieldName);
+}
+\newcommand{\btnAnimePlusAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimePlus(\animeBtnFieldName,\animeBtnSpeed);
+}
+\newcommand{\btnAnimeMinusAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeMinus(\animeBtnFieldName,\animeBtnSpeed);
+}
+% \end{macrocode}
+% The supporting JavaScript. This set of JavaScript functions support both button anime and
+% ocg anime (the \cs{btnAnime} command and the \texttt{ocgAnime} environment).
+% \begin{macrocode}
+\begin{insDLJS}[_loadBtnAnimeCtrls]{btnanime}
+ {AeB Pro: Button and Ocg Anime Controls}
+var _loadBtnAnimeCtrls=true;
+var activeAnimes=new Array();
+% \end{macrocode}
+% This function may be called with a single argument \texttt{oAnime}
+% when the anime is playing.
+% \begin{macrocode}
+function btnAnimePlay(oAnime,fieldName,baseFrameName,%
+nSpeed,nFrames,bForward,type,bStep) {
+ // ocgAnime is characterized by baseFrameName=""
+ if ( oAnime.animeStart && !oAnime.animePause ) return;
+ var callingFieldName=event.target.name;
+ var re=/\.anime(PB|PF)/;
+ var doRebuild=( event.shift && re.test(callingFieldName) );
+ if ( (arguments.length>1) && %
+( (typeof activeAnimes[fieldName] == "undefined")|| doRebuild) ) {
+ activeAnimes[fieldName]=oAnime;
+ oAnime.isOcgAnime=(baseFrameName==""); // ocg change
+ oAnime.fieldName=fieldName;
+ oAnime.baseFrameName=baseFrameName;
+ oAnime.numSecs=nSpeed;
+ oAnime.nFrames=nFrames;
+ oAnime.type=type;
+ oAnime.bStep=bStep;
+ oAnime.aMyIcons = new Array();
+ oAnime.count = 0;
+ if ( !oAnime.isOcgAnime ) {// ocg change
+ for ( var i=0; i < nFrames; i++) {
+ oAnime.aMyIcons[i] = this.getField(fieldName+"."+i);
+% \end{macrocode}
+% (2015/08/09) When starting for the first time, be sure initial frame
+% showing is the first frame 0.
+% \begin{macrocode}
+ oAnime.aMyIcons[i].display=(i==0)?display.visible:%
+display.hidden;
+ }
+ }
+ }
+ if (arguments.length>1) {
+ oAnime.bForward=bForward;
+ oAnime.bStep=bStep;
+ }
+% \end{macrocode}
+% \texttt{type}: \texttt{loop}(0), \texttt{palindrome}(1), \texttt{stopatboundary}(2)
+% \begin{macrocode}
+ if (oAnime.bStep) {
+ this.delay=true
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ var currCount=oAnime.count;
+ if (oAnime.bForward) {
+ oAnime.count++;
+ if (oAnime.count==oAnime.nFrames) // hit upper boundary
+ oAnime.count=(oAnime.type==0)?0:currCount;
+ } else {
+ oAnime.count--;
+ if (oAnime.count<0)
+ oAnime.count=(oAnime.type==0)?(oAnime.nFrames-1):0;
+ }
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.visible;
+ this.delay=false;
+ } else {
+ var args="\""+oAnime.fieldName+"\","+oAnime.type;
+ oAnime.run = app.setInterval(%
+"btnAnimeNewFrame("+args+")",oAnime.numSecs);
+ oAnime.animeStart=true;
+ oAnime.animePause=false;
+ }
+}
+function btnAnimeFirst(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ oAnime.count=0;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[0].display=display.visible;
+}
+function btnAnimeLast(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ var l = oAnime.nFrames-1;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ oAnime.count=l;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(l+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[l].display=display.visible;
+}
+function btnAnimePause(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animePause=true;
+}
+function btnAnimePlus(oAnime,nDefSpeed){
+ var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
+ if (isPlaying) btnAnimePause(oAnime);
+ if ( event.shift ) oAnime.numSecs=nDefSpeed;
+ else oAnime.numSecs -= 50;
+ if (oAnime.numSecs<10) oAnime.numSecs=10
+ if (isPlaying) btnAnimePlay(oAnime);
+}
+function btnAnimeMinus(oAnime,nDefSpeed){
+ var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
+ if (isPlaying) btnAnimePause(oAnime);
+ if ( event.shift ) oAnime.numSecs=nDefSpeed;
+ else oAnime.numSecs += 50;
+ if (isPlaying) btnAnimePlay(oAnime);
+}
+function btnAnimeNewFrame(fieldName, type)
+{
+% \end{macrocode}
+% \texttt{type=0,2,3}: \texttt{loop}(0), \texttt{palindrome}(1), \texttt{stopatboundary}(2)
+% \begin{macrocode}
+ var oAnime=activeAnimes[fieldName];
+ this.delay=true
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false;
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ var currCount=oAnime.count;
+ var bBdaryMet=false;
+ if (oAnime.bForward) {
+ oAnime.count++;
+ if (oAnime.count==oAnime.nFrames) {
+ if(type==0) oAnime.count \%= oAnime.nFrames;
+ else if(type==1) {
+ oAnime.count=currCount;
+ oAnime.count--;
+ oAnime.bForward=false;
+ } else {
+ bBdaryMet=true;
+ oAnime.count=currCount;
+ }
+ }
+ } else {
+ oAnime.count--;
+ if (oAnime.count<0) {
+ if(type==0) oAnime.count=(oAnime.nFrames-1);
+ else if(type==1) {
+ oAnime.count=currCount;
+ oAnime.count++;
+ oAnime.bForward=true;
+ } else { // stop
+ bBdaryMet=true;
+ oAnime.count=currCount;
+ }
+ }
+ }
+ if ( oAnime.isOcgAnime) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true;
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.visible;
+ this.delay=false;
+ if ( type==2 && bBdaryMet ) {
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ // try { app.clearTimeOut(timeout);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ }
+}
+\end{insDLJS}
+% \end{macrocode}
+% \begin{macrocode}
+% End of animecommon segment
+%</animecommon>
+% \end{macrocode}
+% \begin{macrocode}
+% Begin package segment
+%<*package>
+\ap@restoreCats
+%</package>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/texmf-dist/source/latex/aeb-pro/aeb_pro.ins b/texmf-dist/source/latex/aeb-pro/aeb_pro.ins
new file mode 100644
index 00000000..51ec6ecc
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/aeb_pro.ins
@@ -0,0 +1,67 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2010 D. P. Story
+%%
+%% This file is part of the AcroTeX eDucation Bundle (AeB).
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2013/04/01}
+\def\batchfile{aeb_pro.ins}
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate{%
+ \file{aeb_pro.sty}{\from{aeb_pro.dtx}{copyright,package}}
+ \file{aeblayers.def}{\from{aeb_pro.dtx}{copyright,aeblayers}}
+ \file{aebpro.def}{\from{aeb_pro.dtx}{copyright,aebpro}}
+ \file{anime_support.def}{\from{aeb_pro.dtx}{copyright,animecommon}}
+ \file{btnnanime.def}{\from{aeb_pro.dtx}{copyright,btnanime}}
+ \file{ocganime.def}{\from{aeb_pro.dtx}{copyright,ocganime}}
+ \file{create_icon.def}{\from{aeb_pro.dtx}{copyright,createicon}}
+ \file{unicodes.def}{\from{aeb_pro.dtx}{copyright,unicode}}
+% \file{fsprodef.js}{\from{aeb_pro.dtx}{copyright,fsdefjs}} % commented out beginning with 2016/07/26 v2.2
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/source/latex/aeb-pro/aeb_pro.js b/texmf-dist/source/latex/aeb-pro/aeb_pro.js
new file mode 100644
index 00000000..7b14a209
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/aeb_pro.js
@@ -0,0 +1,130 @@
+/*
+ AEB Pro Document Assembly Methods
+
+ Copyright (C) 2012 -- 2016 AcroTeX.Net
+ D. P. Story
+ http://www.acrotex.net
+
+ Version 1.4
+*/
+
+if ( typeof aebTrustedFunctions == "undefined") {
+ aebTrustedFunctions = app.trustedFunction( function ( doc, oFunction, oArgs )
+ {
+ app.beginPriv();
+ var retn = oFunction( oArgs, doc )
+ app.endPriv();
+ return retn;
+ });
+}
+aebAddWatermarkFromFile = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.addWatermarkFromFile(oArgs);
+ app.endPriv();
+});
+aebImportIcon = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.importIcon(oArgs);
+ app.endPriv();
+});
+aebInsertPages = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ try { doc.insertPages(oArgs); } catch(e) {console.println("Error: " + e.toString());}
+ app.endPriv();
+})
+aebAppOpenDoc = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ try { var retn = app.openDoc(oArgs); } catch(e) {console.println("Error: " + e.toString());}
+ app.endPriv();
+ return retn;
+})
+aebImportTextData = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.importTextData(oArgs);
+ app.endPriv();
+});
+aebImportSound = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.importSound(oArgs);
+ app.endPriv();
+});
+aebSaveAs = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ app.execMenuItem("Save");
+ app.endPriv();
+});
+aebDocSaveAs = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.saveAs(oArgs);
+ app.endPriv();
+});
+aebExtractPages = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.extractPages(oArgs);
+ app.endPriv();
+});
+aebMailDoc = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.mailDoc(oArgs);
+ app.endPriv();
+});
+aebImportDataObject = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ return retn = doc.importDataObject(oArgs);
+ app.endPriv();
+});
+aebSignatureSign = app.trustPropagatorFunction( function ( oArgs, field )
+{
+ app.beginPriv();
+ return retn = field.signatureSign(oArgs);
+ app.endPriv();
+});
+aebSecurityHandlerLogin = app.trustPropagatorFunction( function ( oArgs, securityHandler )
+{
+ app.beginPriv();
+ return retn = securityHandler.login(oArgs);
+ app.endPriv();
+});
+aebSecurityGetHandler = app.trustPropagatorFunction( function ( oArgs, security )
+{
+ app.beginPriv();
+ return retn = security.getHandler(oArgs);
+ app.endPriv();
+});
+aebAppGetPath = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ var retn = app.getPath(oArgs);
+ app.endPriv();
+ return retn;
+});
+aebSignatureSetSeedValue = app.trustPropagatorFunction( function ( oArgs, field )
+{
+ app.beginPriv();
+ return retn = field.signatureSetSeedValue(oArgs);
+ app.endPriv();
+});
+aebAddIcon=app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ doc.addIcon(oArgs);
+ app.endPriv();
+});
+aebCreateTemplate = app.trustPropagatorFunction( function ( oArgs, doc )
+{
+ app.beginPriv();
+ try { doc.createTemplate(oArgs); } catch(e) {console.println("Error: " + e.toString());}
+ app.endPriv();
+})
+
diff --git a/texmf-dist/source/latex/aeb-pro/doc/aebpro_man.tex b/texmf-dist/source/latex/aeb-pro/doc/aebpro_man.tex
new file mode 100644
index 00000000..9799084e
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/doc/aebpro_man.tex
@@ -0,0 +1,3793 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,
+ forcolorpaper,latextoc,pro},
+ eforms,linktoattachments,aebxmp
+]{aeb_pro}
+\usepackage{aeb_mlink}
+\usepackage{graphicx,array}
+%\usepackage{myriadpro}
+%\usepackage[usecmtt]{myriadpro}
+\usepackage[altbullet]{lucidbry}
+
+\usepackage{makeidx}\makeindex
+\usepackage{acroman}
+
+\usepackage[active]{srcltx}
+
+\urlstyle{sf}
+\let\uif\textsf
+
+\def\tutpath{doc/tutorial}
+\def\tutpathi{tutorial}
+\def\expath{../examples}
+
+\def\verygoodbreak{%
+\vskip0pt plus1in\goodbreak\vskip0pt plus-1in}
+
+\DeclareDocInfo
+{
+ university={\AcroTeX.Net},
+ title={\texorpdfstring{{\AcroEB} Professional\\[1em]}
+ {AcroTeX eDucation Bundle Professional: }%
+ Enhanced \texorpdfstring{\AEB}{AeB} Features using Acrobat Pro},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject={Documentation for {\AEBP} from AcroTeX},
+ talksite={\url{www.acrotex.net}},
+ version={v2.8a, 2017/03/08},
+ Keywords={XMP, E4X, Adobe Acrobat, JavaScript},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net},
+ authortitle={CEO and chief developer of AcroTeX.Net},
+ descriptionwriter={Good guy, but retired}
+}
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-31.25pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+%\pagestyle{empty}
+
+%\parindent0pt \parskip\medskipamount
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.5em}}
+\renewcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont #1}
+\newcommand{\aebDescriptionlabel}[1]{%
+ \setlength\dimen@{\amtIndent+\labelsep}%
+ {\hspace*{\dimen@}#1}}
+\makeatother
+\newenvironment{aebDescript}
+ {\begin{list}{}{\setlength{\labelwidth}{0pt}%
+ \setlength{\leftmargin}{\leftmargin}%
+ \setlength{\leftmargin}{\leftmargin+\amtIndent}%
+ \setlength\itemindent{-\leftmargin}%
+ \let\makelabel\aebDescriptionlabel
+ }}{\end{list}}
+
+\def\AEBBook{\textsl{{Acro\!\TeX} eDucation System Tools: {\LaTeX} for interactive PDF documents}}
+\def\AcroBlog{{Acro\!\TeX} Blog}
+
+\newcommand\refctan[1]{\href{http://ctan.org/pkg/#1}{ctan.org/pkg/#1}}
+\newlength{\aebdimen}
+\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\meta#1{\textit{\texttt{#1}}}
+\let\pkg\textsf
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+\def\RMA{RMA}
+\let\SC\relax
+\def\SWF{SWF}
+\def\FLV{FLV}
+\let\EXT\relax
+\def\AcroFLeX{AcroF\kern-.1667em
+ \lower.5ex\hbox{L}\kern-.3eme\kern-.125emX\@}
+\def\AEB{\textsf{AeB}}
+\def\AcroTeX{Acro\!\TeX}
+\def\HTML{HTML}\def\FDF{FDF}
+\def\PDF{PDF}\def\URL{URL}
+\let\amtIndent\leftmargini
+\def\bNH{\begin{NoHyper}}\def\eNH{\end{NoHyper}}
+\def\nhnameref#1{\bNH\nameref{#1}\eNH}
+\def\nhNameref#1{\bNH\Nameref{#1}\eNH}
+\def\nhurl#1{\bNH\url{#1}\eNH}
+\def\grayV#1{\textcolor{gray}{#1}}
+\def\darg#1{\{#1\}}
+\def\parboxValign{t}
+\renewcommand*{\backrefalt}[4]{%
+ \ifcase #1\or
+ See page~#2.\else See pages~#2.\fi
+}
+\newenvironment{aebQuote}
+ {\list{}{\leftmargin\amtIndent}%
+ \item\relax}{\endlist}
+\newcommand{\FmtMP}[2][0pt]{\mbox{}\marginpar{%
+ \raisebox{.5\baselineskip+#1}{%
+ \expandafter\parbox\expandafter[\parboxValign]%
+ {\marginparwidth}{\aebbkFmtMp#2}}}}
+\def\aebbkFmtMp{\hfill\kern0pt\itshape\small
+ \color{blue}\raggedright\hspace{0pt}}
+\newcommand{\BlogArticle}{\makebox[0pt][l]{\hspace{-1pt}\color{blue}\Pisymbol{webd}{254}%
+ }\raisebox{.5pt}{\color{red}\ding{045}}}
+\def\dps{$\mbox{$\mathfrak D$\kern-.3em\mbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+\def\FitItIn{\eq@fititin}
+\def\endredpoint{\FitItIn{{\large\ifusebw\color{black}\else\color{red}\fi$\blacktriangleleft$}}}
+
+\reversemarginpar
+
+\def\addWatermarkFromFile#1#2{%
+aebTrustedFunctions#1\theDocObject, aebAddWatermarkFromFile, #2}
+
+
+%\definePath\bgPath{"C:/Users/Public/Documents/%
+% ManualBGs/Manual_BG_Print_AeB.pdf"}
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="The AeB Pro Manual";
+var manualfilename="Manual_BG_Print_aebpro.pdf";
+var manualtemplate="Manual_BG_Blue.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=false;
+if ( buildIt ) {
+ console.println("Creating new " + manualfilename + " file.");
+ doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+ var _path=this.path;
+ var pos=_path.lastIndexOf("/");
+ _path=_path.substring(0,pos)+"/"+manualfilename;
+ \docSaveAs\newDO ({ cPath: _path });
+ doc.closeDoc();
+ doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+ f=doc.getField("ManualTitle");
+ f.value=titleOfManual;
+ doc.flattenPages();
+ \docSaveAs\newDO({ cPath: manualfilename });
+ doc.closeDoc();
+} else {
+ console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+ bOnTop:false,
+ bOnPrint:false,
+ cDIPath:_path
+});
+\executeSave();
+\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+\tableofcontents
+\selectColors{linkColor=webgreen}
+
+\section{Forward}
+
+For the past several years (this year is 2016), I've been writing a book
+titled,
+\begin{quote}
+\AEBBook.
+\end{quote}
+The book~\cite{book:AEBB} covers {\AEB}, which includes the \pkg{eforms}
+package, and {\AEBP} in \emph{great detail} and includes many examples to
+illustrate concepts and techniques. Numerous new examples are available on
+the CD-ROM that accompanies the book.
+
+During the time of the writing, each of the packages covered was examined,
+bugs were fixed, and many new and major features were created. Any new
+features developed in the course of writing the book are documented in the
+book; however, they are \emph{not included in this documentation}. You can
+either buy the yet-to-be-submitted book sometime in the future, or discover
+the features by studying the DTX documentation of the program files. Sorry,
+it took me three years to write the book, I don't want to spend another year
+on this documentation. \verb!:-{)!
+
+\begin{flushright}
+Dr. D. P. Story\\[3pt]
+January 20, 2016
+\end{flushright}
+
+
+\section{Overview}
+
+\AEBP, package file base name \texttt{aeb\_pro}
+(\href{http://ctan.org/pkg/aeb-pro}{ctan.org/pkg/aeb-pro}), is an assortment
+of features (see Section~\ref*{features} below) implemented through a
+combination of \textbf{pdfmark} operators~\cite{tech:pdfmark}, which are
+native to a PostScript file, and JavaScript techniques, some of which require
+\textsf{Acrobat Professional}. These features were meant to be used with
+{\AEB} (\AcroEB); in particular, the \texttt{insdljs} and \texttt{eforms}
+packages are essential to {\AEBP}. To have access to all the features of
+{\AEBP}, the document author must have \textsf{Acrobat Pro}~7.0 or later and
+use \textsf{dvips/\penalty0 Distiller} workflow to create the {\PDF}. For the
+most part, once the document is assembled, it can be viewed by \app{Adobe
+Reader}~7.0 or later.
+
+Despite the declaration in the \textbf{Forward} to the
+contrary\marginpar{\small\raggedleft v2.1 notes}, this manual will be updated
+for Version~2.1 of {\AEBP} to reflect the creation of a significant new
+feature, the \opt{useacrobat} option. For a document author who prefers
+\app{pdflatex} (including \app{lualatex}) or
+\app{xelatex}\marginpar{\small\raggedleft non-\app{Distiller} workflow}, this
+option opens the features of {\AEBP} provided the document author has the
+full \app{Acrobat} application and has set it up as the primary {\PDF} viewer
+on his/\penalty0 her computer system. Continue reading about the
+\app{useacrobat} option on page~\pageref{item:useacrobat}. The \opt{nopro}
+option has changed as well, the code base that does not depend on the
+\app{Acrobat} application is now available to non-\app{Distiller} workflows;
+refer to the description of the \opt{nopro} option on
+page~\pageref{item:nopro} for additional details.
+
+
+\subsection{Dedication}
+
+This is a package that I've been meaning to write for some time, it has
+had to wait for my retirement. The {\AEBP} package includes several
+techniques that I've developed over the years for my personal use, and a
+few new ones. The techniques require \textsf{Acrobat Pro}~7.0 or later,
+as well as the \textsf{Adobe Distiller}.
+
+As a now former educator, I've always preferred the use of
+\textsf{Acrobat}/\textsf{Distiller} over \textsf{pdftex}/\textsf{Adobe
+Reader}. I recognize the debt I owe to the {\Y&Y} {\TeX}
+System,\footnote{Sadly, now out of business. {\Y&Y} was a critically
+important partner in my efforts: its early use of type~1 fonts made it
+easy to use different fonts; its excellent dviwindo previewer---still
+unsurpassed by current previewers---was an essential tool in much of what
+I did, and really fired my imagination.} and to \textsf{Acrobat} and
+\textsf{Distiller}.\footnote{Though \textsf{pdftex} and \textsf{dvipdfm}
+are important applications and have their place in the {\LaTeX} to PDF
+workflow, I found them too limiting and too slow in development. For
+Acrobat, you have a team of top professional software developers working
+on the Acrobat/Adobe Reader applications, as opposed to academics working
+sporadically on a PDF creator. The viability of the applications
+(\textsf{pdftex} and \textsf{dvipdfm}) ultimately depend on too few
+individuals.} These systems have inspired me and have made it easy to
+develop new ideas. I believe that if I had not used the Windows/Acrobat
+platform, I would not have developed all the packages and systems that I
+did.\footnote{An Internet colleague once asked me why I didn't switch over
+to Linux, I responded that if I had done that, we would not know each
+other. We were brought together by the software development that I did on
+the Windows/Acrobat platform. Switching would have shut me down from the
+beginning.}
+
+I dedicate \textsf{{\AEBP}} to {\Y&Y} (developer Berthold K. P. Horn) and
+to Adobe Systems, developer of \textsf{Acrobat}. Since I entered the
+Internet education business, I've gotten to know Berthold quite well
+through our email correspondence, and many of the software engineers of
+the \textsf{Acrobat} software engineering team.\footnote{In the year 2000,
+I took a seven month sabbatical in San Jos\'e, CA, and worked on the
+\textsf{Acrobat} software engineering team, for \textsf{Acrobat}~5.0. Good
+memories from my days with Adobe remain. I made good friends there.} Thank
+you all for your wonderful work.
+
+\subsection{Features}\label{features}
+
+As you might discern from the table of contents, this package features:
+\begin{enumerate}
+ \item {\AEB} Central Control: A uniform way of handling the packages in
+ the Acro\!{\TeX} Family of Software.
+ \item Supports all fields in the Initial View tab of the Document Properties
+ dialog box.
+ \item Complete support for document level JavaScripts and for document actions.
+ \item Complete support for page actions, both open and close events.
+ \item Complete support for fullscreen mode.
+ \item Support for attaching documents, and for linking to and for launching embedded files.
+ \item Support for creating a PDF Package, new to version 8 of
+ \textsf{Acrobat}.
+ \item Support for what I call document assembly methods, which I've found to be very useful
+ through the years. (This technique was developed in the year 2000 while I was out in
+ San Jos\'{e}.)
+ \item Support for the use of Optional Content Groups, rollovers and animations.
+\end{enumerate}
+I anticipate future developments.
+
+\subsection{Sample Files and Articles}\label{s:samplefiles}
+
+
+The basic distribution demonstration files are available from the
+\href{http://www.math.uakron.edu/~dpstory/aeb_pro.html}{\AEBP}
+website.\footnote{\url{\bUrl/aeb_pro.html}}
+
+\paragraph*{\AcroBlog.}\label{para:AcroBlog} The basic examples from the distribution are also available
+from the \AcroBlog, accessible from the page
+\href{http://www.acrotex.net/blog/?cat=98}{{\AEBP} Demo Files}.\footnote{\url{http://www.acrotex.net/blog/?cat=98}}
+There is another more recent collection of examples on
+\href{\urlAcroTeXBlog}{\AcroTeX{} Blog}, these will be referenced in the margin using the icon %\exAeBBlogPDF
+\mbox{\makebox[0pt][l]{\textcolor{blue}{\Pisymbol{webd}{254}}}%
+ \raisebox{-2pt}{\color{red}{{\zqacr b\hspace{9.5pt}}}}}\,, whereas
+\mbox{\makebox[0pt][l]{\hspace{-1pt}\textcolor{blue}{\Pisymbol{webd}{254}}}%
+\raisebox{.5pt}{\color{red}{\ding{045}}}} refers to a written blog
+article. In all cases, the source file and any dependent resources are attached to the
+PDF. A listing of all examples that have the \textit{\href{\urlAcroTeXBlog/?tag=aeb-pro}{aeb-pro}}
+tag.\footnote{\url{\urlAcroTeXBlog/?tag=aeb-pro}}
+
+
+%\exAeBBlogPDF{p=877} See the file \texttt{\href{\urlAcroTeXBlog/?p=877}{bgtest.pdf}}.
+
+
+\subsection{Requirements}
+
+To open this package up to a wider population of users, the requirements for
+this package have changed; the document author is no longer required to own
+the \app{Acrobat} application (strongly recommended) and is no longer
+required to use the \app{dvips/Distiller} workflow, as previous versions have
+required. This package classifies you, as the document author, into one of
+three groups:
+\begin{enumerate}
+ \item You own \app{Acrobat} and use the \app{dvips/\penalty0 Distiller}
+ workflow. This is the ideal workflow for this package because all
+ features of this package are available.
+ \item You own \app{Acrobat} but prefer to use a non-\app{Distiller}
+ workflow; that is, you prefer to use the applications
+ \app{pdflatex}, \app{lualatex}, or \app{xelatex}. In this case,
+ almost all features are available through the \opt{useacrobat}
+ option, refer to the initial description of this option on
+ page~\pageref{item:useacrobat}.
+ \item You do not own \app{Acrobat}, your {\PDF} creator must be
+ \app{pdflatex}, \app{lualatex}, or \app{xelatex}. To avoid compile
+ errors, you must use the \opt{nopro} option, read the initial description
+ of this option on page~\pageref{item:nopro}.
+\end{enumerate}
+If you do own \app{Acrobat}, it must be version~7 or later; to repeat,
+$$
+\boxed{\text{\textbf{\textsf{Acrobat~7.0 Professional}} or later is required}}
+$$
+If you do not own \app{Acrobat} and you want to access the extensive features
+of {\AEBP} beyond what the \opt{nopro} option provides, you need to buy the
+application.\footnote{In the United States and Europe, Adobe offers a
+significant academic discount on its software, including \app{Acrobat
+Pro}. Educators should look into the price structure of \app{Adobe Acrobat}
+at their institutions; perhaps, their Department or College can supply a
+financial grant for the purchase of the software.} Once the document is
+built, however, \textsf{\textbf{Adobe Reader~7.0}} (or later) is sufficient
+to view the document. This is a reasonable restriction since some JavaScript
+techniques used by this package require \app{Acrobat Pro}.
+
+\textbf{{\AEBP}} requires the \pkg{insdljs} and
+\pkg{eforms} packages, both of which are included with the
+\textbf{\AcroEB} (\AEB) distribution. The use of the {\Web} package
+is optional, though highly recommended. These are all meant to fit
+together as a comprehensive and unified family of packages, after all.
+
+\newtopic Below is a list of other required packages used by the \AEBP:
+\begin{enumerate}
+ \item \textsf{hyperref}: The \textsf{hyperref} bundle should be
+ already on your system, it is standard to most {\LaTeX} distributions.
+
+ \item \texttt{xkeyval}: The very excellent package by Hendri
+ Adriaens. This package allows developers to write commands
+ that take a variety of complex optional arguments. You should
+ get the most recent version, at this writing, the latest is
+ v2.5e, or later.
+
+ \item \texttt{xcolor}: An amazing color package by Dr. Uwe Kern.
+ This package makes it easy to write commands to dim the color.
+ Get a recent version, at this writing, the latest is v2.08
+ (2005/11/25).
+
+ \item \texttt{truncate}: This package, by Donald Arseneau, is used in the navigation panel to abbreviate the
+ section titles if they are too wide for the panel. This package is distributed with
+ the \APB.
+
+ \item \texttt{comment}: A general purpose package, Victor Eijkhout, for creating environments that can be
+ included in the document or excluded as comments. A very useful package for {\LaTeX}
+ package developers. This package is distributed with the \APB.
+
+ \item \texttt{eso-pic} by Rolf Niepraschk and \texttt{everyshi} by Martin Schr\"oder, these are used
+ by {\Web} to create background graphics and graphic overlays.
+\end{enumerate}
+One of the extremely nice features of \textbf{MiK\TeX} is
+that it can automatically download and install any unknown packages
+onto your hard drive, so getting the {\AEBP} up and running is not a
+problem!
+
+\subsection{The {\AEBP} Family of Software}
+
+To qualify to be a member of the `{\AEBP} Pro' family, a package must require \app{Acrobat Distiller}
+as the PDF creator. We list many of the members of this exclusive family.
+
+\begin{description}\def\NH{\hspace*{-\labelsep}}
+ \item\NH\pkg{aebxmp} is a {\LaTeX} package (\refctan{aebxmp}) that
+ fills in the advance metadata. The package requires \app{Acrobat}~8
+ Professional and uses \SC{E4X}, the \SC{XML} parser that is built
+ into the JavaScript engine.
+
+ \item\NH\pkg{rmannot} (\refctan{rmannot}) creates rich media
+ annotations (\RMA), which may embed or stream {\SWF}, {\FLV}, and
+ \EXT{MP3} files for playing while a document is being read.
+
+ Rich media annotation is a feature of \app{Acrobat}/\app{Adobe
+ Reader}, version~9 or later. \app{Acrobat Pro} and \app{Acrobat
+ Distiller} (version~9 or later) are required to build a document, and
+ \app{Adobe Reader} (version~9 or later) is needed to activate the
+ annotation and play the media.
+
+\item\NH \app{\AcroFLeX} is an application of the \pkg{rmannot} package
+ briefly described above. The \pkg{acroflex} package
+ (\refctan{acroflex}) creates a graphing screen. The user can type in
+ functions and graph them. A graphing screen can be populated with
+ pre-packaged functions for the user to scrutinize and interact with.
+ The package can graph functions of a single variable $x$, a pair of
+ parametric equations that are functions of $t$, and a polar function of
+ $t$.
+
+ The graphing screen is a rich media annotation that uses a specially
+ developed {\SWF} file, called the {\AcroFLeX} Graphing widget. The package
+ takes advantage of rich media annotations, a version~9 feature of
+ \app{Acrobat}; it therefore requires \app{Acrobat Pro and Distiller}
+ version 9 or later. The user needs to use \app{Adobe Reader} (version~9.0
+ or later) in order to obtain the graphing functionality.
+
+ \item\NH \pkg{aeb\_mlink} (\refctan{aeb-mlink})
+ creates hypertext links in documents for text extending over
+ \emph{multiple lines}. The package requires that the {\PDF} be
+ created by \app{Acrobat Distiller}, version~7.0 or later to create
+ multi-line links, and requires \app{Adobe Reader}~7.0 or later for
+ the links to work correctly.
+
+ \item\NH\pkg{annot\_pro} (\refctan{annot-pro}) is used to
+ create text, stamp, and file attachment annotations using
+ \app{Acrobat Distiller} that can then be viewed in \app{Adobe
+ Reader}.
+
+ \item\NH \pkg{graphicxsp} (\refctan{graphicxsp}) embeds a graphic file in
+ a {\PDF} document in such a way that the author may reuse that same
+ graphics without significantly increasing the file size. The
+ package also supports the Adobe transparency model.
+\end{description}
+The next three packages are less important, some are ``novelty'' packages.
+\begin{description}\def\NH{\hspace*{-\labelsep}}
+
+ \item \NH\pkg{acrosort} (\refctan{acrosort}) is a novelty package for
+ importing an image that has been sliced into rows and columns and
+ randomly rearranged. The JavaScript does a bubble sort on the
+ picture.
+
+ \item \NH \pkg{{\AEB} Slicing} is a batch sequence
+ (\refctan{aebslicing}) for \app{Acrobat Pro} that takes the image
+ open in \app{Acrobat} and slices it into a specified number of rows
+ and columns, and saves the slices to a designated folder. It is
+ used for the \pkg{acromemory} package.
+
+ \item \NH \pkg{acromemory} is a {\LaTeX} package (\refctan{acromemory})
+ that implements two variations of a memory game: (1) a single game
+ board consisting of a number of tiles, each tile has a matching
+ twin, the object is to find all the matching twins; (2) two game
+ boards, both identical except one has been randomly rearranged, the
+ object is the find the matching pieces in each of the two game
+ boards. The \pkg{{\AEB} Slicing} is used to slice the image into a specified
+ number of rows and columns.
+\end{description}
+These, as well as the {\AEBP} distribution itself, are available through CTAN
+or the {\AEBP} family website:
+\begin{equation*}
+ \text{\url{www.math.uakron.edu/~dpstory/aeb_pro.html}}
+\end{equation*}
+
+
+\subsection{Package Options}
+
+Below is a list of all options of the {\cAEBP} package:
+\begin{description}
+ \item [\texttt{driver=\anglemeta{driver}}\enspace] The permissible values
+ of \anglemeta{driver} are \opt{dvips}, \opt{dvipsone}, \opt{pdftex},
+ and \opt{xetex}. The latter two are automatically detected and need
+ not be specified. If no detectable driver is identified and no driver
+ is given, \opt{dvips} is assumed.
+
+ \item [\texttt{useacrobat}\enspace]\label{item:useacrobat} For those who prefer to use
+ \app{pdflatex} (or \app{lualatex}) or \app{xelatex} \emph{and} who
+ own the \app{Acrobat} application, use the \opt{useacrobat} option to
+ open all features of this package except for any features associated
+ with the \app{uselayers} option. The creation of layers is still only
+ supported through the \textbf{pdfmark} operator.
+
+ As you go through the examples provided by this package, all sample
+ files work except for the ones using the \opt{uselayers} or
+ \opt{ocganime} option.
+
+ Continue reading about the \opt{useacrobat} option in Section~\ref{useacrobatOpt}.
+
+ \item [\texttt{nopro}\enspace]\label{item:nopro} If this option is taken,
+ then no code that requires \app{Distiller} or \app{Acrobat} is input.
+ Authors who use \app{pdflatex/\penalty0 lualatex/\penalty0 xelatex}
+ and who do not own the \app{Acrobat} application may have access to
+ the `nopro' features by taking the \opt{nopro} option.
+
+ Continue reading about the \opt{nopro} option in
+ Section~\ref{s:noproOpt}.
+
+
+ \item [{\AEBP} Options\enspace] The {\cAEBP} package recognizes the
+ components of {\AEB}, these are \texttt{web}, \texttt{exerquiz},
+ \texttt{dljslib}, \texttt{eforms}, \texttt{insdljs},
+ \texttt{eq2db}, \texttt{aebxmp},
+ \texttt{graphicxsp}, \texttt{hyper\-ref}. The value of each of these is a list of
+ options you want that package to use. (The hyperref package is not
+ a component of {\AEB}, but it is such an integral part of {\AEB} that it
+ is included.) See \hyperref[AeBCC]{Section~\ref*{AeBCC}},
+ page~\pageref*{AeBCC}.
+
+ \item [\texttt{gopro}\enspace] Some components of {\AEB} have a pro option,
+ when you use the gopro option of {\cAEBP}, the \texttt{pro} option
+ is passed to all components of {\cAEBP} that have a \texttt{pro}
+ option.
+
+ \item [\texttt{attachsource}\enspace] This key has as its value a list of
+ extensions. For each extension listed, the file \cs{jobname.ext}
+ will be attached to the parent PDF. See
+ \hyperref[attachsource]{Section~\ref*{attachsource}},
+ page~\pageref*{attachsource}.
+
+ \item [\texttt{attachments}\enspace] This key has its value a list of paths
+ to files to be attached to the parent document. See
+ \hyperref[attachments]{Section~\ref*{attachments}},
+ page~\pageref*{attachments}.
+
+ \item [\texttt{linktoattachments}\enspace] Invoking this option causes code
+ for linking to attachments, or for giving attachments descriptions
+ other than the default ones. See
+ \hyperref[linktoattachments]{Section~\ref*{linktoattachments}},
+ page~\pageref*{linktoattachments}.
+
+ %\item [\texttt{latin1}\enspace] A companion option to \texttt{linktoattachments}. When this
+ % option is used, the set of latin1 unicodes are input and are
+ % available to be used in the descriptions of attachments.
+ % See `\nameref{description}' on page~\pageref*{description}.
+
+ \item [\texttt{childof}\enspace] In a {\LaTeX} child document, use this
+ option to set the path back to the parent document. See
+ \hyperref[childof]{Section~\ref*{childof}},
+ page~\pageref*{childof}.
+
+ \item [\texttt{btnanime}\enspace] When this option is taken, the code for button
+ animation is included in the compilation. See
+ \hyperref[s:btnanime]{Section~\ref*{s:btnanime}},
+ page~\pageref*{s:btnanime} for details.
+
+ \item [\texttt{uselayers}\enspace] Taking this option brings in code in
+ support of Optional Content Groups, see
+ \hyperref[layers]{Section~\ref*{layers}}, page~\pageref*{layers}.
+
+
+ \item [\texttt{ocganime}\enspace] When this option is taken, the code for
+ ocg animation is included in the compilation. See
+ \hyperref[ss:ocganime]{Section~\ref*{ss:ocganime}},
+ page~\pageref*{ss:ocganime} for details.
+
+\end{description}
+
+%\verygoodbreak
+
+\subsection{Installation}
+
+%The {\AEB} distribution comes in two ZIP files: \texttt{acrotex\_pack} and
+%and \texttt{acrotex\_exdoc}. The former contains the program files and
+%documentation, and the latter contains example files and other documentation.
+%Instructions for installing and unpacking the distribution follow.
+
+{\AEBP} requires the installation of {\AEB}
+(\href{http://ctan.org/pkg/acrotex}{ctan.org/pkg/acrotex}). Be sure to
+install {\AEB} and to read the installation instructions. In this section, we
+outline the method of installing {\AEBP}.
+
+\subsubsection{Automatic installation}
+
+Some {\TeX} systems, most notably \textbf{MiK\TeX} and \textbf{{\TeX} Live},
+have a Package Manager to automatically download and install {\LaTeX}
+packages. If you have a Package Manager and not installed {\AEBP} do so now.
+After {\AEBP} is installed, it is not quite ready to be used. Locate where
+the Package Manager installed the documentation portion of the installation,
+for MiK\TeX, this might be at
+\begin{Verbatim}[xleftmargin=\amtIndent]
+C:\Program Files (x86)\MiKTeX 2.9\doc\latex\aeb-pro
+\end{Verbatim}
+(This path assumes the use of \textbf{MiK\TeX~2.9}.) The folder contains documentation and example files. If also contains the two
+JavaScript files, \texttt{aeb.js} and \texttt{aeb\_pro.js}. Refer to
+\nhNameref{ss:aebpjs} for more information on the installation of these two files.
+
+\subsubsection{Manual installation}
+
+Manual installation may be necessary for some {\TeX} systems, or for the case
+where you have downloaded the ZIP package files from CTAN or from the home website of
+{\AEBP} at \url{\bUrl/aeb_pro.html}.
+
+The {\AEBP} distribution comes in two ZIP files: \texttt{aebpro\_pack.zip}
+and \texttt{aebpro.zip}. The first contains the program files and
+documentation,\footnote{Available from \url{\bUrl/aeb_pro.html}} the latter
+contains the full distribution, including program files, documentation, and
+example files. If you already have {\AEBP}, it suffices to update your
+installation using \texttt{aebpro\_pack.zip}. If you don't have {\AEBP}
+already installed, the install the contents of \texttt{aebpro.zip}.
+
+\newtopic To install {\AEBP}, use the following steps:
+\begin{enumerate}
+\item Place \texttt{aebpro.zip} (or possibly \texttt{aebpro\_pack.zip}) on your latex search file
+ and unzip. (If you already have an \texttt{aeb\_pro} folder, unzip
+ one level above the \texttt{aeb\_pro} folder.) Unzipping creates
+ a folder named \texttt{aeb\_pro}.
+
+\item[] \textbf{Installing {\AEBP} with MiK\TeX{} 2.8 or later.}
+ {MiK\TeX}~2.8 or later is more particular about where you install
+ packages by hand. If you are installing {\AEBP} by hand, {MiK\TeX}~2.8/2.9
+ requires that you install the distribution in a local root TDS tree.
+ Review the {MiK\TeX} help page on this topic
+ \begin{equation*}
+ \text{\url{http://docs.miktex.org/manual/localadditions.html}}
+ \end{equation*}
+ Within \verb!C:\Local TeX Files\tex\latex!, copy
+ \texttt{aebpro\_pack.zip} (and possibly \texttt{aebpro.zip}) and unzip. Unzipping creates a folder
+ named \texttt{aeb\_pro}.
+
+\item[] If you already have {\AEBP} that was automatically installed on your {MiK\TeX}
+ system, you should delete this old version of {\AEBP}. You may have to use the
+ {MiK\TeX} package manager to remove them from the {MiK\TeX} database registry.
+
+\item Within the \texttt{aeb\_pro} folder, latex the file \texttt{aeb\_pro.ins} file, this unpacks
+ the installation.
+
+\item[] Users of \textbf{MiK\!\TeX} need to refresh the filename database.
+
+\item Install the JavaScript file, \texttt{aeb\_pro.js}, as explained in the next subsection.
+\end{enumerate}
+
+\noindent{\AEB} (\AcroEB) is also required, installation instructions are contained
+in the {\AEB} reference document, the instructions are reproduced here for your convenience.
+
+\newtopic To install {\AEB}, use the following steps:
+\begin{enumerate}
+\item Place \texttt{acrotex.zip} in your latex search file and unzip. (If
+ you already have an \texttt{acrotex} folder, you should unzip the file
+ \texttt{acrotex.zip} one level above the \texttt{acrotex} folder.)
+ Unzipping creates a folder named \texttt{acrotex}.
+
+\item[] \textbf{Installing {\AEB} with {MiK\TeX} 2.8 or later.} {MiK\TeX} is more particular
+ about where you install packages by hand. If you are installing
+ {\AEB} by hand (recommended), {MiK\TeX} requires that you install the distribution
+ in a local root TDS tree. Review the {MiK\TeX} help page on this topic
+ \begin{equation*}
+ \text{\url{http://docs.miktex.org/manual/localadditions.html}}
+ \end{equation*}
+ Within the local root folder, e.g.,
+ \texttt{C:\string\Local\ TeX Files\string\tex\string\latex}, copy the file \texttt{acrotex.zip} and unzip it.
+ Unzipping creates a folder named \texttt{acrotex}.
+
+\item[] If you already have {\AEB} that was automatically installed on your {MiK\TeX}
+ system, you should delete this old version of {\AEB}. You may have to use the
+ {MiK\TeX} Package M anager to remove them from the {MiK\TeX} database registry.
+
+\item Within the \texttt{acrotex} folder, latex the file
+ \texttt{acrotex.ins} file, this unpacks the installation.
+
+\item[] Users of \textbf{MiK\!\TeX} need to refresh the filename database.
+
+\item Install the JavaScript file, \texttt{aeb.js}, as explained in the next subsection.
+\end{enumerate}
+
+
+\subsubsection{Installing \texttt{aeb\_pro.js} and \texttt{aeb.js}}\label{ss:aebpjs}
+
+The instructions for installing the JavaScript support files
+\texttt{aeb\_pro.js} and \texttt{aeb.js} are in the
+\texttt{\href{install_jsfiles.pdf}{install\_jsfiles.pdf}}, which resides in
+the \texttt{doc} folder of the \texttt{aeb\_pro} installation.
+
+After you've installed the JavaScript files, as directed by the
+\texttt{\href{install_jsfiles.pdf}{install\_jsfiles.pdf}}, validate the
+installation of the JavaScript files by navigating to the \texttt{examples}
+subfolder and opening the file \texttt{test\_install.pdf} in \app{Acrobat};
+follow the directions contained on that one page document.
+
+\begin{comment}
+
+The JavaScript methods used by the \texttt{docassemble} environment, see
+\mlNameref{docassembly}, have a security setting in \textsf{Acrobat};
+\textsf{Acrobat} requires that such methods be \emph{trusted methods}. The
+file \texttt{aeb\_pro.js} enables you to execute the doc assembly methods
+described later without \textsf{Acrobat} raising security exception.
+
+The JavaScript file \texttt{aeb.js}, which comes with {\AEB}, is only ~needed
+if you use \textsf{Acrobat Pro}~8.1 or later. Increased security in that
+version has made it necessary to install a folder JavaScript file to be
+able to install document level JavaScripts.
+
+
+\paragraph*{Acrobat Pro~8.1 or later.} Start \textsf{Acrobat Pro}~8.1 or
+later, and open the console window \textsf{Advanced \texttt> JavaScript
+\texttt> Debugger} (\texttt{Ctrl+J}). Copy and paste the following code
+into the window.
+\begin{Verbatim}
+ app.getPath("user","javascript");
+\end{Verbatim}
+Now, this the mouse cursor on the line containing this script, press
+the \texttt{Ctrl+Enter} key. This will execute this JavaScript. This
+JavaScript method returns the path to where \texttt{aeb.js} and
+\texttt{aeb\_pro.js} should be placed. For example, on my system,
+the return string is
+\begin{Verbatim}[fontsize=\small]
+ /C/Documents and Settings/story/
+ Application Data/Adobe/Acrobat/8.0/JavaScripts
+\end{Verbatim}
+Follow the path to this folder. If the \texttt{JavaScripts} folder does
+not exist, create it. Finally, copy both \texttt{aeb.js} and
+\texttt{aeb\_pro.js} into this folder. Close \textsf{Acrobat}, the next
+time \textsf{Acrobat} is started, it will read in the to \texttt{.js}
+files.
+
+\paragraph*{Acrobat Pro~10.1.1.} For this version of \textsf{Acrobat},
+things have tightened up even more. The user JavaScripts folder has moved to
+\begin{Verbatim}[fontsize=\small]
+ %AppData%\Adobe\Acrobat\Privileged\10.0\JavaScripts
+\end{Verbatim}
+where \verb!%AppData%! is an environment variable defined by Acrobat. For details
+of how to install the folder JavaScripts in the new location, see my blog
+article \mlhref{http://www.acrotex.net/blog/?p=737}{Acrobat Security Changes in 10.1.1 and
+Acro\!\TeX}.
+
+\end{comment}
+
+\subsubsection{Installing \texttt{aebpro.cfg}}
+
+The distribution comes with a file named \texttt{aebpro.cfg}, the
+contents of which are displayed below:
+\begin{Verbatim}
+%
+% AeB Pro Configuration file
+%
+\ExecuteOptionsX{driver=dvips}
+\end{Verbatim}
+Locate this file in the root folder of the {\AEBP} installation. If the
+driver is specified in the configuration file, it need not be included in the
+option list of \texttt{aeb\_pro}.
+
+
+\subsection{Examples}
+
+The following is a list of the example files that illustrate and
+test various features of {\AEBP}.
+
+\begin{enumerate}
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1237}{aebpro\_ex1.tex}}: Illustrates the document and page
+ open/close actions and full screen support of {\AEBP}.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1242}{aebpro\_ex2.tex}}: Demonstrates the features of the
+ \texttt{pro} option of the \textsf{web} package, including enhanced control
+ over the layout of section headings and the title page.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1245}{aebpro\_ex3.tex}}: Highlights the various attachment options and the
+ doc assembly methods.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1251}{aebpro\_ex4.tex}}: A discussion of layers, rollovers
+ and animation.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1257}{aebpro\_ex5.tex}}: This file discusses linking to attachments
+ and covers commands \cs{ahyperref}, \cs{ahyperlink} and
+ \cs{ahyperextract}.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1263}{aebpro\_ex6.tex}}: Learn how
+ to create a PDF Package out of your attachments.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1266}{aebpro\_ex7.tex}}:
+ Explore the \cs{DeclareInitView} command, documentation included in
+ this file.
+
+ \item \texttt{\href{\urlAcroTeXBlog/?p=1268}{aebpro\_ex8.tex}}: Details
+ of how to use unicode to set the initial value(s) of field, or as
+ captions on a button.
+\end{enumerate}
+These sample files are available in the \texttt{examples} folder of the
+\texttt{aeb\_pro} folder. When links given above are to the same files on the
+{\AcroBlog}.
+
+\exPDFSrc{aebpro_ex1} Throughout this document, the above exercises are
+referenced using icons in the left margins. These icons are live hyperlinks
+to the source file or the PDF. For example, we reference \texttt{aebpro\_ex1}
+in this paragraph. The example files can be found in the \texttt{examples}
+sub-folder of the \texttt{aeb\_pro} distribution. Alternatively, if the above
+links do not work because you have moved this documentation, you can also
+access the basic distribution examples from the {\AcroBlog} website, refer to
+the named paragraph \textbf{\nhnameref{para:AcroBlog}}\FmtMP{\BlogArticle} on page~\pageref{para:AcroBlog}
+for links to this resource.
+
+\section{Concerning the
+\texorpdfstring{\protect\opt{useacrobat}}{useacrobat}
+option}\label{useacrobatOpt}
+
+For document authors who have the full \app{Acrobat} application but prefer a
+non-\app{Distiller} workflow, use the \opt{useacrobat} option to declare to {\AEBP}
+that you have \app{Acrobat}. Traditionally, if neither \app{pdflatex}
+(including \app{lualatex}) nor \app{xelatex} are used, a \app{dvips/\penalty0
+Distiller} workflow is assumed. Declaring the \opt{useacrobat} option opens
+up all features except for those that depend on the use of layers (also
+called {\EXT{OCG}s); in particular, the options \opt{uselayers} and
+\opt{ocganime} are disallowed}. All features, therefore, described in this
+manual are available to \app{pdflatex} and \app{xelatex} document authors who
+have \app{Acrobat}, \emph{except for those features} described in
+Section~\ref{layers} and Section~\ref{ss:ocganime}.
+
+\paragraph*{Syntax.} The syntax for this option is simple:
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
+\usepackage[!textbf(useacrobat),
+ !meta(options)
+]{aeb_pro}
+\end{Verbatim}
+where \meta{options} \emph{does not include} the
+\opt{uselayers} and \opt{ocganime} options.
+
+\newtopic
+Regarding \app{{\AEB} Control Central} (Section~\ref*{AeBCC}), when you
+specify \opt{useacrobat},\footnote{This implies you are not using
+\opt{Distiller} as the {\PDF} creator.} the packages \pkg{graphicxsp} and \pkg{rmannot} of
+display~\eqref{display:ACCopts} are not allowed to be specified in the option
+list of \pkg{aeb\_pro}. These two packages use the \textbf{pdfmark} operator
+to implement their features; a \app{dvips/\penalty0 Distiller} workflow is
+required in this case.
+
+\section{The \texorpdfstring{\protect\opt{nopro}}{nopro} option}\label{s:noproOpt}
+
+For authors \emph{who do not have} the \app{Acrobat} application, you must
+use \app{pdflatex} (or \app{lualatex}) or \app{xelatex} to produce your
+{\PDF}. The only option for using {\AEBP} is to specify the \opt{nopro}
+option.
+
+\paragraph*{Syntax.} The syntax for \opt{nopro} is to declare it
+in the option list:
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
+\usepackage[!textbf(nopro),
+ !meta(options)
+]{aeb_pro}
+\end{Verbatim}
+Specifying this option excludes the use of layers (the options
+\opt{uselayers} and \opt{ocganime} are prohibited) and any commands or
+environments that use `post-{\PDF} creation' methods\index{post-PDF creation
+methods!referenced} will silently (or not so silently) fail. All features are
+available that are implemented using {\LaTeX} that does not depend on the
+driver, or {\LaTeX} that is driver dependent. These include the commands and
+environments of Sections~\ref{AeBCC}--\ref{FSSupport}.
+
+
+\section{\texorpdfstring{\AEB}{AeB} Control Central}\label{AeBCC}
+
+The {\AEB} family of software, {\LaTeX} packages all, are for the most
+part stand alone; however, usually they are used in combination with
+each other, at least that is the purpose for which they were
+originally designed. When several members of family {\AEB} are used,
+they should be loaded in the optimal order. With {\cAEBP}, you can
+now list the members of the {\AEB} family you wish to use, along with
+their optional parameters you wish to use.
+The {\AEB} components supported by {\AEBP} are listed below.
+\begin{equation}
+\begin{tabular}{lllll}
+\pkg{web}&\pkg{exerquiz}&\pkg{dljslib}&\pkg{eforms}&\pkg{insdljs}\\\relax
+\pkg{eq2db}&\pkg{aebxmp}&\pkg{hyperref}&\pkg{graphicxsp}&\pkg{rmannot}
+\end{tabular}\label{display:ACCopts}
+\end{equation}
+The phrase `\app{{\AEB} Control Central}' refers to using these package names
+as options for the \pkg{aeb\_pro} package. Simply listing a component will
+cause {\cAEBP} to install that component with its default optional
+parameters; by specifying a value---a list of options required---will cause
+{\cAEBP} to load the package with the listed options.
+
+
+\Ex{} Below is a representative example of the use of the {\AEB}
+options of {\AEBP}, {\AEB} Control Central!
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily web=\darg{pro,designv,tight,usesf,req=2016/11/03},}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\usepackage[%
+ driver=dvips,
+ web={pro,designv,tight,usesf,req=2016/11/03},
+ exerquiz={!anglemeta(pkg-opts)},
+ ...,
+ aebxmp
+]{aeb_pro}[2016/12/10]
+\end{dCmd*}
+\egroup\noindent Yes, yes, I know this is not necessary, you can always load the
+packages earlier than {\cAEBP}, but please, humor me.
+
+Beginning with \pkg{aeb\_pro} dated 2016/12/10, a new \texttt{req} key is
+defined for the values of the {\AEB} packages listed in
+display~\eqref{display:ACCopts}. Using the \texttt{req} you can specify the
+release date (required date) of the {\AEB} package being used; this assures
+that the document will compile and any new JavaScript code is present. In the
+example above, the \pkg{web} package is required for release date of
+2016/11/03 (or later); the \pkg{aeb\_pro} release date of 2016/12/10 is
+required, for that is the date this \texttt{req} key was implemented. The
+\texttt{req} key is optional.
+
+By default, the code for supporting features that require the use of
+\textsf{Distiller} and \textsf{Acrobat~Pro} are included; there is a
+\texttt{nopro} option that excludes these features. Use the \texttt{nopro}
+if you only wish to use the {\AEB} Control Center feature to load the various
+members of the {\AcroTeX} family. If \texttt{nopro} is used, {\AEBP} can
+be used with \textsf{pdftex} and \textsf{xetex}, for example. Of course, if you
+own the \app{Acrobat} application, a subset of features are available, as discussed
+Section~\ref{useacrobatOpt}, using the \opt{useacrobat} option.
+
+See the new {\AEB} manual for documentation on the \texttt{pro} option of
+\Web. The support document \texttt{aebpro\_ex2} also presents a tutorial
+on the \texttt{pro} option.
+
+\exPDFSrc{aebpro_ex2} The support file \texttt{aebpro\_ex2} has a
+section discussing the {\AEB} Control Central, as well as features of
+the \opt{extended} (\opt{pro}) option of the {\Web} package.
+
+\section{Declaring the Initial View}
+
+The \Com{DeclareInitView} command is a ``data structure'' for setting the
+\uif{Initial View} of the \uif{Document Propertie}s dialog box, see
+\hyperref[docprops]{Figure~\ref*{docprops}}. \cs{DeclareInitView} takes up to
+three key-value pairs, the three keys correspond to the three named regions
+of the UI (User Interface):
+\begin{center}\setlength{\extrarowheight}{2pt}
+\begin{tabular}{|ll|}\hline
+Key & User Interface Name\\\hline
+\texttt{layoutmag} & Layout and Magnification\\
+\texttt{windowoptions} & Window Options\\
+\texttt{uioptions} & User Interface Options\\\hline
+\end{tabular}
+\end{center}
+
+The values of each these three are described in the tables below:
+
+\begin{itemize}
+
+ \item \texttt{layoutmag}: This key sets the initial page layout and magnification
+ of the document. The values of this key are themselves key-values:
+
+ \begin{small}\setlength{\extrarowheight}{3pt}
+ \begin{tabular}{|>{\ttfamily}l>{\ttfamily\raggedright}p{1.85in}>{\raggedright}p{2.06in}|}\hline
+ \multicolumn{1}{|l}{Key} &\multicolumn{1}{l}{Value(s)} & Description \tabularnewline\hline
+ navitab & UseNone,\,UseOutlines, UseThumbs,\,UseOC, UseAttachments
+ & The UI for these are: Page Only, Bookmarks Panel and Page, Pages Panel and Page, Layers Panel and Page, Attachments Panel and Page, respectively. The default is \texttt{UseNone}\tabularnewline
+ pagelayout & SinglePage,\,OneColumn, TwoPageLeft, TwoColumnLeft, TwoPageRight, TwoColumnRight
+ & The UI for these are: Single Page, Single Page Continuous, Two-Up (Facing), Two-Up Continuous (Facing), Two-Up (Cover Page), Two-Up Continuous (Cover Page), respectively. The default is user's preferences.\tabularnewline
+ mag & ActualSize,\,FitPage, FitWidth,\,FitHeight, FitVisible, \textrm{or}\ \anglemeta{pos~num}
+ & The UI for these are: Actual Size, Fit Page, Fit Width, Fit Height, Fit Visible, respectively. If a positive number is provided, this is interpreted as a magnification percentage. The default is to use user's preferences.\tabularnewline
+ openatpage & \anglemeta{pos~num}
+ & The page number (base 1) to open the document at. Default is page 1.\tabularnewline\hline
+ \end{tabular}
+ \end{small}%
+
+ \newtopic\textbf{\textcolor{red}{Important:}} When you set
+ \texttt{openatpage} to a page number other than the first page, be
+ aware that document level JavaScripts are initially imported into the
+ document on the first page. After the file is distilled and the
+ document opens to the page set by \texttt{openatpage}, the document
+ author needs to go to page 1, at which point the document level
+ JavaScripts will be imported. After import, \emph{save the document},
+ which will save the newly imported JavaScripts with the document.
+
+ \item \texttt{windowoptions}: The Window Options region of the
+ Initial View tab consists of a series of check boxes which, when
+ checked, modify the initial state of the document window. These are
+ not really Boolean keys. If the key is present, the
+ corresponding box in the UI will be checked, otherwise, the box
+ remains cleared.
+
+ \newtopic\begingroup\setlength{\extrarowheight}{2pt}%
+ \begin{tabular}{|>{\ttfamily}lp{2in}|}\hline
+ Key & Description \\\hline
+ fit & Resize window to initial page\\
+ center & Center window on screen \\
+ fullscreen & Open in Full Screen mode\\
+ showtitle & Show document title in the title bar\\\hline
+ \end{tabular}\endgroup
+
+ \newtopic Note that you can open the document in Full Screen mode using
+ the \texttt{fullscreen} key above, or by using the
+ \texttt{fullscreen} key of the \cs{setDefaultFS}. Either will
+ work.
+
+ \item \texttt{uioptions}: The User Interface Options region of
+ the Initial View tab consists of a series of check boxes which,
+ when checked, hide an UI control. These are not really Boolean
+ keys. If the key is present, the corresponding box in the UI
+ will be checked, otherwise, the box remains cleared.
+
+ \newtopic\begingroup\setlength{\extrarowheight}{2pt}%
+ \begin{tabular}{|>{\ttfamily}lp{2in}|}\hline
+ Key & Description \\\hline
+ hidemenubar & Hide menu bar\\
+ hidetoolbar & Hide tool bars\\
+ hidewindowui & Hide window controls\\\hline
+ \end{tabular}\endgroup
+
+\end{itemize}
+\textbf{\color{red}Important:} The \pkg{hyperref} package can set some of
+these fields of the \uif{Initial View} tab
+(\hyperref[docprops]{Figure~\ref*{docprops}}). The document author is
+\emph{discouraged} from using \pkg{hyperref} to set any of these fields,
+though, usually they are overwritten by this package.
+
+\Ex{} We set the Initial View tab of the Document Properties dialog
+box.
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily uioptions=\darg{hidetoolbar,hidemenubar,hidewindowui}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\DeclareInitView
+{%
+ layoutmag={mag=ActualSize,navitab=UseOutlines,%
+ openatpage=3,pagelayout=TwoPageLeft},
+ windowoptions={fit,center,showtitle,fullscreen},
+ uioptions={hidetoolbar,hidemenubar,hidewindowui}
+}
+\end{dCmd*}
+\egroup
+
+\exSrc{aebpro_ex7}The file \texttt{aebpro\_ex7} is a test file for the
+features of this section. Use it to explore the properties of the
+\uif{Initial View} tab (\hyperref[docprops]{Figure~\ref*{docprops}}) of the
+\uif{Document Properties} dialog box.
+
+\begin{figure}[ht]\centering
+ \includegraphics[scale=0.5]{docprops}
+ \caption{Initial View of Document Properties}\label{docprops}
+\end{figure}
+
+\newtopic\indent
+\cs{DeclareInitView} is a companion command to \cs{DeclareDocInfo}.
+Each fills in a separate tab of the Document Properties dialog box.
+Use the package \Index{aebxmp} to fill in advance metadata through
+\cs{DeclareDocInfo}. The \cs{DeclareInitView} commands populates
+the \uif{Initial View} tab of the \uif{Document Properties} dialog box,
+shown in \hyperref[docprops]{Figure~\ref*{docprops}}.
+
+\section{Document Actions}
+
+In this section we outline the various commands and environments for
+creating document and page actions for a PDF document.
+
+\subsection{Document Level JavaScripts}
+
+The creation of document level JavaScript has been a part of {\AEB} for many
+years, use the \texttt{insDLJS} environment, as documented in
+\texttt{aeb\_man.pdf}.
+
+\exPDFSrc{aebpro_ex1} The document \texttt{aebpro\_ex1} offers an
+example of the use of the \texttt{insDLJS} environment.
+
+\subsection{Set Document Actions}
+
+The {\cAEBP} provides environments for the \textsf{Acrobat} events
+\Index{willClose}, \Index{willSave}, \Index{didSave}, \Index{willPrint}
+and \Index{didPrint}. Corresponding {\LaTeX} environments are created:
+\texttt{willClose}, \texttt{willSave}, \texttt{didSave},
+\texttt{willPrint} and \texttt{didPrint}.
+
+\exPDFSrc{aebpro_ex1} The example document \texttt{aebpro\_ex1}
+includes examples of the use of the \texttt{willClose},
+\texttt{will\-Save}, \texttt{didSave}, \texttt{willPrint} and
+\texttt{didPrint} environments
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willClose}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{willClose}
+ !anglemeta(script)
+\end{willClose}
+\end{dCmd}
+\EnvDescription The JS code in the body of the \texttt{willClose}
+environment will execute just before the document closes.
+
+\EnvLoc Place this environment in the preamble.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willSave}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{willSave}
+ !anglemeta(script)
+\end{willSave}
+\end{dCmd}
+\EnvDescription The JS code in the body of the \texttt{willSave}
+environment will execute just before the document is saved.
+
+\EnvLoc Place this environment in the preamble.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{didSave}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{didSave}
+ !anglemeta(script)
+\end{didSave}
+\end{dCmd}
+\EnvDescription The JS code in the body of the \texttt{didSave}
+environment will execute just after the document is saved.
+
+\EnvLoc Place this environment in the preamble.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willPrint}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{willPrint}
+ !anglemeta(script)
+\end{willPrint}
+\end{dCmd}
+\EnvDescription The JS code in the body of the \texttt{willPrint}
+environment will execute just before the document is Printed.
+
+\EnvLoc Place this environment in the preamble.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{didPrint}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{didPrint}
+ !anglemeta(script)
+\end{didPrint}
+\end{dCmd}
+\EnvDescription The JS code in the body of the \texttt{didPrint}
+environment will execute just after the document is Printed.
+
+\EnvLoc Place this environment in the preamble.
+
+\paragraph*{\textcolor{red}{Developer Notes:}}
+I've inserted five commands,
+\settowidth{\aebdimen}{\ttfamily\string\developer@will@Print}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\developer@will@Close
+\developer@will@Save
+\developer@did@Save
+\developer@will@Print
+\developer@did@Print
+\end{dCmd}
+that are let to \cs{@empty}. A package developer can insert JS code to make the package
+behave as desired, while the document author can use the above environments to add any
+additional scripts.
+
+The correct way of using these commands is
+
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
+\begin{defineJS}{\my@WillClose}
+ !anglemeta(some willClose script)
+\end{defineJS}
+\let\my@save@developer@will@Close\developer@will@Close
+\def\developer@will@Close{%
+ \my@save@developer@will@Close
+ \my@WillClose
+}
+\end{Verbatim}
+This is the technique I used in the \textsf{acroflex} package.
+
+
+\subsection{Document Open Actions}
+
+You can set an action to be performed when the document is opened,
+independently of the page the document is opened at.
+
+\settowidth{\aebdimen}{\ttfamily\string\additionalOpenAction\darg{\meta{action}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\additionalOpenAction{!meta(action)}
+\end{dCmd}
+\CmdDescription The \meta{action} can be any type of action described in the
+\emph{PDF Reference}, but it is usually a JavaScript action.
+
+\CmdLoc Place this command in the preamble.
+
+The following example gets the time the user first opens the document,
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily\small var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());\}\}}%
+\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
+\additionalOpenAction{\JS{%
+ var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());}}
+\end{dCmd*}
+\egroup
+\noindent\textcolor{red}{\textbf{Important:}} This open action takes place rather
+early in document initialization, before the document level JavaScript is
+scanned; therefore, the \meta{action} should not reference any
+document level JavaScript, as at the time of the action, they are still
+undefined. You are restricted to core JavaScript and the JavaScript API
+for \textsf{Acrobat}.
+
+\newtopic Using layers put a natural restriction on the version that
+can be used to effectively view the document. To put a requirement on the
+viewer to be used, use the \cs{re\-quires\-Version} command.
+
+\settowidth{\aebdimen}{\ttfamily\string\requiresVersion[\meta{option}]\darg{\meta{version\_number}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\requiredVersionMsg{!meta(message)}
+\alternateDocumentURL{!meta(url)}
+\requiredVersionMsgRedirect{!meta(message)}
+\afterRequirementPassedJS{!meta(JS code)}
+\requiresVersion[!meta(option)]{!meta(version_number)}
+\end{dCmd}
+
+\CmdLoc Place these commands in the preamble.
+
+\CmdDescription For \cs{requiresVersion}, the parameter
+\meta{version\_number} is the minimal version number that this
+document is made for. If the version number of the viewer is less
+than \meta{version\_number}, an alert box appears, and the
+document is silently closed, if outside a browser, or redirected, if
+inside a browser. If the keyword \texttt{warnonly} is passed as the
+value of the optional parameter, the alert messages will appear, but
+the file will not be closed or redirected.
+
+\newtopic\textcolor{red}{\textbf{Important:}} The command \cs{requiresVersion}
+needs to be issued \emph{after} any redefinitions of the
+\begin{gather*}
+\cs{afterRequirementPassedJS},\ \cs{requiredVersionMsgRedirect},\\
+\cs{requiredVersionMsg}, \text{ and } \cs{alternateDocumentURL}
+\end{gather*}
+
+When the document is opened outside a web browser and the version
+number requirement is not met, the message contained in
+\cs{requiredVersionMsg} appears in an alert box. The default
+definition is
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\requiredVersionMsg{%
+ This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.
+ The document is now closing.}
+\end{Verbatim}
+The argument of \cs{requiresVersion} is contained in \cs{requireVersionNumber},
+and this macro should be used in the message, as illustrated above.
+
+When the document is opened in a browser and the version number requirement is not met
+the message contained in \cs{requiredVersionMsgRedirect} appears in an alert box. The
+default definition is
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\requiredVersionMsgRedirect{%
+ This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.
+ Redirecting browser to an alternate page.}
+\end{Verbatim}
+The browser is redirected to the URL specified in the argument of
+\cs{alternateDoc\-u\-ment\-URL}, the default definition of which is
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\alternateDocumentURL{http://www.acrotex.net/}
+\end{Verbatim}
+
+\newtopic The command \cs{requiresVersion} uses \cs{additionalOpenAction}; if you want
+to combine several actions, including an action for checking for the version number, use
+\cs{afterRe\-quire\-ment\-PassedJS}. For example,
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily\small var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());\}\}}%
+\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
+\afterRequirementPassedJS
+{%
+ var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());
+}
+\end{dCmd*}
+\egroup\noindent The above code will be executed if the version requirement is passed.
+
+You can use \cs{afterRequirementPassedJS}, for example, to put deadline to view the document; that is,
+if the document is opened after a pre-selected date and time, the document should close
+down (or redirected to an alternate web page).
+
+\newtopic\textcolor{red}{\textbf{Important:}} When using {\AEBP} with the \texttt{uselayers} option, the minimum
+required version is 7. Thus,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\requiresVersion{7}
+\end{Verbatim}
+should be issued in the preamble of any document that uses layers.
+
+\section{Page Actions}
+
+When a page opens or closes a JavaScript occurs. Predefined
+JavaScript can execute in reaction to these events. {\cAEBP}
+provides several commands and environments.
+
+\exPDFSrc{aebpro_ex1} The commands and environments described in
+this section are illustrated in the support document
+\texttt{aebpro\_ex1}.
+
+\subsection{Open/Close Page Actions for First Page}
+
+Because of the way {\AEB} was originally written---\textsf{exerquiz},
+actually---, the first page is a special case.
+
+There is a command, \cs{OpenAction}, that is part of the
+\texttt{insdljs} package for several years, that is used to
+introduce open page actions:
+
+\settowidth{\aebdimen}{\ttfamily\string\OpenAction\darg{\string\JS\darg{\meta{script}}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\OpenAction{\JS{!meta(script)}}
+\end{dCmd}
+
+\CmdLoc This command goes in the preamble to define action for the
+first page. This command is capable of defining non-JavaScript
+action, see the documentation of \texttt{insdljs} for some details.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily\small console.println("Show the output of the page actions");}%
+\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
+\OpenAction{\JS{%
+ console.show();\r
+ console.clear();\r
+ console.println("Show the output of the page actions");
+}}
+\end{dCmd*}
+\egroup
+
+In addition to \cs{OpenAction}, \texttt{addJSToPageOpen} and
+\texttt{addJSToPageClose} are also defined by {\cAEBP}. The
+\meta{script} is executed each time the page is opened or
+closed.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpen}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageOpen}
+ !anglemeta(script)
+\end{addJSToPageOpen}
+\end{dCmd}
+
+For page close events, we have the \texttt{addJSToPageClose}
+environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageClose}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageClose}
+ !anglemeta(script)
+\end{addJSToPageClose}
+\end{dCmd}
+
+\EnvDescription When placed in the preamble, these provide
+JavaScript support for page open/close events of the first page.
+
+Below are examples of usage. These appear in the document
+\texttt{aebpro\_ex1}.
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily\small{console.println(str + ": page " + (this.pageNum+1));}}%
+\begin{dCmd*}[fontsize=\small]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageOpen}
+var str = "This should be the first page";
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+\end{dCmd*}
+\egroup
+\noindent and
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily\small{var str = "This is the close action for the first page!";}}%
+\begin{dCmd*}[fontsize=\small]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageClose}
+var str = "This is the close action for the first page!";
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+\end{dCmd*}
+\egroup
+
+\subsection{Open/Close Page Actions for the other Pages}\label{pageactions}
+
+The same two environments \texttt{addJSToPageOpen} and
+\texttt{addJSToPageClose} can be used in the body of the text to
+generate open or close actions for the page on which they appear.
+It's a rather hit or miss proposition because the tex compiler may
+break the page at an unexpected location and the environments are
+processed on the page following the one you wanted them to appear
+on.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpen}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageOpen}
+ !anglemeta(script)
+\end{addJSToPageOpen}
+\end{dCmd}
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageClose}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageClose}
+ !anglemeta(script)
+\end{addJSToPageClose}
+\end{dCmd}
+
+\EnvDescription Place on the page that these actions are to apply.
+
+\newtopic Another approach to trying to place
+\texttt{addJSToPageOpen} or \texttt{addJSTo\-Page\-Close} on the
+page you want is to use the \texttt{addJSToPageOpenAt} or
+\texttt{addJSToPageCloseAt} environments. These are the same as
+their cousins, but are more powerful. Each of these takes an
+argument that specifies the page, pages, and/or page ranges of the
+open/close effects you want.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpenAt}\darg{\meta{page-ranges}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageOpenAt}{!meta(page-ranges)}
+ !anglemeta(script)
+\end{addJSToPageOpenAt}
+\end{dCmd}
+
+\noindent For page close events, we have the \texttt{addJSToPageClose}
+environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageCloseAt}\darg{\meta{page-ranges}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageCloseAt}{!meta(page-ranges)}
+ !anglemeta(script)
+\end{addJSToPageCloseAt}
+\end{dCmd}
+
+\removelastskip\EnvLoc Place these just after \verb!\begin{document}! and before the
+command \cs{maketitle}.
+
+%\EnvDescription When placed in the preamble, these provide
+%JavaScript support for page open/close events of the first page.
+
+\PD The two environments take a comma-delimited list of pages and page
+ranges, for example, an argument might be \verb!{2-6,9,12,15-}!.
+This argument states that the open or close JavaScript listed in the
+environment should execute on pages 2 through 6, page 9, page 11,
+and pages 15 through the end of the document. Very cool!
+
+This is all well and good if you know exactly which pages are the
+ones you want the effects to appear. What's even more cool is that
+you can use {\LaTeX}'s cross-referencing mechanism to specify the
+pages. By placing these after \verb!\begin{document}!,
+the cross referencing information (the \texttt{.aux}) has been input
+and you can use \cs{atPage}, a special simplified version of
+\cs{pageref}, to reference the pages.
+below.
+
+\settowidth{\aebdimen}{\ttfamily\string\atPage\darg{\meta{label}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\atPage{!meta(label)}
+\end{dCmd}
+
+\CmdDescription Returns the page number on which the {\LaTeX}
+cross-reference label \meta{label} resides.
+
+For example,
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpenAt}\darg{1,\string\atPage]\darg{test}-\string\atPage\darg{exam}}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageOpenAt}{1,\atPage{test}-\atPage{exam}}
+var str = "Add to open page at pages between "
+ + "\\\\atPage{test} and \\\\atPage{exam} "
+ + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageOpenAt}
+\end{dCmd*}
+In the above, we specify a range \verb!\atPage{test}-\atPage{exam}!.
+If the first page number is larger than the second number, the two
+numbers are switched; consequently, the specification
+\verb!\atPage{exam}-\atPage{test}! yields the same results.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily{var str = "Add to close page at page " + (this.pageNum+1);}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{addJSToPageCloseAt}{5-8,12,15-}
+var str = "Add to close page at page " + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageCloseAt}
+\end{dCmd*}
+\egroup
+In the above example, notice that in the \texttt{addJSToPageOpenAt}
+environment above, page 1 was specified. This specification is
+ignored. You do remember that the first page events need to be
+defined in the preamble, don't you.
+
+\subsection{Every Page Open/Close Events}
+
+As an additional feature, there may be an occasion where you want to
+define an event for every page. These are handled separately from
+the earlier mentioned open/closed events so one does not overwrite
+the other. These environments are \texttt{everyPageOpen} and
+\texttt{everyPageClose}. They can go in the preamble, or anywhere.
+They will take effect on the page they are processed on. Using
+these environments a second time overwrites any earlier definition.
+To cancel out the every page action you can use
+\Com{canceleveryPageOpen} and \Com{canceleveryPageClose}.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{everyPageOpen}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{everyPageOpen}
+ !anglemeta(script)
+\end{everyPageOpen}
+\end{dCmd}
+
+For page close events, we have the \texttt{everyPageClose} environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{everyPageClose}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{everyPageClose}
+ !anglemeta(script)
+\end{everyPageClose}
+\end{dCmd}
+
+\EnvLoc Place in the preamble or in the body of the document.
+
+For example,
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily{console.println(str + ": page " + (this.pageNum+1));}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{everyPageOpen}
+var str = "every page open";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+\end{dCmd*}
+\egroup
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily{console.println(str + ": page " + (this.pageNum+1));}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{everyPageClose}
+var str = "every page close";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageClose}
+\end{dCmd*}
+\egroup
+
+
+\settowidth{\aebdimen}{\ttfamily\string\canceleveryPageClose}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\canceleveryPageOpen
+\canceleveryPageClose
+\end{dCmd}
+
+\CmdDescription These two commands cancel the current \env{everyPageOpen} and
+\env{everyPageClose} events. Following the cancel commands, use
+the \env{everyPageOpen} or \env{everyPageClose} environment to create
+different every page events.
+
+
+\section{Fullscreen Support}\label{FSSupport}
+
+
+In this section we present the controlling commands for default
+fullscreen mode and for defining page transition effects.
+
+\exPDFSrc{aebpro_ex1} The sample file \texttt{aebpro\_ex1}
+demonstrates many of the full screen features described in this
+section.
+
+
+\subsection{Set Fullscreen Defaults:
+ \texorpdfstring{\protect\cs{setDefaultFS}}{\textbackslash setDefaultFS}}
+
+Set the default fullscreen behavior of \textsf{Adobe
+Reader}/\textsf{Acrobat} by using \cs{setDefaultFS} in the preamble. This
+command takes a number of arguments using the \texttt{xkeyval} package.
+Each key corresponds to a JavaScript property of the \texttt{Fullscreen}
+object.
+
+\settowidth{\aebdimen}{\ttfamily\string\setDefaultFS\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setDefaultFS{!meta(KV-pairs)}
+\end{dCmd}
+The command for setting how you want to viewer to behave in fullscreen.
+This command is implemented through JavaScript, as opposed to the
+\textbf{pdfmark} operator. See \emph{JavaScript for Acrobat API Reference}
+\cite{tech:AcroJSRef}, the section on the \texttt{FullScreen} object.
+
+\CmdLoc This command must be executed in the preamble.
+
+\KVP The command has numerous key-value pairs, the defaults of most
+of these are set in the \texttt{Preferences} menu of the viewer.
+These values are the ones listed in the \emph{Acrobat JavaScript
+Scripting Reference} \cite{tech:AcroJSRef}.
+\begin{enumerate}\raggedright
+ \item \texttt{Trans}: permissible values are
+ \texttt{NoTransition}, \texttt{UncoverLeft},
+ \texttt{UncoverRight}, \texttt{UncoverDown}, \texttt{UncoverUp},
+ \texttt{UncoverLeftDown}, \texttt{UncoverLeftUp},
+ \texttt{UncoverRightDown}, \texttt{UncoverRightUp},
+ \texttt{CoverLeft}, \texttt{CoverRight}, \texttt{CoverDown},
+ \texttt{CoverUp}, \texttt{CoverLeftDown}, \texttt{CoverLeftUp},
+ \texttt{CoverRightDown}, \texttt{CoverRightUp},
+ \texttt{PushLeft}, \texttt{PushRight}, \texttt{PushDown},
+ \texttt{PushUp}, \texttt{PushLeftDown}, \texttt{PushLeftUp},
+ \texttt{PushRightDown}, \texttt{PushRightUp},
+ \texttt{FlyInRight}, \texttt{FlyInLeft}, \texttt{FlyInDown},
+ \texttt{FlyInUp}, \texttt{FlyOutRight}, \texttt{FlyOutLeft},
+ \texttt{FlyOutDown}, \texttt{FlyOutUp}, \texttt{FlyIn},
+ \texttt{FlyOut}, \texttt{Blend}, \texttt{Fade}, \texttt{Random},
+ \texttt{Dissolve}, \texttt{GlitterRight}, \texttt{GlitterDown},
+ \texttt{GlitterRightDown}, \texttt{BoxIn}, \texttt{BoxOut},
+ \texttt{BlindsHorizontal}, \texttt{BlindsVertical},
+ \texttt{SplitHorizontalIn}, \texttt{SplitHorizontalOut},
+ \texttt{SplitVerticalIn}, \texttt{SplitVerticalOut},
+ \texttt{WipeLeft}, \texttt{WipeRight}, \texttt{WipeDown},
+ \texttt{WipeUp}, \texttt{WipeLeftDown}, \texttt{WipeLeftUp},
+ \texttt{WipeRightDown}, \texttt{WipeRightUp}, \texttt{Replace},
+ \texttt{ZoomInDown}, \texttt{ZoomInLeft},
+ \texttt{ZoomInLeftDown}, \texttt{ZoomInLeftUp},
+ \texttt{ZoomInRight}, \texttt{ZoomInRightDown},
+ \texttt{ZoomInRightUp}, \texttt{ZoomInUp}, \texttt{ZoomOutDown},
+ \texttt{ZoomOutLeft}, \texttt{ZoomOutLeftDown},
+ \texttt{ZoomOutLeftUp}, \texttt{ZoomOutRight},
+ \texttt{ZoomOutRightDown}, \texttt{ZoomOutRightUp},
+ \texttt{ZoomOutUp}, \texttt{CombHorizontal},
+ \texttt{CombVertical}. The default is \texttt{Replace}.
+
+ \item[] The following are new to \textsf{Acrobat}/\textsf{Adobe
+ Reader} version 8: \texttt{PushLeftDown}, \texttt{PushLeftUp},
+ \texttt{PushRightDown}, \texttt{PushRightUp},
+ \texttt{WipeLeftDown}, \texttt{WipeLeftUp},
+ \texttt{WipeRightDown}, \texttt{WipeRightUp},
+ \texttt{ZoomInDown}, \texttt{ZoomInLeft},
+ \texttt{ZoomInLeftDown}, \texttt{ZoomInLeftUp},
+ \texttt{ZoomInRight}, \texttt{ZoomInRightDown},
+ \texttt{ZoomInRightUp}, \texttt{ZoomInUp},
+ \texttt{ZoomOutDown}, \texttt{ZoomOutLeft},
+ \texttt{ZoomOutLeftDown}, \texttt{ZoomOutLeftUp},
+ \texttt{ZoomOutRight}, \texttt{ZoomOutRightDown},
+ \texttt{ZoomOutRightUp}, \texttt{ZoomOutUp},
+ \texttt{CombHorizontal}, \texttt{CombVertical}
+
+
+\rightskip=0pt
+\item[] The transition chosen by this key will be in effect for each page that does not
+have a transition effect separately defined for it (by the \Com{setPageTransition} command).
+
+\item \texttt{bgColor}: Sets the background color in fullscreen mode.
+ The color specified must be a JavaScript Color array, e.g.,
+ \verb!bgColor={["RGB",0,1,0]}!, or you can use some preset colors,
+ \verb!bgColor = color.ltGray!.
+\item \texttt{timeDelay}: The default number of seconds before the
+ page automatically advances in full screen mode. See
+ \texttt{useTimer} to activate/deactivate automatic page turning.
+\item \texttt{useTimer}: A Boolean that determines whether automatic
+ page turning is enabled in full screen mode. Use \texttt{timeDelay} to set
+ the default time interval before proceeding to the next page.
+\item \texttt{loop}: A Boolean that determines whether the document will loop around back
+ to the first page.
+\item \texttt{cursor}: Determines the behavior of the mouse in full screen mode. Permissible
+ values are \texttt{hidden}, \texttt{delay} (hidden after a short delay) and \texttt{visible}.
+\item \texttt{escape}: A Boolean use to determine if the escape key will cause the viewer
+ to leave full screen mode.
+\item \texttt{clickAdv}: A Boolean that determines whether a mouse click on the page will
+ cause the page to advance.
+\item \texttt{fullscreen}: A Boolean, which if \texttt{true}, causes the viewer to go into
+ full screen mode. Has no effect from within a browser.
+\item \texttt{usePageTiming}: A Boolean that determines whether
+ automatic page turning will respect the values specified for
+ individual pages in full screen mode (which can be set through
+ \Com{setPageTransition}).
+
+\end{enumerate}
+
+This example causes the viewer to go into full screen mode,
+sets the transition to \texttt{Random}, instructs the viewer to loop
+back around to the first page, and to make the cursor hidden after a
+short period of inactivity.
+\settowidth{\aebdimen}{\ttfamily\string\setDefaultFS\darg{fullscreen,Trans=Random,loop,cursor=delay,escape}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setDefaultFS{fullscreen,Trans=Random,loop,cursor=delay,escape}
+\end{dCmd*}
+
+On closing the document, the user's original full screen preferences
+are restored.
+
+\newtopic In the preamble of this document, I have placed
+\cs{setDefaultFS} specifying that the document should go into
+fullscreen mode with a random transition for its default transition
+effect.
+
+
+\subsection{Page Transition Effects}
+
+The \Com{setDefaultFS} command can set the full screen behavior of
+the viewer for the \emph{entire document}, including a transition
+effect applicable to all pages in the document; for transition
+effects of individual pages, use the \cs{setPageTransition} command.
+
+\settowidth{\aebdimen}{\ttfamily\string\setPageTransition\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setPageTransition{!meta(KV-pairs)}
+\end{dCmd}
+Sets the transition effect for the \emph{next page only}, viewer must be
+in full screen mode. The command \cs{setPageTransition} is implemented
+using the \textbf{pdfmark} operator.
+
+\CmdLoc This command should be used in the preamble for the first page,
+and between slides for subsequent pages.
+
+\KVP The \Com{setPageTransition} command has several key-value pairs:
+\begin{enumerate}\raggedright
+ \item \texttt{Trans}: permissible values are
+ \texttt{NoTransition}, \texttt{UncoverLeft},
+ \texttt{UncoverRight}, \texttt{UncoverDown}, \texttt{UncoverUp},
+ \texttt{UncoverLeftDown}, \texttt{UncoverLeftUp},
+ \texttt{UncoverRightDown}, \texttt{UncoverRightUp},
+ \texttt{CoverLeft}, \texttt{CoverRight}, \texttt{CoverDown},
+ \texttt{CoverUp}, \texttt{CoverLeftDown}, \texttt{CoverLeftUp},
+ \texttt{CoverRightDown}, \texttt{CoverRightUp},
+ \texttt{PushLeft}, \texttt{PushRight}, \texttt{PushDown},
+ \texttt{PushUp}, \texttt{PushLeftDown}, \texttt{PushLeftUp},
+ \texttt{PushRightDown}, \texttt{PushRightUp},
+ \texttt{FlyInRight}, \texttt{FlyInLeft}, \texttt{FlyInDown},
+ \texttt{FlyInUp}, \texttt{FlyOutRight}, \texttt{FlyOutLeft},
+ \texttt{FlyOutDown}, \texttt{FlyOutUp}, \texttt{FlyIn},
+ \texttt{FlyOut}, \texttt{Blend}, \texttt{Fade}, \texttt{Random},
+ \texttt{Dissolve}, \texttt{GlitterRight}, \texttt{GlitterDown},
+ \texttt{GlitterRightDown}, \texttt{BoxIn}, \texttt{BoxOut},
+ \texttt{BlindsHorizontal}, \texttt{BlindsVertical},
+ \texttt{SplitHorizontalIn}, \texttt{SplitHorizontalOut},
+ \texttt{SplitVerticalIn}, \texttt{SplitVerticalOut},
+ \texttt{WipeLeft}, \texttt{WipeRight}, \texttt{WipeDown},
+ \texttt{WipeUp}, \texttt{WipeLeftDown}, \texttt{WipeLeftUp},
+ \texttt{WipeRightDown}, \texttt{WipeRightUp}, \texttt{Replace},
+ \texttt{ZoomInDown}, \texttt{ZoomInLeft},
+ \texttt{ZoomInLeftDown}, \texttt{ZoomInLeftUp},
+ \texttt{ZoomInRight}, \texttt{ZoomInRightDown},
+ \texttt{ZoomInRightUp}, \texttt{ZoomInUp}, \texttt{ZoomOutDown},
+ \texttt{ZoomOutLeft}, \texttt{ZoomOutLeftDown},
+ \texttt{ZoomOutLeftUp}, \texttt{ZoomOutRight},
+ \texttt{ZoomOutRightDown}, \texttt{ZoomOutRightUp},
+ \texttt{ZoomOutUp}, \texttt{CombHorizontal},
+ \texttt{CombVertical}. The default is \texttt{Replace}.
+
+ \item[] The following are new to \textsf{Acrobat}/\textsf{Adobe
+ Reader}, version 8: \texttt{PushLeftDown},
+ \texttt{PushLeftUp}, \texttt{PushRightDown},
+ \texttt{PushRightUp}, \texttt{WipeLeftDown},
+ \texttt{WipeLeftUp}, \texttt{WipeRightDown},
+ \texttt{WipeRightUp}, \texttt{ZoomInDown},
+ \texttt{ZoomInLeft}, \texttt{ZoomInLeftDown},
+ \texttt{ZoomInLeftUp}, \texttt{ZoomInRight},
+ \texttt{ZoomInRightDown}, \texttt{ZoomInRightUp},
+ \texttt{ZoomInUp}, \texttt{ZoomOutDown}, \texttt{ZoomOutLeft},
+ \texttt{ZoomOutLeftDown}, \texttt{ZoomOutLeftUp},
+ \texttt{ZoomOutRight}, \texttt{ZoomOutRightDown},
+ \texttt{ZoomOutRightUp}, \texttt{ZoomOutUp},
+ \texttt{CombHorizontal}, \texttt{CombVertical}
+
+
+\rightskip=0pt
+\item[] These values are the ones listed in the \emph{Acrobat
+ JavaScript Scripting Reference} \cite{tech:AcroJSRef}.
+ \item \texttt{TransDur}: Duration of the transition effect, in
+ seconds. Default value: 1.
+
+ \item \texttt{Speed}: Same as \texttt{TransDur}, the duration of
+ the transition effect, except this key takes values
+ \texttt{Slow}, \texttt{Medium} or \texttt{Fast}, corresponding
+ to the \textsf{Acrobat} UI. If \texttt{TransDur} and
+ \texttt{Speed} are both specified, Speed is used. Use
+ \texttt{TransDur} for finer granularity.
+
+ \item \texttt{PageDur}: The \emph{PDF Reference, version 1.6}
+ \cite{tech:PDFRef}, describes this as ``The page's display
+ duration (also called its advance timing): the maximum
+ length of time, in seconds, that the page is displayed
+ during presentations before the viewer application
+ automatically advances to the next page. By default, the
+ viewer does not advance automatically.''
+\end{enumerate}
+For example,
+\settowidth{\aebdimen}{\ttfamily\string\setPageTransition\darg{Trans=Blend,PageDur=20,TransDur=5}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setPageTransition{Trans=Blend,PageDur=20,TransDur=5}
+\end{dCmd*}
+
+
+\cs{setPageTransition} suffers from the same malady as
+do \texttt{addJSToPage\-Open} and \texttt{addJSToPageClose}, it has
+to be placed on the page you want to apply. For this reason, there
+is the \cs{setPageTransitionAt}.
+
+\settowidth{\aebdimen}{\ttfamily\string\setPageTransitionAt\darg{\meta{page-ranges}}\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setPageTransitionAt{!meta(page-ranges)}{!meta(KV-pairs)}
+\end{dCmd}
+
+\KVP Same as \cs{setPageTransitionAt}
+
+\PD The parameter \meta{page-ranges} has the same format as
+described in \hyperref[pageactions]{Section~\ref*{pageactions}},
+page~\pageref*{pageactions}. This command obeys the \cs{atPage}.
+
+For example,
+\settowidth{\aebdimen}{\ttfamily\string\setPageTransitionAt\darg{1,\string\atPage\darg{test}-\string\atPage\darg{exam},7}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\setPageTransitionAt{1,\atPage{test}-\atPage{exam},7}
+ {Trans=Blend,PageDur=20,TransDur=5}
+\end{dCmd*}
+
+
+\section{Attaching Documents}
+
+{\cAEBP} has two options for attaching files to the source PDF. The
+approach is the \texttt{import\-Data\-Object} JavaScript method in
+conjunction with the FDF techniques.
+
+There are two options for attaching files
+\begin{enumerate}
+ \item \texttt{attachsource} is a simplified option for attaching
+ a file with the same base name as \cs{jobname}, that is a file
+ of the form \cs{jobname.}\texttt{\textsl{ext}}.
+
+ \item \texttt{attachments} is a general option for attaching a
+ file, as specified by its absolute or relative path.
+\end{enumerate}
+
+\exPDFSrc{aebpro_ex3} The file \texttt{aebpro\_ex3} demonstrates many
+of the commands presented in this section.
+
+\subsection{The \texttt{attachsource} option}\label{attachsource}
+
+Use this option to attach a file with the same base name as \cs{jobname}.
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\usepackage[%
+ driver=dvips,
+ web={
+ pro,
+ ...
+ usesf
+ },
+ attachsource={tex,dvi,log,tex.log},
+ ...
+]{aeb_pro}
+\end{Verbatim}
+Simply list the extensions you wish to attach to the current document. In
+the example above, we attach the original source file \cs{jobname.tex},
+\cs{jobname.dvi}, \cs{jobname.log} (the \textsf{Distiller} log) and
+\cs{jobname.tex.log} (the tex log).
+
+\newtopic One problem with attaching the log file is that the \textsf{Distiller} also
+produces a log file with the same name \cs{jobname.log}. Consequently, the
+log file for the tex file is overwritten by the \textsf{Distiller} log
+file. You'll see from the PDF document, that the log file attached is the
+one for the \textsf{Distiller}.
+
+\newtopic A work around for this is to latex your file, rename the
+log file to another extension, such as \cs{jobname.tex.log}, then
+distill. You may want to send that log file so some poor \TeX pert for
+\TeX pert analysis!
+
+\subsection{The \texttt{attachments} option}\label{attachments}
+
+The \texttt{attachments} key is for attaching files other than ones
+associated with the source file. The value of this key is a
+comma-delimited list (enclosed in braces) of absolute paths and/or
+relative paths to the file required to attach. For example,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\usepackage[%
+ driver=dvips,
+ web={
+ pro,
+ ...
+ usesf
+ },
+ attachments={robot man/robot_man.pdf,%
+ /C/Documents and Settings/dps/My Documents/birthday17.jpg},
+ ...
+]{aeb_pro}
+\end{Verbatim}
+The first reference is relative to the folder that this source file
+is contained in (and is attached to this PDF), and second one is an
+example of an absolute path.
+
+\Important There are some files that \textsf{Acrobat} does not attach, but
+there is no public list of these. One finds them by discovery,
+\texttt{.exe} and \texttt{.zip} files, for example.
+
+A trick that I use to send \texttt{.zip} files through the email (they are
+often stripped away by mail servers) is to \emph{hide} the \texttt{.zip}
+file in a PDF as an attachment. But since \textsf{Acrobat} does not attach
+\texttt{.zip}, I change the extension from \texttt{.zip} to \texttt{.txt},
+then inform the recipient to save the \texttt{.txt} file and change the
+extension back to \texttt{.zip}. Swave!
+
+\subsection{Optional attachments}
+
+The \texttt{attachments} options allows you to list a collection of files
+to be attached to the PDF file. The optional attachments concept allows
+you to develop a list of attachments that are attached if the
+\texttt{optattachments} option is taken and not attached if the
+\texttt{!optattachments} option is taken. {\AEBP} defines
+\cs{ifoptattachments}, a Boolean switch, which is set to true by
+\texttt{optattachments} and to false by \texttt{!optattachments}.
+\settowidth{\aebdimen}{\ttfamily\string\addtoOptAttachments\darg{\meta{list\_of\_files}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\addtoOptAttachments{!meta(list_of_files)}
+\end{dCmd}
+This command can be used anywhere in the document and adds the listed
+files to the ones to be attached. The list is comma delimited.
+
+The initial application and motivation of this feature is for projects
+that are worked on by a team of {\LaTeX} authors. The master project file
+inputs sections of the document using the \cs{input} command of {\LaTeX}.
+The request was for any file that is input using \cs{input} be added to
+the optional attachments list; therefore, the {\AEBP} package defines the
+following two commands:
+\settowidth{\aebdimen}{\ttfamily\string\prjinclude\darg{\meta{file}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\prjinput{!meta(file)}
+\prjinclude{!meta(file)}
+\end{dCmd}
+These are the ``project'' version of the {\LaTeX} commands \cs{input} and
+\cs{include}, respectively. Each of these adds \meta{file} to the list
+of optional attachments, then passes the argument to the two user commands
+\cs{prjInputUser} and \cs{prjIncludeUser}, respectively.
+\settowidth{\aebdimen}{\ttfamily\string\newcommand\darg{\string\prjIncludeUser}[1]\darg{\string\include\darg{\#1}}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\newcommand{\prjInputUser}[1]{\input{#1}}
+\newcommand{\prjIncludeUser}[1]{\include{#1}}
+\end{dCmd}
+Above you see the default definitions of these user commands. They may be
+redefined as desired to achieve some special effect.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \string\marginpar\darg{\string\fbox\darg{\string\footnotesize\string\ttfamily\#1}}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\renewcommand{\prjInputUser}[1]{%
+ \marginpar{\fbox{\footnotesize\ttfamily#1}}
+ \input{#1}}
+\end{dCmd*}
+\egroup
+It is possible to define \cs{prjInputUser} to be a link or button that
+opens the attached file.
+
+When the \texttt{!optattachments} is taken, the default definitions of the
+two commands \cs{prjinput} and \cs{prjinclude} are \cs{prjInputUser} and
+\cs{prjIncludeUser}, respectively; this bypasses the step of adding the file
+to the list of optional attachments. The switch \cs{ifoptattachments} can be
+used, as needed, in a custom definition of \cs{prjInputUser} or
+\cs{prjIncludeUser}; for example,
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{ \ttfamily\string\marginpar%
+\darg{\string\fbox\darg{\string\footnotesize\string\ttfamily\string\ifoptattachments}}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\renewcommand{\prjInputUser}[1]{%
+ \marginpar{\fbox{\footnotesize\ttfamily\ifoptattachments
+ \setLink[\A{\JS{this.exportDataObject({%
+ cName: "\getcNameFromFileName{#1}",nLaunch: 0});}}
+ ]{\textcolor{\ahrefcolor}{#1}}\else#1\fi}}\input{#1}}
+\end{dCmd*}
+\egroup This code creates a link that saves the attachment, if
+\texttt{optattachments} is taken, and simply puts the file name the margin,
+if \texttt{!optattachments} is taken. The JavaScript method
+\texttt{this.exportDataObject} is used to extract and save the attachment;
+the command \cs{getcNameFromFileName} is an {\AEBP} command that associates
+the file name (\texttt{\#1}) with the attachment label name (the
+\texttt{cName} key).
+
+
+\section{Doc Assembly Methods}\label{docassembly}
+
+Ahhhh, document assembly. What can be said? This is a method that I
+have used for many years and is incorporated into the
+\textsf{insdljs} package under the name of \texttt{execJS}. Whereas
+the \texttt{execJS} environment is still available to you, I've
+simplified things. The term doc assembly refers to the use of the
+\texttt{docassembly} environment (which is just an \texttt{execJS}
+environment).
+
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{docassembly}}%
+\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{docassembly}
+ !anglemeta(script)
+\end{docassembly}
+\end{dCmd}
+\noindent
+The \texttt{execJS}/\texttt{docassembly} environments create an FDF file
+with the various JavaScript commands that were contained in the body of
+the environment. These environments also place in open page action so that
+when the PDF is opened for the first time in \textsf{Acrobat Pro}, the FDF
+file will be imported and the \anglemeta{script} is \emph{executed one time and then
+discarded}, see \cite{TUG:execJS} for an article on this topic. This
+technique only works if you have \textsf{Acrobat Pro}.
+
+\subsection{Certain Security Restricted JS Methods}
+
+In addition to the \texttt{docassembly} environment, {\cAEBP} also
+has several macros that expand to JavaScript methods that I find
+useful. These JavaScript methods are quite useful, yet they have a \emph{security
+restriction} on them; they cannot be executed from within a document, and certainly
+not by Adobe Reader.
+
+The use of these methods requires the installation of
+\texttt{aeb\_pro.js}, the folder level JavaScript file that comes
+with this package. These methods are normally called from the
+\texttt{docassembly} environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\addWatermarkFromFile(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\addWatermarkFromFile({!meta@KV-pairs~});
+\end{dCmd}
+\CmdDescription Inserts a watermark into the PDF
+
+\KVP Numerous, see the \texttt{addWatermarkFromFile()} method
+\cite{tech:AcroJSRef}. Here, we mention only two.
+\begin{enumerate}
+ \item \texttt{cDIPath}: The absolute path to the background or watermark document.
+ \item \texttt{bOnTop}: (optional) A Boolean value specifying the
+ z-ordering of the watermark. If \texttt{true} (the default), the watermark
+ is added above all other page content. If \texttt{false}, the watermark is
+ added below all other page content.
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\importIcon(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\importIcon({!meta@KV-pairs~});
+\end{dCmd}
+\CmdDescription Imports icon files\footnote{The AcroMemory package uses these
+ environments and functions to import icons.}
+
+\KVP There are three key-value pairs:
+\begin{enumerate}
+ \item \texttt{cName}: The name to associate with the icon
+ \item \texttt{cDIPath}: The path to the icon file, it may be absolute or relative
+ \item \texttt{nPage}: The 0-based index of the page in the PDF file to import as an icon. The
+ default is 0.
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\importSound(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\importSound({!meta@KV-pairs~});
+\end{dCmd}
+\CmdDescription Imports a sound file
+
+\KVP There are two key-value pairs:
+\begin{enumerate}
+ \item \texttt{cName}: The name to associate with the sound object
+ \item \texttt{cDIPath}: The path to the sound file, it may be absolute or relative
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\appopenDoc(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\appopenDoc({!meta@KV-pairs~});
+\end{dCmd}
+\CmdDescription Opens a document
+
+\KVP Here, we list only two of five
+
+\begin{enumerate}
+ \item \texttt{cPath}: A device-independent path to the document to be opened. If \texttt{oDoc} is specified, the
+ path can be relative to it. The target document must be accessible in the default file
+ system.
+ \item \texttt{oDoc}: (optional) A \texttt{Doc} object to use as a base to resolve a relative cPath. Must be
+ accessible in the default file system.
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\insertPages(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\insertPages({!meta@KV-pairs~});
+\end{dCmd}
+\CmdDescription Inserts pages into the PDF, useful for
+inserting pages of difference sizes, such as tables or figures,
+into a {\LaTeX} document which requires that all page be of a
+fixed size.
+
+\KVP There are five key-value pairs:
+\begin{enumerate}
+ \item \texttt{nPage}: (optional) The 0-based index of the page after which to insert the source document
+ pages. Use -1 to insert pages before the first page of the document.
+ \item \texttt{cPath}: The device-independent path to the PDF file that will provide the inserted pages. The
+ path may be relative to the location of the current document.
+ \item \texttt{nStart}: (optional) A 0-based index that defines the start of an inclusive range of pages in the
+ source document to insert. If only \texttt{nStart} is specified, the range of pages is the single page specified by nStart.
+ \item \texttt{nEnd}: (optional) A 0-based index that defines the end of an inclusive range of pages in the
+ source document to insert. If only \texttt{nEnd} is specified, the range of pages is 0 to \texttt{nEnd}.
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\importDataObject(\darg{\meta{KV-pairs}});}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\importDataObject({!meta@KV-pairs~});
+\end{dCmd}
+
+\CmdDescription Attaches a file to the PDF. This function is used in the two
+attachments options of {\cAEBP}.
+
+\KVP There are two key-value pairs of interest:
+\begin{enumerate}
+ \item \texttt{cName}: The name to associate with the data object.
+ \item \texttt{cDIPath}: (optional) A device-independent path to a data file on the user’s hard drive. This path may be absolute or relative to the current document. If not
+ specified, the user is prompted to locate a data file.
+\end{enumerate}
+
+\settowidth{\aebdimen}{\ttfamily\string\executeSave();}%
+\begin{dCmd}[commandchars={!@~}]{\aebdimen+2\fboxsep+2\fboxrule}
+\executeSave();
+\end{dCmd}
+
+\CmdDescription As you know, you must always save your document
+after it is distilled, this saves document JavaScripts in the
+document. This command saves the current file so you don't have do
+it yourself. This command should be the last one listed in the
+\texttt{docassembly} environment.\footnote{Later commands may dirty the document again, and
+I have found that saving the document can cause later commands, like \cs{addWatermarkFromFile},
+not to execute.}
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily reason: "I am approving this document",}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\sigInfo{
+ cSigFieldName: "mySig",
+ ohandler: security.PPKLiteHandler,
+ cert: "D_P_Story.pfx",
+ password: "dps017",
+ oInfo: {
+ location: "Niceville, FL",
+ reason: "I am approving this document",
+ contactInfo: "dpstory@acrotex.net",
+ appearance: "My Signature"
+ }
+};
+\signatureSign
+\end{dCmd*}
+\egroup
+
+\CmdDescription The \textsf{eforms} package supports the creation of
+signature fields. Such fields can be signed using the \textsf{Acrobat} UI,
+or programmatically using the \cs{sigInfo} and \cs{signatureSign}
+commands. See the eforms manual, \texttt{eformman.pdf} for a detailed
+description of the parameters of \cs{sigInfo}.
+
+\settowidth{\aebdimen}{\ttfamily\string\signatureSetSeedValue(oSeedValue)}%
+\begin{dCmd}{\aebdimen+2\fboxsep+2\fboxrule}
+\signatureSetSeedValue(oSeedValue)
+\end{dCmd}
+
+\CmdDescription The \textsf{Acrobat} JavaScript methods
+\texttt{\emph{Field}.signature\-Set\-Seed\-Value} is implemented through
+the {\LaTeX} comment \cs{signature\-Set\-Seed\-Value}. The method needs
+the field object of the signature field, this is passed to
+\cs{signature\-Set\-Seed\-Value} through the JavaScript variable
+\texttt{oSigFileName}. To use this command, you first get
+\texttt{oSigFileName}, like so,
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily reasons: ["This is a reason","This is a better reason"],}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+var sv={
+ mdp: "defaultAndComments"
+ reasons: ["This is a reason","This is a better reason"],
+ flags: 8
+};
+var oSigFileName=this.getField("sigOfDPS");
+\signatureSetSeedValue(sv);
+\end{dCmd*}
+\egroup The above code defines a object, \texttt{sv}, with seed value
+properties: the implication of the \texttt{mp} entry, is that the
+signature field is now a certification signature, filling in form
+fields and making comments do not invalidate the signature; when the
+user signs the document, he must choose from the two listed reasons,
+and none other; the \texttt{flags} property makes the choice of a
+reason a requirement. The next line, following the definition of
+\texttt{sv}, we get the field object of the signature field, and
+name it \texttt{oSigFileName}, this is the name that
+\cs{signatureSetSeedValue} uses. Finally, we pass the \texttt{sv}
+object to \cs{signatureSetSeedValue}.
+
+Additional information on signatures can be found
+at the \mlhref{http://www.adobe.com/go/acrobat_developer}{Acrobat Developer Center}.\footnote{\url{http://www.adobe.com/go/acrobat_developer}}
+The \emph{JavaScript for Acrobat API Reference} \cite{tech:AcroJSRef} for details
+on these methods and their parameters.
+
+\subsection{Examples}
+
+\Ex{} Demonstrate \cs{addWatermarkFromFile}: The following code places a
+background graphic on every page the document. This is the kind of code
+that is executed for this document.
+\bgroup\small\obeyspaces%
+\settowidth{\aebdimen}{\small\ttfamily cDIPath: "/C/AcroPackages/ManualBGs/Manual\_BG\_DesignV\_AeB.pdf"}%
+\begin{dCmd*}[fontsize=\small]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{docassembly}
+\addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath: "/C/AcroPackages/ManualBGs/Manual_BG_DesignV_AeB.pdf"
+});
+\end{docassembly}
+\end{dCmd*}
+\egroup
+
+\Important It is \emph{very important} to note that the arguments for this
+(pseudo-JS method) are enclosed in matching parentheses/braces
+combination, i.e., \verb!({!$\dots$\verb!})!. The arguments are
+key-value pairs separated by a colon, and the parameters themselves
+are separated by commas. (The argument is actually an
+object-literal). It is \emph{extremely important} to have the left
+parenthesis/brace pair, \verb!({!, immediately follow the function
+name. This is because the environment is a partial-verbatim
+environment: \verb!\! is still the escape, but left and right braces
+have been ``sanitized''. The commands, like
+\cs{addWatermarkFromFile} first gobble up the next two tokens, and
+re-inserts \verb!({! in a different location. (See the
+\textsf{aeb\_pro.dtx} for the definitions.)
+
+\Ex{} Demonstrate \cs{getSound}: For another cheesy demonstration,
+let's import a sound, associate it with a button. I leave it to you
+to press the button at your discretion.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\setbox0=\hbox{\includegraphics[height=16bp]{../extras/{\AEB}_Logo.eps}}
+\pushButton[\S{S}\W{0}\A{\JS{%
+ var s = this.getSound("StarTrek");\r
+ s.play();
+}}]{cheesySound}{\the\wd0 }{\the\ht0 }
+\end{Verbatim}
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\begin{docassembly}
+try {
+ \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+} catch(e) { console.println(e.toString()) };
+\end{docassembly}
+\end{Verbatim}
+\exPDFSrc{aebpro_ex3} The working version of this appears in
+\texttt{aebpro\_ex3}.
+
+\Ex{} Demonstrate \cs{getIcon}: Import a few {\AEB} logos
+(forgive me) and place them as appearance faces for a button.
+Below is a listing of the code, with some comments added.
+\begin{Verbatim}[fontsize=\footnotesize]
+\begin{docassembly}
+// Import the sounds into the document
+\importIcon({cName: "logo",cDIPath: "../extras/{\AEB}_Logo.pdf"});
+\importIcon({cName: "logopush",cDIPath: "../extras/{\AEB}_Logo_bw15.pdf"});
+\importIcon({cName: "logorollover",cDIPath: "../extras/{\AEB}_Logo_bw50.pdf"});
+var f = this.getField("cheesySound"); // get the field object of the button
+f.buttonPosition = position.iconOnly; // set it to receive icon appearances
+var oIcon = this.getIcon("logo"); // get the "logo" icon
+f.buttonSetIcon(oIcon,0); // assign it as the default appearance
+oIcon = this.getIcon("logopush"); // get the "logopush" icon
+f.buttonSetIcon(oIcon,1); // assign it as the down appearance
+oIcon = this.getIcon("logorollover"); // get the "logorollover" icon
+f.buttonSetIcon(oIcon,2); // assign it as the rollover appearance
+\end{docassembly}
+\end{Verbatim}
+
+\exPDFSrc{aebpro_ex3} The working version of this appears in \texttt{aebpro\_ex3}.
+
+\Ex{}\label{importdataobject} Demonstrate \cs{importDataObject}: As a final example of
+\texttt{docassembly} usage, rather than using the attachments
+options of {\cAEBP}, you can also attach your own files using the
+\texttt{docassembly} environment.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\begin{docassembly}
+try {
+ \importDataObject({
+ cName: "AeB Pro Example #2",
+ cDIPath: "aebpro_ex2.pdf"
+ });
+} catch(e){}
+\end{docassembly}
+\end{Verbatim}
+The attachments options automatically assign names. These names appear in
+the Description column of the attachments tab of
+\textsf{Acrobat}/\textsf{Reader}. For file attached using the
+\texttt{attachsource}, the base name plus extension is used, for the files
+specified by the \texttt{attachments} key, the names are given
+sequentially, \texttt{"{\AEB} Attachment 1"}, \texttt{"{\AEB} Attachment 2"} and
+so on. When you roll your own, the description can be more aptly chosen.
+On the other hand, there are commands, introduced later, that allow you to
+change the default description, to one of your own choosing.
+
+I have found many uses for the \texttt{execJS} environment, or the
+simplified \texttt{docassembly} environment. You are only limited by your
+imagination, and knowledge of JavaScript for \textsf{Acrobat}.
+
+\subsection{Pre-\texttt{docassembly} Methods}
+
+In this section, we'll gather some ``useful'' commands that may be useful
+in combining several \texttt{docassembly} tasks together. The
+\texttt{docassembly} environment is a partial-verbatim environment,
+expansion is severely limited. The trick is to expand before placing the
+lines in the \texttt{docassembly} environment.
+
+\subsubsection{Importing and Placing Images}
+
+In this section we introduce four commands for importing images
+(possibly with various graphic formats) into the PDF document, and
+inserting them as images that appear in the document itself. These are\\[3pt]
+\hspace*{20pt}\Com{declareImageAndPlacement}, \Com{declareMultiImages},\\
+\hspace*{20pt}\Com{insertPreDocAssembly}, and \Com{placeImage}.
+
+\exAeBBlogPDF{p=315} The file \texttt{placeimages.pdf} is a
+demo of the commands of this section. The source file and images are
+attached to the PDF. The PDF, titled \textsl{Importing and Placing
+Images using {\AEBP}}, is found at the \href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+
+\settowidth{\aebdimen}{\ttfamily\string\declareImageAndPlacement\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\declareImageAndPlacement{!meta(KV-pairs)}
+\end{dCmd}
+\CmdDescription This command creates the JavaScript code to import images
+(icons) and associates them with target push buttons that are created by
+\cs{placeImage}. The images are imported into the document when the
+document is first opened in \textsf{Acrobat}. The images themselves can be
+PDF, BMP, GIF, JPEG, PCX, PNG, TIFF, or some other supported format. (See
+the documentation on the method \texttt{\emph{Doc}.importIcon} for
+details.) The file is converted to PDF when imported.
+
+\Important This command is executed in the preamble only, can be executed
+more than once, (once for each image being imported), and \emph{outside of
+the \texttt{docassembly} environment}.
+
+\KVP This command takes up to four key-value pairs.
+\begin{itemize}
+ \item \texttt{name}: (\emph{Optional}) The symbolic name to be associated with this image. The name
+ is later used to attach the image to the push button (created by \cs{placeImage}).
+ If a value for this key is not provided, one will be automatically created.
+ \item \texttt{path}: (\emph{Required}) The path to the image, this can be a relative path or an absolute
+ path. If absolute, use the device independent path notation of \textsf{Acrobat}; for example,\\[3pt]
+ \hspace*{20pt}\texttt{/C/acrotex/myimages/myimage.png}.
+ \item \texttt{page}: (\emph{Optional}) If the image is a PDF, the PDF may contain several pages,
+ each with an image on it. You can specify which of the pages to import using
+ the \texttt{page} key. If no \texttt{page} key is specified, page 0 is assumed.
+ \item\texttt{placement}: (\emph{Optional}) This is a comma-delimited list of names of push buttons
+ created by the command \cs{placeImage}. Multiple place images with the same name all get the
+ image imported into it. If you want several place images with different names,
+ list these in a comma delimited list, like so
+\begin{Verbatim}
+ placement={image1,image2,image3}.
+\end{Verbatim}
+ If a value for this key is not provided,
+ a message in the log is generated; the images are imported (embedded) in the document,
+ are not used to create visible images. Either provide a \texttt{placement} key-value pair,
+ or learn how to use (named) icons that are embedded in the document with the \texttt{\emph{Doc}.importIcon()}
+ method.
+\end{itemize}
+
+Multiple images can be imported and set by simply executing
+\cs{declareImage\-And\-Place\-ment} multiple times with a different set of
+arguments, or, by executing \cs{declare\-Multi\-Images}.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \darg{\meta{KV-pairs\_1}}\darg{\meta{KV-pairs\_2}}\darg{\meta{KV-pairs\_3}}...\darg{\meta{KV-pairs\_n}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\declareMultiImages
+{
+ {!meta(KV-pairs_1)}{!meta(KV-pairs_2)}{!meta(KV-pairs_3)}...{!meta(KV-pairs_n)}
+}
+\end{dCmd}
+\egroup\CmdDescription This command calls the \cs{declareImageAndPlacement}
+command for each of its arguments. The argument of the command is a series of
+tokens (enclosed in braces); within each pair of matching braces are
+\meta{KV-pairs} of the arguments of \cs{declareImageAndPlacement}. The
+command \cs{declareMultiImages} loops through the list, calling
+\cs{declareImageAndPlacement} with the current set of \meta{KV-pairs}. An
+example follows.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \darg{path=graphics/girl.png,placement=\darg{Avatar3,Avatar4}}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\declareMultiImages
+{%
+ {path=graphics/girl.png,placement={Avatar3,Avatar4}}
+ {path=graphics/AcroFord.jpg,placement=AcroFord}
+ {path=graphics/scot.gif,placement=Scot}
+}
+\end{dCmd*}
+\egroup
+
+\Important This command is executed in the preamble only, can be executed more than
+once, (once for each image being imported), and \emph{outside of the \texttt{docassembly} environment}.
+
+Once the images have been defined and referenced using any of the above commands,
+you need to actually executed the JavaScript code these commands created. This is done
+with the \cs{insertPreDocAssembly} inside the \texttt{docassembly} environment.
+
+\settowidth{\aebdimen}{\ttfamily\string\insertPreDocAssembly}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\insertPreDocAssembly
+\end{dCmd}
+\CmdDescription This command expands to all the JavaScript code
+created by the commands \cs{declare\-ImageAndPlacement} and
+\cs{declareMultiImages}. It is \emph{placed within the
+\texttt{docassembly} environment}, like so
+
+\settowidth{\aebdimen}{\ttfamily\string\insertPreDocAssembly}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{docassembly}
+\insertPreDocAssembly
+\end{docassembly}
+\end{dCmd}
+
+The target buttons are be created by the \cs{pushButton} command from the \texttt{eforms} package,
+but as a convenience, {\AEBP} defines the \cs{placeImage} command
+
+\settowidth{\aebdimen}{\ttfamily\string\placeImage[\meta{options}]%
+\darg{\meta{name}}\darg{\meta{width}}\darg{\meta{height}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\placeImage[!meta(options)]{!meta(name)}{!meta(width)}{!meta(height)}
+\end{dCmd}
+
+\CmdDescription Creates a readonly push button with an icon only appearance.
+The \meta{options} can be used to modify the appearance of the button (add a
+border, for example); the \meta{name} is used as the field name, and is
+referenced in the \texttt{placement} key of \cs{declareImageAndPlacement}.
+The \meta{width} and \meta{height} are what they appear to be, the
+width and height of the image.
+
+If the width and height is not correct, \textsf{Acrobat} will scale the
+image. There are other controls that can be used through the optional
+arguments to position the image within its bounding box. The dimensions of
+the image you want to use can be acquired through various methods. On
+windows, the dimension of the image for PNG and JPG are displace when the
+mouse is moved over the image (while using explorer).
+
+\textbf{Note.} At times, I have imported images this way, these commands
+just simply the task. This method may be preferred over using
+\cs{includegraphics} when the image has transparency that you want to
+preserve. For example, if a PNG image has a transparent background, it
+will be imported into the document with the transparent background. For
+those using \textsf{Adobe Distiller}, the transparency is often lost
+(unless the image uses vector graphics) when converting to an EPS file.
+
+\subsubsection{Creating Custom Button Appearances}
+
+The \cs{placeImage} command described in the last section is a \cs{pushButton}
+designed to be read only and is meant to be used to place non-interactive
+images in the document. The methods of the previous section can also be used
+to create custom button appearances using graphics files of various formats.
+
+To this end, an optional parameter is defined for the value(s) of the \texttt{placement}
+parameter in \cs{declareImageAndPlacement} and \cs{declareMultiImages}. Each button
+has (at most) three appearance states: normal, rollover, and down. The additional
+optional parameter allows you to specify what appearance state the icon is to be used for.
+The optional parameter is shown in the example below.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \darg{path=graphics/girl.png,placement=\darg{[2]Avatar1,[0]Avatar2}}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\declareMultiImages
+{%
+ {path=graphics/man1.pdf,placement={Avatar1,[2]Avatar2}}
+ {path=graphics/scot.gif,placement={[1]Avatar1,[1]Avatar2}}
+ {path=graphics/girl.png,placement={[2]Avatar1,[0]Avatar2}}
+}
+\end{dCmd*}
+\egroup The optional argument precedes the field name and determines the
+appearance state of the button the icon is to be used; the values
+are \texttt{[0]} (default, normal icon); \texttt{[1]} (down icon);
+and \texttt{[2]} (rollover icon). There must be no space between the
+optional argument and the field name; if you type \texttt{"[2]
+Avatar1"}, for example, the field name is interpreted as \texttt{"
+Avatar1"}, which is incorrect.
+
+\exAeBBlogPDF{p=341} Further details and examples may be found in the blog
+article \texttt{button\_appr.pdf} titled \emph{Creating Button
+Appearances}, found at the \href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web
+site. The source file and images are attached to the PDF.
+
+\subsubsection{Methods in support of Button
+Anime}\label{sss:btnAnimeMethods}
+
+The commands and methods described in this section are in support for
+`\mlnameref{s:btnanime}' on page~\pageref*{s:btnanime}.
+
+The \texttt{btnanime} option brings in the code necessary to create what I
+call button anime, as opposed to OCG anime (using layers). Two
+pre-docassembly commands were created for this purpose
+\cs{embedMultiPageImages} and \cs{placeAnimeCtrlBtnFaces}.
+
+\settowidth{\aebdimen}{\ttfamily\string\embedMultiPageImages\darg{\meta{options}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\embedMultiPageImages{!meta(options)}
+\end{dCmd}
+
+\CmdDescription The command embeds (in the document) and optionally places
+a series of icons all of which are pages of the same PDF file. This
+command does not need the \texttt{btnanime} option, it is part of the core
+{\AEB} code.
+
+\KVP There are a number of key-value pairs the argument recognizes.
+\begin{itemize}
+ \item \texttt{path}: The path to the PDF containing the images to be
+ used. This path can be relative or absolute. This key is required.
+ \item \texttt{name}: The base name to be associated with the images
+ being embedded. This key is required.
+ \item \texttt{placement}: A comma-delimited list, each member of the list is the
+ base name of the button anime field created by \cs{btnAnime} that is
+ to use this set of images. This key is optional, if not present, the
+ images are embedded only.
+ \item \texttt{firstpage}: The page number (the first page is page 1)
+ of the first image to be embedded and used. This key is optional;
+ if \texttt{firstpage} is not specified, its default value is 1.
+ \item \texttt{lastpage}: The page number (base-1 page numbering) of
+ the last image to be embedded and used. The value of this key is
+ required.
+\end{itemize}
+
+For example, here we embed the first 41 pages from the file
+\texttt{sine\_anime.pdf}, which resides in the subfolder \texttt{graphics},
+and associates it with the button anime field \texttt{mysine}.
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily path=graphics/sine\_anime.pdf,placement=mysine\}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\embedMultiPageImages{lastpage=41,name=sine,
+ path=graphics/sine_anime.pdf,placement=mysine}
+\end{dCmd*}
+\egroup
+
+The control buttons for a button anime require a custom appearance.
+{\AEBP} supplies one set of custom icons, and allows for the creation
+of more by the interested document author, that's you.
+
+\settowidth{\aebdimen}{\ttfamily\string\placeAnimeCtrlBtnFaces[\meta{path}]%
+\darg{\anglemeta{appr\_icons}.pdf}\darg{\meta{list\_of\_animes}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\placeAnimeCtrlBtnFaces[!meta(path)]{!anglemeta(appr_icons).pdf}{!meta(list_of_animes)}
+\end{dCmd}
+
+\CmdDescription This command associate the icon set to be used for the
+button appearances of the buttons used to control the button animation.
+(That's a lot of buttons in that last sentence!)
+
+\PD The command takes three parameters, one of which is optional.
+\begin{description}
+ \item[\normalfont\texttt{[\meta{path}]}] is the (optional) path to the button control
+ appearance icons. If no argument is present,
+ the value of \cs{pathToBtnCtrlIcons} is used, see \texttt{aebpro.cfg}
+ for its definition. The icon set distributed with {\AEBP} is named
+ \texttt{btn\_anime\_icons1.pdf}, and is found in the icons folder of
+ the \texttt{aeb\_pro} folder.
+ \item[\normalfont\texttt{\anglemeta{appr\_icons}}] is the name of the PDF file that
+ contains the icons to be used for the appearances of the control
+ buttons.
+ \item[\normalfont\texttt{\meta{list\_of\_animes}}] is a comma-delimited list of the base
+ names of the anima created by \cs{btnAnima} that will be using these
+ appearance icons.
+\end{description}
+
+\textbf{Example:}
+\settowidth{\aebdimen}{\ttfamily\string\placeAnimeCtrlBtnFaces\darg{btn\_anime\_icons1.pdf}\darg{myclock,mysine}}%
+\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\placeAnimeCtrlBtnFaces{btn_anime_icons1.pdf}{myclock,mysine}
+\end{dCmd*}
+
+The above example uses no optional parameter, so \cs{placeAnimeCtrlBtnFaces} uses the path defined
+by \cs{pathToBtnCtrlIcons} in \texttt{aebpro.cfg}. On my personal system,
+the \texttt{aebpro.cfg} file reads
+\begin{Verbatim}
+%
+% AeB Pro Configuration file
+%
+\ExecuteOptionsX{driver=dvips}
+\renewcommand{\pathToBtnCtrlIcons}
+ {C:/Users/Public/Documents/My TeX Files/tex/latex/aeb_pro/icons}
+\end{Verbatim}
+You should seek out the \texttt{aebpro.cfg} and edit this command to point
+to the \texttt{icons} folder of \texttt{aeb\_pro.} You can create your own
+icon PDF file in the \texttt{icons} folder; the guidelines for creating
+such an icon PDF file are simple. Places the icon from each page as the
+appearance of a corresponding control button. The expected order of the
+icons is given in \hyperref[fig:apprCntrls]{Figure~\ref*{fig:apprCntrls}},
+page~\pageref*{fig:apprCntrls}.
+
+If you put your custom appearance icon set in the source folder, you can
+reference like so,
+\begin{Verbatim}
+\placeAnimeCtrlBtnFaces[.]{btn_anime_custom.pdf}{myclock,mysine}
+\end{Verbatim}
+The optional \texttt{[.]} overrides the definition of
+\cs{pathToBtnCtrlIcons}, and refers to the current folder. If you never
+defined \cs{pathToBtnCtrlIcons} (its default definition is empty), then
+\begin{Verbatim}
+\placeAnimeCtrlBtnFaces{btn_anime_custom.pdf}{myclock,mysine}
+\end{Verbatim}
+does the trick. If you have them in a subfolder (\texttt{graphics}) of the source file folder,
+then
+\begin{Verbatim}
+\placeAnimeCtrlBtnFaces[graphics]{btn_anime_custom.pdf}{myclock}
+\end{Verbatim}
+
+\begin{figure}[htb]\centering
+\begin{tabular}{cl}
+ Page & Icon\\\hline
+ 0 & Go to first frame\\
+ 1 & Go to last frame\\
+ 2 & Step back one frame\\
+ 3 & Step forward one frame\\
+ 4 & Play backward\\
+ 5 & Play forward\\
+ 6 & Pause\\
+ 7 & Increase speed\\
+ 8 & Decrease speed
+\end{tabular}
+\caption{Icons by page for Button Anime Controls}\label{fig:apprCntrls}
+\end{figure}
+
+Finally, because these are pre-docassembly methods, these two commands go
+in the preamble, and are followed by the \texttt{docassembly} environment;
+like so,\dots
+
+\settowidth{\aebdimen}{\ttfamily\string\placeAnimeCtrlBtnFaces\darg{btn\_anime\_icons1.pdf}\darg{myAnimation,mysine}}%
+\begin{dCmd*}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\embedMultiPageImages{lastpage=36,name=rotate,
+ path=graphics/animation.pdf,placement=myAnimation}
+\embedMultiPageImages{lastpage=41,name=sine,
+ path=graphics/sine_anime.pdf,placement=mysine}
+\placeAnimeCtrlBtnFaces{btn_anime_icons1.pdf}{myAnimation,mysine}
+\begin{docassembly}
+\insertPreDocAssembly;
+\executeSave();
+\end{docassembly}
+\end{dCmd*}
+You may have other pre-docassembly commands as well.
+
+
+\section{Linking to Attachments}\label{linktoattachments}
+
+Should you wish to link to your attachments or \emph{rename their
+descriptions}, the \texttt{link\-to\-at\-tach\-ments} option needs to be specified in the
+option list of \texttt{aeb\_pro}. This defines many of the commands
+discussed in this section enabling you to link to a PDF attachment,
+open a PDF or non-PDF attachment, save a PDF or non-PDF
+attachment to the local hard drive, or simply to rename the descriptions
+of the attachments.
+
+\exPDFSrc{aebpro_ex5} The document \texttt{aebpro\_ex5} has working examples
+of the ideas and commands discussed in this section.
+
+\penalty-1000
+
+\subsection{Naming Attachments}
+
+Associated with each embedded file is a name (or label) and a description.
+The name given to an attachment (an embedded file) is used by \textsf{Acrobat}
+to reference its location within the embedding {\PDF} document. This name (or
+label) is used when creating links to the embedded document as well;
+consequently, the assigned name is quite important.
+
+\subsubsection{Default Descriptions and Labels}
+
+With {\cAEBP}, \texttt{you} can attach files in three ways: (1) with the \texttt{attachsource} key,
+(2) with the attachments key; and (3) using the \cs{importDataObject} method, as
+demonstrated in \hyperref[importdataobject]{Example~\ref{importdataobject}}. For attachments
+that fall into categories (1) and (2), {\AEB} assigns default labels and descriptions. These
+are presented in \hyperref[deflabelnames]{Table~\ref*{deflabelnames}}, page~\pageref*{deflabelnames}.
+
+\begin{table}[ht]\centering
+\begin{tabular}{>{\ttfamily}l>{\ttfamily}l>{\ttfamily}l}
+attachsource & \textrm{label} & \textrm{description}\\\hline
+ tex & tex & \cs{jobname.tex}\\
+ dvi & dvi & \cs{jobname.dvi}\\
+ log & log & \cs{jobname.log}\\
+ $\dots$&$\dots$ & $\dots$\\[2ex]
+attachments & \textrm{label} & \textrm{description}\\\hline
+$1^{\text{st}}$ file & attach1 & {\AEB} Attachment 1\\
+$2^{\text{nd}}$ file & attach2 & {\AEB} Attachment 2\\
+$3^{\text{rd}}$ file & attach3 & {\AEB} Attachment 3\\
+$4^{\text{th}}$ file & attach4 & {\AEB} Attachment 4\\
+ $\dots$ & $\dots$ & $\dots$
+
+\end{tabular}
+\caption{Default label/descriptions}\label{deflabelnames}
+\end{table}
+
+For documents attached by \texttt{attachsource}, the default label is the extension,
+and the default description is the filename with extension.
+
+For documents attached by the \texttt{attachments} option, {\cAEBP}
+assigns them ``names,'' which appear in the attachments tab of
+\textsf{Acrobat/Reader} as the Description.\footnote{The Description is
+important as it is the way embedded files are referenced internally.} The
+names assigned are \texttt{{\AEB} Attachment 1}, \texttt{{\AEB} Attachment 2},
+\texttt{{\AEB} Attachment 3}, and so on.
+
+If you embed a file using the \cs{importDataObject} method within the
+\texttt{docassembly} environment (see
+\hyperref[importdataobject]{Example~\ref{importdataobject}},
+page~\pageref*{importdataobject}), you are free to assign a name of your
+preference.
+
+\subsubsection{Assigning Labels and Descriptions}\label{assigningLabels}
+
+Whatever method is used to attach a document to the parent document,
+the names must be converted to unicode on the {\TeX} side of things
+to set up the links, and there must be a \LaTeX-like way of
+referencing this unicode name, hence the development of the
+\texttt{at\-tach\-ments\-Names} environment and the two commands
+\cs{autolabelNum} and \cs{labelName}.\footnote{It is important to
+note that these are not needed unless you are linking to the
+embedded files.} These two commands, described below, should appear
+in the \texttt{attachment\-Names} environment in the preamble.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \anglemeta{\string\autolabelNum{} and \string\labelName{} commands}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{attachmentNames}
+ !anglemeta(\autolabelNum and \labelName commands)
+\end{attachmentNames}
+\end{dCmd}
+\egroup
+
+\EnvLoc The preamble of the document. The \texttt{attachmentNames}
+environment and the commands \cs{autolabel\-Num} and \cs{labelName}
+should be used only in the parent document; for child documents they
+are not necessary.
+
+
+\Ex{}\label{declarations} Below are the declaration that appear in
+the supporting file \texttt{aebpro\_ex5}:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\begin{attachmentNames}
+ \autolabelNum{1}
+ \autolabelNum*{2}{target2.pdf Attachment File}
+ \autolabelNum*[AeST]{3}{{\AEB}ST Components}
+ \labelName{cooltarget}{My (cool) $|x^3|$ ~ % '<attachment>'}
+\end{attachmentNames}
+\end{Verbatim}
+Descriptions of these commands follow.
+
+\settowidth{\aebdimen}{\ttfamily\string\autolabelNum[\meta{label}]\darg{\anglemeta{num}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\autolabelNum[!meta(label)]{!anglemeta(num)}
+\end{dCmd}
+
+\CmdDescription For PDFs (or other files) embedded using the
+\texttt{attachments} option, use the \cs{autolabelNum} command.
+
+\PD The first optional argument is the label to be used to refer to this
+embedded file; the default is \anglemeta{num}. The second
+argument is the second is a number, \anglemeta{num}, which
+corresponds to the order the file is listed in the value of the
+\texttt{attachments} key.\footnote{To minimize the number of changes
+to the document, if you later add an attachment, add it to the end
+of the list so the earlier declarations are still valid.}
+
+
+\newtopic There is a star form of \cs{autolabelNum}, which
+allows to change the description of the attachment.
+\settowidth{\aebdimen}{\ttfamily\string\autolabelNum*[\meta{label}]\darg{\anglemeta{num}}\darg{\anglemeta{description}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\autolabelNum*[!meta(label)]{!anglemeta(num)}{!anglemeta(description)}
+\end{dCmd}
+\CmdDescription Each file listed as a value in the \texttt{attachments} key
+has a number, \anglemeta{num}, assigned to it according to the order it
+appears in the list, and a default description
+ of `\texttt{{\AEB} Attachment \anglemeta{num}}'. This command
+allows you not only to change the label, but to change the
+description of the attachment as well.
+
+\PD The first optional argument is the label to be used to refer to this
+embedded file; the default is \texttt{attach\anglemeta{num}}. The second
+argument is the second is a number, \anglemeta{num}. The third parameter,
+\anglemeta{description}, is the description that will appear in the
+attachments pane of \textsf{Acrobat/Reader}.
+
+\newtopic For files that are embedded using
+\cs{importDataObject}, use the command \cs{labelName} for assigning
+the name, and setting up the correspondence between the name and the
+label.
+\settowidth{\aebdimen}{\ttfamily\string\labelName\darg{\meta{label}}\darg{\anglemeta{description}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\labelName{!meta(label)}{!anglemeta(description)}
+\end{dCmd}
+\PD The first argument is the label to be used to reference this embedded
+file. The second parameter, \anglemeta{description}, you can assign an
+arbitrary name used for the description.
+
+
+\subsubsection{Notes on the
+\texorpdfstring{\protect\anglemeta{description}}{<description>} parameter}\label{description}
+
+The \anglemeta{description} parameter used in \cs{autolabelNum*} and
+\cs{labelName} can be an arbitrary string assigned to the description of this
+embedded file, the characters can be most anything in the Basic Latin unicode
+set, 0021--007E, with the exception of left and right braces \verb!{}!,
+backslash \verb!\! and double quotes \texttt{"}.
+
+%If you take the \texttt{latin1} option, the unicodes for 00A1--00FF are also included.
+
+A unicode character code can also be entered directly into the
+description by typing \cs{uXXXX}, where \texttt{XXXX} are
+four hex digits. (Did I say not to use `\verb!\!'?) This is very
+useful when using the trouble making characters such as backslash,
+left and right braces, and double quotes, or using unicode above
+00FF (Basic Latin + Latin-1). To illustrate, suppose we wish the
+description of \texttt{cooltarget} to be
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+ "$|e^{\ln(17)}|$"
+\end{Verbatim}
+All the bad characters!
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\labelName{cooltarget}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\end{Verbatim}
+From the unicode character tables we see that
+
+\begingroup\parskip0pt
+\begin{itemize}
+\item left brace \cs{u007B}
+\item right brace \cs{u007D}
+\item backslash \cs{u005C}
+\item double quotes \cs{u0022}
+\end{itemize}
+\par\endgroup
+\exPDFSrc{aebpro_ex6} See the example file \texttt{aebpro\_ex6.tex}
+for additional examples of the use of \cs{uXXXX} character codes.
+
+There are several ``helper'' commands as well: \cs{EURO},
+\cs{DQUOTE}, \cs{BSLASH}, \cs{LBRACE} and \cs{RBRACE}. When the
+\cs{u} is detected, an \cs{expandafter} is executed. This allows a
+command to appear immediately after the \cs{u}, things work out well
+if the command expands to four hex numbers, as it should. Thus,
+instead of typing \cs{u0022} you can type \verb!\u\DQUOTE!.
+
+\subsection{Linking to Embedded Files}\label{embed}
+
+This package defines two commands, \cs{ahyperref} and
+\cs{ahyperlink}, to create links between parent and child and child
+and child. The default behavior of \cs{ahyperref} (and
+\cs{ahyperlink}) is to set up a link from parent to child.
+\cs{ahyperlink} and \cs{ahyperref} are identical in all respects
+except for how it interprets the destination. (Refer to
+\mlNameref{jump} for details.)
+
+\newtopic The commands each take three arguments, the
+first one of which is optional
+\settowidth{\aebdimen}{\ttfamily\string\ahyperlink[\meta{options}]%
+\darg{\meta{target\_label}}\darg{\meta{text}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\ahyperref[!meta(options)]{!meta(target_label)}{!meta(text)}
+\ahyperlink[!meta(options)]{!meta(target_label)}{!meta(text)}
+\end{dCmd}
+\CmdDescription \cs{ahyperref} is used to jump to a destination (as
+specified by the \texttt{dest} key, listed in
+\hyperref[aKeyVal]{Table~\ref*{aKeyVal}}, page~\pageref*{aKeyVal})
+defined by the \cs{label} command, whereas \cs{ahyperlink} is used
+to jump to a destination (as specified by the \texttt{dest} key)
+defined by the \cs{hypertarget} of \textsf{hyperref}. See
+\hyperref[jump]{Section~\ref*{jump}}, page~\pageref*{jump} for details.
+
+\PD The commands each take three arguments, the first one of which
+is optional.
+\begingroup\parskip0pt
+\begin{aebDescript}
+ \item [\meta{options}] are the options for modifying the appearance of
+ the link, and for specifying the relationship between the source and
+ the target file. These are key-value pairs documented
+ in \hyperref[aKeyVal]{Table~\ref*{aKeyVal}}, page~\pageref*{aKeyVal}.
+ \item \meta{target\_label} is the label of the target file, the label is
+ the default label, if there is one, or as defined by
+ \cs{autolabelNum} or \cs{labelName}.
+ \item [\meta{text}] is the text that is highlighted for this link.
+\end{aebDescript}
+\par\endgroup
+
+\begin{table}[ht]\centering\small
+\begin{tabular}{|>{\ttfamily}l|>{\ttfamily\raggedright}p{1.3in}|p{2.5in}|}\hline
+\textbf{Key} &\textbf{Value}&\textbf{Description}\\\hline
+goto &p2c, c2p, c2c & The type of jump, parent to child, child to parent, and child to
+ child. The default is \texttt{p2c}.\\[1ex]
+page &\anglemeta{number}& The page of the embedded document to jump to. Default is \texttt{0}.\\[1ex]
+view &\anglemeta{value} & The view to be used for the jump. Default is \texttt{Fit}.\\[1ex]
+dest &\anglemeta{string}& Jump to a named destination. When this key has a value, the values
+ of the keys \texttt{page} and \texttt{view} are ignored.\\[1ex]
+open &usepref, new, existing
+ & Open the attachment according to the user preferences,
+ a new window, or the existing window. The default is \texttt{userpref}.\\[1ex]
+border &visible, invisible
+ & Determines whether a visible rectangle appears around the
+ link. The default is \texttt{in\-vis\-i\-ble}.\\[1ex]
+highlight &none, invert, outline, insert
+ & How the viewer highlights the link when the
+ link is clicked. The default is \texttt{invert}.\\[1ex]
+bordercolor &r g b & The color of the border when it is visible. The default is black.\\[1ex]
+linestyle &solid, dashed, underlined
+ & The line style of the border when it is visible.
+ The default is \texttt{solid}.\\[1ex]
+linewidth &thin, medium, thick
+ & The line width when the border is visible. When invisible,
+ this is set to a width of zero. The default is \texttt{thin}.\\[1ex]
+preset &\anglemeta{\cs{presetCommand}}
+ & A convenience key. You can define some preset values.\\\hline
+\end{tabular}
+\caption{Key-value pairs for links to embedded files}\label{aKeyVal}
+\end{table}
+
+\Ex{} We assume the declarations as given in \hyperref[declarations]{Example~\ref*{declarations}},
+page~\pageref*{declarations}. In the simplest case, we jump from the parent to the first page of a
+child file given by$\dots$
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+ \ahyperref{attach1}{target1.pdf}
+\end{Verbatim}
+This is the same as
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+ \ahyperref[goto=p2c]{attach1}{target1.pdf}
+\end{Verbatim}
+The \texttt{goto} key is one of the key-value pairs taken by the
+optional argument. Permissible values for the \texttt{goto} key are
+\texttt{p2c} (the default), \texttt{c2p} (child to parent) and
+\texttt{c2c} (child to child).
+
+\Ex{} We assume the declarations as given in \hyperref[declarations]{Example~\ref*{declarations}},
+page~\pageref*{declarations}. Similarly, link to the other embedded files in this parent:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+ \ahyperref{attach2}{target2.pdf}
+ \ahyperref{cooltarget}{aebpro\_ex2.pdf}
+\end{Verbatim}
+
+In all cases above, the \cs{ahyperlink} command could have been
+used, because no \emph{named} destination was specified, without a
+named destination, the these links jump to page~1.
+
+
+\subsection{Jumping to a target}\label{jump}
+
+As you may know, {\LaTeX}, more exactly, \texttt{hyperref} has two
+methods of jumping to a target in another document, jump to a label
+(defined by \cs{label}) and jump to a target set by
+\cs{hypertarget}. Each of these is demonstrated for embedded files
+in the next two sections.
+
+\exPDFSrc{aebpro_ex5} The document \texttt{aebpro\_ex5} has working examples
+of the ideas and commands discussed in this section.
+
+\subsubsection{Jumping to a \texorpdfstring{\protect\cs{hypertarget}}{\textbackslash hypertarget}
+with \texorpdfstring{\protect\cs{ahyperlink}}{\textbackslash ahyperlink}}
+
+Suppose there is a destination, with a label of \texttt{mytarget}, defined
+by the \cs{hypertarget} command in \texttt{target1.pdf}. To jump to
+that destination we would use the following code:
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperlink[dest=mytarget]{attach1}{Jump!}
+\end{Verbatim}
+Note that \texttt{dest=mytarget}, where \texttt{mytarget} is the
+label assigned by the \cs{hypertarget} command in \texttt{target1.pdf}.
+
+\penalty-5000
+
+\subsubsection{Jumping to a \texorpdfstring{\protect\cs{label}}{\textbackslash label}
+with \texorpdfstring{\protect\cs{ahyperref}}{\textbackslash ahyperref}}
+
+{\LaTeX} has a cross-referencing system, to jump to a target set by
+the \cs{label} command we use the \textsf{xr-hyper} package that
+comes with \texttt{hyperref}; the code might be
+
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperref[dest=target1-s:intro]{attach1}
+ {Section~\ref*{target1-s:intro}}
+\end{Verbatim}
+we set \verb!dest=target1-s:intro!.
+
+The label in \texttt{target1.pdf} is \texttt{s:intro}, in the preamble of
+this document we have
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\externaldocument[target1-]{children/target1}
+\end{Verbatim}
+\noindent which causes \textsf{xr-hyper} to append a prefix to the label (this
+avoids the possibility of duplication of labels, over multiple
+embedded files).
+
+
+\subsection{Optional Args of \texorpdfstring{\protect\cs{ahyperref}}{\textbackslash ahyperref}
+and \texorpdfstring{\protect\cs{ahyperlink}}{\textbackslash ahpyerlink}}
+
+The \cs{ahyperref} commands has a large number of optional arguments, see
+\hyperref[aKeyVal]{Table~\ref*{aKeyVal}}, page~\pageref*{aKeyVal},
+enabling you to create any link that the user interface of \textsf{Acrobat
+Pro} can create, and more. These are documented in \textsf{aeb\_pro.dtx}
+and well as the main documentation. Suffice it to have an example or two.
+
+By using the optional parameters, you can create any link the UI can create, for example,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperref[%
+ dest=target1-s:intro,
+ bordercolor={0 1 0},
+ highlight=outline,
+ border=visible,
+ linestyle=dashed
+]{attach1}{Jump!}
+\end{Verbatim}
+\noindent Now what do you think of that?
+
+\newtopic The argument list can be quite long, as shown above. If you have some favorite settings, you can
+save them in a macro, like so,
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\def\preseti{bordercolor={0 0 1},highlight=outline,open=new,%
+ border=visible,linestyle=dashed}
+\end{Verbatim}
+Then, we can say more simply, %\ahyperref[dest=target1-s:intro,preset=\preseti]{attach1}{Jump!}
+This link is given by$\dots$
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperref[dest=target1-s:intro,preset=\preseti]{attach1}{Jump!}
+\end{Verbatim}
+\noindent I've defined a \texttt{preset} key so you can predefine
+some common settings you like to use, the enter these settings
+through preset key, like so \verb!preset=\preseti!. Cool.
+
+Note that in the second example, \texttt{open=new} is included. This
+causes the embedded file to open in a new window. For
+\textsf{Acrobat/Reader} operating in MDI, a new child window will open;
+for SDI (version~8), and if the user preferences allows it, it will open
+in its \textsf{Acrobat/Adobe Reader} window.
+
+
+\subsection{Opening and Saving with \texorpdfstring{\protect\cs{ahyperextract}}
+ {\textbackslash ahyperextract}}
+
+In addition to embedding and linking a PDF, you can embed most any
+file and programmatically (or through the UI) open and/or save it to
+the local file system.
+
+To attach a file to the parent PDF, you can use the
+\texttt{attachsource} or the \texttt{attachments} options of
+{\cAEBP}, or you can embed your own using the
+\texttt{importDataObject} method, as described earlier in this file.
+
+If an embedded file is a PDF, you can link to it using \cs{ahyperref} or
+\cs{ahyperlink}; we can jump to an embedded PDF and jump back. If the
+embedded file is not a PDF, then jumping to it makes no sense; the best we
+can do is to open the file (using an application to display the file) and/or
+save it to the local hard drive.
+
+The {\cAEBP} package has the command \cs{ahyperextract} to extract
+the embedded file, and to save it to the local hard drive, with an
+option to start the associated application and to display the file.
+The syntax for \cs{ahyperextract} is the same as that of the other
+two commands:
+\settowidth{\aebdimen}{\ttfamily\string\ahyperextract[\meta{options}]%
+\darg{\meta{target\_label}}\darg{\meta{text}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\ahyperextract[!meta(options)]{!meta(target_label)}{!meta(text)}
+\end{dCmd}
+\PD The \meta{options} are the same as those for \cs{ahyperref} (refer to
+\hyperref[aKeyVal]{Table~\ref*{aKeyVal}}, page~\pageref*{aKeyVal}), the
+\meta{target\_label} is the one associated with the attachment name,
+and the \meta{text} is the link text.
+
+In addition to the standard options of \cs{ahyperref},
+\cs{ahyperextract} recognizes one additional key, \texttt{launch}.
+This key accepts three values: \texttt{save} (the default),
+\texttt{view} and \texttt{viewnosave}. The following is a partial
+verbatim listing of the descriptions given in the \textsl{JavaScript
+for Acrobat API Reference}, in the section describing
+\texttt{importDataObject} method of the Doc object:
+\begin{enumerate}
+ \item \texttt{save}: The file will not be launched after it is
+ saved. The user is prompted for a save path.
+ \item \texttt{view}: The file will be saved and then launched.
+ Launching will prompt the user with a security alert warning if
+ the file is not a PDF file. The user will be prompted for a save
+ path.
+ \item \texttt{viewnosave}: The file will be saved and then
+ launched. Launching will prompt the user with a security alert
+ warning if the file is not a PDF file. A temporary path is
+ used, and the user will not be prompted for a save path. The
+ temporary file that is created will be deleted by
+ \textsf{Acrobat} upon application shutdown.
+\end{enumerate}
+
+\Ex{} Here is a series of examples of usage:
+\begin{enumerate}
+
+\item Launch and view this PDF. The code is\makeatletter\@listdepth=0\relax\makeatother
+
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperextract[launch=view]{cooltarget}{aebpro\_ex3.pdf}
+\end{Verbatim}
+When you extract (or open) PDF in this way, any links created by
+\cs{ahyperref} or \cs{ahyper\-link} will not work since the PDF being
+viewed is no longer an embedded file of the parent.
+
+\item View the a file, but do not save. The code is\makeatletter\@listdepth=0\relax\makeatother
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperextract[launch=viewnosave]{tex}{aebpro\_ex5.tex}
+\end{Verbatim}
+Note that for attachments brought in by the \texttt{attachsource} option,
+the label for that attachment is the file extension, in this case
+\texttt{tex}.
+
+\item Save a file without viewing.\makeatletter\@listdepth=0\relax\makeatother
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\ahyperextract[launch=save]{AeST}{{\AEB}ST Component List}
+\end{Verbatim}
+\end{enumerate}
+
+\subsection{The child document}\label{childof}
+
+If one of the documents to be attached is a PDF document created from
+a {\LaTeX} source using {\cAEBP}, and you want link back to either the
+parent document or another child document, then use the \texttt{childof}
+option in the \texttt{aeb\_pro} option list. The value of this key
+is the path back to the base name of the parent document. For example,
+a child document might specify \verb!childof={../aebpro_ex5}!.
+
+\exPDFSrc{aebpro_ex5} See the support documents
+\texttt{aebpro\_ex5}, the parent document and its two child
+documents \texttt{children/target1} and \texttt{children/target2},
+found in the examples folder.
+
+\section{Creating a PDF Package}
+
+% 8.2.4 p. PDF 1.7 (v8)) 588 collection (portable collection, PDF collection), PDF package, PDF portfolio
+
+
+The concept of a PDF Package is introduced in \textsf{Acrobat}~8. On first
+blush, it is nothing more than a fancy user interface to display embedded
+files; however, it is also used in the new email form data workflow.
+Using the new \textsf{Forms} menu, data contained in FDF files can be
+packaged, and summary data can be displayed in the user interface.
+Consequently, the way forms uses it, a PDF package can be used as a simple
+database.
+
+Unfortunately, at this time, the form feature/database feature of
+PDF Packages is inaccessible to the JavaScript API and {\cAEBP}.
+What {\cAEBP} provides is packaging of the embedded files with the
+nice UI.
+
+\exPDFSrc{aebpro_ex6} The document \texttt{aebpro\_ex6} provides a working
+example of a PDF Package.
+
+\newtopic To create a PDF Package, embed all files in the
+parent and use the command \cs{make\-PDF\-Pack\-age} in the preamble to
+package the attachments.
+
+\settowidth{\aebdimen}{\ttfamily\string\makePDFPackage\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\makePDFPackage{!meta(KV-pairs)}
+\end{dCmd}
+\KVP There are only two sets of key-value pairs
+\begin{aebDescript}
+ \item [\texttt{initview=\anglemeta{label}}] Specifying a value for the
+ \texttt{initview} key determines which file will be used as the initial
+ view when the document is opened. If, for example, \texttt{initview=attach2},
+ the file corresponding to the label
+ \texttt{attach2}, as set up in the \texttt{at\-tach\-ment\-Names}
+ environment is the initial view. Listing \texttt{initview} with
+ no value (or if \texttt{initview} is not listed at all) causes
+ the parent document to be initially shown.
+
+ \item [\texttt{viewmode=\anglemeta{\upshape details|tile|hidden}}] The
+ \texttt{viewmode} determines which of three user interfaces
+ is to be used initially. In terms of the UI terminology:
+\begin{align*}
+ &\texttt{details} = \textsf{View top}\\
+ &\texttt{tile} = \textsf{View left}\\
+ &\texttt{hidden} = \textsf{Minimize view}
+\end{align*}
+ The default is \texttt{details}.
+\end{aebDescript}
+If you use this command with an empty argument list,
+\verb!\makePDFPackage{}!, you create a PDF package with the
+defaults.
+
+\newtopic\textbf{\textcolor{red}{TIP:}} Use the \cs{autolabelNum*}
+command to assign more informative descriptions to the attachments,
+like so.
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\autolabelNum*{1}{European Currency \u20AC}
+\autolabelNum*{2}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\autolabelNum*[AeST]{3}{The {\AEB}ST Components}
+\autolabelNum*[atease]{4}{The @EASE Control Panel}
+\end{Verbatim}
+
+\newtopic\textbf{\textcolor{red}{Warning:}} There seems to be a bug
+when you email a PDF Package. When the initial view is \emph{not a
+PDF document}, the PDF Package is corrupted when set by email and
+cannot be opened by the recipient. When emailing a PDF Package, as
+produced by {\cAEBP}, always have the initial view as a PDF document.
+
+\section{Initializing a Text Field with Unicode}
+
+One of the side benefits of the work on linking to attachments of a
+PDF document is that the techniques are now in place to be able to initialize
+a text field using unicode characters.
+
+The technique uses a combination of a recently introduced command \Com{labelName}
+and a new command \Com{unicodeStr}.
+\settowidth{\aebdimen}{\ttfamily\string\labelName\darg{\meta{label}}\darg{\meta{string}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\labelName{!meta(label)}{!meta(string)}
+\unicodeStr{!meta(label)}
+\end{dCmd}
+
+\PD The parameter \meta{label} is a {\LaTeX}-type of label name, and \meta{string}
+is a combination of ASCII characters and unicodes \cs{uXXXX}, as described earlier
+(Review the discussion in \Nameref{assigningLabels}).
+
+\CmdDescription The command \cs{unicodeStr} takes its argument, which is \emph{delimited by
+parentheses}, looks up the string referenced by \meta{label} and converts the string
+to unicode. The unicode tables that come with {\cAEBP} are used to look up any ASCII
+characters; for characters that are available on a standard keyboard, unicode escape
+sequences can be used. This is illustrated below.
+
+For example, we first define a unicode string, and reference it using a label.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\labelName{myCoolIV}{\u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\end{Verbatim}
+Note that the use of \cs{labelName} \emph{should not occur} within the \texttt{{attachmentNames}}
+environment, this is for linking to attachments. Here, \cs{labelName} can be used anywhere
+before the creation of the text field.
+
+Then we can define a text field with this value as its initial value
+and its default value like so,\labelName{myCoolIV}{\u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+ \textField[\textSize{10}\textFont{MyriadPro-Regular}
+ \uDV{\unicodeStr(myCoolIV)}
+ \uV{\unicodeStr(myCoolIV)}
+ ]{myCoolIV}{1.5in}{12bp}
+\end{Verbatim}
+\par\smallskip
+The result is the field
+ \textField[\textSize{10}\textFont{MyriadPro-Regular}
+ \uDV{\unicodeStr(myCoolIV)}\uV{\unicodeStr(myCoolIV)}]{myCoolIV}{1.5in}{12bp}
+ \pushButton[\textSize{10}\textFont{MyriadPro-Regular}\CA{Reset}\A{\JS{this.resetForm(["myCoolIV"])}}]{reset}{}{12bp}
+
+The technique uses special keys as optional arguments of
+the command \cs{textField} (defined in the eforms package). The keys \cs{uDV} and \cs{uV} signal
+to the eforms package that the string is given in unicode.
+
+\exPDFSrc{aebpro_ex8} The support document \texttt{aebpro\_ex8} is a short tutorial
+on these topics, including additional examples on creating a button and combo box that
+use unicode encoded strings.
+
+
+\section{Using Layers, Rollovers and Animation.}\label{layers}
+
+
+When the \texttt{uselayers} option is taken, the necessary code is
+input to produce layers (Optional Content Groups). The
+\textcolor{blue}{{\AcroTeX} Presentation Bundle} (APB), which has a
+very sophisticated method of control over layers, by comparison, the
+\textcolor{blue}{{\cAEBP}} layer support is very primitive indeed. As
+a rule, after you create a layer, you will need a control of that
+layer. This could be a button or a link that executes JavaScript.
+
+\settowidth{\aebdimen}{\ttfamily\string\xBld[true|false|print=\anglemeta{\upshape{true|false}}]%
+\darg{\meta{layer\_name}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\xBld[true|false|print=!anglemeta(!upshape(true|false))]{!meta(layer_name)}
+ !anglemeta(content of layer)
+\eBld
+\end{dCmd}
+
+\CmdDescription The basic command for creating a layer is \cs{xBld}.
+The content of the layer is set off by the \cs{xBld}/\cs{eBld} pair.
+
+\PD The command \cs{xBld} takes two parameters: (1) the first is
+optional, \texttt{true} if the layer is initially visible or
+\texttt{false}, the default, if the layer is hidden initially; (2)
+the name of the layer, this is used to reference the layer, to make
+it visible or hidden. The \texttt{print} key sets the printing attribute
+of the of the layer:
+\begin{itemize}
+ \item\texttt{print=true} (or just \texttt{print}): the layer
+ \emph{always prints}, no matter if it is visible or not.
+ \item\texttt{print=false}: the layer \emph{never prints}, no matter if it is visible or not.
+ \item If the print key does appear in the list of optional parameters,
+ the layer will print if visible, otherwise, it does not print. Normally, the \texttt{print}
+ key is not specified, and the layer is printed only if visible.
+\end{itemize}
+
+A link can be made visible or hidden by getting its OCG object and setting
+the \texttt{state} property. A simple example of this would be$\dots$
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\setLinkText[%
+\A{\JS{%
+ var oLayer = getxBld("mythoughts");
+ if ( oLayer != null )
+ oLayer.state = !oLayer.state;
+ }}
+]{\textcolor{red}{Click here}}
+\end{Verbatim}
+The link text has a JavaScript action. First we get the OCG object
+for this layer by calling the \texttt{getxBld} function (this is
+part of the {\cAEBP} JavaScript) then if non-null (you may not have
+spelled the name correctly) we toggle the current state,
+\texttt{oLayer.state = !oLayer.state}.
+
+This is such a common action that a formal JavaScript function is
+defined by {\cAEBP}
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\setLinkText[%
+\A{\JS{toggleSetThisLayer("mythoughts");}}
+]{\textcolor{red}{Click here}}
+\end{Verbatim}
+The above examples uses a link, but a form field action can also be used.
+
+\newtopic An advantage of the layers approach is that the content of the
+layers are latexed as part of the content of the tex file; consequently,
+you can include virtually anything in your layer that tex can handle,
+math, figures, PSTricks, etc. \textsf{Acrobat Pro}~7.0 (and
+\textsf{Distiller}) or later is required to build the layers, but only
+\textsf{Adobe Reader~7.0} or later is needed to view the document, once
+constructed.
+
+\exAeBBlogPDF{p=326} The file \texttt{xbld\_options.pdf} is a
+demo of the optional parameters for \cs{xBld} of this section. The
+source file and images are attached to the PDF. The PDF, titled
+\textsl{Exploring the options of \cs{xBld}}, is found at the
+\href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+
+
+\subsection{Rollovers}
+
+The {\cAEBP} package offers you two rollovers, which ostensibly
+provides help to the document consumer.
+
+\exPDFSrc{aebpro_ex4} These topics are illustrated in the support
+file \texttt{aebpro\_ex4}.
+
+
+\subsection{Using the form field tool tip feature}
+
+The \cs{texHelp} is a command for creating a rollover for some text.
+When the user rolls over the text, a defined layer is made visible
+with helpful information. See \texttt{aebpro\_ex4} for working
+examples and extensive details.
+
+\subsection{Layers and Animation}
+
+Let's see if we can conjure up a little animation, shall we?
+
+\exPDFSrc{aebpro_ex4} A working version of this example appears in \texttt{aebpro\_ex4}.
+
+\Ex{} This examples create a sine graph using PSTricks. When the start button is pressed,
+the function will be graphed in an animated sort of way.
+
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
+\begin{minipage}{.65\linewidth}\centering
+\DeclareAnime{sinegraph}{10}{40}
+\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+\psset{llx =-12pt,lly=-12pt,urx =12pt,ury =12pt}
+\begin{psgraph*}[arrows=->](0,0)(-.5,-1.5)(6.5,1.5){164pt}{70pt}
+ \psset{algebraic=true}%
+ \rput(4,1){$y=\sin(x)$}
+ \FPdiv{\myDelta}{\psPiTwo}{\nFrames}%
+ \def\xi{0}%
+ \multido{\i=1+1}{\nFrames}{\FPadd{\xi}{\xi}{\myDelta}\thisframe}
+\end{psgraph*}
+\end{minipage}\hfill
+\begin{minipage}{.3\linewidth}
+\backAnimeBtn{24bp}{12bp}\kern1bp\clearAnimeBtn{24bp}{12bp}\kern1bp
+\forwardAnimeBtn{24bp}{12bp}
+\end{minipage}
+\end{Verbatim}
+You will have to delve through the working version of this example in \texttt{aebpro\_ex4}
+to fully understand it.
+
+\settowidth{\aebdimen}{\ttfamily\string\DeclareAnime\darg{\meta{basename}}\darg{\meta{speed}}\darg{\meta{nframes}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\DeclareAnime{!meta(basename)}{!meta(speed)}{!meta(nframes)}
+\end{dCmd}
+This sets the basic parameters of an anime: the base name for the animation, the speed of the animation
+as measured in milliseconds, and the number of frames to appear in the anime.
+
+\settowidth{\aebdimen}{\ttfamily\string\animeBld\anglemeta{frame\_content}\string\eBld}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\animeBld!anglemeta(frame_content)\eBld
+\end{dCmd}
+This \cs{animeBld}/\cs{eBld} pair enclose the ``i$^\text{th}$'' frame.
+
+\settowidth{\aebdimen}{\ttfamily\string\forwardAnimeBtn[\meta{opts}]\darg{\meta{width}}\darg{\meta{height}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\backAnimeBtn[!meta(opts)]{!meta(width)}{!meta(height)}
+\clearAnimeBtn[!meta(opts)]{!meta(width)}{!meta(height)}
+\forwardAnimeBtn[!meta(opts)]{!meta(width)}{!meta(height)}
+\end{dCmd}
+These are basic button controls for the anime: back, stop/clear, and forward. Each of these has an
+optional parameter where you can modify the appearance of the button. See the eforms manual for details of
+these optional parameters.
+
+\section{Button and Ocg Anime}\label{s:btnanime}
+
+In this section. we introduce some commands and one environment for
+creating button and OCG anime (see page~\pageref*{ss:ocganime}).
+
+\subsection{The \texorpdfstring{\protect\cs{btnAnime}}{\CMD{btnAinme}} Command}\label{ss:btnanime}
+
+When animating with layers, we create a series of frames in different
+layers, and we animate by successively making visible then hiding each of the
+layers in turn. The same can be done with buttons. Buttons can take on
+appearances using what I'll call icons. We create a series of stacked
+buttons, each with an icon appearance; when the animation is started, each
+button becomes visible and hidden in turn.
+
+\exAeBBlogPDF{p=382} The demo file for the material in this section,
+(and for the support material in `\mlnameref{sss:btnAnimeMethods}' on
+page~\pageref*{sss:btnAnimeMethods}) is titled \textsl{\cs{btnAnime}:
+Animation using Form Field Buttons with {\AEBP}} can be found at the
+\href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+
+To create a button anima, follow these steps:
+\begin{enumerate}
+ \item Create your animation by placing one frame of your animation on
+ one page of a PDF. If the anime has 40 frames, the PDF has 40 pages,
+ each page contains one frame. The anime must be placed on the page
+ exactly in the same place to avoid any noticeable shaking or trembling
+ of the anime as it plays. (I use PSTricks to create a few of the demo
+ animations.) Give your animation PDF some name, say, \texttt{myAnime.pdf}
+
+ \item In the preamble, place the following commands
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\embedMultiPageImages{lastpage=36,name=myAnime,
+ path=graphics/myAnime.pdf,placement=myFirstAnime}
+\placeAnimeCtrlBtnFaces{btn_anime_icons1.pdf}{myFirstAnime}
+\begin{docassembly}
+\insertPreDocAssembly;
+\executeSave();
+\end{docassembly}
+\end{Verbatim}
+The commands \cs{embedMultiPageImages} and \cs{placeAnimeCtrlBtnFaces} are
+described in detail in \Nameref{sss:btnAnimeMethods}. These commands embed
+the icons (or graphic images) in the PDF document, and associates them with
+the anime being created.
+
+\item Use the \cs{btnAnime} command to create your animation.
+\cs{btnAnime} is described below, for now, we present an example.
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\btnAnime{%
+ fieldName=myFirstAnime,iconName=myAnime,nFrames=36,
+ controls=skin3,nospeedcontrol,type=loop,
+ autorun,autopause
+}{72bp}{72bp}
+\end{Verbatim}
+\end{enumerate}
+
+The centerpiece of button anime is the \cs{btnAnime} command, which is the
+one that actually creates the button fields to display the animation, and
+the button to control the anime.
+
+\settowidth{\aebdimen}{\ttfamily\string\btnAnime\darg{\meta{KV-pairs}}\darg{\meta{width}}\darg{\meta{height}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\btnAnime{!meta(KV-pairs)}{!meta(width)}{!meta(height)}
+\end{dCmd}
+\CmdDescription Create a series of stacked buttons that hold and display
+the frames of the animation; it also creates the control buttons.
+
+\PD The first parameter,\footnote{In version~1.1 (dated 07/10/10) the
+first parameter was optional, since there are required keys in this
+parameter, I've changed this first parameter to required.} taking
+key-value pairs, is describe below, the \meta{width} and
+\meta{height} parameters are the width and height of the button fields
+to display the animation. These buttons are all the same size and stacked
+one on top the other.
+
+\KVP The first optional parameter takes key-value pairs (\meta{KV-pairs}).
+\begin{itemize}
+ \item \texttt{fieldName}: The base name of the anime fields to be
+ created. The key \texttt{fieldName} corresponds to the
+ \texttt{placement} key of \cs{embedMultiPageImages}.
+ \item \texttt{iconName}: The base name of the icon set to be used in
+ this anime. The \texttt{iconName} key corresponds to the \texttt{name} key
+ of \cs{embedMultiPageImages}.
+ \item \texttt{nFrames}: The number of frames in this anime; must be
+ the same number as \texttt{lastpage-firstpage+1} as declared in
+ \cs{embedMultiPageImages}. (If the \texttt{first\-page} key is not used, then
+ \texttt{nFrames=lastpage}.)
+ \item \texttt{type}: This is a choice key that takes any of three values: \texttt{loop},
+ \texttt{palindrome}, or \texttt{stopatboundary}. The latter being the
+ default. For \texttt{loop}, the goes through the stack of frames from
+ 1 to \texttt{nFrames}, then repeats 1 to \texttt{nFrames}, and so on
+ until the anime is paused. For \texttt{palindrome}, the anime plays in
+ the order 1 to \texttt{nFrames}, \texttt{nFrames}-1 to 1, then
+ repeat. This anime continues until the paused. For
+ \texttt{stopatboundary}, the anima pauses when the frame reaches
+ \texttt{nFrames} for forward play, and pauses at frame 1 for
+ backward play.
+ \item \texttt{poster}: This is a choice key that takes any of three values: \texttt{first},
+ \texttt{last}, and \texttt{none}; the default is \texttt{first}.
+ \item \texttt{speed}: When the anime is played, the value of speed is
+ the \texttt{initial} or \texttt{default} speed of the animation.
+ The speed is measured in \emph{milliseconds}.
+ There are controls for changing the speed dynamically. When the speed
+ key is not listed, the default speed is 200 milliseconds.
+ \item \texttt{autorun}: Determines whether the anime plays when
+ the page is either open or becomes visible; see \texttt{autoplayevent}
+ below. The default is \texttt{autorun=false}. Listing \texttt{autorun} in the
+ list of options is the same as \texttt{autorun=true}.
+ \item \texttt{autopause}: Determines whether the anime pauses when
+ the page is either closed or becomes invisible; see \texttt{autopauseevent}
+ below for more detail. The default is \texttt{autopause=false}. Listing \texttt{autopause} in the
+ list of options is the same as \texttt{autopause=true}.
+ \item \texttt{autoplayevent}: This is a choice key that takes one of two values:
+ \texttt{pageopen} or \texttt{pagevisible}. The distinction between
+ these two only becomes significant when the user is viewing pages
+ continuously. The default is \texttt{pageopen}.
+ \item \texttt{autopauseevent}: This is a choice key that takes one of two values:
+ \texttt{pageclose} or \texttt{pageinvisible}. The distinction between
+ these two only becomes significant when the user is viewing pages
+ continuously. The default is \texttt{pageclose}.
+\end{itemize}
+The following keys concerning the buttons that control the anime.
+\begin{itemize}
+ \item \texttt{ctrlwidth}: The common width of the various control
+ buttons, the default is \texttt{18bp}.
+ \item \texttt{ctrlheight}: The common height of the various control
+ buttons, the default is \texttt{9bp}.
+\end{itemize}
+\textbf{Note:} The next two keys \texttt{ctrlbdrycolor} and
+\texttt{ctrlbdrycolor}, are needed to get the space between the buttons
+and the space between the rows correct. These two parameters, under
+different names, can be set through \cs{btnAnimeCtrlPresets}, but it is
+not recommended that you use this command to set the border color or size, use
+the following two keys are part of the key-value list.
+\begin{itemize}
+ \item \texttt{ctrlbdrycolor}: Three numbers representing color in the
+ RGB space. This color is used as the color of the boundary line for
+ the button. The default color is transparent, obtained by simply
+ listing \texttt{ctrlbdrycolor} with no value.
+ \item \texttt{ctrlbdrywidth}: A choice key determining the width
+ of the boundary line (or stroke). The choices are
+ \texttt{thin}, \texttt{medium}, and \texttt{thick}, and correspond
+ to a boundary line of width \texttt{1bp}, \texttt{2bp}, and \texttt{3bp}, respectively.
+ The default is \texttt{thin} (\texttt{1bp}).
+ \item \texttt{controls}: Determines the design of the set of
+ control buttons. The following values are recognized:
+ \texttt{none}, \texttt{skin1}, \texttt{skin2}, \texttt{skin3},
+ \texttt{skin4}, \texttt{skin5}, \texttt{skin6}. When
+ \texttt{controls=none}, no controls are displayed (better use
+ \texttt{autoplay}/\texttt{autopause}); skins 1--4 have various
+ buttons included in them, \texttt{skin1} includes all buttons.
+
+ \item[] Values of \texttt{skin5} and \texttt{skin6} are left for the
+ author to design his/her own button layout. Without a redefinition,
+ these skins opt to \texttt{skin1}. See the appropriate section of
+ \texttt{aeb\_pro.dtx} to see who one might create a custom layout.
+
+ \item[] The space between control buttons is determined by
+ \cs{btnanimebtnsep}, the default definition is
+ \verb!\newcommand{\btnanimebtnsep}{1bp}!.
+
+ \item[] \cs{aep@vspacectrlsep}: The vertical space between the
+ bottom of the anime and the control button set,
+ \verb!\newcommand{\aep@vspacectrlsep}{3bp}! is the default
+ definition.
+
+ \item \texttt{nospeedcontrol}: There are two buttons for increasing
+ and decreasing the speed. (The minimal speed is 10 milliseconds, by the
+ way.) If \texttt{nospeedcontrols} are included in the option list,
+ then this Plus/Minus pair of buttons are not included in the set of
+ control buttons.
+ \item \texttt{usetworows}: If \texttt{usetworows} is in the option
+ list, then two rows are taken to list all the buttons. The second row
+ usually consists of the Plus/Minus buttons.
+
+ \item[] The vertical space between two rows of buttons is
+ \cs{btnanimerowsep}, the default definition is
+ \verb~\newcommand{\btnanimerowsep}{1bp}~.
+\end{itemize}
+
+\paragraph*{Controlling the appearance of the Anime Fields.}
+You can influence of the appearance of buttons that display the images by
+using the command \cs{btnAnimePresets}.
+\settowidth{\aebdimen}{\ttfamily\string\btnAnimePresets\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\btnAnimePresets{!meta(KV-pairs)}
+\end{dCmd}
+\PD The key values are ones associated with button form fields, as
+described in the eForm reference.
+
+\paragraph*{Controlling the appearance of the Anime Control Buttons.}
+You can influence of the appearance of the buttons that provide the
+control for the anime by using the command \cs{btnAnimeCtrlPresets}.
+\settowidth{\aebdimen}{\ttfamily\string\btnAnimeCtrlPresets\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\btnAnimeCtrlPresets{!meta(KV-pairs)}
+\end{dCmd}
+\PD The key values are ones associated with button form fields, as
+described in the eForm reference.
+
+\subsection{The \protect\texttt{ocgAnime} Environment}\label{ss:ocganime}
+
+{\cAEBP} has provided for several years a basic animation feature using
+layers (or, in Adobe's terminology, OCG, optional content groups). We
+now upgrade OCG animation up to the same level as button anime, much of
+the same code is used. Code for OCG anime is include when the \texttt{ocganime}
+option is taken.
+
+\exAeBBlogPDF{p=392} The demo file for the material in this section,
+is titled \textsl{\texttt{ocgAnime}: Animation using OCG (Layers) with \AEBP} can be found at the
+\href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+
+\newtopic OCG animation is available through the \texttt{ocgAnime}
+environment.
+
+\bgroup\obeyspaces%
+\settowidth{\aebdimen}{\ttfamily \anglemeta{a set of ocg frames built using \string\animeBld/\string\eBld pairs}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{ocgAnime}{!meta(KV-pairs)}
+ !anglemeta(a set of ocg frames built using \animeBld/\eBld pairs)
+\end{ocgAnime}
+\end{dCmd}
+\egroup\KVP The key-value pairs are the same ones described in
+\hyperref[ss:btnanime]{Section~\ref*{ss:btnanime}} on
+page~\pageref*{ss:btnanime}. The \texttt{iconName} key is not recognized
+(this is a button anime key), and \texttt{ocg\-Ani\-me\-Name} is an alias for
+\texttt{fieldName}, \texttt{ocgAnimeName} being more descriptive of the
+base name for the OCG animation. The two keys \texttt{ocgAnimeName} and
+\texttt{nFrames} are required.
+
+
+Below is an example of this syntax.
+
+\begin{Verbatim}[numbers=left,xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
+\begin{ocgAnime}{ocgAnimeName=sineAnime,nFrames=41,
+ type=palindrome,speed=10,controls=skin1}
+\FPdiv{\myDelta}{\psPiTwo}{40}
+\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+\def\xi{0}\psset{algebraic=true}
+\psset{llx =-12pt,lly=-12pt,urx =12pt,ury =12pt}
+\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,
+ dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){164pt}{70pt}%
+ \rput(4,1){$y=\sin(x)$}%
+ \animeBld\eBld
+ \multido{\i=1+1}{40}{\FPadd{\xi}{\xi}{\myDelta}\thisframe}%
+\end{psgraph*}
+\end{ocgAnime}
+\end{Verbatim}
+As with \cs{btnAnime}, \cs{placeAnimeCtrlBtnFaces} is used to import the
+icon appearances of the control buttons.
+
+\subsection{Moving the Control Buttons}
+
+The default location of the control buttons is below the anime. It is
+possible to move them elsewhere. Use the commands \cs{animeSetup} and
+\cs{insertCtrlButtons} for this purpose.
+
+\exAeBBlogPDF{p=400} The demo file for the material in this section,
+is titled \textsl{Moving the Control Buttons for Button and OCG Animation} can be found at the
+\href{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+
+\settowidth{\aebdimen}{\ttfamily\string\animeSetup\darg{\meta{KV-pairs}}}%
+\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
+\animeSetup{!meta(KV-pairs)}
+\end{dCmd}
+\CmdDescription The argument is the key-value pairs of \cs{btnAnime} or
+of the \texttt{ocgAnime} environment. The command processes the key-value
+pairs.
+
+Following the execution of \cs{animeSetup}, use \cs{insertCtrlButtons} to
+layout the buttons according to the values specified by the key-value
+pairs. An example follows.
+
+\begin{Verbatim}[numbers=left,xleftmargin=20pt,fontsize=\fontsize{9}{11}\selectfont]
+\begin{minipage}[c]{190pt}\centering
+\begin{ocgAnime}{ocgAnimeName=sineAnime,nFrames=41,
+ type=palindrome,speed=10,controls=none}
+\FPdiv{\myDelta}{\psPiTwo}{40}
+\def\thisframe{\animeBld\psplot[linecolor=red]{0}{\xi}{sin(x)}\eBld}
+\def\xi{0}\psset{algebraic=true}
+\psset{llx =-12pt,lly=0pt,urx=12pt,ury=12pt}
+\begin{psgraph*}[arrows=->,trigLabels=true,trigLabelBase=2,
+ dx=\psPiH](0,0)(-.5,-1.5)(6.75,1.5){164pt}{70pt}%
+ \rput(4,1){$y=\sin(x)$}\animeBld\eBld % first (empty) frame
+ \multido{\i=1+1}{40}{\FPadd{\xi}{\xi}{\myDelta}\thisframe}%
+\end{psgraph*}
+\end{ocgAnime}
+\end{minipage}\quad{\animeSetup{ocgAnimeName=sineAnime,nFrames=41,
+ type=palindrome,speed=10,controls=skin3,usetworows}%
+ \insertCtrlButtons}
+\end{Verbatim}
+\textbf{Comments:} The key-value pairs passed in line~(2) are minimal,
+with \texttt{controls=none}. After closing the \texttt{minipage}
+environment in line~(14), we begin with a left-brace (\verb!{!) to enclose
+\cs{animeSetup} and \cs{insertCtrlButtons} in a group so all changes in
+the parameters are local. In lines~(13)--(16), we execute \cs{animeSetup} with our
+selected options, and follow this with \cs{insertCtrlButtons} and we are
+done!
+
+\cs{insertCtrlButtons} itself expands to a \cs{parbox},
+\cs{insertCtrlButtons} has an optional parameter that is passed to the
+optional parameter of the underlying \cs{parbox}, permissible values are
+\texttt{c} (the default), \texttt{b}, and \texttt{t}.
+
+Note that if you want to use \texttt{autorun} and \texttt{autoresume},
+these parameters must be passed in the parameter set of \texttt{ocgAnime},
+not from the parameter set of \cs{animeSetup}
+
+Rather just enclosing \cs{animeSetup} and \cs{insertCtrlButtons} in
+grouping braces, you could also use a \cs{parbox}, and add, perhaps, a
+caption.
+
+In theory, the control button can be placed anywhere on the page, above
+the anime, below it, to the left or to the right of it.
+
+\exAeBBlogPDF{p=405} The \href{\urlAcroTeXBlog}{{\AcroTeX} Blog} post
+titled \textsl{Custom Designing Anime Control Button Layout} shows how to
+design your own button layout, and how to define your own ``skin.''
+
+
+One last command, \cs{insertCtrlButtons} is normally expanded at the end
+of the \cs{btnAnime} or \texttt{ocgAnime} environments. It appears in the
+form
+\begin{Verbatim}
+ \ctrlButtonsWrapper{\insertCtrlButtons}
+\end{Verbatim}
+\exAeBBlogPDF{p=418} The command \cs{ctrlButtonsWrapper} can be redefined to create special
+effects, as illustrated in the \href{\urlAcroTeXBlog}{{\AcroTeX} Blog} post titled \textsl{Some Comments on Anime Button
+Layouts}.
+
+
+\newpage
+\markright{References}
+
+\parskip0pt
+\begin{thebibliography}{[1]} %\label{references}
+\addcontentsline{toc}{section}{\protect\numberline{}References}
+\backrefparscanfalse
+\def\srtln{\vskip-\baselineskip\vskip-\parsep}
+\def\lngln{\vskip-\parsep}
+
+
+\bibitem{TUG:execJS} ``\texttt{execJS}: A new technique for introducing discardable
+ JavaScript into a PDF from a \LaTeX{} source,'' TUGBoat, The
+ Communications of the \TeX{} User Group, Vol.~22, No.~4, pp.\
+ 265-268 (2001). \backrefprint
+
+\bibitem{tech:AcroJSRef}
+ JavaScript for Acrobat® API Reference, Adobe® Acrobat® SDK, Version~8.0.,
+ Adobe Systems, Inc., 2006. \backrefprint
+ \lngln\hfill{\small\url{http://www.adobe.com/go/acrobat_developer}}
+
+\bibitem{tech:AcroJSGuide}
+ Developing Acrobat® Applications Using JavaScript, Version~8.0.,
+ Adobe Systems, Inc., 2006. \backrefprint
+ \srtln\hfill{\small\url{http://www.adobe.com/go/acrobat_developer}}
+
+\bibitem{tech:pdfmark}
+ pdfmark Reference Manual, Version~8.0, Adobe® Acrobat® SDK, Version~8.0, 2006. \backrefprint
+ \srtln\hfill{\small\url{http://www.adobe.com/go/acrobat_developer}}
+
+
+\bibitem{tech:PDFRef}
+ PDF Reference, Version~1.7., Adobe Systems, Inc., 2006. \backrefprint
+ \lngln\hfill{\small\url{http://www.adobe.com/go/acrobat_developer}}
+
+\bibitem{book:AEBB}
+ D. P. Story, \textsl{\AEBBook}, in preparation. \backrefprint
+
+
+\end{thebibliography}
+
+
+\noindent
+Now, I simply must get back to my retirement. \dps
+
+%\newpage
+%\leftskip20pt\rightskip20pt\small
+%\addcontentsline{toc}{section}{\protect\numberline{}Index}
+%\markright{Index}
+%\printindex
+
+\end{document}
+
+\section{Resources}
+
+\newtopic The resources for the development of this package are
+\begin{itemize}
+% \item \textsl{Standard ECMA-357: ECMAScript for XML (E4X) Specification},\\
+% \url{http://www.ecma-international.org/publications/standards/Ecma-357.htm}
+% \item \textsl{XMP Specification}, \url{http://www.adobe.com/go/acrobat_developer}
+ \item \textsl{Acrobat JavaScript Scripting Reference}, Version 8.0\\
+ \url{http://www.adobe.com/go/acrobat_developer}
+% \item \textsf{hyperxmp} package by Scott Pakin.\\
+% \url{ftp://cam.ctan.org/tex-archive/macros/latex/contrib/hyperxmp/}
+% \item The {\AcroTeX} System Tools, available for free download at \url{www.acrotex.net}. This is
+% a {\LaTeX}-based system.
+\end{itemize}
+
+After you download the zip file (available in
+http://www.math.uakron.edu/~dpstory/aeb_pro/aebpro_pack.zip), expand it by
+double-clicking on it.
+
+Place the folder inside ~/Library/texmf/tex/latex (here ~ is your home
+directory; inside there is a folder called Library; if necessary, create a
+folder named tex inside it, and then a folder called latex inside that;
+
+NOTE: if you are using Mac OS X 10.7 (Lion), the Library folder is hidden
+by default - to open it, hold down the option key and click on the "Go"
+menu in the Finder to make it appear).
+
+Also, check the pdf manual that comes with the software.
+
+Luis Sequeira
+
+> P.S. I use TexLive, I have Acrobat Professional and Distiller. How is possible to have the workflow you said me (Latex-->dvi-->distiller-->pdf) with TexShop? XeLateX is right?
+
+The easiest way to have the required workflow in TeXShop is to add a special comment line at the top of your file (it is a comment as far as TeX is concerned, beginning with the comment character '%' ; but TeXShop looks at the first lines of the source file for this and other similar information and calls the appropriate commands accordingly):
+
+%! TEX TS-program = latex
+
+
+Similarly, you can replace 'latex' with 'pdflatex' or 'xelatex' to get your source automatically typeset with a different engine.
+
+As to using XeLaTeX, if you want to use it in documents containing pstricks stuff, you'll need to use the package auto-pst-pdf:
+
+\usepackage{auto-pst-pdf}
+
+
+Note: TeXShop is an excellent front-end to all things TeX-related. Since it is Mac-only, you may get more help more quickly for things specific to TeXShop in the Mac OS X TeX mailing list.
diff --git a/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.eps b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.eps
new file mode 100644
index 00000000..36322513
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.eps
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.pdf b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.pdf
new file mode 100644
index 00000000..c41d81c4
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw15.pdf b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw15.pdf
new file mode 100644
index 00000000..e27e574d
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw15.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw50.pdf b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw50.pdf
new file mode 100644
index 00000000..63ccd7e4
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/AeB_Logo_bw50.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_DesignV_AeB.pdf b/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_DesignV_AeB.pdf
new file mode 100644
index 00000000..a059d308
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_DesignV_AeB.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_Print_AeB.pdf b/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_Print_AeB.pdf
new file mode 100644
index 00000000..44f415a8
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/Manual_BG_Print_AeB.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/aest.xls b/texmf-dist/source/latex/aeb-pro/extras/aest.xls
new file mode 100644
index 00000000..55e0bcd5
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/aest.xls
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/ease.pdf b/texmf-dist/source/latex/aeb-pro/extras/ease.pdf
new file mode 100644
index 00000000..20c8a637
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/ease.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/extras/trek.wav b/texmf-dist/source/latex/aeb-pro/extras/trek.wav
new file mode 100644
index 00000000..b8d9e65d
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/extras/trek.wav
Binary files differ
diff --git a/texmf-dist/source/latex/aeb-pro/fsprodef.js b/texmf-dist/source/latex/aeb-pro/fsprodef.js
new file mode 100644
index 00000000..ce8ff605
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/fsprodef.js
@@ -0,0 +1,64 @@
+%%
+%% This is file `fsprodef.js',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,fsdefjs')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, 2016-05-15 %%
+%% Copyright (C) 2006--2016 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{insDLJS}[_fsDefaults]{fsdef}{AeB Pro: Presentation Defaults}
+var _fsDefaults = true;
+if ( typeof fsexec == "undefined" )
+{
+ try {
+ var fsexec = true;
+ var aebdefaultTransition = app.fs.defaultTransition;
+ var aebbackgroundColor = app.fs.backgroundColor;
+ var aebloop = app.fs.loop;
+ var aebtimeDelay = app.fs.timeDelay;
+ var aebuseTimer = app.fs.useTimer
+ var aebusePageTiming = app.fs.usePageTiming;
+ var aebclickAdvances = app.fs.clickAdvances;
+ var aebcursor = app.fs.cursor;
+ var aebescapeExits = app.fs.escapeExits;
+\aeb@fsTran%
+\aeb@fsBGColor%
+\aeb@fsLoop%
+\aeb@fsclickAdv%
+\aeb@fscursor%
+\aeb@fstimeDelay%
+\aeb@fsuseTimer%
+\aeb@fsusePageTiming%
+\aeb@fsEscape%
+\aeb@fsFS%
+ } catch(e) {}
+}
+\end{insDLJS}
+\begin{fs@willClose}
+try {
+ delete global.fsexec;
+ app.fs.defaultTransition = aebdefaultTransition;
+ app.fs.backgroundColor = aebbackgroundColor;
+ app.fs.loop = aebloop;
+ app.fs.timeDelay = aebtimeDelay;
+ app.fs.useTimer = aebuseTimer;
+ app.fs.usePageTiming = aebusePageTiming;
+ app.fs.clickAdvances = aebclickAdvances;
+ app.fs.cursor = aebcursor;
+ app.fs.escapeExits = aebescapeExits;
+} catch(e) { console.println("Could not reset one of the defaults"); }
+\end{fs@willClose}
+\endinput
+%%
+%% End of file `fsprodef.js'.
diff --git a/texmf-dist/source/latex/aeb-pro/icons/btn_anime_icons1.pdf b/texmf-dist/source/latex/aeb-pro/icons/btn_anime_icons1.pdf
new file mode 100644
index 00000000..7bb4e30c
--- /dev/null
+++ b/texmf-dist/source/latex/aeb-pro/icons/btn_anime_icons1.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/aebxmp/aebxmp.dtx b/texmf-dist/source/latex/aebxmp/aebxmp.dtx
new file mode 100644
index 00000000..35f46a5a
--- /dev/null
+++ b/texmf-dist/source/latex/aebxmp/aebxmp.dtx
@@ -0,0 +1,812 @@
+%\iffalse
+% makeindex -s gglo.ist -o web.gls web.glo
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aebxmp.sty package, 2016-05-29 %%
+%% Copyright (C) 2006--2016 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+%<package>\ProvidesPackage{aebxmp}
+%<package> [2017/02/17 v2.5a Populate advanced metadata (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[colorlinks,hyperindex]{hyperref}
+\OnlyDescription % comment out for implementation details
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{aebxmp}{Inputting aebdocfmt.def}}
+ {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{aebxmp}{aebdocfmt.def cannot be found}}
+\begin{document}
+\def\CMD#1{\textbackslash#1}
+ \GetFileInfo{aebxmp.sty}
+ \title{AeBXMP: Updating XMP using E4X and {\LaTeX}}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@uakron.edu}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \DocInput{aebxmp.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
+ \texttt{makeindex -s gind.ist -o aebxmp.ind aebxmp.idx} on the command line and recompile
+ \texttt{aebxmp.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
+ \texttt{makeindex -s gglo.ist -o aebxmp.gls aebxmp.glo} on the command line and recompile
+ \texttt{aebxmp.dtx}.}
+\end{document}
+%</driver>
+% \fi
+% \MakeShortVerb{|}
+% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{aebxmp}{Inputting aebdonotindex.def}}
+% {\PackageInfo{aebxmp}{cannot find aebdonotindex.def}}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+% \changes{v2.5}{2016/05/20}{Moved DJLS from \string\texttt{addScript} in \string\texttt{insDLJS} env.}
+% \changes{v2.3c}{2012/09/20}{Changed \cs{copyrightNotice} and a
+% added \cs{Title} and \cs{Subject}, and . These now accept multiple entries with a required
+% language specification.Also defined the JavaScript arrays \texttt{aTitle}, \texttt{aSubject}
+% \texttt{aRights}. Added \cs{sourceFile} to save the name of the source file in the
+% DC packet. Added \cs{metaLang}, also to the DC packet.}
+% \changes{v2.3a}{2012/01/12}{Set the \texttt{lang} attribute to a value of \texttt{x-default}
+% for \cs{copyrightNotice}. Added a choice key to \cs{copyrightStatus} to force an
+% acceptable argument.}
+% \changes{v2.3}{2012/01/09}{All XMP elements now is inserted by E4X.}
+% \changes{v2.2}{2012/01/04}{Added the \cs{Keywords} command for creating an array
+% of keywords that can be accessed individually using the JavaScript function
+% \texttt{aKeyWords}, also defined in this package.}
+% \changes{v2.1a}{2011/12/30}{More code efficiencies}
+% \changes{v2.1}{2011/12/30}{Cleaned up the code, fixed a bug.}
+% \changes{v2.0}{2011/12/30}{Defined commands to producing custom document properties,
+% defined the \cs{Authors} command.}
+% \changes{v1.0}{2011/12/29}{Made a proper DTX file for this package; added
+% \cs{authortitle} and \cs{descriptionwriter}; support for \texttt{xmp:CreateDate}.}
+% \changes{v0.2}{2007/03/13}{Added support for unicode escape sequences in the
+% \cs{copyrightNotice} and \cs{copyrightInfoURL} fields.}
+% \changes{v0.1}{2006/12/01}{Original distribution}
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+\@ifpackageloaded{insdljs}{\let\execjs=y}
+% \end{macrocode}
+% (2017/02/17) Require 2016/07/31 for insdljs to make colon syntax available.
+% \changes{v2.5a}{2017/02/17}{Require 2016/07/31 for insdljs}
+% \begin{macrocode}
+ {\RequirePackage[execJS]{insdljs}[2016/07/31]} % incls conv-xkv
+% \end{macrocode}
+% \section{Utility commands and switches}
+% \begin{macrocode}
+\newif\if@xmp@several \@xmp@severaltrue
+% \end{macrocode}
+% The following is a utility command used in \cs{copyrightStatus}, \cs{Title},
+% and \cs{Subject}.
+% \begin{macrocode}
+\def\xmp@testBrace#1{\@ifnextchar\bgroup
+ {\@xmp@severaltrue#1}{\@xmp@severalfalse#1}}
+% \end{macrocode}
+% \cs{xmpLangAndArg} is used by the same commands listed above. These are the ones
+% that have a language attribute.
+% \begin{macrocode}
+\newcommand{\xmpLangAndArg}[1][]{%x-default
+ \edef\xmpLang{#1}\xmpGetNextArg}
+\def\xmpGetNextArg#1\@nil{\edef\xmpArg{#1}}
+% \end{macrocode}
+% A major utility command used by \cs{copyrightStatus}, \cs{Title},
+% and \cs{Subject}. \texttt{\#1} is the arguments of the calling command,
+% and \texttt{\#2} is the ``array'' macro.
+% \begin{macrocode}
+\edef\xmp@dquoteCat{\the\catcode`\"}
+\catcode`\"=12\relax
+\def\xmp@ProcessArgs#1#2{%
+ \if@xmp@several
+ \@tfor\xmpArg:=#1\do{%
+ \expandafter\xmpLangAndArg\xmpArg\@nil
+ \ifnum\count0=0\relax
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="x-default";}%
+ \ifx\xmpLang\@empty\else
+ \advance\count0by1\relax
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \else
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \advance\count0by1\relax
+ }%
+ \else
+ \@tfor\xmpArg:={#1}\do{%
+ \expandafter\xmpLangAndArg\xmpArg\@nil
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="x-default";}%
+ \ifx\xmpLang\@empty\else
+ \advance\count0by1
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \advance\count0by1\relax
+ }%
+ \fi
+}
+\bgroup\obeyspaces
+\gdef\tabiv{ }%
+\egroup
+% \end{macrocode}
+%
+% \section{Top-level Interface to Metadata}
+% Through this package, the author can specify certain ``Advanced Metadata''
+% items: copyright notice; copyright notice; copyright url; author title;
+% and writer description.
+%
+% \subsection{Dublin Core Properties}
+%
+% \begin{macro}{\copyrightNotice}
+% The argument \texttt{\#1} is the text of the \textsf{Copyright Notice},
+% multiple languages supported. The first copyright notice is also tagged
+% as the default, \texttt{x-default}.
+%\begin{verbatim}
+%\copyrightNotice{%
+% {[lang_1] Copyright notice}
+% {[lang_2] Copyright notice}
+% ...
+%}
+%\end{verbatim}
+% \begin{macrocode}
+\let\arrayOfRights\@empty
+\newcommand{\copyrightNotice}[1]{\def\xmpcopyrightNotice{#1}%
+ \xmp@testBrace{\xmp@cont@CopyRightNotice}#1\@nil}%
+\let\xmpcopyrightNotice\@empty
+% \end{macrocode}
+% \cs{copyrightNotice} continues with \cs{xmp@cont@CopyRightNotice}
+% \begin{macrocode}
+\def\xmp@cont@CopyRightNotice#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::rights.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpcopyrightNotice\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfRights}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\Authors}
+% Enter multiple authors using a token list
+%\begin{verbatim}
+%\Authors
+%{%
+% {D. P. Story}
+% {A. P. Story}
+% ...
+%}
+%\end{verbatim}
+% We use \cs{@tfor} to build an array of authors, and use the simple mechanism
+% of \texttt{this.info.Authors} to set the multiple authors.
+% \begin{macrocode}
+\let\arrayOfAuthors\@empty
+\let\xmpAuthors\@empty
+\newcommand{\Authors}[1]{\def\xmpAuthors{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insSeqItem{p.aebdc::creator.aebrdf::Seq.aebrdf::li}%
+ \ifx\xmpAuthors\@empty\else
+ \let\arrayOfAuthors\@gobble
+ \@tfor\xmpAuthor:=#1\do{%
+ \xdef\arrayOfAuthors{\arrayOfAuthors^^J%
+ \insSeqItem[\the\count0]="\xmpAuthor";}%
+ \advance\count0by1
+ }%
+ \fi
+ \endgroup
+}
+\def\insertAuthors{\ifx\arrayOfAuthors\@empty\else
+ ^^J\arrayOfAuthors\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\Title}
+% Allow multiple Titles, with language specification; syntax
+%\begin{verbatim}
+%\Title{%
+% {[lang_1] Title}
+% {[lang_2] Title}
+% ...
+%}
+%\end{verbatim}
+% Begin \cs{Title}
+% \begin{macrocode}
+\let\arrayOfTitles\@empty
+\newcommand{\Title}[1]{\edef\xmpTitle{#1}%
+ \xmp@testBrace{\xmp@cont@Title}#1\@nil}
+% \end{macrocode}
+% continuation of \cs{Title}
+% \begin{macrocode}
+\def\xmp@cont@Title#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::title.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpTitle\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfTitles}%
+ \fi
+ \endgroup
+}
+\def\insertTitles{\ifx\arrayOfTitles\@empty\else
+ ^^J\arrayOfTitles\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Subject}
+% Allow multiple subjects, with language specification.
+% Begin \cs{Subject}
+% \begin{macrocode}
+\let\arrayOfSubjects\@empty
+\newcommand{\Subject}[1]{\edef\xmpSubject{#1}%
+ \xmp@testBrace{\xmp@cont@Subject}#1\@nil}%
+% \end{macrocode}
+% Continue \cs{Subject}
+% \begin{macrocode}
+\def\xmp@cont@Subject#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::description.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpSubject\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfSubjects}%
+ \fi
+ \endgroup
+}
+\def\insertSubjects{\ifx\arrayOfSubjects\@empty\else
+ ^^J\arrayOfSubjects\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\metaLang}
+% A list of languages used in this document.
+% \begin{macrocode}
+\let\arrayOfLangs\@empty
+\newcommand{\metaLang}[1]{\def\xmplangOfDoc{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insBagItem{p.aebdc::language.aebrdf::Bag.aebrdf::li}%
+ \ifx\xmpLangs\@empty\else
+ \let\arrayOfLangs\@gobble
+ \@for\xmpLang:=#1\do{%
+ \xdef\arrayOfLangs{\arrayOfLangs^^J%
+ \insBagItem[\the\count0]="\xmpLang";}%
+ \advance\count0by1
+ }%
+ \fi
+ \endgroup
+}
+\def\insertLangs{\ifx\arrayOfLangs\@empty\else
+ ^^J\arrayOfLangs\fi}
+% \end{macrocode}
+% \end{macro}
+% \DescribeMacro{\sourceFile} is used to insert the name of the source file
+% in to the Dublin Core. By default \cs{jobname.tex} is used. If this command
+% is not executed, \cs{jobname.tex} is used. If executed with
+% an empty argument, no \texttt{dc:source} is not inserted at all. If executed
+% with a nonempty argument, that argument is assumed to be a file name and is
+% inserted as the value of the \texttt{dc:source}.
+% \begin{macrocode}
+\newcommand{\sourceFile}[1]{\let\xmp@bSourcefile=1
+ \def\xmp@sourcefile{#1}}
+\let\xmp@bSourcefile=0
+\let\xmp@sourcefile\@empty
+\def\insertSource{%
+ \if\xmp@bSourcefile0
+ ^^Jp.aebdc::source="\jobname.tex"\else
+ \ifx\xmp@sourcefile\@empty\else
+ ^^Jp.aebdc::source="\xmp@sourcefile"\fi\fi}
+% \end{macrocode}
+% \begin{macro}{\Keywords}
+% We try to implement keywords in a manner similar to \cs{Authors}; that is,
+% we want to reference each key word. The individual keywords are listed in
+% \texttt{dc:subject}, in a \texttt{Bag}, an unordered array.
+% \begin{macrocode}
+\let\arrayOfKeywords\@empty
+\let\aKeywords\@empty
+\let\xmpKeywords\@empty
+\newcommand{\Keywords}[1]{\def\xmpKeywords{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insBagItem{%
+ p.aebdc::subject.aebrdf::Bag.aebrdf::li}%
+ \ifx\xmpKeywords\@empty\else
+ \let\arrayOfKeywords\@gobble
+ \let\aKeywords\@gobbletwo
+ \@for\xmpKeyword:=#1\do{%
+ \xdef\arrayOfKeywords{\arrayOfKeywords^^J%
+ \insBagItem[\the\count0]="\xmpKeyword";}%
+ \xdef\aKeywords{\aKeywords;\space\xmpKeyword}%
+ \advance\count0by1
+ }%
+ \xdef\aKeywords{"\aKeywords"}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% \cs{insertKeywords} does what the other ``insert'' commands do, insert the
+% code, we use the \texttt{dc:subject} tag, which corresponds to keywords.
+% Used in the disposable code below.
+% \begin{macrocode}
+\def\insertKeywords{\ifx\arrayOfKeywords\@empty\else
+ ^^J\arrayOfKeywords\fi}
+% \end{macrocode}
+% \end{macro}
+% We set the keywords using the JavaScript property \texttt{Doc.info}, rather
+% than a pdfmark. We also optionally include document-level JS so the document
+% user can access individual keywords. \DescribeMacro{\xmpDoNotInsKWScript}\cs{xmpDoNotInsKWScript}
+% optionally turns off the insertion of the function \texttt{aKeywords()}.
+% \begin{macrocode}
+\let\xmpInsScript\@empty
+\newcommand{\xmpDoNotInsKWScript}{\let\xmpInsScript\null}
+% \end{macrocode}
+%\subsection{XMP Rights Management Properties}
+% \begin{macro}{\copyrightStatus}
+%If \texttt{\#1} is \texttt{True}, the \textsf{Copyright Status} is set to
+%\texttt{Copyrighted}; if \texttt{False}, \textsf{Copyright Status} is set
+%to \textsf{Public Domain}. If left empty, the status is set to
+%\textsf{Unknown}.
+% \begin{macrocode}
+\newcommand{\copyrightStatus}[1]{%
+ \setkeys{aebxmp}{copyrightstatus=#1}}
+% \end{macrocode}
+% We offer choices of \texttt{true}, \texttt{false}, or \texttt{unknown} (case insensitive)
+% for the argument of \cs{copyrightStatus}
+% \begin{macrocode}
+\define@choicekey*+{aebxmp}{copyrightstatus}[\val\nr]%
+ {true,false,unknown}[unknown]{%
+ \ifcase\nr\relax
+ \def\xmpcopyrightStatus{True}\or
+ \def\xmpcopyrightStatus{False}\else
+ \let\xmpcopyrightStatus\@empty\fi
+}{\PackageWarning{aebxmp}{%
+ Bad choice for \string\copyrightStatus,\MessageBreak
+ you entered '#1'.\MessageBreak
+ Permissible values are true, false, or unknown\MessageBreak
+ (or an empty argument). Setting status to 'unknown'.\MessageBreak
+ Try again,}}
+\let\xmpcopyrightStatus\@empty
+% \end{macrocode}
+% \end{macro}
+% \cs{insertMarked} inserts the copyright status and is used in the
+% disposable code. It only if one has been declared. If none is declared,
+% the copyright notice will be \texttt{Unknown}.
+% \begin{macrocode}
+\def\insertMarked{\ifx\xmpcopyrightStatus\@empty
+ \else^^Jp.aebxapRights::Marked="\xmpcopyrightStatus";\fi}
+% \end{macrocode}
+% \begin{macrocode}
+\def\insertCopyrightNotice{\ifx\arrayOfRights\@empty\else
+ \arrayOfRights\fi}
+% \end{macrocode}
+% Insert copyright notice and specify the language attribute, which is
+% \texttt{x-default}. Used in the disposable code below.
+% \begin{macro}{\copyrightInfoURL}
+% The argument \texttt{\#1} is the \textsf{URL} to the copyright information
+% \begin{macrocode}
+\newcommand{\copyrightInfoURL}[1]{\def\xmpcopyrightInfoURL{#1}}
+\let\xmpcopyrightInfoURL\@empty
+% \end{macrocode}
+% Insert the web statement. Used in the disposable code below.
+% \begin{macrocode}
+\def\insertWebStatement{\ifx\xmpcopyrightInfoURL\@empty
+ \else^^Jp.aebxapRights::WebStatement="\xmpcopyrightInfoURL";\fi}
+% \end{macrocode}
+% \end{macro}
+%\subsection{Acrobat Custom Properties}
+% \begin{macro}{\customProperties}
+%\begin{verbatim}
+%\customProperties
+%{
+% {name=dps,value=5}
+% {name=jg,value=good}
+% ...
+%}
+%\end{verbatim}
+% \begin{macrocode}
+\let\insertCusProps\@empty
+\newcommand\customProperties[1]{\def\pdfx@cusProps{#1}%
+ \begingroup\let\u\relax
+ \@tfor\thisproperty:=#1\do{%
+ \edef\tmp@exp{\noexpand
+% \end{macrocode}
+% (2017/02/17) Values of \texttt{customProperties} can use the colon notation
+% \changes{v2.5a}{2017/02/17}{Values of customProperties can use the colon notation}
+% \begin{macrocode}
+ \cxkvsetkeys{pdfx@cusPropKV}{name,value,\thisproperty}}\tmp@exp
+ \xdef\insertCusProps{\insertCusProps^^J%
+% \end{macrocode}
+% We permit the use of \cs{u} the the value of the custom property,
+% the name of the custom property should be a restricted XML name, basically
+% \texttt{A-Z},\texttt{a-z}, and \texttt{0-9}.
+% \begin{macrocode}
+ p.aebpdfx::\pdfx@KName="\pdfx@VValue";}
+ }%
+ \endgroup
+}
+% \end{macrocode}
+% The \texttt{pdfx@cusPropKV} family has two keys, \texttt{name} and \texttt{value}.
+% These keys are used in the command \cs{customProperties} defined above.
+% \begin{macrocode}
+\define@key{pdfx@cusPropKV}{name}[]{\def\pdfx@KName{#1}}
+\define@key{pdfx@cusPropKV}{value}[]{\def\pdfx@VValue{#1}}
+% \end{macrocode}
+% \end{macro}
+% We define a simple tabbing command \cs{tabiv} to use within the JavaScript.
+%
+% \subsection{XMP Core Properties}
+% These are some helper macros that conditionally fill in metadata when it exists.
+% All these commands are used internally; the document author has no reason to use them.
+% \changes{v2.5}{2016/05/20}{Added the \string\texttt{ModifyDate} property}
+% \begin{macrocode}
+\def\insertCreateDate{^^Jp.@aebxap::CreateDate=createDateStr;%
+^^Jp.@aebxap::ModifyDate=createDateStr;}
+\def\xmpnEOL{\string\n\string\^^J}
+% \end{macrocode}
+% \subsection{Adobe Photoshop Properties}
+% \begin{macro}{\authortitle}
+% The \texttt{<text>} (argument \texttt{\#1}) appears in the
+% \textsf{Author Title} line on the \textsf{Advanced Metadata} dialog box.
+% This is a \textbf{Photoshop} property. (See the Advanced category in the left
+% panel.)
+% \begin{macrocode}
+\newcommand{\authortitle}[1]{\def\xmpauthortitle{#1}}
+% \end{macrocode}
+% \DescribeMacro{\authorTitle} is an alias for \cs{authortitle}.
+% \begin{macrocode}
+\let\authorTitle\authortitle
+\let\xmpauthortitle\@empty
+% \end{macrocode}
+% Insert the author title. Used in the disposable code below.
+% \begin{macrocode}
+\def\insertAuthorTitle{\ifx\xmpauthortitle\@empty
+ \else^^Jp.aebphotoshop::AuthorsPosition="\xmpauthortitle";\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\descriptionwriter}
+% The \texttt{<text>} (argument \texttt{\#1}) appears in the
+%\textsf{Description Writer} line on the \textsf{Advanced Metadata} dialog box.
+%This is a \textbf{Photoshop} property. (See the Advanced category in the left
+%panel.)
+% \begin{macrocode}
+\newcommand{\descriptionwriter}[1]{\def\xmpdescriptionwriter{#1}}
+% \end{macrocode}
+% \DescribeMacro{\descriptionWriter} is an alias for \cs{descriptionwriter}.
+% \begin{macrocode}
+\let\descriptionWriter\descriptionwriter
+\let\xmpdescriptionwriter\@empty
+% \end{macrocode}
+% Insert the description writer. Used in the disposable code below.
+% \begin{macrocode}
+\def\insertDescriptionWriter{\ifx\xmpdescriptionwriter\@empty
+ \else^^Jp.aebphotoshop::CaptionWriter="\xmpdescriptionwriter";\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Disposable JavaScript}
+% Most of this package consists of a few new commands to populate the ``disposable''
+% JavaScript that is input as an \textsf{FDF} when the PDF file is first opened after distilling.
+% This code does all the work.
+% \par\medskip\noindent
+% \cs{insertKWJS} expands to a JavaScript property assignment if there are \cs{aKeywords}
+% is nonempty.
+% \begin{macrocode}
+\def\insertKWJS{\ifx\aKeywords\@empty\else
+ this.info.Keywords=\aKeywords;^^J\fi}
+% \end{macrocode}
+% When \textsf{pdflatex} is used (MiKTeX version), the package fails
+% when \texttt{p.@xmlns::pdfx} is included. This seems to because the
+% \textsf{pdflatex} version defines its own custom property. Haven't figured
+% how to detect the presence of a custom property yet.
+% \begin{macrocode}
+%\edef\insertPDFX{\ifpdf\else p.@xmlns::pdfx=aebpdfx.uri;^^J\fi}
+% \end{macrocode}
+% Some namespace definitions
+% \begin{macrocode}
+\def\xNNS{new Namespace}
+\def\xAdbNS{http://ns.adobe.com}
+\def\xWiiiNS{http://www.w3.org}
+\begin{execJS}{execXMP}
+% \end{macrocode}
+% Get the metadata from the current document.
+% \begin{macrocode}
+var meta=this.metadata;
+var aebXMPData=new XML(meta);
+% \end{macrocode}
+% Define the needed namespaces
+% \begin{macrocode}
+var aebx=\xNNS("x","adobe:ns:meta/");
+var xmlns=\xNNS("xmlns","\xWiiiNS/2000/xmlns/");
+var xml=\xNNS("xml", "\xWiiiNS/XML/1998/namespace");
+var aebrdf=\xNNS("rdf","\xWiiiNS/1999/02/22-rdf-syntax-ns#");
+var aebdc=\xNNS("dc","http://purl.org/dc/elements/1.1/");
+var aebpdf=\xNNS("pdf","\xAdbNS/pdf/1.3/");
+var aebxap=\xNNS("xmp","\xAdbNS/xap/1.0/");
+var aebxapRights=\xNNS("xmpRights","\xAdbNS/xap/1.0/rights/");
+var aebphotoshop=\xNNS("photoshop","\xAdbNS/photoshop/1.0/");
+var aebpdfx=\xNNS("pdfx","\xAdbNS/pdfx/1.3/");
+% \end{macrocode}
+% \begin{macrocode}
+var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+% \end{macrocode}
+% The MiKTeX version of \textsf{pdflatex} places a custom property at the creation
+% of the PDF. We detect whether any custom properties already exist, if they do,
+% don't emit \texttt{p.@xmlns::pdfx=aebpdfx.uri}, otherwise, an exception it thrown
+% when the metadata is updated at the end of this code.
+% \begin{macrocode}
+if ( p.@aebpdfx::*.toString() == "" ) p.@xmlns::pdfx=aebpdfx.uri;
+p.@xmlns::photoshop=aebphotoshop.uri;
+p.@xmlns::xmpRights=aebxapRights.uri;
+% \end{macrocode}
+% The creation date shall be the time this \textsf{FDF} is imported into the document.
+% \begin{macrocode}
+var d=new Date();
+var createDateStr=util.printd("yyyy-mm-ddTHH:MM:ss",d);
+% \end{macrocode}
+% We delete the element, in case it already has a value (unlikely), the we
+% assign it our value.
+% \begin{macrocode}
+delete p.@aebdc::rights.aebrdf::Alt.aebrdf::li;
+% \end{macrocode}
+% \paragraph*{Dublin Core Properties
+% (\texttt{dc}, \begin{NoHyper}\url{http://purl.org/dc/elements/1.1/}\end{NoHyper})}\strut\\
+% Core properties include \texttt{dc:format}, \texttt{dc:title},
+% \texttt{dc:rights}, \texttt{dc:creator}, and \texttt{dc:subject} (aka, keywords).
+% Here, we set \texttt{dc:rights}, called \textsf{Copyright Notice} in the user interface.
+% \begin{macrocode}
+/*
+ Dublin Core Properties
+*/%
+\insertTitles%
+\insertAuthors%
+\insertSubjects%
+\insertKeywords%
+\insertLangs%
+\insertSource%
+\insertCopyrightNotice%
+
+% \end{macrocode}
+% We delete all old values of \texttt{xapRights:Marked} and \texttt{xap:WebStatement},
+% and replace them with the new values.
+% \begin{macrocode}
+/*
+ XMP Rights Management Properties
+*/
+delete p.@aebxapRights::Marked;
+delete p.@aebxapRights::WebStatement;%
+% \end{macrocode}
+% Now we insert additional properties, if there are any
+% \begin{macrocode}
+% \end{macrocode}
+% \paragraph*{XMP Rights Management}\strut\\(\texttt{xmpRights},
+% \begin{NoHyper}\url{http://ns.adobe.com/xap/1.0/rights/}\end{NoHyper})\\
+% These include \texttt{xmpRights:Marked} and \texttt{xmpRights:WebStatement}, both of which
+% are set.
+% \begin{macrocode}
+\insertMarked%
+\insertWebStatement%
+
+% \end{macrocode}
+% \paragraph*{Adobe Photoshop Properties}\strut\\(\texttt{photoshop},
+% \begin{NoHyper}\url{http://ns.adobe.com/photoshop/1.0/}\end{NoHyper})\\
+% These include \texttt{photoshop:AuthorsPosition} and \texttt{photoshop:CaptionWriter}, both of which
+% are set.
+% \begin{macrocode}
+delete p.@aebphotoshop::AuthorsPosition;
+delete p.@aebphotoshop::CaptionWriter;
+delete p.@aebxap::CreateDate;
+/*
+ Adobe Photoshop Properties
+*/%
+\insertAuthorTitle%
+\insertDescriptionWriter%
+
+% \end{macrocode}
+% \paragraph*{Acrobat Custom Properties} (\texttt{pdfx},
+% \begin{NoHyper}\url{http://ns.adobe.com/pdfx/1.3/}\end{NoHyper})\\
+% Adobe allows the creation of custom properties that are accessible
+% through the \texttt{Doc.info} object.
+% \begin{macrocode}
+/*
+ Acrobat Custom Properties
+*/%
+\insertCusProps%
+
+% \end{macrocode}
+% \paragraph*{XMP Core Properties} (\texttt{xmp},
+% \begin{NoHyper}\url{http://ns.adobe.com/xap/1.0/}\end{NoHyper})\\
+% These properties include \texttt{xmp:CreatorTool},
+% \texttt{xmp:ModifyDate}, \texttt{xmp:CreateDate}, and \texttt{xmp:MetadataDate}.
+% Here we set only \texttt{CreateDate}.
+% \begin{macrocode}
+/*
+ XMP Core Properties
+*/%
+\insertCreateDate%
+
+% \end{macrocode}
+% Convert \texttt{aebXMPData} into a string
+% \begin{macrocode}
+/*
+ Convert aebXMPData into an XML String
+ and save is as this.metadata
+*/
+var aebNewXMPStr=aebXMPData.toXMLString();
+% \end{macrocode}
+% and assign it to the document metadata
+% \begin{macrocode}
+try { this.metadata=aebNewXMPStr; }
+ catch(e) {console.println(e.toString());}
+% \end{macrocode}
+% Insert a JavaScript assignment for keywords.
+% \begin{macrocode}
+\insertKWJS%
+\end{execJS}
+% \end{macrocode}
+%
+% \section{Document JavaScript}
+%
+% This definition environment defines four functions and four arrays.
+% The functions are used to build the arrays. The arrays are user accessible,
+% they are \texttt{aKeywords}, \texttt{aTitle}, \texttt{aSubject}, and \texttt{aRights}.
+% \begin{macrocode}
+\ifx\xmpInsScript\@empty
+\begin{insDLJS}{xmpjs}{Access to Title, Subject, and Keywords}
+function getKeywordsXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ return p.aebdc::subject.aebrdf::Bag.aebrdf::li[i];
+}
+var i=0;
+var aKeywords=new Array();
+while ( typeof getKeywordsXMP(i)!="undefined" ) {
+ aKeywords[i]=getKeywordsXMP(i).toString(); i++;
+}
+function getTitleXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="[" + p.aebdc::title.aebrdf::Alt.aebrdf::li[i].%
+@xml::lang.toString()+"]: "
+ + p.aebdc::title.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aTitle=new Array();
+while ( getTitleXMP(i)!="undefined" ) {
+ aTitle[i]=getTitleXMP(i); i++;
+}
+function getSubjectXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="[" + p.aebdc::description.aebrdf::Alt.aebrdf::li[i].%
+@xml::lang.toString()+"]: "
+ + p.aebdc::description.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aSubject=new Array();
+while ( getSubjectXMP(i)!="undefined" ) {
+ aSubject[i]=getSubjectXMP(i); i++;
+}
+function getRightsXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="["+ p.aebdc::rights.aebrdf::Alt.aebrdf::li[i]%
+.@xml::lang.toString()+"]: "
+ + p.aebdc::rights.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aRights=new Array();
+while ( getRightsXMP(i)!="undefined" ) {
+ aRights[i]=getRightsXMP(i); i++;
+}
+function getCopyrightStatus() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriXAP="http://ns.adobe.com/xap/1.0/rights/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebxapRights=new Namespace("xmpRights",uriXAP);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::xmpRights=aebxapRights.uri;
+ var copyrightStatus = p.@aebxapRights::Marked;
+ if ( copyrightStatus=="True" )
+ return "Copyrighted";
+ else if ( copyrightStatus=="False" )
+ return "Public Domain";
+ else return "Unknown";
+}
+function getCopyrightInfoURL() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriXAP="http://ns.adobe.com/xap/1.0/rights/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebxapRights=new Namespace("xmpRights",uriXAP);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::xmpRights=aebxapRights.uri;
+ var copyrightInfoURL=(p.@aebxapRights::WebStatement.toString()!="")?
+ (p.@aebxapRights::WebStatement):"Not provided";
+ return copyrightInfoURL;
+}
+function getAuthorTitle() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriPhotoshop="http://ns.adobe.com/photoshop/1.0/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebPhotoshop=new Namespace("photoshop",uriPhotoshop);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::photoshop=aebPhotoshop.uri;
+ var authorTitle=(p.@aebPhotoshop::AuthorsPosition.toString()!="")?
+ (p.@aebPhotoshop::AuthorsPosition):"Not provided";
+ return authorTitle;
+}
+function getDescriptionWriter() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriPhotoshop="http://ns.adobe.com/photoshop/1.0/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebPhotoshop=new Namespace("photoshop",uriPhotoshop);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::photoshop=aebPhotoshop.uri;
+ var captionWriter=(p.@aebPhotoshop::CaptionWriter.toString()!="")?
+ (p.@aebPhotoshop::CaptionWriter):"Not provided";
+ return captionWriter;
+}
+\end{insDLJS}
+\fi
+\catcode`\"=\xmp@dquoteCat
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+\endinput
+
+p.aebdc::description.aebrdf::Alt.aebrdf::li[0]="Euro \u20AC";
+p.aebdc::description.aebrdf::Alt.aebrdf::li[0].@xml::lang="x-default";
diff --git a/texmf-dist/source/latex/aebxmp/aebxmp.ins b/texmf-dist/source/latex/aebxmp/aebxmp.ins
new file mode 100644
index 00000000..79ee0a18
--- /dev/null
+++ b/texmf-dist/source/latex/aebxmp/aebxmp.ins
@@ -0,0 +1,60 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 2006-2012 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2011/12/29}
+\def\batchfile{aebxmp.ins}
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate
+{%
+ \file{aebxmp.sty}{\from{aebxmp.dtx}{copyright,package}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/source/latex/aebxmp/doc/aebxmp_man.tex b/texmf-dist/source/latex/aebxmp/doc/aebxmp_man.tex
new file mode 100644
index 00000000..8abc26b9
--- /dev/null
+++ b/texmf-dist/source/latex/aebxmp/doc/aebxmp_man.tex
@@ -0,0 +1,580 @@
+% makeindex < aebpro_man.idx > aebpro_man.ind
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,
+ forcolorpaper,tight*,latextoc,pro},
+ eforms,aebxmp
+]{aeb_pro}
+\usepackage{aeb_mlink}
+\usepackage{graphicx,array}
+%\usepackage{myriadpro}
+%\usepackage[usecmtt]{myriadpro}
+\usepackage[altbullet]{lucidbry}
+
+%\usepackage{makeidx}
+%\makeindex
+\usepackage{acroman}
+\usepackage[active]{srcltx}
+
+\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\meta#1{\textit{\texttt{#1}}}
+\def\darg#1{\texttt{\{#1\}}}
+\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei}
+\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup}
+\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule}
+\let\pkg\textsf
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+\let\uif\textsf
+
+\edef\amtIndent{\the\parindent} %\leftmargini
+\def\SUB#1{${}_{\text{#1}}$}
+
+\newdimen\aebdimen \aebdimen\abovedisplayskip
+\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}%
+\def\eVerb{\vskip\aebdimen\endgroup\noindent}
+
+\def\cmdtitle#1{\texorpdfstring{\protect\cs{#1}}{\textbackslash{#1}}}
+
+%\margins{.25in}{.25in}{24pt}{.25in} % left,right,top, bottom
+%\screensize{6.5in}{5in} % height, width
+
+\university{\AcroTeX.Net}
+\title{The aebXMP Package\texorpdfstring{\\[1em]}{: }Updating XMP using E4X and {\LaTeX}}
+\author{D. P. Story}
+\Authors{{D. P. Story}{J\u00FCrgen Gilg}}
+\subject{Documentation of the AeBXMP Package}
+\Keywords{XMP,E4X,Adobe Acrobat,JavaScript}
+\email{dpstory@acrotex.net}
+\version{2.5a, 2017/02/17}
+\talksite{\url{www.acrotex.net}}
+\copyrightStatus{True}
+\copyrightNotice{Copyright (C) 2006-\the\year, D. P. Story}
+\copyrightInfoURL{http://www.acrotex.net}
+\authortitle{Programming and Development, AcroTeX.Net}
+\descriptionwriter{Testing and Promotions Department, AcroTeX.Net}
+\customProperties
+{%
+ {name=Developer,value={D. P. Story, Esq.}}
+ {name=Motivator,value=J\u00FCrgen Gilg}
+}
+
+\DeclareInitView{windowoptions=showtitle}
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+\def\AcroTeX{Acro\negthinspace\TeX}
+
+\makeatletter
+\@mparswitchfalse\reversemarginpar
+\makeatother
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.5em}}
+\renewcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont #1}
+\newcommand{\aebDescriptionlabel}[1]{%
+ \setlength\dimen@{\amtIndent+\labelsep}%
+ {\hspace*{\dimen@}#1}}
+\makeatother
+\newenvironment{aebDescript}
+ {\begin{list}{}{\setlength{\labelwidth}{0pt}%
+ \setlength{\leftmargin}{\leftmargin}%
+ \setlength{\leftmargin}{\leftmargin+\amtIndent}%
+ \setlength\itemindent{-\leftmargin}%
+ \let\makelabel\aebDescriptionlabel
+ }}{\end{list}}
+
+%\pagestyle{empty}
+%\parindent0pt\parskip\medskipamount
+
+
+\definePath\bgPath{"C:/Users/Public/Documents/ManualBGs/Manual_BG_Print_AeB.pdf"}
+\begin{docassembly}
+\addWatermarkFromFile({
+ bOnTop:false,
+ cDIPath:\bgPath
+});
+\executeSave();
+\end{docassembly}
+
+
+\begin{document}
+
+\maketitle
+
+\changelinkcolorto{black}
+
+\tableofcontents
+
+\changelinkcolorto{webgreen}
+
+
+\section{Introduction}
+
+The motivation for the development of this package came from
+Herr~J\"{u}rgen Gilg, who had a need to fill in the metadata fields
+beyond those normally populated by using \pkg{hyperref}:
+\textsf{Title}, \textsf{Author}, \textsf{Subject} and
+\textsf{Keywords}. Of particular interest to him were the metadata
+fields \textsf{Copyright Status}, \textsf{Copyright Notice} and
+\textsf{Copyright Info URL}.
+
+After doing some research on the CTAN archives, I came across the
+\textsf{hyperxmp} package by Scott Pakin.\begin{NoHyper}\footnote{The reader is
+invited to read the documentation of the \textsf{hyperxmp}, as
+contained therein is a good discussion of XMP (eXtensible Metadata
+Platform).}\end{NoHyper} The package works well with \textsf{pdftex} and
+\textsf{dvipdfm}, but has a bit of a problem when using the
+distiller. For this reason, I sought my own solution to the problem.
+
+As a beta tester of \app{Acrobat~8 Professional}, I had the opportunity to
+use some of the new capabilities of the JavaScript interpreter as an
+alternate approach to the one used by Mr.~Patkin. The JavaScript
+version~1.6 interpreter, the one used in version 8, comes with E4X,
+an XML parser, built in. I could see that E4X could be exploited to
+manipulate the XMP data, and this was my approach.
+
+\section{Requirements}
+
+The techniques used by the \textsf{aebxmp} package to update the XMP data
+require the \textcolor{blue}{{\AcroTeX} eDucation Bundle} (AeB), freely
+available from \url{www.acrotex.net}. Because E4X is used, we also require
+\app{Acrobat~8 Pro} or later, and, since you have \textsf{Acrobat~8} or
+later, my \LaTeX ing friend, this package will work for you with all
+workflows: \app{dvips/Distiller}, \app{pdflatex} (including \app{lualatex}),
+and \app{xelatex}. To emphasize, for non-\app{Distiller} workflow, the full
+\app{Acrobat} application is still required to be your default {\PDF} viewer
+on your own computer.
+
+\section{The Test File}
+
+The package \textsf{aebxmp} has a simple test file,
+\textsf{aebxmp\_test.tex}, which is found in the \texttt{examples} folder.
+After you build the {\PDF} and open the document in \app{Acrobat} for the first time,
+the new metadata is imported; \marginpar{\raggedleft save the document}\emph{it is important to save the document} after
+the data is imported.
+
+To use this package, you must have, in addition to Acrobat~8 Pro (or later),
+installed on your computer a standard {\TeX} system, including the
+latest version of AeB.\footnote{AeB can be downloaded from any CTAN
+server, from \url{www.math.uakron.edu/~dpstory/webeq.html}, or from
+\url{www.acrotex.net}.}
+
+\section{Metadata}
+
+The \pkg{hyperref} package provides basic metadata support, providing
+a mechanism for providing the title, author, subject, and keywords. Beyond
+these, we can include additional metadata.
+
+\subsection{Author, Author}
+
+The \pkg{hyperref} package allows you to specify an author or authors;
+the \textsf{Web} package uses this through the \cs{title} command, which
+passes its argument on to \pkg{hyperref} of inclusion in the PDF Info
+dictionary. The authors names are not individually assessable through
+JavaScript. In Acrobat~9, I believe, the JavaScript API includes the
+\texttt{Doc.info.Authors} property, its value is an array of authors,
+We can access each author using array notation: First author is
+\texttt{this.info.Authors[0]}, second author is
+\texttt{this.info.Authors[1]}, and so on. The number of authors is
+obtained using the length property of arrays, \texttt{this.info.Authors.length}.
+
+The \pkg{aebxmp} interface to this is through the \cs{Authors} command. It takes
+a list of authors, each enclosed in braces, no commas (,) between the
+authors. Like so:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\Authors{{D. P. Story}{J\u00FCrgen Gilg}}
+\end{Verbatim}
+Using \cs{Authors} will overwrite the author(s) named in the \cs{author}
+command (of \pkg{web}), or more generally, passed to
+\cs{hypersetup\darg{pdfauthor=\darg{\anglemeta{author}}}} of
+\pkg{hyperref}.\begin{NoHyper}\footnote{This may be to your advantage when
+using \textsf{Web}; the value of \cs{author} is used to display the author(s)
+of the document, you may want to present the names one way on the title page,
+for example, and another way in the \textsf{Description} tab of the
+\textsf{Document Properties} dialog box.}\end{NoHyper}
+
+If you do use \cs{Authors} and overwrite the author(s) as passed through
+\pkg{hyperref}, the first author listed will be the one returned by
+\texttt{this.info.Author} (a JavaScript property) in the \uif{Document
+Properties} dialog box (\texttt{Ctrl+D}), all authors are listed in a
+semi-colon delimited list.
+
+
+\subsection{The \texorpdfstring{\cs{Keywords}}{\textbackslash{Keywords}} Command}
+
+The \cs{Authors} command utilizes \texttt{Doc.info.Authors}, which takes
+an array of authors names. There is no such property available for
+\texttt{Doc.info.Keywords}, the value of this property takes only a string
+of keywords. The keywords are stored by Acrobat in three ways,
+(1) \texttt{pdf:Keywords}; (2) in the \textbf{Info} dictionary; and (3) in
+\texttt{dc:subject}. In the latter case, \texttt{dc:subject} takes a \texttt{Bag}
+of subjects (keywords). A \texttt{Bag}, in XMP parlance, is an unordered array.
+
+The command \cs{Keywords} takes a comma delimited list of keywords. Notice
+the word is capitalized to distinguish it from \cs{keywords}, which is
+defined in the \textsf{Web} package as the interface to inserting the
+keywords, via \pkg{hyperref}, into the \textbf{Info} dictionary.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\Keywords{AcroTeX.Net,XMP,E4X,Adobe Acrobat,JavaScript}
+\end{Verbatim}
+The command takes each comma-delimited list of keywords and
+inserts each into the \texttt{dc:subject} part of the metadata.
+For this document, the keywords appear in the XML metadata as
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+<dc:subject>
+ <rdf:Bag>
+ <rdf:li>AcroTeX.Net</rdf:li>
+ <rdf:li>XMP</rdf:li>
+ <rdf:li>E4X</rdf:li>
+ <rdf:li>Adobe Acrobat</rdf:li>
+ <rdf:li>JavaScript</rdf:li>
+ </rdf:Bag>
+</dc:subject>
+\end{Verbatim}
+When the document is first opened, the following command is executed
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+this.info.Keywords="AcroTeX.Net; XMP; E4X; Adobe Acrobat; JavaScript"
+\end{Verbatim}
+Here, I have broken the string across lines for readability. This inserts
+the same list of keywords into the \textbf{Info} dictionary.
+
+When you executed \texttt{this.info.Keywords} in the console, you'll get
+%
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+AcroTeX.Net; XMP; E4X; Adobe Acrobat; JavaScript
+\end{Verbatim}
+as expected.
+
+To access the individual keywords, I've defined an array of keywords,
+\texttt{aKeywords}. It takes as its argument the index of the
+keyword you want to get; For example, executing \texttt{aKeywords[0]} in
+the console returns a value of \texttt{"AcroTeX.Net"}, while
+\texttt{aKeywords[4]} returns a value of \texttt{"JavaScript"}. If you
+execute \texttt{aKeywords[5]}, a value of \texttt{undefined} is returned.
+The number of keywords is \texttt{aKeywords.length}.
+
+Listing the keywords may be of interest to someone, it is an exercise to
+me.\begin{NoHyper}\footnote{Actually, this is the way \textbf{Acrobat} handles a
+comma-delimited list of keywords when the words are entered through
+the user interface; it puts them in a \texttt{Bag}.}\end{NoHyper}
+
+The command \cs{xmpDoNotInsKWScript}, when expanded in the preamble, will
+turn off the creation of the array \texttt{aKeywords}.
+
+\subsection{Additional Metadata}
+
+As mentioned previously, the \pkg{aebxmp} package addresses three areas of
+interest: Setting the \uif{Copyright Status}, \uif{Copyright Notice}, and the
+\textsf{Copyright Info URL}. Obviously, other elements of the XMP can be
+addressed. To that end, the \pkg{aebxmp} package defines five new {\LaTeX}
+commands to populate the values of the five metadata fields \textsf{Copyright
+Status}, \uif{Copyright Notice}, \uif{Copyright Info URL}, \uif{Author
+Title}, and \uif{Writer Description}. Values for the arguments of these
+commands are documented below.
+\begin{description}
+\item[\cs{copyrightStatus\darg{True|False}}:] If \texttt{True},
+ \uif{Copyright Status} is set to \texttt{Copyrighted}; if
+ \texttt{False}, \textsf{Copyright Status} is set to \uif{Public
+ Domain}. If left empty, the status is set to \uif{Unknown}.
+
+ Unless you've executed \cs{xmpDoNotInsKWScript} in the preamble, the
+ \pkg{aebxmp} defined JavaScript function \texttt{getCopyrightStatus()}
+ is available. The function returns the copyright status:
+ \texttt{Copyrighted}, \texttt{Public Domain}, and \texttt{Unknown}.
+
+\item[\cs{copyrightNotice\darg{\anglemeta{text}}}:] The \anglemeta{text} of
+ the \textsf{Copyright Notice} is defined
+
+\item[\cs{copyrightInfoURL\darg{\anglemeta{URL}}}:] The \anglemeta{URL} to
+ the copyright information
+
+ Unless you've executed \cs{xmpDoNotInsKWScript} in the preamble, the
+ \pkg{aebxmp} defined JavaScript function \texttt{getCopyrightInfoURL()}
+ is available. The function returns the copyrightinfo URL (\anglemeta{URL}).
+
+\item[\cs{authortitle\darg{\anglemeta{text}}}:] The \anglemeta{text} appears
+ in the \textsf{Author Title} line on the \textsf{Additional Metadata}
+ dialog box. This is a \uif{Photoshop} property. (See the \uif{Advanced}
+ category in the left panel.)
+
+ Unless you've executed \cs{xmpDoNotInsKWScript} in the preamble, the
+ \pkg{aebxmp} defined JavaScript function \texttt{getAuthorTitle()}
+ is available. The function returns the authortitle (\anglemeta{text}).
+
+\item[\cs{descriptionwriter\darg{\anglemeta{text}}}:] The \anglemeta{text}
+ appears in the \textsf{Description Writer} line on the \uif{Additional
+ Metadata} dialog box. This is a \uif{Photoshop} property. (See the
+ \uif{Advanced} category in the left panel.)
+
+ Unless you've executed \cs{xmpDoNotInsKWScript} in the preamble, the
+ \pkg{aebxmp} defined JavaScript function \texttt{getDescriptionWriter()}
+ is available. The function returns the descriptionwriter (\anglemeta{text}).
+
+\end{description}
+
+\newtopic\noindent
+For example, for this document, we have in the preamble,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\copyrightStatus{True}
+\copyrightNotice{Copyright (C) 2006-\the\year, D. P. Story}
+\copyrightInfoURL{http://www.acrotex.net}
+\authortitle{Programming and Development, AcroTeX.Net}
+\descriptionwriter{Testing and Promotions Department, AcroTeX.Net}
+\end{Verbatim}
+Enter unicode (\cs{uXXXX}) directly into the \cs{copyrightNotice} and \cs{copyrightInfoURL} fields; for example,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\copyrightNotice{Copyright (C) 2006-\the\year, J\u00FCrgen Gilg}
+\end{Verbatim}
+Unicode can be used all the metadata commands discussed in the manual.
+
+The \cs{copyrightNotice} can take multiple arguments, one for each
+language. The syntax is
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont,commandchars=!()]
+\copyrightNotice{%
+ {[!anglemeta(lang!SUB(1))] copyright in this language}
+ {[!anglemeta(lang!SUB(2))] copyright in this language}
+ ...
+}
+\end{Verbatim}
+The first copyright item listed is also counted as the default language
+and will be marked as \texttt{x-default} as the value of the
+\texttt{xml:lang} attribute. Contrary to {\LaTeX} custom, the brackets do
+not indicate optional arguments, they are required except for the first
+item in the list. Each group, which are enclosed in braces
+(\texttt{\{\}}), represents a copyright notice; the part enclosed on
+brackets (\texttt{[]}) contains the language designator. This is a
+two-letter code to indicate the language; it can also have a sub-tag to
+indicate a country (see \texttt{en-US} in example below). See the ISO
+639-1 standard, and the RFC 3066 standard, referenced at the end of the
+manual, for more information on language codes.
+
+For example,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\copyrightNotice{%
+ {[en-US]Copyright (C) \the\year, D. P. Story}
+ {[fr]Copyright (C) \the\year, D. P. Story}
+ {[de]Copyright (C) \the\year, D. P. Story}
+}
+\end{Verbatim}
+
+There is also a \cs{sourceFile} command that takes one argument. If
+\cs{sourceFile} does not appear in the preamble, the \cs{jobname.tex} is
+written to the metadata (as part of the Dublin Core Properties). If
+\verb!\sourceFile{}! is expanded in the preamble, no source file data will
+be inserted into the metadata. Finally, executing the command
+\verb!\sourceFile{hw01_1100.tex}! causes the string
+\texttt{hw01\_1100.tex} to be written as the value of the
+\texttt{dc:source} key.
+
+
+\subsection{\texorpdfstring{\cs{Title}, \cs{Subject}, and \cs{metaLang}}
+ {\textbackslash{Title}, \textbackslash{Subject}, \textbackslash{metaLang}}}
+
+The Title and Subject keys can also be recorded with alternate languages;
+for this reason, \textsf{aebxmp} defines \cs{Title} and \cs{Subject}.
+The syntax of these two are similar to \cs{copyrightNotice}, described
+above
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!(),fontsize=\fontsize{9}{11}\selectfont]
+\Title{%
+ {[!anglemeta(lang!SUB(1))] title in this language}
+ {[!anglemeta(lang!SUB(2))] title in this language}
+ ...
+}
+\Subject{%
+ {[!anglemeta(lang!SUB(1))] subject in this language}
+ {[!anglemeta(lang!SUB(2))] subject in this language}
+ ...
+}
+\end{Verbatim}
+The first one listed is also designated as the default language, marked
+with \texttt{x-default}.
+
+For example,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\Title{%
+ {[en-US]Testing the aebxmp Package}
+ {[fr]Test du paquet aebxmp}
+ {[de]Testen des aebxmp Pakets}
+}
+\Subject{%
+ {[en-US]Test file for using E4X to update the XMP Data Model}
+ {[fr]Fichier de test utilisant E4X pour mettre à jour
+ le modèle de données XMP}
+ {[de]Testdatei für die Verwendung von E4X, um das XMP Daten
+ Modell zu aktualisieren}
+}
+\end{Verbatim}
+Note that literal characters such as \texttt{\"{u}} are also
+recognized so that unicode is not needed here.
+
+The arrays \texttt{aTitle} and \texttt{aSubject} are defined in the
+document, unless the command \cs{xmpDoNotInsKWScript} is executed in the
+preamble. For example, if you executed \texttt{aTitle[0]} in the console
+(or part of a JavaScript action of a button), the array element is seen to
+be \texttt{"[x-default]:\,Testing the aebxmp Package"}, while
+\texttt{aTitle[1]} is \texttt{"[en-US]:\,Testing the aebxmp Package"}. The
+array \texttt{aSubject} behaves similarly.
+
+The data passed by \cs{Title} and \cs{Subject} overrides the data passed
+by the \textsf{web} commands \cs{title} and \cs{subject}, and overrides
+the data passed by the \pkg{hyperref} keys \texttt{pdftitle} and
+\texttt{pdfsubject}.
+
+Special characters need to be entered using unicode (\cs{uXXXX}), not the
+octal or unicode generated by \pkg{hyperref}. Do not use {\LaTeX}
+markup that expands to special characters inside the arguments of any of
+the commands defined in this package.
+
+The \cs{metaLang} command allows you to document the languages used in
+the metadata. Multiple languages may be specified.
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!(),fontsize=\fontsize{9}{11}\selectfont]
+\metaLang{!anglemeta(lang!SUB(1)),!anglemeta(lang!SUB(2)),..,!anglemeta(lang!SUB(n))}
+\end{Verbatim}
+For example
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\metaLang{en,en-US,fr,de}
+\end{Verbatim}
+
+
+\subsection{Custom Document Properties}
+You can define custom properties using the \cs{customProperties} command.
+\bVerb
+\begin{minipage}{.5\linewidth}
+\def\1{\textbf{Standard Syntax}}%
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!(),fontsize=\fontsize{9}{11}\selectfont]
+!1
+\customProperties
+{%
+ {name=!anglemeta(name!SUB(1)),value=!anglemeta(value!SUB(1))}
+ {name=!anglemeta(name!SUB(2)),value=!anglemeta(value!SUB(2))}
+}
+\end{Verbatim}
+\end{minipage}\hfil
+\begin{minipage}{.5\linewidth}
+\def\1{\textbf{Colon Syntax}}%
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!(),fontsize=\fontsize{9}{11}\selectfont]
+!1
+\customProperties
+{%
+ {name:!anglemeta(name!SUB(1)),value:!anglemeta(value!SUB(1))}
+ {name:!anglemeta(name!SUB(2)),value:!anglemeta(value!SUB(2))}
+}
+\end{Verbatim}
+\end{minipage}
+\eVerb
+The `colon' syntax is also recognized, but do not mix the two syntaxes together, use either all equal signs or all colons.
+
+The value of the \texttt{name} key requires a unique name, which must not
+be one of the standard property names \texttt{Title}, \texttt{Author}, \texttt{Subject}, \texttt{Keywords},
+\texttt{Creator}, \texttt{Producer}, \texttt{CreationDate}, \texttt{ModDate}, and
+\texttt{Trapped}. The value of \texttt{name} shall consist of the
+characters \texttt{A--Z}, \texttt{a--z}, and \texttt{0--9}, and beginning with a
+letter. The value may contain unicode, for example, in the preamble of
+this document we have,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\customProperties
+{%
+ {name=Developer,value={D. P. Story, Esq.}}
+ {name=Motivator,value=J\u00FCrgen Gilg}
+}
+\end{Verbatim}
+Instead of unicode, this same set of custom properties can be defined as
+follows:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{11}\selectfont]
+\customProperties
+{%
+ {name=Developer,value={D. P. Story, Esq.}}
+ {name=Motivator,value=Jürgen Gilg}
+}
+\end{Verbatim}
+That is, using literal characters, if your editor supports it.
+
+The properties may be accessed through the \texttt{info} property of the
+\texttt{Doc} object. The button (on the left) \marginpar{\hfill\pushButton[\TU{Press to see the document
+properties}\CA{Info}
+\A{\JS{%
+ console.show();\r
+ console.clear();\r
+ for (var o in this.info)\r\t
+ console.println("info."+o+"="+this.info[o]);\r
+ if (aKeywords!=undefined) {\r\t
+ console.println("List Keywords:");\r\t
+ for (var i=0; i< aKeywords.length; i++){\r\t\t
+ console.println(" "+aKeywords[i]);\r\t
+ }\r
+ }
+}}]{info}{}{11bp}}
+opens the console debugger window and displays all the document
+properties.
+
+
+The custom properties may be viewed using the user interface; press
+\texttt{Ctrl+D} and choose the \textsf{Custom} tab.
+
+For more information on this topic, see
+\href{http://www.adobe.com/devnet/xmp.html}{%
+Part 3, Storage in Files}, section 3.2 on \textbf{Native metadata in PDF files}, in particular,
+see section~3.2.1 concerning user-defined document properties.
+
+
+\section{Checking for validity}
+
+While looking at this file in Acrobat (or Adobe Reader), press
+\texttt{Ctrl+D} to get the \textsf{Document Properties} dialog box.
+Select the \textsf{Description} tab and click \textsf{Additional
+Metadata}. Since this document was built using the \textsf{aebxmp}
+package, with the declarations
+
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\fontsize{9}{12}\selectfont]
+\copyrightStatus{True}
+\copyrightNotice{Copyright (C) 2006-\the\year, D. P. Story}
+\copyrightInfoURL{http://www.acrotex.net}
+\authortitle{Programming and Development, AcroTeX.Net}
+\descriptionwriter{Testing and Promotions Department, AcroTeX.Net}
+\end{Verbatim}
+
+\newtopic In the Advanced Metadata dialog box, you should see,
+\begin{itemize}
+ \item[] \textsf{Copyright Status}: \texttt{Copyrighted}
+ \item[] \textsf{Copyright Notice}: \texttt{Copyright (C) 2006-\the\year, D. P. Story}
+ \item[] \textsf{Copyright Info URL}: \texttt{http://www.acrotex.net}
+ \item[] \textsf{Author Title}: \texttt{Programming and Development,
+ AcroTeX.Net}
+ \item[] \textsf{Description Writer}: \texttt{Testing and Promotions Department,
+ AcroTeX.Net}
+\end{itemize}
+in addition to the usual Document Title, Author, Description, and
+Keywords. I promise you that I did not enter these values through the user interface. \texttt{:-)}
+\section{Resources}
+
+\newtopic The resources for the development of this package are
+\begin{itemize}
+ \item \textsl{Standard ECMA-357: ECMAScript for XML (E4X) Specification},\\
+ {\small\url{http://www.ecma-international.org/publications/standards/Ecma-357.htm}}
+ \item \textsl{XMP Specification}, \url{http://www.adobe.com/devnet/xmp.html}
+ \item \textsl{Acrobat JavaScript Scripting Reference}, Version 8.0\\
+ \url{http://www.adobe.com/go/acrobat_developer}
+ \item \textsf{hyperxmp} package by Scott Pakin,
+ \url{http://ctan.org/pkg/hyperxmp}
+ \item The {\AcroTeX} System Tools, available for free download at \url{www.acrotex.net}. This is
+ a {\LaTeX}-based system.
+ \item ISO 639-1 two-letter abbreviation.\\
+ \url{http://www.loc.gov/standards/iso639-2/php/English_list.php}
+ \item IETF RFC 3066\\
+ \url{http://www.ietf.org/rfc/rfc3066.txt}
+
+% http://www.iana.org/assignments/language-subtag-registry
+
+\end{itemize}
+
+\newtopic\noindent
+Now, I simply must get back to my retirement. \dps
+
+\end{document}
diff --git a/texmf-dist/source/latex/annot-pro/annot_pro.dtx b/texmf-dist/source/latex/annot-pro/annot_pro.dtx
new file mode 100644
index 00000000..7e30b00e
--- /dev/null
+++ b/texmf-dist/source/latex/annot-pro/annot_pro.dtx
@@ -0,0 +1,1162 @@
+% \iffalse
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% annot_pro package, %%
+%% Copyright (C) 2002-2016 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{annot_pro}
+%<package> [2016/10/18 v1.1b Provides selected PDF annotation support (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[fleqn]{amsmath}
+\usepackage[colorlinks,hyperindex=false]{hyperref}
+\let\uif\textsf\let\app\textsf
+\let\pkg\textsf\let\env\texttt
+\def\psf#1{\textsf{\textbf{#1}}}
+%\def\texorpdfstring#1#2{#1}
+%\pdfstringdefDisableCommands{\let\\\textbackslash}
+\OnlyDescription % comment out for implementation details
+\EnableCrossrefs \CodelineIndex \RecordChanges
+\InputIfFileExists{aebdocfmt.def}{\PackageInfo{annot_pro}{Inputting aebdocfmt.def}}
+ {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{annot_pro}{aebdocfmt.def cannot be found}}
+\begin{document}
+ \GetFileInfo{annot_pro.sty}
+ \title{annot\_pro: Selected PDF Annotations}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@uakron.edu}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \let\Email\texttt
+ \DocInput{annot_pro.dtx}
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index}
+The index goes here. Execute
+\begin{quote}
+ \texttt{makeindex -s gind.ist -o annot\_pro.ind annot\_pro.idx}
+\end{quote}
+ on the command line and recompile \texttt{annot\_pro.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list
+of changes goes here. Execute
+\begin{quote}
+ \texttt{makeindex -s gglo.ist -o annot\_pro.gls annot\_pro.glo}
+\end{quote}
+ on the command line and recompile \texttt{annot\_pro.dtx}.}
+\end{document}
+%</driver>
+% \fi
+%
+% \MakeShortVerb{|}
+% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{web}{Inputting aebdonotindex.def}}
+% {\PackageInfo{web}{cannot find aebdonotindex.def}}
+%
+% \begin{macrocode}
+%<*package>
+\RequirePackage{xkeyval}
+% \end{macrocode}
+% \changes{v1.1}{2016/09/29}{Introduced Free Text annotation}
+% \changes{v1.0c}{2016/09/28}{Reformatted manual, reformatted DTX file}
+% \section{Background Information}
+%
+% The following annotation types will be supported (taken from table 8.20)
+%\begin{itemize}
+% \item \textbf{Text}: Subtype \textbf{Text}. See Table 8.23, page 621. In particular, the values
+% of the \textbf{Name} key are \textbf{Comment}, \textbf{Help}, \textbf{Insert}, \textbf{Key}, \textbf{NewParagraph},
+% \textbf{Note} (the default), and \textbf{Paragraph}. Other supported names are \textbf{Check}, \textbf{Circle}, \textbf{Cross},
+% \textbf{Star}, \textbf{RightArrow}, \textbf{RightPointer}, \textbf{UpArrow}, \textbf{UpLeftArrow}
+% \item \textbf{Stamp}: Subtype \textbf{Stamp}. See Table 8.32, page 635. The values of the \textbf{Name} key are
+% \textbf{Approved}, \textbf{AsIs}, \textbf{Confidential},
+% \textbf{Departmental}, \textbf{Draft} (the default),
+% \textbf{Experimental}, \textbf{Expired}, \textbf{Final},
+% \textbf{ForComment}, \textbf{ForPublicRelease}, \textbf{NotApproved},
+% \textbf{NotForPublicRelease}, \textbf{Sold}, \textbf{TopSecret}.
+% \item \textbf{FileAttachment}: Subtype \textbf{FileAttachment}. Table 8.35, page 638. The Name key has values
+% \textbf{Graph}, \textbf{Paperclip}, \textbf{PushPin}, and \textbf{Tag}.
+%\end{itemize}
+% The options available for any supported annotation
+%\begin{itemize}
+% \item \verb!type=text | stamp | fileattachment! (text, the default)
+% \item \texttt{Contents} will be an argument of the command \cs{annotpro}
+% \item \texttt{NM} unique name for the page, optional, if not provided,
+% one will be generated.
+% \item \texttt{color}, to color the annotation
+% \item \verb!margin! to place the annotation in the margin
+% \item \texttt{nohspace}, leave no horizontal space
+% \item \texttt{novspace}, leave no vertical space
+% \item \texttt{nospace}, leave neither vertical or horizontal space.
+%\end{itemize}
+% \section{Annotation types supported}
+% \subsection{Text Annotations}
+% The options for the text annotation (\texttt{type=text}) are
+%\begin{itemize}
+% \item \texttt{name}, one of the standard icons listed above, default Note
+% \item \texttt{open}, default \texttt{false}
+%\end{itemize}
+% \subsection{Rubber Stamp Annotations}
+% The options for the text annotation (\texttt{type=stamp}) are
+%\begin{itemize}
+% \item \texttt{name}, the default is draft. If a name begins with \texttt{\#}, that signals
+% a custom appearance.
+% \item \texttt{ap}, when the name is a custom name, the \texttt{ap} is used to hold the indirect reference
+% to the appearance. If a custom name is specified, \texttt{ap} is required, and \textsf{graphicxsp} is required.
+% \item \texttt{open}, default \texttt{false}
+%\end{itemize}
+% \subsection{File Attachment Annotations}
+% The options for the text annotation (\texttt{type=fileattachement}) are
+%\begin{itemize}
+% \item \texttt{name}, the default is \texttt{PushPin}.
+% \item \texttt{file}, the file specification \textbf{FS} key
+%\end{itemize}
+% \subsection{Text Box (Free Text) Annotations}
+% Beginning with Free Text
+% \begin{macrocode}
+\DeclareOptionX{preview}{\previewtrue}
+\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+% \end{macrocode}
+% \changes{v1.1}{2016/09/29}{Added \string\texttt{useA10Icons} and \string\texttt{useTextBox} options}
+% (2016/09/29) Added \texttt{useA10Icons} and \texttt{useTextBox} options
+% \begin{macrocode}
+\newif\ifuseAAXdim\useAAXdimtrue
+\DeclareOptionX{useA10Icons}{\useAAXdimtrue}
+\DeclareOptionX{!useA10Icons}{\useAAXdimfalse}
+% \end{macrocode}
+% Require \pkg{richtext}, dated 2016/10/03 or later.
+% \changes{v1.1a}{2016/10/18}{Require \string\pkg{richtext}, dated 2016/10/03 or later.}
+% \changes{v1.1b}{2016/10/18}{Corrected date specification}
+% \begin{macrocode}
+\DeclareOptionX{useTextBox}{\def\ap@requireRichTextAsNeeded{%
+ \RequirePackage{richtext}[2016/10/03]}}
+\let\ap@requireRichTextAsNeeded\relax
+\ProcessOptionsX\relax
+\RequirePackage{hyperref}
+\RequirePackage{calc}
+\RequirePackage{insdljs}
+\RequirePackage[structure]{taborder}
+\ap@requireRichTextAsNeeded
+% \end{macrocode}
+% We see if \textsf{graphicxsp} is loaded, and set a simple switch one way or the other.
+% This switch is later used when creating a custom stamp.
+% \begin{macrocode}
+\@ifpackageloaded{graphicxsp}{%
+ \let\ap@graphicxsp=1}{\let\ap@graphicxsp=0}
+% \end{macrocode}
+% For now, we'll support setting the tab order only if the \pkg{eforms} package is loaded.
+% \begin{macrocode}
+\@ifpackageloaded{eforms}{}
+ {\newif\ifto@structOrder\to@structOrderfalse}
+% \end{macrocode}
+% \cs{csarg} from \pkg{comments} package, handy.
+% \begin{macrocode}
+\def\ap@csarg#1#2{\expandafter#1\csname#2\endcsname}
+% \end{macrocode}
+% Definitions for creating a rectangle used to create a building box for the annot.
+% This switch is later used when creating a custom stamp.
+% \begin{macrocode}
+\def\ap@Bbox#1#2{%
+ \edef\bbox@width{#1}\edef\bbox@height{#2}%
+ \hbox{\ifpreview\setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
+ \@tempdima=\bbox@width\advance\@tempdima by-\fboxrule
+ \@tempdimb=\bbox@height\advance\@tempdimb by-\fboxrule
+ \fbox{\parbox[c][\@tempdimb][c]{\@tempdima}{\hfill\vfill}}\else
+ \parbox[c][\bbox@height][c]{\bbox@width}{\hfill\vfill}\fi}%
+}
+% \end{macrocode}
+% The postscript operators \texttt{pdf@llx}, etc., are defined in \textsf{hyperref}.
+% \begin{macrocode}
+\def\ap@Rect{/Rect [pdf@llx pdf@ury pdf@urx pdf@lly]}
+% \end{macrocode}
+% \begin{macro}{\defineAPath}
+% A simple macro to define path.
+% \begin{macrocode}
+\newcommand{\defineAPath}[1]{\def\ap@ctrl@Name{#1}%
+ \hyper@normalise\ap@defineAPath}
+\def\ap@defineAPath#1{\expandafter\xdef\ap@ctrl@Name{#1}}
+% \end{macrocode}
+% \end{macro}
+% \section{Key-Value Pairs for \texorpdfstring{\protect\cs{annotpro}}{\textbackslash annotpro}}
+% \begin{macro}{type}
+% We support three types of annotation, text, stamp, and fileattachment.
+% \begin{macrocode}
+\define@choicekey+{annotpro}{type}[\val\nr]%
+ {text,stamp,fileattachment,textbox}[text]{%
+ \edef\ap@save@type{\nr}%
+ \ifcase\nr\relax
+ \def\ap@type{Text}\or
+ \def\ap@type{Stamp}\or
+ \def\ap@type{FileAttachment}\or
+ \def\ap@type{FreeText}\fi
+}{\PackageWarning{annot_pro}{Bad choice for type, permissible values
+ are text, stamp, fileattachment, textbox. Try again}}
+\def\ap@freetext@type{3}
+\let\ap@type\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{name}
+% The name key can have many different values. The permitted values are
+% a function of the \texttt{type}.
+% \begin{macrocode}
+\define@key{annotpro}{name}[]{\def\annotpro@name{#1}}
+\let\annotpro@name\@empty
+% \end{macrocode}
+% \end{macro}
+% For a text annotation, the following are permitted values for \texttt{name}:
+% \begin{macrocode}
+\define@choicekey+{annnotprotext}{name}{%
+Comment,Key,Note,Help,NewParagraph,Paragraph,Insert,Check,%
+Circle,Cross,Star,RightArrow,RightPointer,UpArrow,UpLeftArrow,%
+CrossHairs}[Note]{\def\annotpro@@name{#1}}%
+{\PackageWarning{annot_pro}{Bad choice for name, permissible values
+are Comment, Key, Note, Help, NewParagraph, Paragraph, Insert, Check,
+Circle, Cross, Star, RightArrow, RightPointer, UpArrow,
+UpLeftArrow, CrossHairs. Try again}}
+\let\annotpro@@name\@empty
+% \end{macrocode}
+% For a stamp annotation, the following are permitted values for \texttt{name}.
+% \begin{macrocode}
+\define@choicekey+{annnotprostamp}{name}{%
+Approved,AsIs,Confidential,Departmental,Draft,%
+Experimental,Expired,Final,ForComment,%
+ForPublicRelease,NotApproved,NotForPublicRelease,Sold,%
+TopSecret}[Draft]{\def\annotpro@@name{#1}}%
+{\def\ap@custom@name{#1}}
+\let\ap@custom@name\@empty
+% \end{macrocode}
+% If the user enters a value other than the one listed, that value is recorded
+% in the text macro \cs{ap@custom@name}. Usually, the user would enter the
+% names of stamps that come on his system, but are not part of the PDF Specs.
+% \begin{macrocode}
+% \end{macrocode}
+% \begin{macro}{customStamp}
+% There is a third case. The user can create a custom stamp using graphicxsp
+% package.
+% \begin{macrocode}
+\define@key{annotpro}{customStamp}[]{\def\ap@customstamp@name{#1}}
+\let\ap@customstamp@name\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{ap}
+% When the user specifies \texttt{customStamp}, he must supply a custom appearence
+% for the stamp with the \texttt{ap} key. The \textsf{graphicxsp} package is required
+% for this option.
+% \begin{macrocode}
+\define@key{annotpro}{ap}[]{\def\annotpro@ap{#1}}
+\let\annotpro@ap\@empty
+% \end{macrocode}
+% \end{macro}
+% There is a third case. The user can create a custom stamp using graphicxsp
+% package.
+% \begin{macro}{width}
+% \begin{macro}{height}
+% \begin{macro}{rotate}
+% \begin{macro}{scale}
+% \begin{macro}{widthTo}
+% \begin{macro}{heightTo}
+% As of this writing, these are used when the user sets the name key equal
+% to one of the many stamp names that come with Acrobat (other than ones
+% that are documented in the PDF Specs. Use the width and height to set the
+% bounding box. Normally, distiller, will place the largest stamp the box
+% will hold, and center it in that box. (I think.)
+% \begin{macrocode}
+\define@key{annotpro}{width}[]{\def\annotpro@width{#1}}
+\let\annotpro@width\@empty
+\define@key{annotpro}{height}[]{\def\annotpro@height{#1}}
+\let\annotpro@height\@empty
+\define@key{annotpro}{rotate}[]{\def\annotpro@rotate{#1}}
+\let\annotpro@rotate\@empty
+\define@key{annotpro}{scale}[]{\def\annotpro@scale{#1}}
+\let\annotpro@scale\@empty
+\define@key{annotpro}{widthTo}[]{\def\annotpro@widthTo{#1}}
+\let\annotpro@widthTo\@empty
+\define@key{annotpro}{heightTo}[]{\def\annotpro@heightTo{#1}}
+\let\annotpro@heightTo\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% For a file attachment annotation, the following are permitted values for \texttt{name}.
+% \begin{macrocode}
+\define@choicekey+{annnotprofileattach}{name}{%
+Graph,Paperclip,PushPin,Tag}[PushPin]{\def\annotpro@@name{#1}}
+{\PackageWarning{annot_pro}{Bad choice for name, permissible values
+are Graph,Paperclip,PushPin,Tag. Try again}}
+% \end{macrocode}
+% \begin{macro}{file}
+% When there is a file attachment, the absolute path to the file must be
+% specified using the \texttt{file} key. A path to the file can be defined
+% using \cs{defineAPath}.
+% \begin{macrocode}
+\define@key{annotpro}{file}[]{%
+ \edef\annotpro@file{#1}%
+ \ifx\annotpro@file\@empty\else
+ \edef\ap@exp@tmp{\noexpand\filename@parse{#1}}\ap@exp@tmp
+ \edef\ap@thisFileName{\filename@base.\filename@ext}\fi
+}
+\let\annotpro@file\@empty
+\define@key{annotprofreetext}{name}[FreeText]{\def\annotpro@@name{#1}}
+\define@key{annotprofreetext}{defstyle}[]{\def\annotpro@@ds{#1}}
+\let\annotpro@@ds\@empty
+\define@key{annotprofreetext}{richtext}[]{\def\annotpro@@rt{#1}}
+\let\annotpro@@rt\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{margin}
+% \begin{macro}{margintext}
+% \begin{macro}{\margintextformat}
+% When margin is used, the command \cs{marginpar} is used to place the annotation
+% in the margins, this is nice for sticky notes (text annotations), small stamps,
+% and file attachments.
+%
+% You can optionally place (small amount of) text under the icon in the margins. The
+% format for the text can be redefined using the command \cs{margintextformat}.
+% \begin{macrocode}
+\define@key{annotpro}{margin}[0]{%
+ \def\annotpro@margin{0}}
+\let\annotpro@margin\@empty
+\define@key{annotpro}{margintext}[]{%
+ \def\apmargintext{\centering\break
+ \parbox{\linewidth}{\apmargintextformat\strut#1}}}
+\let\apmargintext\@empty
+\newcommand{\margintextformat}[1]{\def\apmargintextformat{#1}}
+\margintextformat{\bfseries\tiny\color{blue}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{presets}
+% A convenience key to allow the introduction of pre-defined options, for example,
+% you might like all your comment fields to be red, so you can define
+% \verb!\def\myComments{type=text,name=Comment,color=red}!, then say
+%\begin{verbatim}
+% \annotpro[presets=\myComment]{Way to go!}
+%\end{verbatim}
+% \begin{macrocode}
+\define@key{annotpro}{presets}[]{\def\annotpro@presets{#1}}
+\let\annotpro@presets\@empty
+% \end{macrocode}
+% Added 07/08/09 to support structure tab order.
+% \end{macro}
+% \begin{macro}{objdef}
+% This is a pdfmark feature that inserts a references to this COS object,
+% used with setting the tab order using the structure. Tabbing using structure
+% is supported by \textsf{eforms}.
+% \begin{macrocode}
+\define@key{annotpro}{objdef}[]{\def\eq@objdef{/_objdef {#1}}%
+ \def\eq@objdefName{#1}}
+\let\eq@objdef\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{taborder}
+% \begin{macrocode}
+\define@key{annotpro}{taborder}[]{\def\eq@taborder{#1}}
+\let\eq@taborder\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{open}
+% A key to set whether the popup annotation is open or not.
+% \begin{macrocode}
+\define@choicekey+{annotpro}{open}[\val\nr]{true,false}[true]{%
+ \def\annotpro@open{#1}}{\PackageWarning{annot_pro}{Bad
+ choice for open, permissible values are true and false. Try again}}
+\def\annotpro@open{false}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{subject}
+% \begin{macro}{title}
+% The subject and title (usually the author's name) of the annotation
+% \begin{macrocode}
+\define@key{annotpro}{subject}[]{\def\annotpro@subject{#1}}
+\define@key{annotpro}{title}[]{\def\annotpro@title{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{color}
+% The color of the annotation.
+% \begin{macrocode}
+\define@key{annotpro}{color}[1 0 0]{\def\annotpro@color{#1}}
+% \end{macrocode}
+% For the FreeText annotation, we can specify background color \IndexOpt{bgcolor}\texttt{bgcolor},
+% (default white) and border color \IndexOpt{bcolor}\texttt{bcolor} (default black).
+% \begin{macrocode}
+\define@key{annotpro}{bgcolor}[]{\def\annotpro@bgcolor{#1}}
+\def\annotpro@bgcolor{white}
+\define@key{annotpro}{bcolor}[]{\def\annotpro@bcolor{#1}}
+\let\annotpro@bcolor\@empty
+\def\annotpro@def@bcolor{black}
+\def\ap@BE@i{4.08768}
+\def\ap@BE@i@calc{\ap@BE@i\space\ap@bwidthNum\space add}
+\def\ap@BE@ii{8.26857}
+\def\ap@BE@ii@calc{\ap@BE@ii\space add \ap@bwidthNum}
+\define@choicekey+{annotpro}{borderstyle}[\val\nr]{none,solid,%
+ dash1,dash2,dash3,dash4,dash5,dash6,cloud1,cloud2}[solid]{%
+ \ifcase\nr\relax
+ \def\ap@border@code{}\or
+ \def\ap@border@code{/BS <</S/S\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc
+ \space\ap@BE@i@calc\space\ap@BE@i@calc]%
+ \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\or
+ \def\ap@border@code{/BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc
+ \space\ap@BE@ii@calc\space\ap@BE@ii@calc]%
+ \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\fi
+ \def\annotpro@border{#1}}{\PackageWarning{annot_pro}{Bad
+ choice for borderstyle,\MessageBreak permissible values are none, solid,%
+ dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6, cloud1, cloud2. Try again}}
+\def\ap@border@code{/BS <</S/S\ap@bwidth>>}
+\define@choicekey+{annotpro}{borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{%
+ \edef\ap@bwidthNum{\val}%
+ \def\ap@bwidth{/W #1}}{\PackageWarning{annot_pro}{Bad
+ choice for borderwidth,\MessageBreak permissible values are .5, 1, 2,\MessageBreak
+ 3, 4, 6, 8, 10. Try again}}
+\def\ap@bwidthNum{1}
+\let\ap@bwidth\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{readonly}
+% Set the annotation to readonly.
+% \begin{macrocode}
+\define@key{annotpro}{readonly}[ 64 add]{\def\ap@readonly{#1}}
+\let\ap@readonly\@empty
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{nohspace}
+% \begin{macro}{nohspace}
+% \begin{macro}{nospace}
+% These are used only with text annotations. The position of the
+% annotation depends only on the upper-right corner. The bounding
+% box can be made to have no width or not height, or both. The upper-left
+% corner is always defined. The text annotation will take no horizontal,
+% vertical, or no space at all in {\TeX} space. The same effect can be accomplished
+% using 0pt width boxes or by smashing the bounding box.
+% \begin{macrocode}
+\define@key{annotpro}{nohspace}[]{\def\annotpro@hspace{0pt}}
+\define@key{annotpro}{novspace}[]{\def\annotpro@vspace{0pt}}
+\define@key{annotpro}{nospace}[]{\def\annotpro@hspace{0pt}%
+ \def\annotpro@vspace{0pt}}
+\let\annotpro@hspace\@empty\let\annotpro@vspace\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{opacity}
+% Set the \texttt{opacity} of the annot, if creating a custom stamp using
+% graphicxsp, then the file needs to be distilled using \texttt{standard\_transparency}
+% job settings for distiller.
+% \begin{macrocode}
+\define@key{annotpro}{opacity}[]{%
+ \def\ap@add@ops{[ /ca #1 /SetTransparency pdfmark}%
+ \def\annotpro@opacity{#1}}
+\let\annotpro@opacity\@empty
+% \end{macrocode}
+% \end{macro}
+% \subsection{Dimensions of Standard Text Icons}
+% Using the user interface, and the dimensions of each of the standard text annotations
+% were obtained and recorded here.
+% \begin{macrocode}
+% Note in A10, text annots are not 18bp x 18bp and A10 adds CrossHairs
+\def\getargsiii#1#2#3{\def\ap@argi{#1}\def\ap@argii{#2}%
+ \def\ap@argiii{#3}}
+\ifuseAAXdim
+\@tfor\ap@text@dimen:={{Comment}{18bp}{18bp}}%
+{{Key}{13bp}{18bp}}{{Note}{18bp}{20bp}}{{Help}{20bp}{20bp}}%
+{{NewParagraph}{13bp}{20bp}}{{Paragraph}{20bp}{20bp}}%
+{{Insert}{17bp}{20bp}}{{Check}{20bp}{19bp}}%
+{{Circle}{20bp}{20bp}}{{Cross}{20bp}{19bp}}%
+{{Star}{20bp}{19bp}}{{RightArrow}{20bp}{20bp}}%
+{{RightPointer}{20bp}{17bp}}{{UpArrow}{17bp}{20bp}}%
+{{UpLeftArrow}{17bp}{17bp}}{{CrossHairs}{20bp}{20bp}}\do{%
+ \expandafter\getargsiii\ap@text@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \else
+\@tfor\ap@text@dimen:={{Comment}{20bp}{18bp}}%
+{{Key}{18bp}{17bp}}{{Note}{18bp}{20bp}}{{Help}{20bp}{20bp}}%
+{{NewParagraph}{13bp}{20bp}}{{Paragraph}{11bp}{20bp}}%
+{{Insert}{20bp}{17bp}}{{Check}{20bp}{19bp}}%
+{{Circle}{20bp}{20bp}}{{Cross}{20bp}{20bp}}%
+{{Star}{20bp}{19bp}}{{RightArrow}{20bp}{14bp}}%
+{{RightPointer}{20bp}{18bp}}{{UpArrow}{19bp}{20bp}}%
+{{UpLeftArrow}{17bp}{17bp}}{{CrossHairs}{24bp}{24bp}}\do{%
+ \expandafter\getargsiii\ap@text@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \fi
+% \end{macrocode}
+% \subsection{Dimensions of Standard File Attachment Icons}
+% Similarly, the dimensions of each of the standard file attachment annotations
+% were obtained and recorded. All these dimensions have been reduced by 2pt, so that there final
+% dimensions match what is displayed through the ui.
+% \begin{macrocode}
+\ifuseAAXdim
+\@tfor\ap@fa@dimen:={{Graph}{20bp}{20bp}}
+ {{Paperclip}{7bp}{17bp}}{{PushPin}{14bp}{20bp}}
+ {{Tag}{20bp}{16bp}}\do{%
+ \expandafter\getargsiii\ap@fa@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\else
+\@tfor\ap@fa@dimen:={{Graph}{18bp}{18bp}}
+ {{Paperclip}{5bp}{15bp}}{{PushPin}{12bp}{18bp}}
+ {{Tag}{18bp}{14bp}}\do{%
+ \expandafter\getargsiii\ap@fa@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \fi
+% \end{macrocode}
+% \subsection{Dimensions of Standard Stamp Appearances}
+%
+% Some default stamp dimensions, when the dimensions are not known or provided. May be
+% redefined.
+% \begin{macrocode}
+\newcommand{\defaultStampWidth}{50bp}
+\newcommand{\defaultStampHeight}{50bp}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{Standard.pdf}
+% \begin{macrocode}
+\newcommand{\standardStampWidth}{245.38bp}
+\newcommand{\standardStampHeight}{64.53bp}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{StandardBusiness.pdf}
+% \begin{macrocode}
+\@tfor\ap@dimen:={{SBApproved}{163.50bp}{49.50bp}}
+{{SBCompleted}{175.87bp}{49.50bp}}
+{{SBConfidential}{209.62bp}{49.50bp}}
+{{SBDraft}{113.14bp}{49.75bp}}
+{{SBFinal}{97.80bp}{49.75bp}}
+{{SBForComment}{211.87bp}{49.50bp}}
+{{SBForPublicRelease}{290.04bp}{49.55bp}}
+{{SBInformationOnly}{275.00bp}{49.55bp}}
+{{SBNotApproved}{218.62bp}{49.50bp}}
+{{SBNotForPublicRelease}{346.04bp}{49.55bp}}
+{{SBPreliminaryResults}{304.04bp}{49.55bp}}
+{{SBVoid}{91.04bp}{49.75bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{SignHere.pdf}
+% \begin{macrocode}
+\@tfor\ap@dimen:={{SBRejected}{22.68bp}{22.66bp}}
+{{SHAccepted}{23.29bp}{20.45bp}}
+{{SHInitialHere}{99.69bp}{30.34bp}}
+{{SHSignHere}{99.69bp}{30.34bp}}
+{{SHWitness}{99.69bp}{30.34bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{\texttt{Dynamic.pdf}}
+% \begin{macrocode}
+\catcode`\#=11\relax
+\@tfor\ap@dimen:={{#DApproved}{255.64bp}{53.83bp}}
+{{#DConfidential}{163.28bp}{57.10bp}}
+{{#DReceived}{255.64bp}{55.11bp}}
+{{#DReviewed}{255.64bp}{55.11bp}}
+{{#DRevised}{127.47bp}{55.85bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\catcode`\#=6\relax
+\newcommand{\stampWidth}[1]{\csname ap@#1Width\endcsname}
+\newcommand{\stampHeight}[1]{\csname ap@#1Height\endcsname}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file Words.pdf
+% \begin{macrocode}
+\@tfor\ap@dimen:={{WordsAGenuineFind}{120.68bp}{190.83bp}}
+{{WordsBigSavings}{282.84bp}{117.86bp}}
+{{WordsDeals}{345.40bp}{132.55bp}}
+{{WordsHappyBirthday}{326.50bp}{166.32bp}}
+{{WordsHot}{249.64bp}{176.75bp}}
+{{WordsLookWhatsNew}{316.59bp}{229.81bp}}
+{{WordsNeato}{171.12bp}{86.88bp}}
+{{WordsTheBestJustGotBetter}{153.53bp}{153.53bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{Faces.pdf}
+% \begin{macrocode}
+\@tfor\ap@dimen:={{FacesEcstatic}{223.20bp}{202.80bp}}
+{{FacesElectric}{295.80bp}{280.50bp}}
+{{FacesGrumpy}{289.92bp}{194.64bp}}
+{{FacesHappy}{161.65bp}{161.65bp}}
+{{FacesHurt}{289.50bp}{285.75bp}}
+{{FacesNeutral}{291.04bp}{279.32bp}}
+{{FacesSmirk}{276.75bp}{292.50bp}}
+{{FacesSurprised}{220.08bp}{215.04bp}}
+{{FacesWorried}{298.11bp}{235.12bp}}
+{{FacesWow}{242.32bp}{289.17bp}}
+{{FacesZippy}{290.59bp}{263.81bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+% \end{macrocode}
+% The dimensions of the stamp appearances in the file \texttt{Pointers.pdf}
+% \begin{macrocode}
+\@tfor\ap@dimen:={{PointersBogus}{128.32bp}{53.82bp}}
+{{PointersBug}{128.32bp}{51.94bp}}
+{{PointersDOA}{136.99bp}{51.48bp}}
+{{PointersFYEO}{128.32bp}{48.60bp}}
+{{PointersFix}{145.60bp}{58.11bp}}
+{{PointersNuke}{128.32bp}{52.30bp}}
+{{PointersOptimize}{128.32bp}{48.60bp}}
+{{PointersRedFlag}{128.32bp}{57.12bp}}
+{{PointersValidate}{128.32bp}{48.60bp}}
+{{PointersWarning}{128.32bp}{57.23bp}}
+{{PointersWhen}{128.32bp}{63.79bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+% \end{macrocode}
+% \subsection{Default dimensions of Free Text annotation}
+% \begin{macrocode}
+\def\ap@FreeTextWidth{144bp}
+\def\ap@FreeTextHeight{72bp}
+% \end{macrocode}
+% \begin{macro}{\makeStamp}
+% A command to help the creation of custom stamps using graphicxsp. You've got to see it
+% to believe it.
+% \begin{macrocode}
+\newcommand{\makeStamp}[3]{%
+\ap@csarg\def{stamp@#2}{%
+ \begin{sp@createImage}{#1}{#2\the\ap@cusstamp@cnt}
+ \ap@add@ops#3
+ \end{sp@createImage}}}
+\let\ap@add@ops\@empty
+% \end{macrocode}
+% \end{macro}
+% This command is used internal in \cs{annotpro} to generate an appearance for
+% the stamp.
+% \begin{macrocode}
+\newcommand{\ap@useStamp}[1]{%
+ \global\advance\ap@cusstamp@cnt1\relax
+ \@nameuse{stamp@#1}}
+% \end{macrocode}
+% \begin{macro}{\setAnnotOptions}
+% A command for setting global options.
+% \begin{macrocode}
+\newcommand{\setAnnotOptions}[1]{%
+ \setkeys{annotpro}{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% The following code is taken from the \textsf{datetime} package (and modified) as maintained by
+% Nicola Talbot. There is no need for the whole package, we just need
+% \cs{pdfdate}, named \cs{ap@pdfdate} in \textsf{annot\_pro}. We make all calculations in a group.
+%\changes{v1.0a}{2011/07/14}{Added \cs{ap@pdfdate}}
+% \begin{macrocode}
+\begingroup
+\def\withoptz@#1{\ifnum#1<10 0\fi\the#1}
+\edef\ap@pdfdate{\the\year\withoptz@\month\withoptz@\day}
+% \end{macrocode}
+% Calculate the minutes after the hour time by dividing by 60.
+% \begin{macrocode}
+\count0=\time \count2=\count0
+% \end{macrocode}
+% Calculate the number of hours after midnight by dividing by 60
+% \begin{macrocode}
+\divide\count2by60
+\edef\ap@pdfdate{\ap@pdfdate\withoptz@{\count2}}
+\multiply\count2by60 \advance\count0by-\count2
+\xdef\ap@pdfdate{\ap@pdfdate\withoptz@{\count0}00}
+\endgroup
+% \end{macrocode}
+% \section{The main code}
+% \begin{macrocode}
+\newcount\ap@annot@cnt
+\newcount\ap@cusstamp@cnt
+{\catcode`\#=12\gdef\ap@signalCustomAP{#}}
+\def\pStamp#1{\ap@signalCustomAP#1}
+% \end{macrocode}
+% \begin{macrocode}
+\def\ap@RV@Body{<?xml version="1.0"?><body %
+ xfa:APIVersion="Acrobat:9.5.5" %
+ xfa:contentType="text/html" %
+ xfa:spec="2.0.2" xmlns="http://www.w3.org/1999/xhtml" %
+ xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
+\def\ap@RV@endBody{<body>}
+% \end{macrocode}
+% The implementation of rich text in a FreeText annotation is a little different from
+% that of a rich text form field. We made some adjustments here for an annotation.
+% \begin{macrocode}
+\def\ap@sub#1{\rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}%
+\def\ap@sup#1{\rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}%
+\def\ap@uDec#1{\rt@amp\rt@hashtag#1;}
+\def\ap@uHex#1{\rt@amp\rt@hashtag x#1;}
+\def\ap@afterParaFont{%
+% \end{macrocode}
+% Cancel out certain attributes that are not used in annotation.
+% \begin{macrocode}
+ \rt@formfieldfalse
+}
+\def\ap@afterFont{%
+ \rt@formfieldfalse
+ \let\rt@url\@empty
+}
+% \end{macrocode}
+% \begin{environment}{textboxpara}
+% \begin{macrocode}
+\newenvironment{textboxpara}{%
+ \let\rt@sub\ap@sub\let\rt@sup\ap@sup
+ \let\rt@afterParaFont\ap@afterParaFont
+ \let\rt@afterFont\ap@afterFont
+ \def\rt@br{\rvorvstring{\rt@amp\rt@hashtag13;}{\string\r}}%
+ \def\rt@spc{\space}\let\uDec\ap@uDec\let\uHex\ap@uHex
+}{}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\annotpro}
+% Here is the main command of this package, the first optional parameter
+% are key-value pairs, as defined above; the second parameter is the content
+% of the message. File attachments have not popup message, so the content
+% becomes the description of the attachment in the attachments panel; hence,
+% in this case, the length of the message should be short.
+% \begin{macrocode}
+\newcommand{\annotpro}{%
+ \begingroup
+% \end{macrocode}
+% Some of the stamp names begin with \texttt{\#}, the user must use
+% \verb!\#!
+% \begin{macrocode}
+ \let\#\ap@signalCustomAP
+ \@nnotpro
+}
+\newcommand{\@nnotpro}[1][]{%
+% \end{macrocode}
+% Increment a global counter, to count the annots as we create them.
+% \begin{macrocode}
+ \global\advance\ap@annot@cnt1\relax
+% \end{macrocode}
+% Process options
+% \begin{macrocode}
+ \setkeys{annotpro}{#1}%
+ \@nn@tpro
+}
+\newcommand{\@nn@tpro}[1]
+{%
+% \end{macrocode}
+% See if there were any presets, if so, expand them, and apply
+% \cs{setkeys} again.
+% \begin{macrocode}
+ \ifx\annotpro@presets\@empty\else
+ \edef\ap@exp@tmp{\noexpand\setkeys{annotpro}{\annotpro@presets}}%
+ \ap@exp@tmp\fi
+% \end{macrocode}
+% If no type was specified, assume \texttt{Text}.
+% \cs{setkeys} again.
+% \begin{macrocode}
+ \ifx\ap@type\@empty\def\ap@type{Text}\def\ap@save@type{0}\fi
+% \end{macrocode}
+% Now get the value of the name parameter, permissible values depend
+% on the stated \texttt{type}.
+% \begin{macrocode}
+ \ifcase\ap@save@type\relax
+ \def\annot@subtype{annnotprotext}%
+ \ifx\annotpro@subject\@empty\def\annotpro@subject{Sticky Note}\fi
+ \ifx\annotpro@name\@empty\def\annotpro@name{Note}\fi
+ \def\ap@def@name{Note}\or
+ \ifx\annotpro@subject\@empty\def\annotpro@subject{Rubber Stamp}\fi
+ \def\annot@subtype{annnotprostamp}%
+ \def\ap@def@name{Draft}\or
+ \ifx\annotpro@subject\@empty
+ \def\annotpro@subject{File Attachment}\fi
+ \def\annot@subtype{annnotprofileattach}%
+ \def\ap@def@name{PushPin}\or
+ \ifx\annotpro@subject\@empty
+ \def\annotpro@subject{Text Box}\fi
+ \def\annot@subtype{annotprofreetext}%
+ \def\ap@def@name{FreeText}%
+ \fi
+% \end{macrocode}
+% Get the name!
+% \begin{macrocode}
+ \edef\ap@exp@tmp{%
+ \noexpand\setkeys{\annot@subtype}{name=\annotpro@name}}%
+ \ap@exp@tmp\xdef\ap@def@type{\ap@type}%
+% \end{macrocode}
+% Encode text for contents, title, subject, and color; here \textsf{hyperref}
+% commands are used.
+% \begin{macrocode}
+ \let\annotpro@enc@contents\@empty
+% \end{macrocode}
+% \changes{v1.0b}{2012/11/10}{Included \cs{makespecialJS}}
+% We'll use \cs{makespecialJS} here.
+% \begin{macrocode}
+ \makespecialJS
+% \end{macrocode}
+% If this is a FreeText annot, we get the rich text and default style from \texttt{\#1}.
+% Supported keys are richtext and defstyle. The values of these keys are names defined
+% by \cs{setRVVContents} and \cs{setDefaultStyle}. If \texttt{defstyle} is not specified, we
+% use \cs{useDefaultDS}.
+% \begin{macrocode}
+\if\ap@save@type\ap@freetext@type
+ \let\eq@RV@Body\ap@RV@Body\let\eq@RV@endBody\ap@RV@endBody
+ \setkeys{annotprofreetext}{#1}%
+ \ifx\annotpro@@ds\@empty
+ \def\ap@defaultstyle{\useDefaultDS}\else
+ \edef\ap@defaultstyle{\noexpand\useDS{\annotpro@@ds}}\fi
+ \ifx\annotpro@@rt\@empty
+ \let\annotpro@RC\@empty\let\annotpro@C\@empty\else
+ \edef\annotpro@RC{\noexpand\useRVContent{\annotpro@@rt}}%
+ \edef\annotpro@C{\noexpand\useVContent{\annotpro@@rt}}\fi
+% \end{macrocode}
+% If this is a FreeText annot, we define its rich and plain values; requires \pkg{richtext} package
+% \begin{macrocode}
+\else
+ \pdfstringdef\annotpro@enc@contents{#1}%
+\fi
+ \let\annotpro@enc@title\@empty
+ \pdfstringdef\annotpro@enc@title{\annotpro@title}%
+ \let\annotpro@enc@subject\@empty
+ \pdfstringdef\annotpro@enc@subject{\annotpro@subject}%
+% \end{macrocode}
+% Color handling for \texttt{color}, \texttt{bgcolor}, and \texttt{bcolor} via \pkg{hycolor} package
+% \begin{macrocode}
+ \HyColor@XZeroOneThreeFour{\annotpro@color}%
+ {\annotpro@enc@color}{annotpro}{color}%
+\ifx\annotpro@bgcolor\@empty\else
+ \HyColor@XZeroOneThreeFour{\annotpro@bgcolor}
+ {\annotpro@enc@bgcolor}{annotpro}{bgcolor}\fi
+\ifx\annotpro@bcolor\@empty
+ \edef\annotpro@bcolor{\annotpro@def@bcolor}\fi
+ \HyColor@FieldColor{\annotpro@bcolor}
+ {\annotpro@enc@bcolor}{annotpro}{bcolor}%
+% \end{macrocode}
+% Initialize some commands to be used later
+% \begin{macrocode}
+ \let\ap@this@AP\@empty\let\ap@this@FS\@empty\let\ap@this@CA\@empty
+ \let\ap@this@Rotate\@empty
+% \end{macrocode}
+% See if opacity is requested, and set appropriate key.
+% \begin{macrocode}
+ \ifx\annotpro@opacity\@empty\else
+ \def\ap@this@CA{/CA \annotpro@opacity}\fi
+% \end{macrocode}
+% Now, perform annotation specific tasks such as setting the
+% bounding box.
+% \begin{macrocode}
+ \ifcase\ap@save@type
+% \end{macrocode}
+% \textbf{Text annotation.} We use the pre-defined dimensions for
+% these text icons, unless the user has specified \texttt{nohspace},
+% \texttt{novspace}, and \texttt{nospace}. If the name has not been
+% specified, we use the default (\texttt{Note}).
+% \begin{macrocode}
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \edef\ap@thisWidth{\ifx\annotpro@hspace\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@hspace\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@vspace\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@vspace\fi}%
+% \end{macrocode}
+% \textbf{Stamp annotation.} This is a bit trickier, there are three
+% cases: (1) the user references a standard stamp; (2) the user
+% references a non-standard stamp, one that ships with Acrobat; (3)
+% the user wants to create his own custom stamp using
+% \textsf{graphicxsp} techniques.
+% \begin{macrocode}
+ \or
+ \ifx\annotpro@@name\@empty
+ \ifx\ap@custom@name\@empty
+ \ifx\ap@customstamp@name\@empty
+% \end{macrocode}
+% Neither \texttt{name} nor \texttt{customStamp} was specified, so we assume the default.
+% \begin{macrocode}
+ \ifx\annotpro@@name\@empty
+ \edef\annotpro@@name{\ap@def@name}\fi
+ \edef\ap@thisWidth{\standardStampWidth}%
+ \edef\ap@thisHeight{\standardStampHeight}%
+ \else
+% \end{macrocode}
+% Here the user wants a stamp using \textsf{graphicxsp} techniques.
+% \begin{macrocode}
+ \if\ap@graphicxsp0\PackageError{annot_pro}%
+ {Specifying a custom name for a stamp requires
+ the graphicxsp package.}\fi
+ \ifx\annotpro@ap\@empty
+ \PackageError{annot_pro}{You must specify a value
+ for the ap key}\fi
+ \def\ap@ImageRef{\annotpro@ap\the\ap@cusstamp@cnt}%
+ \expandafter\ap@useStamp\expandafter{\annotpro@ap}%
+% \end{macrocode}
+% After making many experiments, there seems to be a need to
+% reduce dimensions by \texttt{2bp} so that the desired dimensions
+% are displayed through the user interface. There seems to
+% be an 1bp border around all stamps.
+% \begin{macrocode}
+ \edef\ap@thisWidth{\widthOf{\ap@ImageRef}bp}%
+ \@tempdima=\ap@thisWidth\advance\@tempdima-2bp
+ \edef\ap@thisWidth{\the\@tempdima}%
+ \edef\ap@thisHeight{\heightOf{\ap@ImageRef}bp}%
+ \@tempdima=\ap@thisHeight\advance\@tempdima-2bp
+ \edef\ap@thisHeight{\the\@tempdima}%
+ \def\ap@this@AP{/AP << /N {\ap@ImageRef} >>}%
+ \edef\annotpro@@name{%
+ \ap@signalCustomAP\ap@customstamp@name}%
+ \fi
+ \else
+% \end{macrocode}
+% The command \cs{ap@custom@name} is non-empty, so the user it trying
+% to access a stamp on his own system. The user has indicated one of
+% the stamps documented in the PDF Reference, these all have the same
+% dimension
+%
+% For the bounding box, we use \cs{defaultStampWidth} by
+% \cs{defaultStampHeight} as the dimensions, unless the values of
+% \texttt{width} and/or \texttt{height} are specified.
+% \begin{macrocode}
+ \edef\annotpro@@name{\ap@custom@name}%
+ \@ifundefined{ap@\ap@custom@name Width}{%
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \defaultStampWidth\else\annotpro@width\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \defaultStampWidth\else\annotpro@height\fi}%
+ }{%
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@width\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@height\fi}%
+ }%
+ \fi
+ \else
+% \end{macrocode}
+% This is the case of specifying one of the document stamps, as
+% listed in the PDF Reference.
+% \begin{macrocode}
+ \edef\ap@thisWidth{\standardStampWidth}%
+ \edef\ap@thisHeight{\standardStampHeight}%
+ \fi
+% \end{macrocode}
+% Let's use calc to allow for calculations on dimensions,
+% with this, we can conveniently resize the box.
+% \begin{macrocode}
+ \ifx\annotpro@scale\@empty
+ \ifx\annotpro@widthTo\@empty
+ \ifx\annotpro@heightTo\@empty\else % heightTo
+ \edef\ap@thisWidth{%
+ (\ap@thisWidth)*\noexpand
+ \ratio{\annotpro@heightTo}{\ap@thisHeight}}%
+ \edef\ap@thisHeight{\annotpro@heightTo}%
+ \fi
+ \else % widthTo
+ \edef\ap@thisHeight{%
+ (\ap@thisHeight)*\noexpand
+ \ratio{\annotpro@widthTo}{\ap@thisWidth}}%
+ \edef\ap@thisWidth{\annotpro@widthTo}%
+ \fi
+ \else %scale
+ \edef\ap@thisWidth{(\ap@thisWidth)*\noexpand
+ \real{\annotpro@scale}}%
+ \edef\ap@thisHeight{(\ap@thisHeight)*\noexpand
+ \real{\annotpro@scale}}%
+ \fi
+ \setlength{\@tempdima}{\ap@thisWidth}%
+ \edef\ap@thisWidth{\the\@tempdima}%
+ \setlength{\@tempdima}{\ap@thisHeight}%
+ \edef\ap@thisHeight{\the\@tempdima}%
+ \ifx\annotpro@rotate\empty\else
+ \def\ap@this@Rotate{/Rotate \annotpro@rotate}%
+ \ap@set@Rotate@BBox
+ \fi
+ \or
+% \end{macrocode}
+% \textbf{File Attachment annotation.} There are only a few icons for
+% file attachments, and I've determined their dimensions using the user
+% interface. So, we use those.
+%
+% If a name has not been specified, we use the default (\texttt{PushPin}).
+% \begin{macrocode}
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \ifx\annotpro@file\@empty\PackageError{annot_pro}%
+ {You must specify a path the file to be
+ attached using the file key.}\fi
+% \end{macrocode}
+% Set the \textbf{FS} key to specify the file.
+% \begin{macrocode}
+ \def\ap@this@FS{/FS {apEmbedFile\the\ap@annot@cnt}}%
+ \edef\ap@thisWidth{\@nameuse{ap@\annotpro@@name Width}}%
+ \edef\ap@thisHeight{\@nameuse{ap@\annotpro@@name Height}}%
+ \ap@EmbedThisFile
+ \or
+% \end{macrocode}
+% \textbf{Free text annotation.}
+% \begin{macrocode}
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \ifx\annotpro@width\@empty\else
+ \setlength\@tempdima{\annotpro@width}%
+ \def\annotpro@width{\the\@tempdima}\fi
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@width\fi}%
+ \ifx\annotpro@height\@empty\else
+ \setlength\@tempdima{\annotpro@height}%
+ \def\annotpro@height{\the\@tempdima}\fi
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@height\fi}%
+ \fi
+% \end{macrocode}
+% if \texttt{margin} is specified, we insert a \cs{marginpar} here.
+% \begin{macrocode}
+ \ifx\annotpro@margin\@empty\let\apmargintext\@empty
+ \expandafter\relax\else\expandafter\marginpar\fi
+% \end{macrocode}
+% Set the bounding box, and layout the annotation using the \textbf{pdfmark} operator.
+% \begin{macrocode}
+ {\pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{%
+ [ \eq@objdef\ap@Rect
+ /F 4\ap@readonly
+ /Open \annotpro@open
+ /Title (\annotpro@enc@title)
+ /Subj (\annotpro@enc@subject)
+% \end{macrocode}
+% We have different set of keys for FreeText when for the other annotation types.
+% \begin{macrocode}
+\if\ap@save@type\ap@freetext@type
+% \end{macrocode}
+% The definitions of \cs{eq@RV@Body} and \cs{eq@RV@endBody} come from \pkg{richtext}, originally from
+% \pkg{eforms}. The \psf{RC} and \psf{Contents} keys get their entries from \cs{annotpro@RC} and
+% \cs{annotpro@C}, which are acquired from the \pkg{richtext} package.
+% \begin{macrocode}
+ /RC(\eq@RV@Body\annotpro@RC\eq@RV@endBody)
+ /Contents (\annotpro@C)
+ /DS (\ap@defaultstyle)
+ \ifx\annotpro@bgcolor\@empty\else
+ /C [\annotpro@enc@bgcolor]\fi
+ /DA (\annotpro@enc@bcolor\space/Helv 12 Tf)
+ \ap@border@code
+\else
+ /Open \annotpro@open
+ /Contents (\annotpro@enc@contents)
+ /Color [\annotpro@enc@color]
+\fi
+% \end{macrocode}
+% \changes{v1.0a}{2011/07/14}{Changed the value of the \texttt{/Name} key.}
+% Changed the value of \texttt{/Name} form a name to a string
+% \begin{macrocode}
+ /Name (\annotpro@@name)
+ /Subtype/\ap@type
+ /NM (annotpro\the\ap@annot@cnt)
+ /M (D:\ap@pdfdate)
+ \ap@this@AP\ap@this@FS\ap@this@CA\ap@this@Rotate
+ /ANN pdfmark}\apmargintext}%
+ \to@insertStrucTabOrder{Annot}\endgroup
+}
+% \end{macrocode}
+% \end{macro}
+% When the user specifies the rotate key, we need to enlarge the
+% bounding box so the stamp can be rotated within that box.
+% \begin{macrocode}
+\def\ap@set@Rotate@BBox{%
+ \CalculateSin\annotpro@rotate\CalculateCos\annotpro@rotate
+ \edef\c@cos{\UseCos\annotpro@rotate}%
+ \edef\c@sin{\UseSin\annotpro@rotate}%
+% \end{macrocode}
+% Determine the quadrant i or iii versus ii or iv
+% \begin{macrocode}
+ \@tempdimb=\c@cos pt
+ \@tempdimb=\c@sin\@tempdimb
+ \let\ap@sign\@empty
+ \ifdim\@tempdimb<\z@\def\ap@sign{-}\fi
+% \end{macrocode}
+%What we are doing is calculating the \emph{smallest rectangle} whose sides are parallel
+%to the horizontal and vertical, that contained the rotated stamp. We use this computed
+%rectangle as the bounding rectangle of the rectangle.
+%
+%The basic algorithm is as follows:
+% If the angle is in the first or third quadrant, we use
+%\begin{align*}
+% \text{width} &=\text{width}'\cos(\theta)+\text{height}'\sin(\theta)\\
+% \text{height} &=\text{width}'\sin(\theta)+\text{height}'\cos(\theta)
+%\end{align*}
+%else, we use
+%\begin{align*}
+% \text{width} &=-\text{width}'\cos(\theta)+\text{height}'\sin(\theta)\\
+% \text{height}&=\text{width}'\sin(\theta)-\text{height}'\cos(\theta)
+%\end{align*}
+% where, $\text{width}'$ and $\text{height}'$ are the original width and height of the bounding rectangle,
+% and $\text{width}$ and $\text{height}$ are the new dimensions of the rectangle, after rotation through
+% an angle of $\theta$.
+% \paragraph*{Width calculation.} Width held in \cs{ap@temp@thisWidth}.
+% \begin{macrocode}
+ \@tempdima=\ap@sign\ap@thisWidth
+ \@tempdima=\c@cos\@tempdima
+ \@tempdimb=\ap@thisHeight
+ \@tempdimb=\c@sin\@tempdimb
+ \advance\@tempdima by\@tempdimb
+ \edef\ap@temp@thisWidth{\the\@tempdima}%
+% \end{macrocode}
+% \paragraph*{Height calculation.} Final height held is \cs{@tempdima}.
+% \begin{macrocode}
+ \@tempdima=\ap@thisWidth
+ \@tempdima=\c@sin\@tempdima
+ \@tempdimb=\ap@thisHeight
+ \@tempdimb=\c@cos\@tempdimb
+ \advance\@tempdima by\ap@sign\@tempdimb
+% \end{macrocode}
+% Any negative dimensions are changed to positive.
+% \begin{macrocode}
+ \@tempdimb=\ap@temp@thisWidth\relax
+ \ifdim\@tempdimb<\z@\@tempdimb=-\the\@tempdimb\fi
+ \ifdim\@tempdima<\z@\@tempdima=-\the\@tempdima\fi
+% \end{macrocode}
+% Here are the final calculations, \cs{ap@thisWidth} and \cs{ap@thisHeight}.
+% \begin{macrocode}
+ \edef\ap@thisWidth{\the\@tempdimb}%
+ \edef\ap@thisHeight{\the\@tempdima}%
+}
+% \end{macrocode}
+% Some code for embedding a file in the PDF document.
+% \begin{macrocode}
+\def\ap@EmbedThisFile{%
+ \literalps@out{%
+ [ /_objdef {apEmbedFile\the\ap@annot@cnt}/type/dict/OBJ pdfmark
+ [ {apEmbedFile\the\ap@annot@cnt} <<
+ /F (\ap@thisFileName)
+ /UF (\ap@thisFileName)
+ /EF << /F {apFileStream\the\ap@annot@cnt} >>
+ /Type/Filespec
+ >> /PUT pdfmark}%
+ \literalps@out{%
+ [ /_objdef {apFileStream\the\ap@annot@cnt}/type/stream/OBJ pdfmark
+ [ {apFileStream\the\ap@annot@cnt} (\annotpro@file)
+ (r) file /PUT pdfmark
+ [ {apFileStream\the\ap@annot@cnt} <<
+ /Type/EmbeddedFile
+ >> /PUT pdfmark
+ [ {apFileStream\the\ap@annot@cnt} /CLOSE pdfmark}%
+}
+% \end{macrocode}
+% Set global options for this package.
+% \begin{macrocode}
+\setAnnotOptions{title,subject,open=false,color}
+%</package>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/texmf-dist/source/latex/annot-pro/annot_pro.ins b/texmf-dist/source/latex/annot-pro/annot_pro.ins
new file mode 100644
index 00000000..db093b1d
--- /dev/null
+++ b/texmf-dist/source/latex/annot-pro/annot_pro.ins
@@ -0,0 +1,63 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2006 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2009/02/26}
+\def\batchfile{annot_pro.ins}
+%
+% If you can assume that the target audience for the document all have
+% Acrobat Reader 5.0 or later, then chance the following switch to true,
+% else, leave it as false.
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate{%
+ \file{annot_pro.sty}{\from{annot_pro.dtx}{copyright,package}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex b/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex
new file mode 100644
index 00000000..167bc0ea
--- /dev/null
+++ b/texmf-dist/source/latex/annot-pro/doc/annotpro_man.tex
@@ -0,0 +1,1120 @@
+%
+% http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf
+%
+% makeindex < aebpro_man.idx > aebpro_man.ind
+\documentclass[12pt]{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[
+ web={centertitlepage,designv,tight*,
+ forcolorpaper,latextoc,extended},
+ aebxmp,eforms,graphicxsp={showembeds}
+]{aeb_pro}
+\usepackage{array}
+\usepackage{aeb_mlink}
+%\usepackage{myriadpro} %[usecmtt]
+\usepackage[altbullet]{lucidbry}
+\usepackage{annot_pro}
+\usepackage{richtext}
+
+\DeclareInitView
+{%
+ layoutmag={mag=100},
+% windowoptions={fit}
+}
+
+%\useAAXdimtrue
+
+\usepackage{makeidx}
+\makeindex
+\usepackage{acroman}
+
+\usepackage[active]{srcltx}
+
+\def\expath{../examples}
+
+\urlstyle{rm}
+\def\pkg{\textsf}
+\let\app\textsf
+\let\opt\texttt
+\let\uif\textsf
+\let\env\texttt
+\def\meta#1{\textit{\texttt{#1}}}
+\def\ameta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\newdimen\aebdimen \aebdimen6pt %\partopsep \advance\aebdimen\partopsep
+\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}%
+\def\eVerb{\vskip\aebdimen\endgroup\noindent}
+\def\SUB#1{\ensuremath{{}_{\text{#1}}}}
+
+\def\darg#1{\texttt{\{#1\}}}
+\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei}
+\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup}
+\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule}
+\let\amtIndent\leftmargini
+
+%\def\tutpath{doc/tutorial}
+%\def\tutpathi{tutorial}
+
+\DeclareDocInfo
+{
+ university={\AcroTeX.Net},
+ title={The \texorpdfstring{\textsf{annot\_pro} Package\\[1em]}{annot\textunderscore pro Package: }
+ Text, Stamp, File Attachment, and Text Box Annotations},
+ author={D. P. Story},
+ email={dpstory@acrotex.net},
+ subject={Documentation for annot\textunderscore pro from AcroTeX},
+ talksite={\url{www.acrotex.net}},
+ version={1.1b, 2016/10/18},
+ keywords={sticky notes, stamps, file attachment text box, free text, annotations},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL={http://www.acrotex.net}
+}
+
+\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+\universityLayout{fontsize=Large}
+\titleLayout{fontsize=LARGE}
+\authorLayout{fontsize=Large}
+\tocLayout{fontsize=Large,color=aeb}
+\sectionLayout{indent=-40pt,fontsize=large,color=aeb}
+\subsectionLayout{indent=-20pt,color=aeb}
+\subsubsectionLayout{indent=0pt,color=aeb}
+\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}}
+
+\embedEPS[hiresbb,transparencyGroup]{AdobeDon}{../examples/graphics/AdobeDon}
+
+\makeStamp{0.0 0.0 20.0 20.0}{AdobeDon}{%
+ [ 20 \widthOf{AdobeDon} div 20 \widthOf{AdobeDon} div scale {AdobeDon} /SP pdfmark
+}
+
+\makeatletter
+\def\setDisplayNumber#1#2{\kern0pt
+ \setlength\abovedisplayshortskip{0pt}%
+ \setlength\belowdisplayshortskip{0pt}%
+ \setlength\abovedisplayskip{0pt}%
+ \setlength\belowdisplayskip{0pt}%
+ \begin{equation}\label{#2}\end{equation}\kern0pt
+}
+\renewenvironment{quote}[1][]
+ {\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\rghtm\@empty\else\def\rghtm{\rightmargin\leftmargin}\fi
+ \list{}{\rghtm} %{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+\renewcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont #1}
+\setcounter{secnumdepth}{4}
+\setcounter{tocdepth}{5}
+\renewcommand*{\theparagraph}{\texorpdfstring{\protect\P\protect\ }{\textparagraph}}
+\renewcommand{\paragraph}
+ {\renewcommand{\@seccntformat}[1]{\theparagraph}%
+ \@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\color{\aeb@subsubsectioncolor}\bfseries}}
+\renewcommand*\l@paragraph{\@dottedtocline{4}{5.0em}{1em}} %{7.0em}{4.1em}}
+\def\chgCurrLblName#1{\def\@currentlabelname{#1}}
+\def\echgCurrLblName#1{\edef\@currentlabelname{#1}}
+\makeatother
+
+
+\setAnnotOptions{subject={AcroTeX Communiqu\'e},title={D.P. Story}}
+
+%\pagestyle{empty}
+%\parindent0pt\parskip\medskipamount
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="The annot_pro MANUAL";
+var manualfilename="Manual_BG_Print_annotpro.pdf";
+var manualtemplate="Manual_BG_Brown.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=false;
+if ( buildIt ) {
+ console.println("Creating new " + manualfilename + " file.");
+ doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+ var _path=this.path;
+ var pos=_path.lastIndexOf("/");
+ _path=_path.substring(0,pos)+"/"+manualfilename;
+ \docSaveAs\newDO ({ cPath: _path });
+ doc.closeDoc();
+ doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+ f=doc.getField("ManualTitle");
+ f.value=titleOfManual;
+ doc.flattenPages();
+ \docSaveAs\newDO({ cPath: manualfilename });
+ doc.closeDoc();
+} else {
+ console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+ bOnTop:false,
+ bOnPrint:false,
+ cDIPath:_path
+});
+\executeSave();
+\end{docassembly}
+\begin{document}
+
+\maketitle
+
+\selectColors{linkColor=black}
+\tableofcontents
+\selectColors{linkColor=webgreen}
+
+\section{Introduction}
+
+This package is used to create text, stamp, and file attachment
+annotations using \textbf{Adobe Distiller}, these annotations can be
+viewed in Adobe Reader. For users of \textsf{pdf(la)tex}, use the
+\textsf{pdfcomment} package by Josef Kleber.\footnote{Available at \href{http://ctan.org/pkg/pdfcomment}{ctan.org/pkg/pdfcomment}}
+
+The package primarily in support of my \href{http://www.math.uakron.edu/~dpstory}
+{{Acro\negthinspace\TeX} PDF Blog}. I plan to use sticky notes, file attachments, and
+custom stamps to make side-comments, and to provide source files.
+
+\section{Requirements}
+
+The requirements for your {\LaTeX} system, and well as any other
+software, is highlighted in this section.
+
+\subsection{{\LaTeX} Package Requirements}
+
+The following packages, in addition to the standard {\LaTeX}
+distribution, are required:
+\begin{enumerate}
+ \item The \textsf{xkeyval} package is used to set up the key-value
+ pairs of the \cs{annot\-pro} command. Get a recent version.
+ \item The \textsf{xcolor} package is strongly recommended.
+ \item The \textsf{hyperref} package, a recent version.
+ \item If you want to create custom stamps (on the fly) using the techniques
+ developed for that purpose, the \textsf{graphicxsp} Package is required.\footnote
+ {Available at \href{http://ctan.org/pkg/graphicxsp}{ctan.org/pkg/graphicxsp}}
+\end{enumerate}
+The \textsf{annot\_pro} package is part of the \textcolor{blue}{AeB
+Pro} family, which means \textbf{Adobe Distiller} is required. The
+components of \textcolor{blue}{AeB} and \textcolor{blue}{AeB Pro}
+are not required.\footnote{AeB: \href{http://ctan.org/pkg/acrotex}{ctan.org/pkg/acrotex}}${}^{,}$\footnote{AeB Pro:
+\href{http://ctan.org/pkg/aeb-pro}{ctan.org/pkg/aeb-pro}}
+
+\subsection{PDF Creator Requirements}
+
+The \textsf{annot\_pro} package requires \textbf{Acrobat Distiller 5.0} (or
+later) as the PDF creator. The document author typically uses dvips (or dvipsone) to
+produce a PostScript file, which is then distilled to obtain a PDF.
+
+If you wish to use (dynamically) created stamps that have opacity less than 1,
+you need to distill using \textbf{Standard\_transparancy.joboptions} with distiller,
+in this case, \textbf{Acrobat Distiller 6.0} (or later) is required; otherwise, this
+distiller job options file is not needed.
+
+The \textbf{Standard\_transparancy.joboptions} file is supplied with the \textsf{graphicxsp}
+package; the documentation of the \textsf{graphicxsp} package includes installation instructions.
+
+\section{Installation}
+
+The installation is simple enough. Unzip \texttt{annot\_pro.zip} in a
+folder that is on your {\LaTeX} search path. Refresh your filename
+database, if appropriate.
+
+\begin{defineJS}{\winedtDist}
+Run(|"c:\\Program Files\\Adobe\\Acrobat 9.0\\Acrobat\\acrodist.exe" -F "%P\\%N.ps"|,'%P',0,0,'%N.ps - Distiller',1,1);
+\end{defineJS}
+
+\paragraph*{\textcolor{red}{Important:}} When creating a file attachment annotation,
+you must specify a path to the file to be attached, and distiller must embed
+this file. In recent versions of Acrobat,
+security restrictions have been put in place to prevent
+\textbf{Distiller} from reading files (the PostScript \textbf{file}
+operator does not work). Fortunately, Distiller has a switch that
+turns off this particular restriction. To successfully use this
+package, therefore, you need to run Distiller by using the
+\texttt{-F} command line switch.
+
+
+Those using \app{Windows OS} can create a shortcut on the desktop, for example,
+that starts \app{Distiller} with the \texttt{-F} switch. The \uif{Target} of the shortcut might read
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+"C:\Program Files (x86)\Adobe\
+ Acrobat 9.0\Acrobat\acrodist.exe" -F
+\end{Verbatim}
+where we have wrapped the path to the next line to fit within the margins.
+Once \app{Distiller} is started with \texttt{-F}, the switch remains in effect
+until \app{Distiller} is closed.
+
+If this package is used to create file attachment annotations without the
+\texttt{-F} switch, you typically get the following error message in
+the Distiller log file
+\begin{Verbatim}[xleftmargin=\leftmargini,fontsize=\small]
+%%[ Error: undefinedfilename; OffendingCommand: file ]%%
+\end{Verbatim}
+This tells you that either you have not started Distiller with the
+\texttt{-F} command line switch, or Distiller can't find one of the
+files that the \textbf{file} operator was trying to read.
+
+
+
+\newtopic \textbf{Mac OS Users.} The above comments on the \texttt{-F} command line switch
+is for Windows users, Mac OS users must choose the \texttt{AllowPSFileOps} user preference, this is located
+in the \texttt{plist}, possibly located at
+\begin{Verbatim}[fontsize=\small]
+/Users/[User]/Library/Preferences/com.adobe.distiller9.plist
+\end{Verbatim}
+You can also use Spotlight, the search utility on Mac, to search for the string \texttt{com.adobe.distiller};
+the result might be
+\begin{quote}
+\texttt{com.adobe.distiller9.plist}.\footnote{In the case of Adobe Distiller, version 9.0}
+\end{quote}
+Clicking on this find,
+Spotlight opens \texttt{com.adobe.distiller9.plist} in the \texttt{plist} editor, see \hyperref[plist]{Figure~\ref*{plist}}.
+If necessary, click on the arrow next to the Root to expand the
+choices, then click the up and down arrows at the far
+right in the \texttt{AllowPSFileOps} row to select Yes as the value.
+\begin{figure}[hbt]\setlength{\fboxsep}{0pt}
+\begin{center}
+\fbox{\includegraphics[width=.75\linewidth]{plistEditor}}
+\caption{com.adobe.distiller9.plist}\label{plist}
+\end{center}
+\end{figure}
+
+\section{The \texorpdfstring{\protect\cs{annotpro}}{\CMD{annotpro}} Command}
+
+The main command of this package is \Com{annotpro}; the command is controlled by
+its optional parameters. The same command can create a text annotation (sticky note),
+a stamp annotation, a file attachment or a Free Text (Text Box) annotation. The syntax of this command is
+\bVerb\takeMeasure{\string\annotpro[\ameta{KV-pairs}]\darg{\ameta{text}}}%
+\begin{minipage}{\linewidth}
+\begin{minipage}{\bxSize}
+\xdef\panelWidth{\the\linewidth}%
+\begin{Verbatim}[frame=single,commandchars=!()]
+\annotpro[!ameta(KV-pairs)]{!ameta(text)}
+\end{Verbatim}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:arbproCmd}
+\end{minipage}\end{minipage}\eVerb
+\PD The optional argument is one or more key-value pairs that describe the
+annotation; the required argument, \ameta{text}, is the ``contents'' of the
+annotation; for the text and stamp annotation, \ameta{text} becomes the
+contents of the popup annotation, for a file attachment annotation, which has
+not associated pop-up, it is the description of the file attachment that
+appears in the file attachment panel of Adobe Reader. In the latter case, the
+value of \ameta{text} should be rather short. The key-value pairs (\ameta{KV-pairs}) are
+described over the next few sections.
+
+\paragraph*{\color{red}Sample files.} The sample files \texttt{annots.tex} and \texttt{textbox.tex} illustrate the features
+of the \pkg{annotpro} package.
+
+\subsection{Key-values common to all annotations}\label{s:CommonKeys}
+
+The following are key-value pairs common to all annotations.
+
+\begin{itemize}
+ \item \texttt{type=\ameta{\upshape{text|stamp|fileattachment|textbox}}} The \texttt{type} key determines the type of annotation to be produced;
+ permissible values are \texttt{text}, \texttt{stamp}, and \texttt{fileattachment}. This
+ key is optional, if not present, \texttt{type=text} is assumed.
+ \item \texttt{name=\ameta{name}} The name of the icon to use for the declared \texttt{type}. Permissible
+ values are dependent on the \texttt{type}, and are discussed in subsequent sections.
+ \item \texttt{title=\ameta{text}} Text to be displayed in the title bar of the annotation's pop-up window
+ when open and active. By convention, this entry identifies the user who made the annotation,
+ though any (short) text may be used. You can use \cs{setAnnotOptions} to globally set
+ the title of each annotation, perhaps using your name.
+\begin{Verbatim}[fontsize=\small]
+ \setAnnotOptions{title={D. P. Story}}
+\end{Verbatim}
+ \item \texttt{subject=\ameta{text}} Text representing a short description of the subject of the annotation.
+ You can use \cs{setAnnotOptions} to globally set the subject of each annotation,
+\begin{Verbatim}[fontsize=\small]
+ \setAnnotOptions{title={D. P. Story},
+ subject={AcroTeX Communiqu\'e}}
+\end{Verbatim}
+ \item \texttt{color}: The color of the title bar of the pop-up window of the annotation.
+ \item \texttt{readonly=\ameta{\upshape{true|false}}} Set the annotation to readonly. The user can click on the annot to
+ see the popup, but the user, if using Acrobat, cannot move the annotation around on the page.
+ The popup window can still be move by the user. (This property makes no difference to the
+ user of Adobe Reader.)
+ \item \texttt{opacity=\ameta{dec}}: The opacity value ($
+ \text0\le\text{\ameta{dec}}\le\text1$) to be used in painting the (icon of
+ the) annotation, but does apply to the pop-up window. The default
+ is 1.0.
+ \item[] Adobe Distiller handles the opacity for us in all cases except when we create a (dynamic) stamp.
+ If an opacity value less than 1 is desired, special techniques are needed, and the file needs to
+ be distilled using the \textbf{Standard\_tranparency} job options.
+
+\end{itemize}
+The following key-values are {\LaTeX} based concerning placement of the annotation in the margin.
+\begin{itemize}
+ \item \texttt{margin}: Use this key (it has no value), to declare that you want the annotation
+ to appear in the margin. The \cs{marginpar} command from core {\LaTeX} is used, the placement
+ of the annotation follows the rules set down by {\LaTeX}. You can reverse the placement of the
+ annotation by using the {\LaTeX} command \cs{reversemarginpar} (annots placed in the right margin, and now placed in the left);
+ you can return to the default by using \cs{normalmarginpar}.
+
+ \item[] Given that you have use the \texttt{margin} key, there is an associated key that can be used, as well
+ as a command.
+ \begin{itemize}
+ \item \texttt{margintext}: The value of this key is text that will be typeset just below the annotation icon.
+ \item \cs{marginpartextformat}: A {\LaTeX} command for
+ formatting the text in the margin, the default definition is\smallskip
+\begin{Verbatim}
+\margintextformat{\bfseries\tiny\color{blue}}
+\end{Verbatim}
+ \end{itemize}
+ \item[] For an annotation placed in the margin with margin text, you might want to use the \texttt{readonly}
+ key, this prevents the user---even one using Acrobat---from moving the annotation away from its caption.
+\end{itemize}
+The following key-value is for your convenience.
+\begin{itemize}
+ \item \texttt{presets}: A key to allow the introduction of pre-defined options, for example,
+ you might like all your comment annotations to be red, so you can define
+\begin{verbatim}
+ \def\myComments{type=text,name=Comment,color=red}
+\end{verbatim}
+then say
+\begin{verbatim}
+ \annotpro[presets=\myComment]{Way to go!}
+\end{verbatim}
+Additional options may be included,
+\begin{verbatim}
+ \annotpro[presets=\myComment,margin]{Way to go!}
+\end{verbatim}
+for example.
+
+\end{itemize}
+
+\subsection{Key-values for text annotations}
+
+The position of the annotation is determined by its bounding rectangle; for the
+text annotation, an icon is placed so that its upper left corner is at the upper
+left corner of the bounding rectangle. The icons themselves have certain dimensions
+that have been recorded within the \texttt{annot\_pro} package, so you need not worry
+about leaving space for them.
+
+An important fact about the icons used by text annotation is that they \emph{do not zoom in or out} as the page
+magnification is changed; furthermore, the graphics commands \cs{scalebox} and \cs{resizebox} do not rescale
+the icons as expected.
+
+The following are options specific to the text annotation. Recall, the text annotation
+is of \texttt{type=text}.
+\begin{itemize}
+ \item \texttt{name}: The name of the icon to use when displaying this annotation in closed form (no pop-up window visible).
+ Possible values---as specified in the \textsl{PDF Reference}---are
+ \texttt{Comment}, \texttt{Key}, \texttt{Note}, \texttt{Help},
+ \texttt{NewParagraph}, \texttt{Paragraph}, and \texttt{Insert}.
+ Additional icons that are available in recent versions of Adobe
+ Reader are
+\begin{quote}\raggedright
+ \texttt{Check}, \texttt{Circle}, \texttt{Cross}, \texttt{Star}, \texttt{RightArrow}, \texttt{RightPointer},
+ \texttt{UpArrow}, \texttt{UpLeftArrow}
+\end{quote}
+ If you are using comments in your document, and your audience have
+ older versions of Adobe Reader, it is best to use only the seven
+ listed in the \textsl{PDF Reference}.
+
+ \item \texttt{open}: A Boolean value that determines whether the pop-up
+ window is open or not. When \texttt{true} the pop-up is open. The
+ package default is \texttt{false}. You can use \cs{setAnnotOptions}
+ to set this option globally.
+
+ \item \texttt{nohspace}, \texttt{novspace}, \texttt{nospace}: The
+ presence of these commands zeroes out the dimension(s) of the
+ bounding rectangle. Specifying \texttt{nohspace} as an option
+ causes the icon to take up no horizontal space as the page is
+ latexed. Here\annotpro[nohspace]{This a sticky note with the
+ nospace option} is an example of a sticky note with the
+ \texttt{nohspace} option. Without any of these three keys, the text
+ annotation \annotpro[type=text,name=Key]{A sticky note that takes
+ up TeX space. If you put the document into 100\% magnification,
+ you'll see the note fits precisely into the allotted space.} fits
+ exactly into the allotted space at
+ \setLinkText[\A{\JS{this.zoom=100;}}\Color{0 .6 0}]{100\%
+ magnification}, try it.
+
+ When the icon takes up no {\TeX} space, it may cover content on
+ the page, as it does above. Acrobat users can move the icon
+ around, but AR users cannot move the icon. The pop-up window is
+ movable and scalable, but the icon cannot be moved. Therefore,
+ you must be careful about placement.
+
+ Additional positioning of the icons can be made using standard {\LaTeX}
+ commands such as \cs{raisebox} and \cs{smash}. For example,\smash{\raisebox{1in}{\annotpro[nospace,color=blue,opacity=.25]{I've raised this annot by 1in.
+ I've also used the nospace key, the icon does not take up any TeX space.}}} the blue icon above was created by
+\begin{Verbatim}[fontsize=\footnotesize]
+ For example,\smash{\raisebox{1in}\raisebox{1in}{%
+ \annotpro[nospace,color=blue,
+ opacity=.25]{...clever message...}}}
+\end{Verbatim}
+Note that I've set the \texttt{opacity} to .25.
+
+\end{itemize}
+
+
+\subsection{Key-values for stamp annotations}
+
+A stamp annotation is similar to a text annotation in the sense that
+it has a pop-up window in which the contents of the message is
+displayed; however, unlike the text annotation icons, the stamp
+appearance by be re-scaled using \cs{scalebox} and \cs{resizebox} of
+the graphics package; however, the keys \texttt{scale},
+\texttt{widthTo}, and \texttt{heightTo}, as described below, are the
+recommended methods of re-scaling a stamp.
+
+The following are the key-values associated with this annotation type.
+
+\begin{itemize}
+
+\begingroup\raggedright
+
+ \item \texttt{name}: The stamps listed in the \textsl{PDF
+ Reference} are \texttt{Approved}, \texttt{AsIs},
+ \texttt{Confidential}, \texttt{Departmental}, \texttt{Draft},
+ \texttt{Experimental}, \texttt{Expired}, \texttt{Final},
+ \texttt{ForComment}, \texttt{ForPublicRelease},
+ \texttt{NotApproved}, \texttt{NotForPublicRelease},
+ \texttt{Sold}, and \texttt{TopSecret}. If \texttt{name}
+ is not specified, \texttt{Draft} is the default.\par\endgroup
+
+ \item[] There are other stamps, not listed in the \textsl{PDF
+ Reference}, but available in more recent versions of Acrobat.
+ The file \texttt{stamps.pdf} lists all the stamps that I have
+ access to. The names of these other stamps are recognized by the
+ \texttt{name} key.
+
+ \item[] The dimensions of the stamps listed above are all the
+ same, they are \texttt{150bp} width and \texttt{40bp} high.
+
+ \item[] Additional stamps are shipped by Acrobat, a listing of these
+ appears in the file \texttt{stamps.pdf} (\texttt{stamps.tex}).
+
+ \item\texttt{width}, \texttt{height}: If the value of
+ \texttt{name} key is something other than one of the stamps
+ listed above (one of the stamps listed in the file
+ \texttt{stamps.pdf}), the width and height are not known to
+ \textsf{annot\_pro}. In this case, use the \texttt{height} and \texttt{width} keys
+ to set the dimensions of the bounding box. Adobe Distiller will
+ resize the stamp to the stamp is the largest one that can fit in
+ the bounding box, the stamp will be centered vertically and
+ horizontally within the bounding box.
+
+ \item[] Here are a couple of examples, the bounding box is should as a black \cs{fbox}.
+
+\begin{itemize}
+
+\previewtrue
+
+ \item This one \annotpro[type=stamp,name=SBApproved,widthTo=106bp,color=webbrown]{This package just got better!}
+ fits more or less exactly. I determined the dimensions of this stamp through some controls of the user interface.
+ Contrast this this stamp
+ \annotpro[type=stamp,width=50bp,height=50bp,name=SBApproved,color=webbrown]{This package just got better!}
+ obtained by setting \texttt{width=50bp} and \texttt{height=50bp}. Notice the ``best fit,'' and that the bounding
+ box takes up space. We can use \cs{smash} to smash its vertical height, let's see how that looks,
+ \smash{\annotpro[type=stamp,width=50bp,height=50bp,name=SBApproved,color=webbrown]{This package just got better!}}
+
+\smallskip
+
+\begin{defineJS}{\annotstampi}
+Exact fit:
+\\annotpro[type=stamp,name=SBApproved,color=webbrown]{This package just got better!}
+\end{defineJS}
+\begin{defineJS}{\annotstampii}
+Bad rectangle, but stamp fits the best it can:
+\\annotpro[type=stamp,name=SBApproved,color=webbrown]{This package just got better!}
+\end{defineJS}
+
+\previewfalse
+
+ \item[] The code for producing these stamps are given in the margins.
+ \annotpro[margin,readonly,margintext={\centering Good Fit}]{\annotstampi}%
+ \annotpro[margin,readonly,margintext={\centering Bad Fit}]{\annotstampii}%
+
+\begin{defineJS}{\annotstampiii}
+Resize using \\resizebox. \\raisebox was used to lift the same up a little:
+\\raisebox{4pt}{\\resizebox{.5in}{!}{\\annotpro[type=stamp,name=SBApproved,color=webbrown]{This package just got better!}}}
+\end{defineJS}
+
+ \item[] You can resize these stamps using \cs{scalebox} and \cs{resizebox}, like so.
+ \raisebox{4pt}{\resizebox{.5in}{!}{\annotpro[type=stamp,name=SBApproved,color=webbrown]{This package just got better!}}}
+ \enspace The code for producing this stamp are given here \annotpro{\annotstampiii}.
+
+\begin{defineJS}{\annotstampiv}
+\smash{\makebox[0pt][l]{\annotpro[type=stamp,name=Approved,color=blue]{I give my stamp of approval!}}}
+\end{defineJS}
+
+\item To create a stamp\smash{\makebox[0pt][l]{\annotpro[type=stamp,name=Approved,color=blue]{I give my stamp of approval!}}} that takes up no space, it is easiest to use \cs{smash} and \verb!\makebox[0pt][l]{text}!;
+ here is one of the standard stamps as listed in the \textsl{PDF Reference}. The code for this stamp is given
+ in this note \annotpro{\annotstampiv}.
+\end{itemize}
+
+\item[] Try changing the magnification of the page, you'll see that stamps are re-scaled as you zoom in or out, while
+the text annotations are not. I don't like text annotations for this reason.
+
+\begin{defineJS}{\annotstampv}
+\\annotpro[type=stamp,customStamp=MyDPSImage,ap=AdobeDon,color=webbrown]{This is the best picture of me ever taken. Akron, about 2005.}
+\end{defineJS}
+
+\item\texttt{rotate}: Stamps can be rotated, use this key to enter an angle of rotation, for example,
+ \texttt{rotate=30} rotates the stamp $\text{30}^\circ$ counter clock-wise.
+
+\item[\textcolor{red}{\ding{043}}] Do not use the \cs{rotatebox} command of \textsf{graphics} package,
+this command \emph{does not rotate} the stamp.
+
+\item \texttt{scale}: Use this key to re-scale the stamp; the value of this key is a number between
+ 0 and 1. For example, \texttt{scale=.5} reduces both width and height in half.
+\item \texttt{widthTo}: This key resizes the stamp so that the width is the value of this key; for example,
+ \texttt{widthTo=2in} re-scales the stamp to have a 2in width.
+\item\texttt{heightTo}: This key resizes the stamp so that the height is the value of this key; for example,
+ \texttt{heightTo=2in} re-scales the stamp to have a 2in height.
+
+\item[] Only one of the keys \texttt{scale}, \texttt{widthTo}, and \texttt{heightTo} are recognized
+ for any stamp annotation. If all three are specified, only \texttt{scale} is used. If
+ \texttt{widthTo} and \texttt{heightTo} are both specified, then \texttt{widthTo} is used.
+
+\item[\textcolor{red}{\ding{043}}] The use of these keys is the recommend way of re-scaling
+a stamp. These methods are compatible with the \texttt{rotate} key.
+
+\item \texttt{customStamp}: You can create a custom stamp from any
+ image you wish to use, here is
+ \annotpro[type=stamp,customStamp=MyDPSImage,ap=AdobeDon,color=webbrown]{This
+ is the best picture of me ever taken. Akron, about 2005.} one such
+ example. The code for the above stamp is given here
+ \annotpro{\annotstampv}.
+
+\item \texttt{ap}: When the \texttt{\texttt{customStamp}} key is
+ used, you have to supply an indirect reference to the appearance of
+ the stamp. This reference is made through the \texttt{ap} key. The
+ example above demonstrates the use of the \texttt{ap} key.
+\end{itemize}
+\textbf{\textcolor{red}{Important:}} When using the stamps of
+\app{Acrobat} always perform a \uif{SaveAs} on the file when you have finished
+building the file. This imports the appearances of the stamps into
+the document and saves them.
+
+\redpoint The creation of a custom stamp requires detailed list of steps, at
+some point I'll write a white paper on the subject.\footnote{Use the \pkg{mkstmp} package
+(\href{http://ctan.org/pkg/mkstmp}{ctan.org/pkg/mkstmp}),
+details of how to create custom stamps are included in the documentation.}
+
+\begin{defineJS}{\approvedStmp}
+\\annotpro[type=stamp,name=Approved,widthTo=2in,rotate=30]{...}
+\end{defineJS}
+
+\newtopic
+Here's an example of the keys \texttt{rotate} and \texttt{widthTo}:
+\begin{center}
+ \annotpro[type=stamp,name=Approved,widthTo=2in,rotate=30]{The source for this
+ stamp is ...\string\r\approvedStmp}
+\end{center}
+
+\subsection{Key-values file attachment annotations}
+
+The file attachment annotation has no pop-up window, the value of the required parameter is used as a description
+of the attached file, and appears in the file attachment window.
+
+The key-value pairs special to this type of annotation are as follows.
+
+\begin{itemize}
+ \item\texttt{name}: The name of the icon to use, permitted values are
+ \texttt{Graph}, \texttt{Paperclip}, \texttt{PushPin}, and \texttt{Tag}. If the value of name is not
+ specified, the default is \texttt{PushPin}. The annot\_pro package knows the dimensions of each of these
+ icons, so you need not worry about them. They can be re-scale using standard commands from the graphics package,
+ though, there may be little need of doing so.
+ \item \texttt{file}: The value of the file key is the \emph{absolute path} to the file to be attached. I've
+ devised a helper command \Com{defineAPath} that can be used to define the path to your file. For example, we can
+ define a path to wherever the files are, like so
+\begin{Verbatim}[fontsize=\footnotesize]
+ \defineAPath{\graphicsPath}
+ {C:/Users/Public/Documents/My TeX Files/%
+ tex/latex/aeb/aebpro/annot_pro/examples/graphics}
+\end{Verbatim}
+\item[] The command takes two arguments, the name of the command to be defined, and the path.
+
+\defineAPath{\graphicsPath}{C:/Users/Public/Documents/My TeX Files/tex/latex/aeb/aebpro/annot_pro/examples/graphics}
+
+\begin{defineJS}{\fa}
+\\annotpro[type=fileattachment,file={\graphicsPath/AdobeDon.pdf},name=Paperclip]{The author of annot\_pro (ho, ho).}
+\end{defineJS}
+
+\item[] We can create a file attachment
+ \annotpro[type=fileattachment,file={\graphicsPath/AdobeDon.pdf},name=Paperclip]{The
+ author of annot\_pro (ho, ho).} like so, ho, ho. Here is the code
+ for this file attachment \annotpro[name=Star]{\fa}. Clicking the
+ file attachment icon will open the file, in recent versions of
+ Acrobat, the file is listed in the file attachments panel. Open it
+ using the user interface, and you'll see the file listed, as well
+ as a description, as passed to the annot as the second argument of
+ \cs{annotpro}.
+\end{itemize}
+
+The file attachment icons can be resized using any of the graphics commands, \cs{scalebox} or \cs{resizebox}.
+
+\subsection{The \texorpdfstring{\protect\uif{Text Box}}{Text Box}
+ (\texorpdfstring{\protect\uif{Free Text}}{Free Text}) annotation}
+
+A \uif{Text Box} annotation is a rectangular region in which the user can
+enter rich text. The annotation may be created and `pre-populated' with rich text from a
+{\LaTeX} source through the \pkg{annot\_pro} package.
+
+The \uif{Text Box} annotation, as implemented by this package, requires the
+\pkg{richtex} package, dated 2016/09/30 or later. A one simple method for
+introducing \pkg{richtext} is through the \opt{useTextBox} option of
+\pkg{annot\_pro}. Placing the following line in the preamble:
+\begin{Verbatim}[xleftmargin=\amtIndent]
+\usepackage[useTextBox]{annot_pro}
+\end{Verbatim}
+declares you are going to use \uif{Text Box} annotations. The option does
+nothing more than to execute \cs{usepackage\darg{richtext}[2016/09/30]}. The
+option is more of a convenience.
+
+To create a \uif{Text Box} (originally named \uif{Free Text}) annotation use the \cs{annotpro} command.
+\bVerb\begin{minipage}{\linewidth}
+\begin{minipage}{3.5in}
+\xdef\panelWidth{\the\linewidth}%
+\begin{Verbatim}[xleftmargin=\leftmargini,commandchars=!(),fontsize=\small]
+\annotpro[!textbf(type=textbox),!ameta(KV-pairs)]
+ {richtext=!ameta(name),defstyle=!ameta(name)}
+\end{Verbatim}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:textbox}
+\end{minipage}\end{minipage}\eVerb
+Notice the second argument is not \ameta{text} as it is with the other annotations, but consists
+of key-value pairs; recognized keys are \texttt{richtext} and \texttt{defstyle}.
+
+\newtopic\noindent The sample file \texttt{textbox.tex} illustrates the features of this section.
+
+\subsubsection{Creating an empty \texorpdfstring{\protect\uif{Text Box}}{Text Box}}
+
+A common application would be to create an empty \uif{Text Box} for the
+document consumer to type in comments. Below is an example of a \uif{Free
+Text} annotation, called \uif{Text Box} by the user-interface of
+\app{Acrobat}/\app{Adobe Reader}.
+\begin{flushleft} %\previewtrue
+\begin{minipage}{2in}
+\annotpro[title=dpstory,type=textbox,subject=Empty Text Box]{}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-2in-10pt}\small
+Press \uif{Ctrl+E} (\app{Windows}) or \uif{Cmd+E} (\app{Mac OS}) to obtain
+the \uif{Properties} toolbar, now click on the text box to obtain the
+\uif{Text Box Properties} toolbar. Double clicking on the text box
+brings up the \uif{Text Box Text Properties} toolbar.
+\end{minipage}
+\end{flushleft}
+The verbatim listing of the above \uif{Text Box} is,
+\begin{Verbatim}[xleftmargin=\leftmargini]
+\annotpro[type=textbox,
+ title=dpstory,subject=Empty Text Box]{}
+\end{Verbatim}
+The required second argument is empty, which leads to an empty \uif{Text Box}.
+
+\subsubsection{Creating a non-empty \texorpdfstring{\protect\uif{Text Box}}{Text Box}}
+
+A much more interesting exercise is to pre-populate the \uif{Text Box} with rich text for the
+document consumer to read and/or to respond.
+
+\paragraph[Steps to create rich text content]{Steps to create rich text content.}\chgCurrLblName{Steps to create rich text content}\label{para:StepsRC}
+We briefly outline the techniques to create rich text
+for a \uif{Text Box} annotation.
+\begin{itemize}
+ \item Use the \env{textboxpara} environment and the \cs{rtpara} command
+ to declare your rich text paragraph.
+\bVerb\takeMeasure{\string\rtpara[\ameta{KV-pairs}]\darg{\ameta{name\SUB{para}}}\darg{\ameta{rich-content}}}%
+\begin{minipage}{\linewidth}
+\begin{minipage}{\bxSize}
+\xdef\panelWidth{\the\linewidth}%
+\begin{Verbatim}[frame=single,commandchars=!()]
+\begin{textboxpara}
+\rtpara[!ameta(KV-pairs)]{!ameta(name!SUB(para))}{!ameta(rich-content)}
+...
+\end{textboxpara}
+\end{Verbatim}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:rtpara}
+\end{minipage}\end{minipage}\eVerb
+Details of the \cs{rtpara} command are found in the documentation manual of
+the \pkg{richtext} package. The \env{textboxpara} environment is needed for
+certain redefinitions of internals because of the different way rich text
+is supported and implemented in the \uif{Text Box} annotation verses the
+rich text field.
+
+\item Use the \cs{setRVVContent} command on your \cs{rtpara}-declared rich text and give it
+a name \ameta{name\SUB{rvvc}}.
+\bVerb\takeMeasure{\string\setRVVContent\darg{\ameta{name\SUB{rvvc}}}\darg{\ameta{name\SUB{para}}}}%
+\begin{minipage}{\linewidth}
+\begin{minipage}{\bxSize}
+\xdef\panelWidth{\the\linewidth}%
+\begin{Verbatim}[frame=single,commandchars=!()]
+\setRVVContent{!ameta(name!SUB(rvvc))}{!ameta(name!SUB(para))}
+...
+\end{Verbatim}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:setRVVC}
+\end{minipage}\end{minipage}\eVerb
+This command expands the paragraph named \ameta{name\SUB{para}} and
+develops the rich text version and the plain text version. It is
+\ameta{name\SUB{rvvc}} that is used as a value for the \opt{richtext} key
+above and illustrated below. To reduce the number of names, you can use
+the same name for \ameta{name\SUB{rvvc}} as for \ameta{name\SUB{para}}
+(\cs{setRVVContent\darg{para1}\darg{para1}}).
+
+The rich text \emph{form field} supports multiple paragraphs, and richer
+formatting options than the \uif{Text Box} annotation. Of importance is
+that the \uif{Text Box} annotation only permits a \emph{single paragraph}.
+
+\item (Optional) Declare a (named) default style using \cs{setDefaultStyle}:
+\bVerb\takeMeasure{\string\setDefaultStyle\darg{\ameta{name\SUB{ds}}}\darg{\ameta{KV-pairs}}}%
+\begin{minipage}{\linewidth}
+\begin{minipage}{\bxSize}
+\xdef\panelWidth{\the\linewidth}%
+\begin{Verbatim}[frame=single,commandchars=!()]
+\setDefaultStyle{!ameta(name!SUB(ds))}{!ameta(KV-pairs)}
+...
+\end{Verbatim}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:setDefStyle}
+\end{minipage}\end{minipage}\eVerb
+This default style is assignment a name that is used as the value of the
+\opt{defstyle} key mentioned earlier, and illustrated below. If a value for
+\opt{defstyle} is not provided, a standard default style is used.
+
+\end{itemize}
+Once the \cs{rtpara}-declared paragraphs have been made and their names have passed through
+\cs{setRVVContent}, you are ready to create a \uif{Text Box} annotation.
+
+\paragraph[Key-values for second argument]{Key-values for second argument.}\chgCurrLblName{Key-values for second argument}\label{para:KV2ndArg}
+The required second argument, refer to display~\eqref{display:textbox}, has
+two keys, both of which are optional. You are encouraged to read the
+documentation for the \pkg{richtext} package for greater understanding of the
+descriptions and examples found below.
+\begin{description}
+ \item[\texttt{richtext=\ameta{name\SUB{rvvc}}}] The \opt{richtext} key
+ is the way the rich text is passed to the \uif{Text Box}. The
+ \ameta{name\SUB{rvvc}} is declared by the \cs{setRVVContent}
+ command. Use the command \cs{rtpara} within the \env{textboxpara}
+ environment to define the actual rich text paragraph. For example,
+\begin{Verbatim}[fontsize=\small,commandchars=!()]
+\begin{textboxpara}
+\rtpara{para1}{\span{color=FF0000}{Hello world},
+ this is \bf{rich text}!}
+\end{textboxpara}
+\setRVVContent{myContent}{para1}
+\annotpro[type=textbox,title=dpstory,
+ subject=Text Box]{!textbf(richtext=myContent)}
+\end{Verbatim}
+The above code produces the following \uif{Text Box}:
+\begin{quote}
+\begin{textboxpara}
+\rtpara{para1}{\span{color=FF0000}{Hello world},
+ this is \bf{rich text}!}
+\end{textboxpara}
+\setRVVContent{myContent}{para1}
+\annotpro[type=textbox,title=dpstory,
+ subject=Text Box]{richtext=myContent}
+\end{quote}
+
+ \item[\texttt{defstyle=\ameta{name\SUB{ds}}}] Through the
+ \opt{defstyle} you can define set the default style (refer to the
+ documentation of the \pkg{richtext} package. If this key does not
+ appear, then a predefined default style is provided.
+\begin{Verbatim}[fontsize=\small,commandchars=!()]
+\setDefaultStyle{myDS}{font={'Myriad Pro',sans-serif},
+ color=0000FF}
+\begin{textboxpara}
+\rtpara{para1}{\span{color=FF0000}{Hello world},
+ this is \it{rich text}!}
+\setRVVContent{para1}{para1}
+\end{textboxpara}
+\annotpro[type=textbox,title=dpstory,
+ subject=Text Box]{richtext=para1,!textbf(defstyle=myDS)}
+\end{Verbatim}
+Notice that we've used the name `\texttt{para1}' for both \cs{setRVVContent}
+and \cs{rtpara}. The above code produces the following \uif{Text Box}:
+\begin{flushleft}%\previewtrue
+\begin{minipage}{2in}
+\setDefaultStyle{myDS}{font={'Myriad Pro',sans-serif},color=0000FF}
+\begin{textboxpara}
+\rtpara{para1}{\span{color=FF0000}{Hello world},
+ this is \it{rich text}!}
+\end{textboxpara}
+\setRVVContent{para1}{para1}
+\annotpro[type=textbox,title=dpstory,
+ subject=Text Box]{richtext=para1,defstyle=myDS}
+\end{minipage}\hfill
+\begin{minipage}{\linewidth-2in-10pt}\small
+Press \uif{Ctrl+E} (\app{Windows}) or \uif{Cmd+E} (\app{Mac OS}) to
+obtain the \uif{Properties} toolbar, now double click on the text box to
+obtain the \uif{Text Box Text Properties} toolbar to verify the font used
+is indeed Myriad Pro.
+\end{minipage}
+\end{flushleft}
+\end{description}
+If you are at all interested in generating the \uif{Text Box} annotation using rich text
+strings, you are encouraged to read the documentation on \pkg{richtext},
+there you will learn about all the key-values available to format the text
+and the paragraph.
+
+The \pkg{richtext} package was written for rich text form fields, but applies
+to rich text annotations as well; however, it should be noted that there are
+differences between forms and text box annotations in how they handle rich
+text. One of the major differences is that rich text annotations (\uif{Text
+Box}) \emph{do not support} multiple paragraphs as form fields do; as a
+result, features listed in the \uif{Paragraph} and \uif{Link} tabs of the
+\uif{Form Field Text Properties} dialog box are not available for the
+\uif{Text Box}.
+
+\paragraph[Keys \& commands inherited from the \texorpdfstring{\protect\pkg{richtext}}{richtext} package]%
+{Keys \& commands inherited from the \pkg{richtext} package.}%
+\chgCurrLblName{Keys \& commands inherited from the \pkg{richtext} package}\label{para:InheritedKeys}
+The following keys are supported by the \uif{Text Box} annotation:
+\bVerb\begin{minipage}{\linewidth}
+\begin{minipage}[c]{4in}
+\xdef\panelWidth{\the\linewidth}%
+\begin{quote}\raggedright
+\opt{font}, \opt{size}, \opt{\st{raise}}, \opt{ulstyle},
+\opt{color}, \opt{\st{url}}, \opt{style}, \opt{\st{raw}}, \opt{halign}
+\end{quote}
+\end{minipage}\hfill
+\begin{minipage}[c]{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:suppKeys}
+\end{minipage}\end{minipage}\eVerb
+The following commands are supported:
+\bVerb\begin{minipage}{\linewidth}
+\begin{minipage}[c]{4in}
+\xdef\panelWidth{\the\linewidth}%
+\begin{quote}\raggedright
+\cs{span}, \cs{br}, \cs{it}, \cs{bf}, \cs{sup} and \cs{sub}
+\end{quote}
+\end{minipage}\hfill
+\begin{minipage}[c]{\linewidth-\panelWidth}
+\setDisplayNumber\label{display:suppCmds}
+\end{minipage}\end{minipage}\eVerb
+The ones having an overstrike are supported in a rich text \emph{form field}, but
+not within an \uif{Text Box}. Refer to the documentation of the
+\pkg{richtext} for details of these keys and commands. In this document, we
+illustrate by example.
+
+\paragraph[Key-values of \texorpdfstring{\protect\cs{rtpara}}{\textbackslash{rtpara}}]{Key-values of \cs{rtpara}.}%
+\chgCurrLblName{Key-values of \cs{rtpara}}\label{para:KeysPara} The
+keys of display~\eqref{display:suppKeys} -- excluding the overstrike ones -- may be used in the
+\ameta{KV-pairs} argument of \cs{rtpara} of display~\eqref{display:rtpara}.
+
+\paragraph[Permissible commands within \texorpdfstring{\protect\ameta{rich-content}}{<rich-content>}]{%
+Permissible commands within \ameta{rich-content}.}\chgCurrLblName{Permissible
+commands within \ameta{\ameta{rich-content}}}\label{para:KeysCmdsRC} The
+\ameta{rich-content} argument of display~\eqref{display:rtpara} (normally)
+consists of Latin 1 characters, plus any markup in the form of the commands
+listed in display~\eqref{display:suppCmds}.
+\begin{itemize}
+ \item \cs{span} has two arguments, more on this command in the paragraph below
+ titled \Nameref{para:Span}.
+ \item \cs{br} is a line break, it has no argument.
+ \item \cs{it} is italic font; it has one argument, the text to be
+ placed in italics: \cs{it\darg{this is italic}}.
+ \item \cs{bf} is bold font; it has one argument, the text to be placed in bold:
+ \cs{bf\darg{this is bold}}.
+
+ \cs{it} and \cs{bf} may be nested: \cs{it\darg{\cs{bf\darg{bold and italic}}}}.
+
+ \item \cs{sup} and \cs{sub} are superscript and subscript, respectively; they each
+ have one argument, the text to be raised or lowered. For example,
+ \verb~We can \sup{raise} or we can \sub{lower} text~.
+\end{itemize}
+The above markups, with the exception of \cs{span} are illustrated below.
+\begin{defineJS}{\annotextboxi}
+\\begin{textboxpara}
+\\rtpara{mypara}{\\it{This is italic}, whereas \\bf{this is bold}, but wait, we can do
+\\it{\\bf{bold and italic}}.\\br\\br Moving on, we can \\sup{raise} or we can \\sub{lower} text.}
+\\end{textboxpara}
+\\setRVVContent{mypara}{mypara}
+\\annotpro[type=textbox,width=3.5in]{richtext=mypara}
+\end{defineJS}
+\begin{quote}
+\begin{textboxpara}
+\rtpara{mypara}{\it{This is italic}, whereas \bf{this is bold}, but wait, we can do
+\it{\bf{bold and italic}}.\br\br Moving on, we can \sup{raise} or we can \sub{lower} text.}
+\end{textboxpara}
+\setRVVContent{mypara}{mypara}
+\annotpro[type=textbox,width=3.5in]{richtext=mypara}%
+\annotpro[margin,readonly,margintext={\centering The Code}]{\annotextboxi}%
+\end{quote}
+The verbatim listing for this example is in the sticky note in the margin.
+
+\paragraph[Some comments on the \texorpdfstring{\protect\cs{span}}{\textbackslash{span}}
+command]{Some comments on the \cs{span} command.}\chgCurrLblName{Some comments on the \cs{span} command}\label{para:Span}
+the \cs{span} command, defined only locally within the \ameta{rich-text} argument \cs{rtspan} is a general purpose
+command to format text. It has two argument:
+\begin{quote}
+\cs{span\darg{\ameta{KV-pairs}}\darg{\ameta{text}}}.
+\end{quote}
+The \ameta{KV-pairs} argument can be the keys of
+display~\eqref{display:suppKeys} (again excluding the overstrike keys). The \ameta{text} argument is the
+text to be made rich; experience shows that \cs{it}, \cs{bf}, \cs{sub} and \cs{sup} may be used within
+\ameta{text}. Italic and bold may be accomplished using the \opt{style} key, probably preferred over
+using \cs{it} and \cs{bf} within \ameta{text}.
+\begin{defineJS}{\annotextboxi}
+\\begin{textboxpara}
+\\rtpara{para1}{Welcome to my \\span{style={strikeit,bold}}{poor}\\span{style=bold}{rich text world}.
+We add a little color shall we try \\span{color=FF0000}{red} or \\span{color=00FF00}{green}?\\br\\br
+There are several styles of underlining \\span{ulstyle=ul}{basic underlining},
+\\span{ulstyle=2ul}{double underlining}, \\span{ulstyle=wul}{word underlining}, and
+\\span{ulstyle=2wul}{double word underlining}. Cool.}
+\\end{textboxpara}
+\\setRVVContent{para1}{para1}
+\\annotpro[type=textbox,width=4.5in,height=14bp*7]{richtext=para1}
+\end{defineJS}
+\begin{quote}
+\begin{textboxpara}
+\rtpara{para1}{Welcome to my \span{style={strikeit,bold}}{poor}\span{style=bold}{rich text world}.
+We add a little color shall we try \span{color=FF0000}{red} or \span{color=00FF00}{green}?\br\br
+There are several styles of underlining \span{ulstyle=ul}{basic underlining},
+\span{ulstyle=2ul}{double underlining}, \span{ulstyle=wul}{word underlining}, and
+\span{ulstyle=2wul}{double word underlining}. Cool.}
+\end{textboxpara}
+\setRVVContent{para1}{para1}
+\annotpro[type=textbox,width=4.5in,height=14bp*7]{richtext=para1}%
+\annotpro[margin,readonly,margintext={\centering The Code}]{\annotextboxi}%
+\end{quote}
+The verbatim listing for this example is in the sticky note in the margin.
+
+\paragraph[Key-values of \texorpdfstring{\protect\cs{setDefaultStyle}}{\textbackslash{setDefaultStyle}}]%
+{Key-values of \cs{setDefaultStyle}.}%
+\chgCurrLblName{Key-values of \cs{setDefaultStyle}}\label{para:KeysDS} The
+keys of display~\eqref{display:suppKeys} -- excluding the overstrike ones --
+may be used in the \ameta{KV-pairs} argument of \cs{setDefaultStyle} of
+display~\eqref{display:setDefStyle}; however, only the keys \opt{font},
+\opt{size}, \opt{color}, and \opt{halign} are typically used. For example,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+\setDefaultStyle{myDS}{font={'Myriad Pro',sans-serif},
+ size=12.0,color=0000FF,halign=left}
+\end{Verbatim}
+The name `\opt{myDS}' may then be used as the value of \opt{defstyle} key in the second argument
+of \cs{annotpro}, see display~\eqref{display:textbox}.
+
+\subsubsection{Key-values for text box annotations}
+
+\hyperref[s:CommonKeys]{Section~\ref*{s:CommonKeys}} lists keys that are
+common to all annotations; we list the ones that make sense for the \uif{Text
+Box} annotation, and strikeout these that do not:
+\begin{quote}\raggedright
+\texttt{type}, \texttt{\st{name}}, \texttt{title}, \texttt{subject},
+\texttt{\st{color}}, \texttt{readonly}, \texttt{opacity}, \texttt{margin},
+\texttt{presets}
+\end{quote}
+In addition to these keys, there are several keys particular to the text box
+annotation. We list these and describe them in detail.
+\begin{itemize}
+ \item \texttt{width=\ameta{length}}: The width of the annotation, the
+ default is \texttt{144bp} (\texttt{2in}).
+ \item \texttt{height=\ameta{length}}: The height of the annotation, the
+ default is \texttt{72bp} (\texttt{1in}).
+ \item \texttt{bgcolor=\ameta{color}} The color to be used as the background color
+ of the text box annotation. If \opt{bgcolor} has no value, transparent color is used.
+ The default is white.
+ \item \texttt{bcolor=\ameta{color}} The color to be used as the boundary color of the
+ annotation. The default is black.
+ \item \texttt{borderstyle=\ameta{choice}}: This keys determines the
+ style of border to be used. It is a choice key, choices are
+ \texttt{none}, \texttt{solid}, \texttt{dash1}, \texttt{dash2},
+ \texttt{dash3}, \texttt{dash4}, \texttt{dash5}, \texttt{dash6},
+ \texttt{cloud1}, and \texttt{cloud2}. The default is \texttt{solid}.
+ \item \texttt{borderwidth=\ameta{choice}}: The border width of the
+ annotation, acceptable choices are \texttt{.5}, \texttt{1}, \texttt{2},
+ \texttt{3}, \texttt{4}, \texttt{6}, 8, and \texttt{10}. The default is \texttt{1}.
+\end{itemize}
+\begin{textboxpara}
+\rtpara{para1}{\cs{annotpro[type=textbox, width=\cs{linewidth}, height=14bp*2, bgcolor=cornsilk,
+bcolor=blue]{richtext=para1}}}\setRVVContent{para1}{para1}
+\rtpara{para2}{\cs{annotpro[type=textbox, width=\cs{linewidth}, height=16bp*3, bgcolor, bcolor=red,
+borderstyle=dash2, borderwidth=2]{richtext=para2}}}\setRVVContent{para2}{para2}
+\rtpara{para3}{\cs{annotpro[type=textbox, width=\cs{linewidth}, height=18bp*3, bcolor=red,
+borderstyle=cloud1]{richtext=para3}}}\setRVVContent{para3}{para3}
+\end{textboxpara}%\previewtrue
+\setDefaultStyle{myDS}{font=Courier,size=12.0,color=000000}
+\annotpro[type=textbox, width=\linewidth, height=14bp*2, bgcolor=cornsilk, bcolor=blue]{richtext=para1,defstyle=myDS}\\[6bp]
+\annotpro[type=textbox, width=\linewidth, height=16bp*3, bgcolor, bcolor=red, borderstyle=dash2, borderwidth=2]{richtext=para2,defstyle=myDS}\\[6bp]
+\annotpro[type=textbox, width=\linewidth, height=18bp*3, bcolor=red, borderstyle=cloud1]{richtext=para3,defstyle=myDS}\\[6bp]
+The second text box annotation above has transparent background color. Using your pointing device, move it around to verify
+the background is `see through', compare with the other two by moving them around, not `see through'.
+
+\subsubsection{Accented glyphs and the unicode characters}
+
+There are several advantages that text box annotation have over rich text
+form fields: movability and unicode. An annotation can be moved around the
+page by the user quite easily, a form field typically cannot unless the user
+is using \app{Acrobat}. Also, when it comes to using unicode, text box
+annotations are far superior to rich text form fields. Unicode characters may
+be inserted using the convenience commands \cs{uHex} and \cs{uDec}, where the
+first take a hex code as its argument and the second takes a non-negative
+integer as its argument. Latin1 accented characters can be entered using octal notation
+for example, \verb~J\374rgen~
+\begin{defineJS}{\annotextboxi}
+\\begin{textboxpara}
+\\rtpara{para1}{J\\374rgen is a nice fellow, though I've never met him.\\br\\br
+We've communicated, J\\uHex{00FC}rgen and I, via email. J\\uDec{252}rgen where are you?}
+\\end{textboxpara}
+\\setRVVContent{para1}{para1}
+\\annotpro[type=textbox,width=4.5in,height=14bp*7]{richtext=para1}
+\end{defineJS}
+\begin{textboxpara}
+\rtpara{para1}{J\374rgen is a nice fellow, though I've never met him.\br\br
+We've communicated, J\uHex{00FC}rgen and I, via email. J\uDec{252}rgen where are you?}
+\end{textboxpara}
+\begin{quote}%\previewtrue
+\setRVVContent{para1}{para1}
+\annotpro[type=textbox,width=4in,height=16bp*4]{richtext=para1}%
+\annotpro[margin,readonly,margintext={\centering The Code}]{\annotextboxi}%
+\end{quote}
+But wait, we're not done. In theory, we can access any unicode character through the use
+of \cs{uHex} or \cs{uDec}. I'll randomly pick off some unicode characters.
+\begin{defineJS}{\annotextboxi}
+\\begin{textboxpara}
+\\rtpara{para1}{%
+\\uHex{01A2}, \\uHex{023E}, \\uHex{03A3}, \\uHex{0416},
+\\uHex{0583}, \\uHex{06A6}, \\uHex{263A}, \\uHex{FB21},
+\\uHex{82A0}, \\uHex{4EE4}, \\uHex{F92C}, \\uHex{5475}}
+\\end{textboxpara}
+\\setRVVContent{para1}{para1}
+\\annotpro[type=textbox,width=4in,height=14bp*2]{richtext=para1}
+\end{defineJS}
+\begin{textboxpara}
+\rtpara{para1}{%
+\uHex{01A2}, \uHex{023E}, \uHex{03A3}, \uHex{0416},
+\uHex{0583}, \uHex{06A6}, \uHex{263A}, \uHex{FB21},
+\uHex{82A0}, \uHex{4EE4}, \uHex{F92C}, \uHex{5475}}
+\end{textboxpara}
+\begin{quote}%\previewtrue
+\setRVVContent{para1}{para1}
+\annotpro[type=textbox,width=4in,height=14bp*2]{richtext=para1}%
+\annotpro[margin,readonly,margintext={\centering The Code}]{\annotextboxi}%
+\end{quote}
+Cool!
+
+
+\subsection{Setting Global Options with
+ \texorpdfstring{\protect\cs{setAnnotOptions}}{\CMD{setAnnotOptions}}}
+
+Global options are by using the \cs{setAnnotOptions} command.
+In the preamble of this document I placed
+\begin{Verbatim}[fontsize=\footnotesize]
+\setAnnotOptions{subject={AcroTeX Communiqu\'e},title={D.P. Story}}
+\end{Verbatim}
+That way, I didn't have to constantly type in my personal name for each example. These options can be overwritten
+by specifying options locally, if I say, \cs{annotpro[author=Don Story]\darg{Hi there!}}, the author is now my
+alter ego, Don Story.
+
+%\redpoint\textbf{\textcolor{red}{Important:}} Certain key, \texttt{name}, should not be used to set global options,
+%\cs{setAnnotOptions} tests for these, and puts them back to their default values that are expected
+%by \cs{annotpro}. These keys should only be used for passing options to \cs{annotpro} in its option list.
+
+
+\bigskip
+\noindent
+That's all for now, I simply must get back to my retirement. \dps\space\annotpro[type=stamp,
+ customStamp=MyDPSImage,ap=AdobeDon,color=webbrown]{%
+ Did I say that I had to get back to my retirement?}
+
+\end{document}
diff --git a/texmf-dist/source/latex/graphicxsp/graphicxsp.dtx b/texmf-dist/source/latex/graphicxsp/graphicxsp.dtx
new file mode 100644
index 00000000..0f01eea6
--- /dev/null
+++ b/texmf-dist/source/latex/graphicxsp/graphicxsp.dtx
@@ -0,0 +1,1037 @@
+%\iffalse
+%<*copyright>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% graphicxsp.sty package, 2007-08-14 %%
+%% Copyright (C) 2007 D. P. Story %%
+%% storyd@owc.edu / dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%</copyright>
+%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+%<package>\ProvidesPackage{graphicxsp}
+%<package> [2016/02/19 v1.0 Graphicxsp: Extension of graphicx for dvips/dvipsone (dps)]
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[colorlinks,hyperindex]{hyperref}
+%\pdfstringdefDisableCommands{\let\\\textbackslash}
+%\EnableCrossrefs \CodelineIndex
+\begin{document}
+ \GetFileInfo{graphicxsp.sty}
+ \title{\textsf{GraphicxSP}: Re-using EPS files}
+ \author{D. P. Story\\
+ Email: \texttt{dpstory@acrotex.net} \& \texttt{storyd@owc.edu}}
+ \date{processed \today}
+ \maketitle
+ \tableofcontents
+ \let\Email\texttt
+ \DocInput{graphicxsp.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+% \MakeShortVerb{|}
+% \StopEventually{}
+%
+% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let}
+% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi}
+% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup}
+% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
+% \DoNotIndex{\space,\@empty,\special}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \section{Introduction}
+%
+% \textsf{GraphicxSP} is a patch into the \textsf{graphicx} package so that users of \textsf{dvips} and
+% \textsf{dvipsone}, using distiller, can insert and re-use \texttt{.eps} figures.
+% \begin{macrocode}
+% \end{macrocode}
+%
+% \section{Package Options}
+%
+% \begin{macro}{preview}
+% \begin{macro}{dvipsone}
+% \begin{macro}{dvips}
+% \begin{macro}{showembeds}
+% This package recognizes three options: driver names \texttt{dvips} (the default),
+% \texttt{dvipsone} (old YandY \TeX) and a \texttt{preview}.
+% \texttt{dvipsone}, using distiller, can insert and re-use \texttt{.eps} figures.
+% \begin{macrocode}
+\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+\DeclareOption{preview}{\previewtrue}
+\DeclareOption{dvipsone}{\def\gxsp@drivernum{0}}
+\DeclareOption{dvips}{\def\gxsp@drivernum{1}}
+\DeclareOption{showembeds}{\let\gxsp@showembeds=0}
+\let\gxsp@showembeds=1
+\def\gxsp@drivernum{1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{draft}
+% \begin{macro}{final}
+% \begin{macro}{shownonames}
+% The \texttt{draft} mode passes \texttt{draft} on to \textsf{graphicx}. The images
+% appear as rectangles, with the name of the image. The \texttt{shownonames} option
+% removes the name inside the rectangle.
+% \changes{v.7b}{2012/09/11}{Added \texttt{draft}, \texttt{final}, \texttt{shownonames} options}
+% \begin{macrocode}
+\DeclareOption{draft}{\spxGin@drafttrue
+ \PassOptionsToPackage{draft}{graphicx}}
+\DeclareOption{final}{\spxGin@draftfalse
+ \PassOptionsToPackage{final}{graphicx}}
+\DeclareOption{shownonames}{\@spx@shownameindraftfalse}
+\newif\if@spx@shownameindraft \@spx@shownameindrafttrue
+\newif\ifspxGin@draft \spxGin@draftfalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macrocode}
+\InputIfFileExists{graphics.cfg}{}{}
+\ProcessOptions
+\@ifundefined{eq@driver@name}{}{%
+% \end{macrocode}
+% As a point of personal convenience, if \cs{eq@driver@name}, which is
+% defined in \textsf{web}, and the name is \texttt{dvipsone}, we'll override
+% the default of \texttt{dvips}.
+% \begin{macrocode}
+\def\DVIPSONE{dvipsone}\ifx\eq@driver@name\DVIPSONE
+\def\gxsp@drivernum{0}\fi}
+% \end{macrocode}
+%
+% \section{Package Requirements}
+%
+% We minimally require the \textsf{graphicx} package, which we patch
+% into, and the \textsf{eso-pic}, package, which, in turn, requires
+% the \textsf{everyshi} package.
+% \begin{macrocode}
+\RequirePackage{graphicx}
+\ifspxGin@draft\Gin@drafttrue\fi
+\RequirePackage{eso-pic}
+\RequirePackage{verbatim}
+% \end{macrocode}
+%
+% \section{PostScript and Driver Dependent Definitions}
+%
+% Hyperref is not required, but if present, we'll use its code, otherwise, we use
+% code from hyperref to hide in-line images from GhostScript's view.
+% \begin{macrocode}
+\def\grcxsp@hideEPS{\AtBeginDvi{\special{!%
+/product where{%
+pop
+product(Distiller)search{%
+ pop pop pop
+ userdict
+ /?pdfmark /exec load put%
+}{%
+pop
+userdict
+ begin
+ /?pdfmark /pop load def
+ end
+}ifelse%
+}if%
+}}}
+\@ifpackageloaded{hyperref}{\let\grcxsp@hideEPS\relax}{\grcxsp@hideEPS}
+% \end{macrocode}
+% We use either \textsf{dvips} or \textsf{dvipsone} as the driver, in both cases the following is
+% the special we shall use.
+% \begin{macrocode}
+\def\gxsp@literalps@out#1{\special{ps:#1}}
+% \end{macrocode}
+% The following are driver dependent definitions. We begin with \texttt{dvips}.
+%
+%\paragraph*{Dvips driver.}
+% \begin{macrocode}
+\ifnum\gxsp@drivernum=1\relax
+% \end{macrocode}
+% When the driver is \texttt{dvips}, we define some postscript procedures to
+% making conversions between {\TeX} and PDF.
+% \begin{macrocode}
+\special{!userdict begin
+ /TeXtoPDF {65536 div DVImag mul} def % sp to pts
+ /PDFtoDvips {72.27 div Resolution mul} def % points to dots
+ /PDFtoVDvips {72.27 div VResolution mul} def % points to dots
+ /DvipstoPDF {72.27 mul Resolution div} def % dots to points
+ /HTeXtoDvips {TeXtoPDF PDFtoDvips} def % sp to dots
+ /VTeXtoDvips {TeXtoPDF PDFtoVDvips} def end} % sp to dots
+% \end{macrocode}
+% The \texttt{cstr} is used to calculate the lower left corner of the the bounding
+% box of an \textsf{EPS} file for \texttt{dvips}.
+% \begin{macrocode}
+\special{!userdict begin /cstr {currentpoint translate
+ 1 PDFtoDvips DVImag mul -1 PDFtoDvips DVImag mul scale}def end}
+\def\gxsp@setPSCoor{cstr }
+\def\b@grxsp@Literal{userdict begin}
+\def\e@grxsp@Literal{end}
+\else
+% \end{macrocode}
+%\paragraph*{Dvipsone driver.} The following is code special to the \textsf{dvipsone} driver.
+%
+% The \texttt{undsclx} is used to calculate the lower left corner of the the bounding
+% box of an \textsf{EPS} file for \texttt{dvipsone}.
+% \begin{macrocode}
+\def\gxsp@setPSCoor{undsclx }
+\let\b@grxsp@Literal\@empty
+\let\e@grxsp@Literal\@empty
+\fi
+% \end{macrocode}
+% These are procedures that support the dynamic naming of \verb!/_objdef!. Distiller
+% crashes if any symbolic reference name is not unique. So we must protect distiller.
+% \texttt{grcxspObjDef} takes a single argument on the operand stack
+%\begin{verbatim}
+% (<name>) grcxspObjDef
+%\end{verbatim}
+% and leaves at the top of the stack \verb!(<name>)graphicxspCnt-currentpage)!
+% \begin{macrocode}
+\special{!\b@grxsp@Literal
+ /currentpage 0 def
+ /graphicxspCnt 0 def
+ /graphicxspStr 10 string def
+ /graphicxspMergeStr {2 copy length exch length add string dup dup
+ 4 3 roll 4 index length exch putinterval 3 1 roll exch
+ 0 exch putinterval} def
+ /grcxspObjDef {
+ /graphicxspCnt graphicxspCnt 1 add def
+ currentpage graphicxspStr cvs graphicxspMergeStr
+ (-) graphicxspMergeStr
+ graphicxspCnt graphicxspStr cvs
+ graphicxspMergeStr
+% dup (Creating _objdef ) exch (\string\n) graphicxspMergeStr
+% graphicxspMergeStr print flush
+ } def \e@grxsp@Literal
+}
+% \end{macrocode}
+%
+% \section{Messing with \textsf{eso-pic}}
+%
+% One of the problems was to embed \textsf{EPS} files within a
+% \textbf{BP}/\textbf{EP} operator pair. The solutions was to use
+% \textsf{eso-pic}, place each graphic at the lower left corner of
+% the page. We define a new ``Hook'' for \textsf{eso-pic} and attach
+% it to \cs{@ShipoutPicture}.
+% \begin{macrocode}
+\def\ESO@AeBip@Hook{}
+\newcommand{\AddToEmbeddedEPSs}{\g@addto@macro\ESO@AeBip@Hook}
+% \end{macrocode}%
+% We redefine \cs{@ShipoutPicture} command of \textsf{eso-pic} so
+% that the embedded figures are placed before \texttt{ESO@HookI} and
+% \texttt{ESO@HookII}, for the case that someone wants to use placed
+% pictures for a background, the file must be embedded before they
+% can be inserted.
+% \begin{macrocode}
+\@ifundefined{@ShipoutPicture}{%
+% \end{macrocode}
+% The new version of eso-pic does not define \cs{@ShipoutPicture}, so we
+% use some of the new code.
+% \begin{macrocode}
+ \ESO@isMEMOIR{%
+ \AtBeginShipout{%
+ \@tempdima=-\trimedge
+ \advance\@tempdima-\paperwidth
+ \advance\@tempdima\stockwidth
+ \if@twoside\ifodd\c@page\else
+ \advance\@tempdima2\trimedge
+ \advance\@tempdima\paperwidth
+ \advance\@tempdima-\stockwidth
+ \fi\fi
+ \@tempdimb=\ESO@yoffsetI
+ \advance\@tempdimb-\trimtop
+ \nointerlineskip
+ \AtBeginShipoutUpperLeft{%
+ \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){%
+ \ESO@HookIII\ESO@HookI\ESO@HookII
+ \global\let\ESO@HookII\@empty
+ }%
+ }%
+ }
+ }{%
+ \AtBeginShipout{%
+ \nointerlineskip
+ \AtBeginShipoutUpperLeft{%
+ \put(0,\LenToUnit{\ESO@yoffsetI}){%
+ \ESO@HookIII\ESO@AeBip@Hook\ESO@HookI\ESO@HookII% dps
+ \global\let\ESO@HookII\@empty
+ \global\let\ESO@AeBip@Hook\@empty% dps
+ }%
+ }%
+ }
+ }
+}{%
+% \end{macrocode}
+% If \cs{@ShipoutPicture} is defined, we use the old code.
+% \begin{macrocode}
+ \renewcommand{\@ShipoutPicture}{%
+ \bgroup
+ \@tempswafalse%
+ \ifx\ESO@HookI\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@HookII\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@HookIII\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@AeBip@Hook\@empty\else\@tempswatrue\fi%dps(08/16/07)
+ \if@tempswa%
+ \@tempdima=1in\@tempdimb=-\@tempdima%
+ \advance\@tempdimb\ESO@yoffsetI%
+ \ESO@isMEMOIR{%
+ \advance\@tempdima\trimedge%
+ \advance\@tempdima\paperwidth%
+ \advance\@tempdima-\stockwidth%
+ \if@twoside\ifodd\c@page\else%
+ \advance\@tempdima-2\trimedge%
+ \advance\@tempdima-\paperwidth%
+ \advance\@tempdima\stockwidth%
+ \fi\fi%
+ \advance\@tempdimb\trimtop}%
+ \unitlength=1pt%
+ \global\setbox\@cclv\vbox{%
+ \vbox{\let\protect\relax
+ \pictur@(0,0)(\strip@pt\@tempdima,\strip@pt\@tempdimb)%
+ \ESO@HookIII\ESO@AeBip@Hook\ESO@HookI\ESO@HookII%dps
+ \global\let\ESO@HookII\@empty%
+ \global\let\ESO@AeBip@Hook\@empty% %dps
+ \endpicture}%
+ \nointerlineskip%
+ \box\@cclv}%
+ \fi
+ \egroup
+ }
+}
+% \end{macrocode}
+% \begin{macrocode}
+\AddToShipoutPicture{\special{ps: /currentpage \thepage\space def}}
+% \end{macrocode}
+%
+% \section{Useful Supporting Commands}
+%
+% Some standard code that I use in AeB to wrote verbatim tex to a file.
+% \begin{macrocode}
+\def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active \catcode`\^^I=12
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start
+}
+\def\endverbatimwrite{\@esphack}
+\def\gxsp@IWVO{\immediate\write\verbatim@out}
+\def\x@namedef#1{\expandafter\xdef\csname #1\endcsname}
+\def\e@namedef#1{\expandafter\edef\csname #1\endcsname}
+% \end{macrocode}
+% Below is a counter to insure each name is unique. It is used
+% in \cs{Ginclude@eps@SP}.
+% \begin{macrocode}
+\newcount\grxsp@cnt \grxsp@cnt=0
+% \end{macrocode}
+% \section{The Main Section}
+%
+% In this section we define two commands for the user, \cs{embedEPS} and
+% \cs{insertEPS}, defined additional keys for the \textsf{graphicx} package, and
+% consequently, hook into the \cs{includegraphics} command.
+%
+% Some helper commands to save the dimensions of the pictures as
+% they are embedded using \cs{embedEPS}.
+% \begin{macrocode}
+\def\grcxsp@setPictureDimen#1#2#3#4#5{%
+ \x@namedef{#1Gin@llx}{#2}\x@namedef{#1Gin@lly}{#3}%
+ \x@namedef{#1Gin@urx}{#4}\x@namedef{#1Gin@ury}{#5}%
+ \x@namedef{#1BBox}{#2 #3 #4 #5}%
+ \begingroup
+% \end{macrocode}
+% Calculate the width and height of the EPS. If the lower-left corner
+% is not (0,0), results may not be predictable.
+% \begin{macrocode}
+ \@tempdima=#4bp
+ \advance\@tempdima-#2bp
+ \@tempdima=.99626\@tempdima
+ \x@namedef{#1widthOf}{\strip@pt\@tempdima}%
+ \@tempdima=#5bp
+ \advance\@tempdima-#3bp
+ \@tempdima=.99626\@tempdima
+ \x@namedef{#1heightOf}{\strip@pt\@tempdima}%
+ \endgroup
+}
+% \end{macrocode}
+% \begin{macro}{\heightOf}
+% \begin{macro}{\widthOf}
+% \begin{macro}{\llxOf}
+% \begin{macro}{\llyOf}
+% \begin{macro}{\urxOf}
+% \begin{macro}{\uryOf}
+% More helper commands for calculating the height, width and path of
+% an embedded file. These can be used by the user, that's you.
+% \begin{macrocode}
+\def\heightOf#1{\csname#1heightOf\endcsname}
+\def\widthOf#1{\csname#1widthOf\endcsname}
+\def\bboxOf#1{\csname#1BBox\endcsname}
+\def\llxOf#1{\csname#1Gin@llx\endcsname}
+\def\llyOf#1{\csname#1Gin@lly\endcsname}
+\def\urxOf#1{\csname#1Gin@urx\endcsname}
+\def\uryOf#1{\csname#1Gin@ury\endcsname}
+% \end{macrocode}
+% Other internal commands that save info.
+% \begin{macrocode}
+%\def\grcxsp@pathOf#1{\csname#1path\endcsname}
+%\def\grcxsp@importSF#1{\csname#1importScaleFactor\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% We redefine a command from \textsf{graphics}. When testing the \texttt{draft} option,
+% we had some problems with an underscore |\_| in the value of the \texttt{name} key,
+% so we sanitize this character.
+% \begin{macrocode}
+%\def\spx@sanitize{\catcode`\_=12\relax}
+%\def\Gin@i{%
+% \@ifnextchar[%]
+% {\spx@sanitize\Gin@ii}
+% {\Gin@bboxfalse\Ginclude@graphics}}
+% \end{macrocode}
+% \begin{macro}{\embedEPS}
+% This is the command for embedding an \textsf{EPS} file in the document for use
+% by the \textbf{SP} operator. The command takes three arguments, one of which is
+% optional
+%\begin{enumerate}
+% \item[]\makebox[0pt][r]{\texttt{[\#1]}: }Recognizes two key-value pairs (1) \texttt{hiresbb},
+% this is the same key-value used by the \textsf{graphicx} package; (2) \texttt{transparencyGroup},
+% a new option for creating a transparency group. Using \texttt{transparencyGroup} without
+% any value will make the embedded graphic into a transparency group, with a value adds
+% additional keys as documented in the \textsl{PDF Reference}.
+% \item[]\makebox[0pt][r]{\texttt{\#2}: }A symbolic name for the embedded graphic, this name is used
+% by distiller.
+% \item\makebox[0pt][r]{\texttt{\#3}: }path to the \texttt{EPS} file (without extension).
+%\end{enumerate}
+% I prefer the \cs{embedEPS} commands to appear in the preamble, but they can appear anywhere
+% before the first appearance of \cs{includegraphics} or \cs{insertEPS} that reference the
+% embedded file. I suppose this embedding could have been automatic at the first occurrence
+% of \cs{includegraphics} or \cs{insertEPS}, but I didn't go that route.
+% \begin{macrocode}
+\newcommand{\embedEPS}[3][]{%
+ \@ifundefined{#2Gin@llx}{}{%
+ \PackageError{graphicxsp}%
+ {The name, #2, on line \the\inputlineno\MessageBreak
+ is already defined. All embedded graphics\MessageBreak
+ must be assigned a unique name}
+ {Give this embedded graphic a unique name.}%
+ }%
+ \begingroup
+ \let\Gin@transparencygroup\@empty
+% \end{macrocode}
+% We use the \textsf{graphicx} command \cs{Gread@eps} to verify that
+% the graphic exists, and if so, get its bounding box parameters. We
+% work only with \texttt{.eps} files so let's add the extension.
+% \begin{macrocode}
+ \let\input@path\Ginput@path
+ \filename@parse{#3.eps}%
+ \Gin@getbase{.eps}%
+ \@ifundefined{Gin@base}{%
+ \PackageError{graphicxsp}%
+ {%
+ Graphics file #3 specified on \the\inputlineno\MessageBreak
+ was not found%
+ }{%
+ Verify the file exists, is an eps file,\MessageBreak
+ is on the latex search path, or is in the\MessageBreak
+ current directory.%
+ }%
+ }{}%
+ \e@namedef{gxsp@Gin@base}{\Gin@base}%
+ \Gread@eps{\gxsp@Gin@base.eps}%
+% \end{macrocode}
+% Now set the keys. We delayed the \cs{setkeys} because \texttt{name=\#2} would
+% set the switch \verb!\if@Ginnamed! to \texttt{true}, which has consequences
+% on computing the \cs{Gin@base} when \cs{Gin@setfile} is executed.
+% \begin{macrocode}
+ \setkeys{Gin}{name=#2,#1}%
+% \end{macrocode}
+% Once the file is found and the bounding box parameters are recorded by
+% \textsf{graphicx}, we save these under the graphic's embedded symbolic name.
+% \begin{macrocode}
+ \grcxsp@setPictureDimen%
+ {\Gin@name}{\Gin@llx}{\Gin@lly}{\Gin@urx}{\Gin@ury}%
+% \x@namedef{\Gin@name path}{#3}%
+% \end{macrocode}
+% If an embedded graphic exceeds the boundaries of
+% the paper size, the graphic is clipped off. What I am doing below
+% is determining the largest scale factor,
+% \cs{gxsp@embedSF}, needed to embed the file without
+% exceeding the page boundaries.
+% \begin{macrocode}
+ \def\gxsp@embedSF{1}%
+ \@tempdima=\Gin@urx bp
+ \advance\@tempdima-\Gin@llx bp
+ \ifdim\@tempdima>\paperwidth
+ \Gscale@div\gxsp@embedSF\paperwidth\@tempdima
+ \@tempdima=\Gin@ury bp
+ \advance\@tempdima-\Gin@lly bp
+ \@tempdima=\gxsp@embedSF\@tempdima
+ \ifdim\@tempdima>\paperheight
+ \edef\gxsp@embedSFSave{\gxsp@embedSF}%
+ \Gscale@div\gxsp@embedSF\paperheight\@tempdima
+ \@tempdima=\gxsp@embedSFSave\p@
+ \@tempdima=\gxsp@embedSF\@tempdima
+ \edef\gxsp@embedSF{\strip@pt\@tempdima}%
+ \fi
+ \else
+ \@tempdima=\Gin@ury bp
+ \advance\@tempdima\Gin@lly bp
+ \ifdim\@tempdima>\paperheight
+ \Gscale@div\gxsp@embedSF\paperheight\@tempdima
+ \fi
+ \fi
+% \end{macrocode}
+% Now that we have \cs{gxsp@embedSF}, we add the current graphic to our
+% collection of embedded files using \cs{AddToEmbeddedEPSs},
+% which is a variation on \cs{AddToShipoutPicture}, but uses
+% \cs{ESO@AeBip@Hook} for our private use. We expand some of the
+% arguments before executing \cs{AddToEmbeddedEPSs}.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \noexpand\AddToEmbeddedEPSs{\noexpand\AtPageLowerLeft%
+ {\noexpand\scalebox{\gxsp@embedSF}%
+ {\noexpand\gxsp@embedEPS{\gxsp@Gin@base}{\Gin@name}}}%
+ \noexpand\AtPageCenter{\noexpand\gcxsp@wrapEmbeddedFigure%
+ {\Gin@transparencygroup}{#2}{\Gin@transparency}}}}\@tempa
+ \endgroup
+}
+\@onlypreamble{\embedEPS}
+% \end{macrocode}
+% In a dvi previewer, the embedded graphics are visible on the first page.
+% The \cs{grcxsp@coverEmbeds} puts a white color box over the graphics,
+% {\LaTeX} content and other graphics are placed over this white color box.
+% The white color box can be removed with the \texttt{showembeds} option.
+% \begin{macrocode}
+\def\grcxsp@coverEmbeds{%
+ \AddToEmbeddedEPSs{\AtPageLowerLeft{\colorbox{white}{%
+ \parbox[b][\paperheight]{\paperwidth}{\hfill\vfill}}}}}
+\if\gxsp@showembeds1%
+\AtBeginDocument{\grcxsp@coverEmbeds}
+\else
+\let\grcxsp@coverEmbeds\relax
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\gxsp@embedEPS}
+% The \cs{gxsp@embedEPS} command embeds the file, and is called
+% by \cs{embedEPS}. It takes three options: (1) the value of
+% \texttt{transparencyGroup}; (2) the \textsf{EPS} path; and (3) the
+% symbolic name for the graphic.
+%
+% The bounding box \texttt{/BBox} acts as a clipping path, if the graphic
+% falls outside the box, it is clipped off. Since we don't know the size of
+% the graphic in advance, and the value of the \verb!%%BoundingBox! can be
+% deceiving, set the of \texttt{/BBox} to an array with enormous dimensions,
+% the default is \texttt{\string\grcxsp@maxDim = 5000}. This can be reset to
+% larger value if you are embedding graphics of even more enormous dimensions.
+% \begin{macrocode}
+\def\grcxsp@maxDim{5000}
+% \end{macrocode}
+% Now, for the \cs{gxsp@embedEPS} command that embed the graphic
+% between \textbf{BP} and \textbf{EP}.
+% \begin{macrocode}
+\newcommand{\gxsp@embedEPS}[2]{%
+ \gxsp@literalps@out{gsave \gxsp@setPSCoor
+ [ /BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]\space/_objdef {Embedded:#2}
+ /BP pdfmark grestore}%
+ \message{<Embedding #1>}%
+% \end{macrocode}
+% If we are using dvipsone, we can suppress the preview of the embedded
+% file by not using the extension. Dviwindo will look for a tiff file, if
+% not present, will not display a preview.
+% \begin{macrocode}
+ \includegraphics{#1}%
+ \gxsp@literalps@out{[ /EP pdfmark}%
+}
+% \end{macrocode}
+% \end{macro}
+% We create a wrapper that shows the Embedded file under the original
+% symbolic name Here we introduce any transparency ordered up in the
+% option list of \cs{embedEPS}
+% \begin{macrocode}
+\def\gcxsp@wrapEmbeddedFigure#1#2#3{%
+ \def\Gin@transparencygroup{#1}\def\Gin@transparency{#3}%
+ \gxsp@literalps@out{gsave \gxsp@setPSCoor
+ \ifGin@clip
+ [/BBox [\llxOf{#2}\space\llyOf{#2}\space
+ \urxOf{#2}\space\uryOf{#2}]
+ \else
+ [ /BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]
+ \fi\space /_objdef {#2}
+ \ifx\Gin@transparencygroup\@empty\else
+ \ifx\Gin@transparencygroup\Gin@exclamation
+ /Group << /S/Transparency >>%
+ \else
+ /Group << /S/Transparency \Gin@transparencygroup >>%
+ \fi
+ \fi\space
+ /BP pdfmark
+ [ {Embedded:#2} /SP pdfmark
+ [/EP pdfmark
+ grestore}%
+}
+% \end{macrocode}
+% \begin{environment}{createImage}
+% The \texttt{createImage} environment can be used for two purposes:
+%\begin{enumerate}
+% \item Use it to take a file already embedded, manipulate it, and give it a symbolic name.
+% \item Use postscript graphic operators to create an image.
+%\end{enumerate}
+% The images can be shown using \cs{includegraphics} or
+% \cs{insertEPS}, or they can be referenced as an appearance of a
+% form field.
+%
+% We try something different. My usual approach for a verbatim environment is to write
+% the contents to an auxiliary file and input that file back in. This approach precludes
+% using the environment in another command. The text to this environment should be PostScript
+% or PDF language statements, or {\TeX} macros that expand to same. We'll absorb the
+% contents in the environment as an argument \texttt{\#1} of the \cs{grxcsp@createImage} command.
+% However, before we get to \cs{grxcsp@createImage} we must execute \cs{createImage}, the user's
+% access to this code.
+%
+% \cs{createImage} takes three arguments, the first one of which is optional
+%\begin{enumerate}
+% \item[]\makebox[0pt][r]{\texttt{[\#1]}: }Takes the key-values of \cs{includegraphics}, plus some of
+% the graphicxsp key-values, such as \texttt{transparencyGroup}. The name key
+% is ignored, and is declared in the third parameter.
+% \item[]\makebox[0pt][r]{\texttt{\#2}: }The bounding box for this image.
+% \item[]\makebox[0pt][r]{\texttt{\#3}: }The \texttt{name} to be attached to this image.
+%\end{enumerate}
+%\changes{v.6}{2008/06/15 }
+%{
+% Made \texttt{createImage} into a private environment, \texttt{sp@createImage}, which can be used anywhere, then
+% created a public version, \texttt{createImage}, which is restricted to the preamble. This change
+% is needed to create dynamic appearances in the \textsf{rmannot} package.
+%}
+% \begin{macrocode}
+\newcommand{\sp@createImage}[3][]{%
+ \@ifundefined{#3Gin@llx}{}{%
+ \PackageError{graphicxsp}%
+ {The name, #3, on line \the\inputlineno\space\MessageBreak
+ is already defined. All embedded graphics\MessageBreak
+ must be assigned a unique name}
+ {Give this embedded graphic a unique name.}%
+ }%
+ \setkeys{Gin}{#1}\def\Gin@name{#3}%
+ \edef\@gtempa{#2 }%
+ \expandafter\Gread@parse@bb\@gtempa \\%
+ \begingroup\grxcsp@createImage
+}
+\let\postEP\@empty
+\long\def\grxcsp@createImage#1\end#2{%
+ \def\reserved@a{#2}\ifx\reserved@a\@currenvir
+ \end{#2}\else\@badend{#2}\fi
+ \edef\temp@transparencyGroup{%
+ \ifx\Gin@transparencygroup\@empty\else
+ \ifx\Gin@transparencygroup\Gin@exclamation
+ /Group << /S/Transparency >>%
+ \else
+ /Group << /S/Transparency \Gin@transparencygroup >>%
+ \fi
+ \fi}%
+ \grcxsp@setPictureDimen%
+ {\Gin@name}{\Gin@llx}{\Gin@lly}{\Gin@urx}{\Gin@ury}%
+% \end{macrocode}
+% (2009/02/19) We use \cs{AddToEmbeddedEPSs} to embed EPS created by the
+% \texttt{create\-Image} environment. This allows the EPS to be used on
+% the first page, which has been a problem in the past.
+% \begin{macrocode}
+ \edef\@tempa{%
+ \noexpand\AddToEmbeddedEPSs{\noexpand\AtPageLowerLeft{%
+ \noexpand\gxsp@literalps@out{gsave \gxsp@setPSCoor
+ [ /BBox [\Gin@llx\space\Gin@lly\space\Gin@urx\space\Gin@ury]
+ /_objdef {\Gin@name} \temp@transparencyGroup\space/BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ {#1} ?pdfmark
+ [ /EP pdfmark
+ grestore
+ }%
+ }}}\@tempa
+ \endgroup
+}
+\let\createImage\sp@createImage
+\let\endcreateImage\endsp@createImage
+\@onlypreamble{\createImage}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\insertEPS}
+% The idea was to use the \cs{includegraphics} command to show a graphic that
+% has been earlier embedded. However, one of \cs{includegraphics} arguments is
+% the path of the eps file. Once, the file is embedded, the path is not needed,
+% so this package defines \cs{insertEPS}. This command takes two arguments: (1)
+% The usual \cs{includegraphics} options, plus any other options defined in this
+% package; (2) the symbolic name. Because the symbolic name is passed as the second
+% argument, it is not necessary to specify in the optional parameter list. The following
+% two (should) be equivalent:
+%\begin{verbatim}
+% \embedEPS{myCoolSelfPic}
+% ...
+% \begin{document}
+% ...
+% \includegraphics[name=AdobeDon,width=1in]{myCoolSelfPic}
+% \insertEPS[width=1in]{AdobeDon}
+% ...
+%\end{verbatim}
+% \begin{macrocode}
+\def\xsp@sanitize{\catcode`\_=12\relax}
+\newcommand{\insertEPS}{\bgroup\xsp@sanitize
+ \@ifstar
+ {\Gin@cliptrue\let\gcxsp@star*\gcxsp@insertEPS}%
+ {\Gin@clipfalse\let\gcxsp@star\@empty\gcxsp@insertEPS}}
+\newcommand{\gcxsp@insertEPS}[2][]%
+ {\expandafter\includegraphics\gcxsp@star[name=#2,#1]{}\egroup}
+% \end{macrocode}
+% \end{macro}
+%\section{Messing with \textsf{graphicx}}
+% In this section, we add some options to the \textsf{graphicx} package. We define
+% some additional keys that will be recognized by \cs{includegraphics}. We also
+% redefine \cs{Gin@ii} and \cs{Gin@setfile}, which are \textsf{graphicx} commands
+% to make things work for us.
+% \begin{macro}{name}
+% Use the \texttt{name} key-value pair only for graphics already embedded by \cs{embedEPS}.
+% When this key is present, we \cs{let} \cs{Ginclude@eps} to \cs{Ginclude@eps@SP}.
+% \cs{Ginclude@eps} is the usual way of handling EPS files, \cs{Ginclude@eps@SP}
+% is how we are to handle files already embedded. Usage:
+%\begin{verbatim}
+% \includegraphics[name=AdobeDon,width=1in]{myCoolSelfPic}
+%\end{verbatim}
+% \begin{macrocode}
+\newif\if@Ginnamed\@Ginnamedfalse
+\define@key{Gin}{name}[]{\def\Gin@name{#1}%
+ \@Ginnamedtrue\let\Ginclude@eps\Ginclude@eps@SP}
+\def\Gin@name{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{transparencyGroup}
+% This defines the transparencyGroup key which is used only
+% recognized with \cs{embedEPS}. See the Transparency section of the
+% pdfmark Reference and the chapter on Transparency in the PDF
+% Reference. In particular, see PDF Ref Table 7.13. Usage:
+%\begin{verbatim}
+% \embedEPS[transparencyGroup]{myCoolSelfPic}
+%\end{verbatim}
+% \begin{macrocode}
+\define@key{Gin}{transparencyGroup}[!]{\def\Gin@transparencygroup{#1}}
+\def\Gin@transparencygroup{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{transparency}
+% Enter any transparency postscript key-value pairs for this image.
+% These are ignored unless the embedded file is a transparency group,
+% and you distill with \verb!<< /AllowTransparency true >>!
+% setdistillerparams!. Usage:
+%\begin{verbatim}
+% \embedEPS[transparencyGroup]{myCoolSelfPic}
+% ...
+% \begin{document}
+% ...
+% \includegraphics[name=AdobeDon,width=1in,
+% transparency={/ca .5 /BM/Normal}]{myCoolSelfPic}
+%\end{verbatim}
+%or
+%\begin{verbatim}
+% \insertEPS[width=1in,transparency={/ca .5 /BM/Normal}]{AdobeDon}
+%\end{verbatim}
+% \begin{macrocode}
+\define@key{Gin}{transparency}[]{\def\Gin@transparency{#1}}%
+\def\Gin@transparency{}%
+\define@key{Gin}{SMask}[]{\def\Gin@SMask{#1}}%
+\def\Gin@SMask{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{presp}
+% \begin{macro}{postsp}
+% We define two additional keys for creating special effects. The
+% value of \texttt{presp} and \texttt{postsp} are postscript commands
+% for manipulating the image. As the names suggest, \texttt{presp} is
+% placed before the \textbf{SP} operator, and \texttt{postsp} is
+% placed after. Example of usage is given in one of the demo files.
+% \begin{macrocode}
+\define@key{Gin}{presp}{\def\Gin@presp{#1}}
+\def\Gin@presp{}
+\define@key{Gin}{postsp}{\def\Gin@postsp{#1}}
+\def\Gin@postsp{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% The following key-value pairs are recognized by \cs{setSMask},
+% \cs{embedEPS} and \cs{includegraphics} and are used to
+% set up a soft mask.
+% \begin{macro}{SMask}
+% \begin{macro}{subtype}
+% \begin{macro}{group}
+% \begin{macro}{bc}
+% \begin{macro}{tc}
+% The key \texttt{SMask} is used in the optional parameter list of
+% \cs{insertEPS} and \cs{includegraphics}, when that graphic is to
+% use a soft mask. The value of \texttt{SMask} is a key-value list,
+% the keys are \texttt{subtype}, \texttt{group}, \texttt{bc} and
+% \texttt{tr}. The default for \texttt{subtype} is \texttt{Luminosity}, the other
+% value recognized is \texttt{Alpha}. If \texttt{subtype} is not listed, \texttt{Luminosity}
+% is used for the \texttt{subtype}. The \texttt{group} key is required, and the latex compile
+% will stop if it is not specified. The value of group is the name of a graphic to be used
+% as a mask. This graphic must be a transparency group with the \texttt{CS} key specified.
+% The other two keys, \texttt{bc} (component color) and \texttt{tr} (transfer function) to
+% complete the supported keys. See Table 7.10, page 553, of the \textsl{PDF Reference}, Version 8,
+% for detailed descriptions of these key-values.
+% \begin{macrocode}
+\define@key{Gin}{SMask}[]{\def\GinSP@SMask{#1}}
+\def\GinSP@SMask{}
+\define@key{GinSP}{subtype}[Luminosity]{\def\GinSP@subtype{#1}}
+\def\GinSP@subtype{Luminosity}
+\define@key{GinSP}{group}[]{\def\GinSP@group{#1}}
+\def\GinSP@group{}
+\define@key{GinSP}{bc}[]{\def\GinSP@bc{#1}}
+\def\GinSP@bc{}
+\define@key{GinSP}{tr}[]{\def\GinSP@tr{#1}}
+\define@key{GinSP}{None}[None]{\def\SMaskSP@None{#1}}
+\def\GinSP@tr{}
+\def\SMaskSP@None{}
+\def\SMaskSP@Identity{Identity}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\setSMask}
+% Use \cs{setSMask} to set a soft mask. This command takes one required argument,
+% the name of the transparency group to be use as the source of alpha or color
+% values for deriving the mask. The optional parameter consists of key-value
+% pairs for the soft-mask dictionary, see table 7.10 of the PDF Reference, Version 8.
+% \begin{macrocode}
+\def\sp@setSMask{%
+ \ifx\GinSP@SMask\SMaskSP@None[ /SMask/None /SetTransparency pdfmark
+ \else
+ [ /SMask << /S/\GinSP@subtype\space
+ \ifx\GinSP@bc\@empty\else/BC\GinSP@bc\space\fi
+ \ifx\GinSP@tr\@empty\else\ifx\GinSP@tr\SMaskSP@Identity%
+ /TR/Identity\else/TR {\GinSP@tr}\space\fi\fi
+ /G {\GinSP@group} >> /SetTransparency pdfmark
+ \fi
+}
+\newcommand{\setSMask}[2][]{%
+ \setkeys{GinSP}{#1}\def\GinSP@group{#2}%
+ \special{ps: \sp@setSMask}%
+}
+% \end{macrocode}
+% \end{macro}
+% We redefine \cs{Gin@setfile}. If the graphic is named, we salt things
+% with the bounding box parameters.
+% \begin{macrocode}
+\def\Gin@setfile#1#2#3{%
+ \ifx\\#2\\\Gread@false\fi
+ \ifGin@bbox\else
+ \ifGread@
+\if@Ginnamed %dps (08/16/07)
+ \edef\Gin@llx{\csname\Gin@name Gin@llx\endcsname}%
+ \edef\Gin@lly{\csname\Gin@name Gin@lly\endcsname}%
+ \edef\Gin@urx{\csname\Gin@name Gin@urx\endcsname}%
+ \edef\Gin@ury{\csname\Gin@name Gin@ury\endcsname}%
+\else
+ \csname Gread@%
+ \expandafter\ifx\csname Gread@#1\endcsname\relax
+ eps%
+ \else
+ #1%
+ \fi
+ \endcsname{\Gin@base#2}%
+\fi
+ \else
+ \Gin@nosize{#3}%
+ \fi
+ \fi
+ \Gin@viewport@code
+ \Gin@nat@height\Gin@ury bp%
+ \advance\Gin@nat@height-\Gin@lly bp%
+ \Gin@nat@width\Gin@urx bp%
+ \advance\Gin@nat@width-\Gin@llx bp%
+ \Gin@req@sizes
+ \expandafter\ifx\csname Ginclude@#1\endcsname\relax
+ \Gin@drafttrue
+ \expandafter\ifx\csname Gread@#1\endcsname\relax
+ \@latex@error{Can not include graphics of type: #1}\@ehc
+ \global\expandafter\let\csname Gread@#1\endcsname\@empty
+ \fi
+ \fi
+ \leavevmode
+ \ifGin@draft
+ \hb@xt@\Gin@req@width{%
+ \vrule\hss
+ \vbox to \Gin@req@height{%
+ \hrule \@width \Gin@req@width
+ \vss
+ \if@Ginnamed %dps (08/18/07)
+% \end{macrocode}
+% If the \texttt{shownonames} option is taken, we do not show the name of the graphic.
+% \begin{macrocode}
+ \if@spx@shownameindraft
+ \rlap{ \ttfamily\Gin@name}\fi
+ \else
+ \edef\@tempa{#3}%
+ \rlap{ \ttfamily\expandafter\strip@prefix\meaning\@tempa}%
+ \fi
+ \vss
+ \hrule}%
+ \hss\vrule}%
+ \else
+\if@Ginnamed\else % dps (08/16/07)
+ \@addtofilelist{#3}%
+ \ProvidesFile{#3}[Graphic file (type #1)]%
+\fi
+ \setbox\z@\hbox{\csname Ginclude@#1\endcsname{#3}}%
+ \dp\z@\z@
+ \ht\z@\Gin@req@height
+ \wd\z@\Gin@req@width
+ \ifpreview{\setlength{\fboxsep}{0pt}\fbox{\box\z@}}\else\box\z@\fi%
+ \fi}
+\def\Gin@getbase#1{%
+ \edef\Gin@tempa{%
+ \def\noexpand\@tempa####1#1\space{%
+ \def\noexpand\Gin@base{####1}}}%
+% \end{macrocode}
+% If the current graphic is named, then we don't need to read the bounding
+% box again or to see if it exists again.
+% \begin{macrocode}
+ \if@Ginnamed
+ \edef\Gin@ext{#1}\edef\Gin@base{\Gin@name}%dps (08/18/07)
+ \else
+% \end{macrocode}
+% If not named, we need to handle it in the usual way.
+% \begin{macrocode}
+ \IfFileExists{\filename@area\filename@base#1}%
+ {\Gin@tempa
+ \expandafter\@tempa\@filef@und
+ \edef\Gin@ext{#1}}{}%
+ \fi
+}%
+% \end{macrocode}
+% \begin{macro}{\Gin@computeSF}
+% Based on scaling info provided by graphicx, we compute the scale factors
+% we need.
+% \begin{macrocode}
+\def\Gin@computeSF{%
+ \def\@tempa{!}%
+ \edef\gxsp@scaleFactor@x{\Gin@scalex}%
+ \edef\gxsp@scaleFactor@y{\Gin@scaley}%
+ \ifx\Gin@scaley\@tempa % proportional height
+ \ifx\Gin@scalex\@tempa % proportional width
+ \def\gxsp@scaleFactor@x{1}%
+ \def\gxsp@scaleFactor@y{1}%
+ \else % specified width
+ \edef\gxsp@scaleFactor@y{\Gin@scalex}%
+ \fi
+ \else % specified height
+ \ifx\Gin@scalex\@tempa % proportional width
+ \edef\gxsp@scaleFactor@x{\Gin@scaley}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Ginclude@eps@SP}
+% This is the substitute for the usual way of handing an EPS file.
+% Here we use the \textbf{SP} to show the embedded graphic.
+% \begin{macrocode}
+\def\gxsp@setBBox{%
+ \ifGin@clip
+ [/BBox [\Gin@llx\space\Gin@lly\space\Gin@urx\space\Gin@ury]
+ \else
+ [/BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]
+ \fi
+}
+\def\Ginclude@eps@SP#1{%
+% \message{<#1>}%
+ \bgroup
+% \end{macrocode}
+% See if the user has specified the \texttt{SMask} key, if yes, we'll
+% check to see if a group name was specified. The group name is required.
+% If no, we halt the compile job.
+% \begin{macrocode}
+ \ifx\GinSP@SMask\@empty\else
+ \edef\sp@expand@temp{\noexpand\setkeys{GinSP}{\GinSP@SMask}}%
+ \sp@expand@temp
+ \ifx\SMaskSP@None\@empty\ifx\GinSP@group\@empty
+ \PackageError{graphicxsp}{The group key is required when you
+ specify a SMask.}{Specify a group name for the group key.}%
+ \fi\fi\fi
+ \Gin@computeSF
+ \ifGin@bbox
+ \gxsp@literalps@out{%
+ gsave \gxsp@setPSCoor
+% \end{macrocode}
+% If \texttt{SMask} is specified, we call \cs{sp@setSMask} to
+% set the graphics state parameters for a soft mask.
+% \begin{macrocode}
+ \ifx\GinSP@SMask\@empty\else\sp@setSMask\fi
+ \gxsp@setBBox\space
+% \end{macrocode}
+% We push the basename \verb!(\Gin@name:bbox)! and call \texttt{grcxspObjDef}.
+% This procedure returns \verb!(\Gin@name:bboxgraphicxspCnt-currentpage)!.
+% \texttt{graphicxspretn} then takes that result, and converts it to a name type.
+% We then use it in \verb!/_objdef {//graphicxspretn}!, using immediate execution.
+% \begin{macrocode}
+ (\Gin@name:bbox@) grcxspObjDef
+ /graphicxspretn exch cvx cvn def
+ /_objdef {//graphicxspretn} /BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ [ {\Gin@name} /SP pdfmark
+ [ /EP pdfmark
+ \gxsp@scaleFactor@x\space\gxsp@scaleFactor@y\space scale
+ -\Gin@llx\space -\Gin@lly\space moveto
+ currentpoint translate
+ \Gin@presp
+ [ {//graphicxspretn} /SP pdfmark
+ \Gin@postsp
+ grestore
+ }%
+ \else
+ \gxsp@literalps@out{%
+ gsave \gxsp@setPSCoor
+% \end{macrocode}
+% If \texttt{SMask} is specified, we call \cs{sp@setSMask} to
+% set the graphics state parameters for a soft mask.
+% \begin{macrocode}
+ \ifx\GinSP@SMask\@empty\else\sp@setSMask\fi
+ \gxsp@setBBox\space
+ (\Gin@name:grxsp@) grcxspObjDef
+ /graphicxspretn exch cvx cvn def
+ /_objdef {//graphicxspretn} /BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ [ {\Gin@name} /SP pdfmark
+ [ /EP pdfmark
+ \gxsp@scaleFactor@x\space\gxsp@scaleFactor@y\space scale
+ \ifx\Gin@viewport@code\relax\else
+ -\Gin@llx\space-\Gin@lly\space moveto
+ currentpoint translate\fi
+ \Gin@presp
+ [ {//graphicxspretn} /SP pdfmark
+ \Gin@postsp
+ grestore
+ }%
+ \fi
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+% \Finale
+\endinput
diff --git a/texmf-dist/source/latex/graphicxsp/graphicxsp.ins b/texmf-dist/source/latex/graphicxsp/graphicxsp.ins
new file mode 100644
index 00000000..e499aa23
--- /dev/null
+++ b/texmf-dist/source/latex/graphicxsp/graphicxsp.ins
@@ -0,0 +1,60 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1999-2006 D. P. Story
+%%
+%% This file is part of the `AcroTeX eDucation Bundle'.
+%% -------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 of this license or (at your option) any
+%% later version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2007/08/14}
+\def\batchfile{graphicxsp.ins}
+
+\input docstrip
+\ifx\generate\undefined
+ \Msg{**********************************************}
+ \Msg{*}
+ \Msg{* This installation requires docstrip}
+ \Msg{* version 2.4 or later.}
+ \Msg{*}
+ \Msg{* An older version of docstrip has been input}
+ \Msg{*}
+ \Msg{**********************************************}
+ \errhelp{Move or rename old docstrip.tex and get a newer one.}
+ \errmessage{Old docstrip in input path}
+ \batchmode
+ \csname @@end\endcsname\end
+\fi
+
+\keepsilent
+\askforoverwritefalse
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\preamble
+\endpreamble
+
+\generate
+{%
+ \file{graphicxsp.sty}{\from{graphicxsp.dtx}{copyright,package}}
+}
+
+\Msg{***************************************************************}
+\Msg{*}
+\Msg{* \space To finish the installation you have to copy the files }
+\Msg{*}
+\Msg{* \space *.sty, *.cfg and *.def into a directory searched by TeX}
+\Msg{*}
+\Msg{***************************************************************}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/texmf-dist/tex/latex/aeb-mlink/aeb_mlink.sty b/texmf-dist/tex/latex/aeb-mlink/aeb_mlink.sty
new file mode 100644
index 00000000..cc323916
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-mlink/aeb_mlink.sty
@@ -0,0 +1,342 @@
+%%
+%% This is file `aeb_mlink.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_mlink.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_mlink.sty package, 2015-10-28 %%
+%% Copyright (C) 2006--2015 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% storyd@owc.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{aeb_mlink}
+ [2016/02/16 v2.0 AeB MLink (dps)]
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\newif\if@ml@dvips \@ml@dvipstrue
+\DeclareOption{dvipsone}{\def\eq@drivernum{0}\@ml@dvipsfalse
+ \PassOptionsToPackage{dvipsone}{eforms}
+ \PassOptionsToPackage{dvipsone}{hyperref} %,colorlinks
+}
+\DeclareOption{dvips}{\def\eq@drivernum{0}\@ml@dvipstrue
+ \PassOptionsToPackage{dvips}{eforms}
+ \PassOptionsToPackage{dvips}{hyperref} %,colorlinks
+}
+\def\ml@err@msg{This package requires the driver dvips and\MessageBreak
+ Adobe Distiller as the PDF creator}
+\ifpdf\PackageError{aeb_mlink}{\ml@err@msg}\else
+ \ifxetex\PackageError{aeb_mlink}{\ml@err@msg}\else
+ \InputIfFileExists{web.cfg}{}{}
+\fi\fi
+\ProcessOptions
+\RequirePackage{hyperref}
+\RequirePackage{eforms}[2008/03/14]
+\RequirePackage{soul}
+\def\ps@mark{[\space}
+\if@ml@dvips
+\special{!userdict begin
+ /TeXtoPDF {65536 div DVImag mul} def % sp to pts
+ /PDFtoDvips {72.27 div Resolution mul} def % points to dots
+ /PDFtoVDvips {72.27 div VResolution mul} def % points to dots
+ /DvipstoPDF {72.27 mul Resolution div} def % dots to points
+ /HTeXtoDvips {TeXtoPDF PDFtoDvips} def % sp to dots
+ /VTeXtoDvips {TeXtoPDF PDFtoVDvips} def end} % sp to dots
+\def\setQuadBox{%
+ currentpoint DvipstoPDF \aeb@bbox@dp\space TeXtoPDF add
+ neg vsize add 72 sub % y1
+ exch DvipstoPDF 72 add exch % x1
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF add exch % x2
+ 2 copy \aeb@bbox@ht\space TeXtoPDF add % y3
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF sub exch % x4
+}
+\def\par@@Rect
+{%
+ 72 neg PDFtoDvips vsize 72 sub PDFtoVDvips
+ hsize 72 sub PDFtoDvips 72 neg PDFtoVDvips
+}
+\else
+\special{!/TeXtoPDF {65536 div mag 1000 div mul} def
+/PDFtoTeX {65536 mul mag 1000 div div} def}
+\def\setQuadBox{%
+ currentpoint \aeb@bbox@dp\space add TeXtoPDF
+ neg PageHeight add 72 sub % y1
+ exch TeXtoPDF 72 add exch % x1
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF add exch % x2
+ 2 copy \aeb@bbox@ht\space TeXtoPDF add % y3
+ 2 copy exch \aeb@bbox@wd\space TeXtoPDF sub exch % x4
+}
+\def\par@@Rect
+{%
+ 72 neg PDFtoTeX PageHeight 72 sub PDFtoTeX
+ PageWidth 72 sub PDFtoTeX 72 neg PDFtoTeX
+}
+\fi
+\newbox\aeb@bbox
+\newcount\aeb@arrayIndx \aeb@arrayIndx=0
+\newcount\aeb@mLinkCnt \aeb@mLinkCnt=0
+\def\CurrentBorderColor{\@linkbordercolor}
+\def\ml@nocolorHighlight{I}
+\def\ml@nocolorLineStyle{S}
+\def\ml@nocolorLineWidth{1}
+\def\ml@setnocolorDefaults{%
+\def\ml@nocolor@defaults{\H{\ml@nocolorHighlight}%
+ \S{\ml@nocolorLineStyle}\W{\ml@nocolorLineWidth}%
+ \Color{\CurrentBorderColor}}%
+}
+\ifHy@colorlinks
+ \let\ml@nocolor@defaults\@empty
+\else
+ \ml@setnocolorDefaults
+\fi
+\def\ml@earlyExecProps#1{%
+ \eq@setWidgetProps\relax{#1}%
+}
+\let\mlh@preambleCmdInsert\relax
+\newcommand{\mlhypertext}[1][]{\global\aeb@arrayIndx=0\relax
+ \global\advance\aeb@mLinkCnt1\relax
+ \special{ps: \ps@mark/_objdef {mLink\the\aeb@mLinkCnt}
+ /type /array /OBJ pdfmark}%
+ \def\mlh@preambleCmdInsert{\ml@earlyExecProps{#1}}%
+ \def\mlh@postambleCmd{\setLinkPbox{\S{S}\W{0}%
+ \presets{\ml@nocolor@defaults}%
+ \QuadPoints{mLink\the\aeb@mLinkCnt}#1}\endgroup}%
+ \aeb@mlh
+}
+\def\mlh@setQuadSyllable#1{%
+ \setbox\aeb@bbox=\hbox{\strut#1}%
+ {%
+ \count\z@=\ht\aeb@bbox\xdef\aeb@bbox@ht{\the\count\z@}%
+ \count\z@=\wd\aeb@bbox\xdef\aeb@bbox@wd{\the\count\z@}%
+ \dp\aeb@bbox=1pt\relax
+ \count\z@=\dp\aeb@bbox\xdef\aeb@bbox@dp{\the\count\z@}%
+ }%
+ \special{ps: \ps@mark{mLink\the\aeb@mLinkCnt}
+ \the\aeb@arrayIndx\space [\setQuadBox]
+ \space /PUTINTERVAL pdfmark}%
+ \global\advance\aeb@arrayIndx8\relax
+}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\def\aebnameref#1{\@ifundefined{r@#1}{??}
+ {\aeb@exiii\@thirdoffive\csname r@#1\endcsname}}
+\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
+ {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
+\def\atPage#1{\@ifundefined{r@#1}{1}
+ {\aeb@exiii\@secondoffive\csname r@#1\endcsname}}
+\newcommand\mlhyperlink[3][]{%
+ \mlhypertext[#1\A{/S/GoTo/D (#2)}]{#3}}
+\newcommand\mlhyperref[3][]{%
+ \mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]{#3}}
+\newcommand\mlnameref[2][]{\protected@edef\ml@temp{\aebnameref{#2}}%
+ \def\ml@tempi{\mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]}%
+ \expandafter\ml@tempi\expandafter{\ml@temp}}
+\newcommand\mlNameref[2][]{\let\SOUL@stop\ml@SOUL@stop
+ \protected@edef\ml@temp{`\aebnameref{#2}' on page~\atPage{#2}}%
+ \def\ml@tempi{\mlhypertext[#1\A{/S/GoTo/D (\labelRef{#2})}]}%
+ \expandafter\ml@tempi\expandafter{\ml@temp}}
+\def\ml@hyper@linkurl#1#2{\hyper@chars
+ \let\ef@thislinkcolor\@urlcolor
+ \let\CurrentBorderColor\@urlbordercolor
+ \mlhypertext[\presets{\mlhref@args}\A{/S/URI/URI(#2)}]{#1}%
+ \endgroup
+}%
+\def\ml@hyper@linkfile#1#2#3{%
+ \let\ef@thislinkcolor\@filecolor
+ \let\CurrentBorderColor\@filebordercolor
+ \def\theView{[0 \@pdfstartview]}%
+ \@ifundefined{ifHy@pdfnewwindow}
+ {\ifHy@newwindow}{\ifHy@pdfnewwindow}%
+ \def\isWindow{/NewWindow true}\else
+ \let\isWindow\@empty\fi
+ \mlhypertext[\presets{\mlhref@args}\A{/S/GoToR \isWindow
+ /F (#2) /D \ifx\\#3\\\theView\else(#3)\fi}]{#1}%
+ \endgroup
+}
+\def\ml@hyper@launch run:#1\\#2#3{%
+ \let\ef@thislinkcolor\@filecolor
+ \let\CurrentBorderColor\@runbordercolor
+ \@ifundefined{ifHy@pdfnewwindow}
+ {\ifHy@newwindow}{\ifHy@pdfnewwindow}%
+ \def\isWindow{/NewWindow true}\else
+ \let\isWindow\@empty\fi
+ \mlhypertext[\presets{\mlhref@args}\A{/S/Launch\isWindow
+ /F (#1) \ifx\\#3\\\else /Win << /P (#3) /F (#1) >> \fi}]{#2}%
+ \endgroup
+}
+\let\aeb@saved@href\href
+\newcommand{\mlhref}[1][]{%
+ \begingroup
+ \def\mlhref@args{#1}%
+ \let\hyper@linkurl\ml@hyper@linkurl
+ \let\hyper@linkfile\ml@hyper@linkfile
+ \let\@hyper@launch\ml@hyper@launch
+ \aeb@saved@href
+}
+\newbox\ml@urlbuild
+\setbox\ml@urlbuild\hbox{}
+\def\ml@SOUL@doword{%
+ \global\setbox\ml@urlbuild\hbox{}%
+ \edef\x{\the\SOUL@word}%
+ \ifx\x\empty
+ \else
+ \SOUL@buffer={}%
+ \setbox\z@\vbox{%
+ \SOUL@tt
+ \hyphenchar\font`\-
+ \hfuzz\maxdimen
+ \hbadness\@M
+ \pretolerance\m@ne
+ \tolerance\@M
+ \leftskip\z@
+ \rightskip\z@
+ \hsize1sp
+ \everypar{}%
+ \parfillskip\z@\@plus1fil
+ \hyphenpenalty-\@M
+ \noindent
+ \hskip\z@
+ \relax
+ \the\SOUL@word}%
+ \let\SOUL@errmsg\relax
+ \let\-\relax
+ \count@\m@ne
+ \ml@SOUL@analyze
+ \SOUL@word={}%
+ \fi
+}
+\def\ml@SOUL@analyze{{%
+ \setbox\z@\vbox{%
+ \unvcopy\z@
+ \unskip
+ \unpenalty
+ \global\setbox\@ne=\lastbox}%
+ \ifvoid\@ne
+ \else
+ \setbox\@ne\hbox{\unhbox\@ne}%
+ \global\setbox\ml@urlbuild=\hbox{%
+ \mlh@setQuadSyllable{\unhcopy\@ne}%
+ \hbox{\unhcopy\@ne}\penalty0\unhcopy\ml@urlbuild}%
+ \SOUL@syllgoal=\wd\@ne
+ \advance\count@\@ne
+ \ml@SOUL@analyze
+ \SOUL@syllwidth\z@
+ \SOUL@syllable={}%
+ \ifnum\count@>\z@
+ \advance\SOUL@syllgoal-\SOUL@ttwidth
+ \ml@SOUL@dosyllable
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@hyphkern}%
+ {\SOUL@sethyphenchar}%
+ \SOUL@everyhyphen
+ \else
+ \ml@SOUL@dosyllable
+ \fi
+ \fi
+}}
+\def\ml@SOUL@dosyllable{%
+ \SOUL@gettoken
+ \SOUL@eventuallyexhyphen{\the\SOUL@token}%
+ \edef\x{\the\SOUL@token}%
+ \ifx\x\SOUL@hyphenhintM
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \else\ifx\x\SOUL@lowerthanM
+ \SOUL@gettoken
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
+ {\the\SOUL@token}%
+ \SOUL@everylowerthan
+ \SOUL@puttoken
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \else\ifdim\SOUL@syllwidth=\SOUL@syllgoal
+ \SOUL@everysyllable
+ \SOUL@puttoken
+ \let\SOUL@n\relax
+ \else
+ \ifx\x\SOUL@stopM
+ \SOUL@errmsg
+ \global\let\SOUL@errmsg\relax
+ \let\SOUL@n\relax
+ \else
+ \setbox\tw@\hbox{\SOUL@tt\the\SOUL@token}%
+ \advance\SOUL@syllwidth\wd\tw@
+ \global\SOUL@lasttoken=\SOUL@token
+ \SOUL@gettoken
+ \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
+ {\the\SOUL@token}%
+ \SOUL@puttoken
+ \global\SOUL@token=\SOUL@lasttoken
+ \SOUL@everytoken
+ \edef\x{\SOUL@syllable={\the\SOUL@syllable\the\SOUL@token}}\x
+ \let\SOUL@n\ml@SOUL@dosyllable
+ \fi\fi\fi\fi
+ \SOUL@n
+}
+\newcommand{\mlurl}{\begingroup\def~{\string~}%
+ \ef@sanitize@toks\mlurl@}
+\newcommand{\mlurl@}[2][]{\urldef\ml@url\nolinkurl{#2}%
+\def\SOUL@mlhpreamble{%\begingroup
+ \mlh@preambleCmdInsert\ef@colorthislink}\hyper@chars
+ \let\ef@thislinkcolor\@urlcolor
+ \let\CurrentBorderColor\@urlbordercolor
+ \let\ml@SOUL@doword@SAVE\SOUL@doword
+ \let\SOUL@doword\ml@SOUL@doword
+ \global\aeb@arrayIndx=0\relax
+ \global\advance\aeb@mLinkCnt1\relax
+ \special{ps: \ps@mark/_objdef {mLink\the\aeb@mLinkCnt}%
+ /type /array /OBJ pdfmark}%
+ \def\mlh@preambleCmdInsert{\ml@earlyExecProps{#1}}%
+ \def\mlh@postambleCmd{\setLinkPbox{\S{S}\W{0}\A{\URI{#2}}%
+ \presets{\ml@nocolor@defaults}
+ \QuadPoints{mLink\the\aeb@mLinkCnt}#1}\expandafter
+ \gdef\expandafter\ef@thislinkcolor
+ \expandafter{\ef@thislinkcolor}}%
+ \aeb@mlh\ml@url\ef@colorthislink\unhcopy\ml@urlbuild\endgroup
+}
+\ifHy@colorlinks
+ \def\ef@colorthislink{\color{\ef@thislinkcolor}}
+\else
+ \let\ef@colorthislink\relax
+\fi
+\def\ml@SOUL@stop{\relax}
+\def\SOUL@mlhpreamble{\begingroup
+ \mlh@preambleCmdInsert\ef@colorthislink}
+\def\SOUL@mlheverysyllable{%
+ \mlh@setQuadSyllable{\the\SOUL@syllable}%
+ \the\SOUL@syllable%
+ \SOUL@setkern\SOUL@charkern}%
+\def\SOUL@mlheveryspace#1{#1\space\hskip\spaceskip}%
+\def\SOUL@mlheveryhyphen{%
+ \discretionary{%
+ \unkern
+ \SOUL@setkern\SOUL@hyphkern
+ \SOUL@sethyphenchar
+ }{}{}%
+}
+\def\SOUL@mlheveryexhyphen#1{%
+ \mlh@setQuadSyllable{\SOUL@setkern\SOUL@hyphkern#1}%
+ \SOUL@setkern\SOUL@hyphkern#1%
+ \discretionary{}{}{%
+ \SOUL@setkern\SOUL@charkern
+ }%
+}
+\def\mlh@postambleCmd{\relax}
+\def\SOUL@mlhpostamble{\mlh@postambleCmd}
+\def\SOUL@mlhsetup{\SOUL@setup
+ \let\SOUL@preamble\SOUL@mlhpreamble
+ \let\SOUL@everysyllable\SOUL@mlheverysyllable
+ \let\SOUL@everyspace\SOUL@mlheveryspace
+ \let\SOUL@everyhyphen\SOUL@mlheveryhyphen
+ \let\SOUL@everyexhyphen\SOUL@mlheveryexhyphen
+ \def\SOUL@postamble{\SOUL@mlhpostamble}%
+}
+\DeclareRobustCommand*\aeb@mlh{\SOUL@mlhsetup\SOUL@}
+\endinput
+%%
+%% End of file `aeb_mlink.sty'.
diff --git a/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty b/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty
new file mode 100644
index 00000000..5bf819ed
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty
@@ -0,0 +1,346 @@
+%%
+%% This is file `aeb_pro.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{aeb_pro}
+ [2017/03/08 v2.8a aeb_pro: A support package (dps)]
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{xkeyval}
+\let\aebp@One=1 \let\aebp@Zero=0
+\let\aebp@YES=y \let\aebp@NO=n
+\def\ap@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\define@key{aebpreq}{req}[]{\def\eq@pkgReq{#1}}
+\def\aebp@setCCOptions#1#2{%#1=package #2=options
+ \ap@csarg\edef{aeb@#1@opts}{#2}}
+\@tfor\aeb@pcks:={web}{exerquiz}{dljslib}%
+{eforms}{insdljs}{eq2db}{aebxmp}{hyperref}{graphicxsp}{rmannot}\do
+{%
+ \ap@csarg\let{aeb@\aeb@pcks @req}\@empty
+ \ap@csarg\let{aeb@\aeb@pcks @opts}\relax
+ \edef\aeb@pack@def{\noexpand
+ \define@key{aeb_pro.sty}{\aeb@pcks}[]{%
+ \noexpand\aebp@setCCOptions{\aeb@pcks}{##1}}%
+ }\aeb@pack@def
+}
+\let\aebp@passDriver\aebp@YES
+\ifpdf\let\aebp@passDriver\aebp@NO\else
+\ifxetex\let\aebp@passDriver\aebp@NO\fi\fi
+\define@choicekey+{aeb_pro.sty}{driver}%
+ {dvipsone,dvips,pdftex,dvipdfm,textures,%
+ dvipdfmx,xetex}{%
+ \def\aeb@driver{#1}\ifx\aeb@driver\@empty\else
+ \PassOptionsToPackage{#1}{web}
+ \PassOptionsToPackage{#1}{exerquiz}
+\def\aebp@PassToHYIns{\PassOptionsToPackage{#1}{hyperref}
+ \PassOptionsToPackage{#1}{insdljs}}
+\ifx\aebp@passDriver\aebp@YES
+ \expandafter\aebp@PassToHYIns\fi
+ \PassOptionsToPackage{#1}{eforms}
+ \PassOptionsToPackage{#1}{graphicxsp}
+ \fi
+}{\PackageError{aeb_pro}{Bad choice for the driver, permissible values
+ \MessageBreak are dvipsone, dvips, pdftex, dvipdfm,
+ textures,\MessageBreak dvipdfmx, and xetex}
+ {Try again with a permissible driver name}}
+\let\aeb@driver\@empty
+
+\newif\if@useacrobat \@useacrobatfalse
+\DeclareOptionX{useacrobat}{\@useacrobattrue}
+\newif\if@gopro \@goprotrue
+\DeclareOptionX{nopro}{\@useacrobattrue\@goprofalse
+ \PassOptionsToPackage{nopro}{insdljs}}
+\def\aeb@InputAeBPro{\InputIfFileExists{aebpro.def}%
+ {\PackageInfo{aeb_pro}{Inputting code for the pro option}}%
+ {\PackageInfo{aeb_pro}{Cannot find aebpro.def.
+ Reinstall or refresh your file name database, as needed.}}}
+\AtEndOfPackage{\aeb@InputAeBPro}
+\let\aebp@uselayers=0
+\DeclareOptionX{uselayers}{%
+ \ifx\aebp@uselayers0\AtEndOfPackage{\aeb@InputAeBLayers}%
+ \global\let\aebp@uselayers=1\fi
+}
+\def\aeb@InputAeBLayers{\InputIfFileExists{aeblayers.def}%
+ {\PackageInfo{aeb_pro}{Inputting code for uselayers option}}%
+ {\PackageInfo{aeb_pro}{Cannot find aeblayers.def.
+ Reinstall or refresh your file name database.}}}
+\DeclareOptionX{gopro}{\PassOptionsToPackage{pro}{web}}
+\DeclareOptionX{attachsource}{\def\aeb@attachsource{#1}}
+\let\aeb@attachsource\@empty
+\DeclareOptionX{attachments}{\def\aeb@attachments{#1}}
+\let\aeb@attachments\@empty
+\newif\ifoptattachments\optattachmentsfalse
+\newif\ifoptattachmentsTaken\optattachmentsTakenfalse
+\DeclareOptionX{optattachments}{%
+ \optattachmentsTakentrue
+ \optattachmentstrue}
+\DeclareOptionX{!optattachments}{%
+ \optattachmentsTakentrue
+ \optattachmentsfalse}
+\def\@aeb@InputUnicodes{\InputIfFileExists{unicodes.def}%
+ {\typeout{aeb_pro: Inputting code for the linktoattachments option}}%
+ {\typeout{aeb_pro: Cannot find unicodes.def.
+ Reinstall or refresh your file name database, as needed.}}}
+\let\aeb@InputUnicodes\@empty
+\DeclareOptionX{linktoattachments}{%
+ \let\aeb@InputUnicodes\@aeb@InputUnicodes}
+\let\aeb@childofInput\@empty
+\let\aeb@childof\@empty
+\DeclareOptionX{childof}{\def\aeb@childof{#1}\def\aeb@childofInput{%
+ \InputIfFileExists{\aeb@childof_xref.cut}{}{}}}
+\def\inputAttachmentRelatedFiles{%
+ \aeb@InputUnicodes
+ \aeb@childofInput
+}
+\AtEndOfPackage{\inputAttachmentRelatedFiles}
+\let\inputCommonAnimeCode\relax
+\DeclareOptionX{ocganime}{%
+ \ifx\aebp@uselayers0\ExecuteOptionsX{uselayers}
+ \global\let\aebp@uselayers=1\fi
+ \ifx\inputCommonAnimeCode\relax
+ \let\inputCommonAnimeCode\aebp@inputCommonAnimeCode
+ \AtEndOfPackage{\inputCommonAnimeCode}\fi
+ \AtEndOfPackage{\inputOcgAnimeCode}
+}
+\DeclareOptionX{btnanime}{%
+ \ifx\inputCommonAnimeCode\relax
+ \let\inputCommonAnimeCode\aebp@inputCommonAnimeCode
+ \AtEndOfPackage{\inputCommonAnimeCode}\fi
+ \AtEndOfPackage{\inputBtnAnimeCode}
+}
+\def\inputBtnAnimeCode{\InputIfFileExists{btnnanime.def}
+ {\PackageInfo{aeb_pro}{inputting btnnanime.def}}
+ {\PackageWarning{aeb_pro}{cannot find btnnanime.def}}}%
+\def\inputOcgAnimeCode{\InputIfFileExists{ocganime.def}
+ {\PackageInfo{aeb_pro}{inputting ocganime.def}}
+ {\PackageWarning{aeb_pro}{cannot find ocganime.def}}}%
+\def\aebp@inputCommonAnimeCode{\InputIfFileExists{anime_support.def}
+ {\PackageInfo{aeb_pro}{inputting anime_support.def}}
+ {\PackageWarning{aeb_pro}{cannot find anime_support.def}}}%
+\let\pathToBtnCtrlIcons\@empty
+\let\ExecuteOptionsXSAVE\ExecuteOptionsX
+\let\ExecuteOptionsX\@gobble
+\InputIfFileExists{aebpro.cfg}{}{}
+\let\ExecuteOptionsX\ExecuteOptionsXSAVE
+\ifpdf\ExecuteOptionsX{driver=pdftex}\else
+ \ifxetex\ExecuteOptionsX{driver=xetex}\else
+ \@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{driver=dvips}}
+ {\ExecuteOptionsX{driver=dvipsone}}\fi\fi
+\ProcessOptionsX
+\edef\ap@restoreCats{%
+ \catcode`\noexpand\"=\the\catcode`\"\relax
+ \catcode`\noexpand\,=\the\catcode`\,\relax
+ \catcode`\noexpand\(=\the\catcode`\(\relax
+ \catcode`\noexpand\!=\the\catcode`\!\relax
+}
+\@makeother\"\@makeother\,\@makeother\(\@makeother\!
+\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}
+\pdfmarkuptrue
+\def\aeb@testdriver{dvips}%
+\ifx\aeb@testdriver\aeb@driver
+ \@useacrobattrue\else
+\def\aeb@testdriver{dvipsone}%
+\ifx\aeb@testdriver\aeb@driver
+ \@useacrobattrue\else
+ \pdfmarkupfalse
+\fi\fi
+\if@gopro\else
+\let\aebp@isattach\aebp@NO
+\ifx\aeb@attachsource\@empty\else\let\aebp@isattach\aebp@YES\fi
+\ifx\aeb@attachments\@empty\else\let\aebp@isattach\aebp@YES\fi
+ \let\aeb@attachsource\@empty
+ \let\aeb@attachments\@empty
+ \optattachmentsfalse\optattachmentsTakenfalse
+ \let\inputAttachmentRelatedFiles\relax
+\ifx\aebp@isattach\aebp@YES
+ \PackageWarningNoLine{aeb_pro}{The various attachment options
+ are not\MessageBreak supported with the nopro option,
+ ignoring them}\fi
+\fi
+\ifpdfmarkup\else
+\if\aebp@uselayers1
+ \def\aeb@InputAeBLayers{\PackageError{aeb_pro}
+ {The uselayers and ocganime options are not supported,\MessageBreak
+ with the useacrobat and nopro options,\MessageBreak
+ ignoring these options}{Remove dependence on layers,
+ or obtain\MessageBreak the full Acrobat product}}
+ \let\texHelpIndicator\@gobble
+ \let\addJStexHelpEnter\@gobble
+ \let\addJStexHelpExit\@gobble
+ \let\texHelp\@gobbletwo
+ \def\xBld#1\eBld{}
+ \let\defineRC\@gobbletwo
+ \let\insertRC\@gobble
+ \let\definePR\@gobbletwo
+ \let\insertPR\@gobble
+ \let\proofRollovers\relax
+ \let\texPHProof\@gobbletwo
+ \newcommand\animeBld[1][]{}
+ \def\DeclareAnime#1#2#3{}
+ \newcommand\backAnimeBtn[3][]{}
+ \newcommand\clearAnimeBtn[3][]{}
+ \newcommand\forwardAnimeBtn[3][]{}
+\fi\fi
+\def\aebp@PkgWarningi#1{\ifpdfmarkup\else\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller,\MessageBreak
+ do not load this package}\fi}
+\def\aebp@PkgWarningii#1{\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller,\MessageBreak
+ ignoring #1\space as an option}}
+\def\aebp@PkgWarningiii#1{\PackageWarningNoLine{aeb_pro}
+ {The #1\space package requires Adobe Distiller or\MessageBreak
+ the useacrobat option (Acrobat required),\MessageBreak
+ ignoring #1\space as an option}}
+\providecommand\getargsii[2]{\def\aeb@argi{#1}\def\aeb@argii{#2}}
+\newcommand\ap@RP[2][]{\def\@rgi{#1}\def\@rgii{#2}%
+ \ifx\@rgi\@empty\else\edef\@rgi{[\@rgi]}\fi
+ \@ifnextchar[%]
+ {\ap@@RP}{\ap@@RP[]}}
+\def\ap@@RP[#1]{\def\@rgiii{#1}%
+ \let\XKV@rm\@empty\let\eq@pkgReq\@empty
+ \@ifundefined{aeb@\@rgii @opts}
+ {\ifx\@rgi\@empty\else
+ \ap@csarg\edef{aeb@\@rgii @req}{#1}\fi
+ }{%
+ \edef\x{\noexpand
+ \setkeys*{aebpreq}{\@nameuse{aeb@\@rgii @opts}}}\x
+ \edef\eq@theseOpts{\XKV@rm}%
+ \ap@csarg\edef{aeb@\@rgii @req}{\eq@pkgReq}%
+ \edef\x{\noexpand
+ \PassOptionsToPackage{\eq@theseOpts}{\@rgii}}\x
+ }%
+ \ifx\@rgiii\@empty
+ \if!\@nameuse{aeb@\@rgii @req}!\else
+ \ap@csarg\edef{aeb@\@rgii @req}{[\@nameuse{aeb@\@rgii @req}]}\fi
+ \else
+ \@ifl@t@r{#1}{\@nameuse{aeb@\@rgii @req}}%
+ {\if!\@nameuse{aeb@\@rgii @req}!\else
+ \ap@csarg\edef{aeb@\@rgii @req}%
+ {[\@nameuse{aeb@\@rgii @req}]}\fi
+ }{\ap@csarg\edef{aeb@\@rgii @req}{[#1]}}%
+ \fi
+ \edef\x{\noexpand
+ \RequirePackage{\@rgii}\@nameuse{aeb@\@rgii @req}}\x
+}
+\@ifpackageloaded{web}{}
+{%
+ \@ifundefined{aeb@web@opts}{}{\ap@RP{web}}%
+}
+\@ifpackageloaded{exerquiz}{}
+{%
+ \@ifundefined{aeb@exerquiz@opts}{}{\ap@RP{exerquiz}}%
+}
+\@ifpackageloaded{hyperref}{}
+{%
+ \@ifundefined{aeb@hyperref@opts}{}{\ap@RP{hyperref}}%
+}
+\@ifpackageloaded{eq2db}{}
+{%
+ \@ifundefined{aeb@eq2db@opts}{}{\ap@RP{eq2db}}%
+}
+\@ifpackageloaded{dljslib}{}
+{%
+ \@ifundefined{aeb@dljslib@opts}{}{\ap@RP{dljslib}}%
+}
+\@ifpackageloaded{insdljs}{\let\execjs\aebp@YES}
+{%
+ \ap@RP[execJS]{insdljs}[2016/07/31]% incls conv-xkv
+}
+\@ifpackageloaded{eforms}{\let\execjs\aebp@YES}
+{%
+ \@ifundefined{aeb@eforms@opts}{}
+ {\ap@RP[execJS]{eforms}[2017/01/03]}%
+}
+\@ifpackageloaded{aebxmp}{\aebp@PkgWarningi{aebxmp}}
+{%
+ \@ifundefined{aeb@aebxmp@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup
+ \noexpand\ap@RP{aebxmp}\else
+ \if@useacrobat
+ \noexpand\ap@RP{aebxmp}[2016/05/12]\else
+ \noexpand\aebp@PkgWarningiii{aebxmp}\fi\fi}\temp@exp}
+}
+\@ifpackageloaded{graphicxsp}{\aebp@PkgWarningi{graphicxsp}}
+{%
+ \@ifundefined{aeb@graphicxsp@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup
+ \noexpand\ap@RP{graphicxsp}\else
+ \noexpand\aebp@PkgWarningii{graphicxsp}\fi}\temp@exp}
+}
+\@ifpackageloaded{rmannot}{\aebp@PkgWarningi{rmannot}}
+{%
+ \@ifundefined{aeb@rmannot@opts}{}
+ {\edef\temp@exp{\ifpdfmarkup\noexpand\ap@RP{rmannot}\else
+ \noexpand\aebp@PkgWarningii{rmannot}\fi}\temp@exp}
+}
+\let\execjs\aebp@YES
+\RequirePackage{comment}
+\RequirePackage{calc}
+\RequirePackage{eso-pic}
+\ifpdfmarkup\else\if\aebp@uselayers1
+ \excludecomment{printRollover}%
+ \excludecomment{rollover}%
+\fi\fi
+\def\aeb@IWVO{\immediate\write\verbatim@out}
+\newsavebox{\aebsavehelp}
+\newcommand{\pdfHelpIndicator}[1]{#1\thinspace${}^{\mbox
+ {\footnotesize\negthinspace\ding{109}}%
+ \raisebox{.225ex}{\llap{\color{webblue}\tiny?\hspace{1.3ex}}}}$}
+\def\pdfHelpCnt{0}
+\newcommand{\pdfHelp}{\@ifstar{{\count0=\pdfHelpCnt\relax
+\advance\count0by1\relax\xdef\pdfHelpCnt{\the\count0 }}%
+ \pdfHelpi{pdfhelp-\pdfHelpCnt}}{\pdfHelpi}}
+\newcommand{\pdfHelpi}[3]{%
+ \let\rollormargstring\texorpdfstring
+ \sbox{\aebsavehelp}{\pdfHelpIndicator{#3}}%
+ \makebox[0pt][l]{\makespecialJS\pushButton[\S{S}\BG{}\BC{}\H{N}
+ \TU{#2}]{#1}{\wd\aebsavehelp}{11bp}}\usebox{\aebsavehelp}%
+ \let\rollormargstring\@gobbletwo
+}
+\newcommand\pdfPHProof[3]{\small\raggedright\texttt{#3}: #2}
+\newcommand\pdfPrintHelp{\@ifstar{{\count0=\pdfHelpCnt\relax
+\advance\count0by1\relax\xdef\pdfHelpCnt{\the\count0}}%
+ \pdfPrintHelpi{pdfhelp-\pdfHelpCnt}}{\pdfPrintHelpi}}
+\newcommand\pdfPrintHelpi[3]{%
+ \let\rollormargstring\texorpdfstring
+ \ifeqforpaper
+ \ifeq@proofing
+ \pdfHelp{#1}{#2}{#3}\marginpar{\Hy@pdfstringfalse
+ \pdfPHProof{#1}{#2}{{\Hy@pdfstringtrue#3}}}\else
+ \pdfHelpIndicator{#3}\fi
+ \else
+ \pdfHelp{#1}{#2}{#3}\ifeq@proofing
+ \marginpar{\Hy@pdfstringfalse
+ \pdfPHProof{#1}{#2}{{\Hy@pdfstringtrue#3}}}\fi
+ \fi
+ \let\rollormargstring\@gobbletwo
+}
+\AtEndOfPackage{\@nameuse{aeb@inputAttachments}}
+\AtBeginDocument{\@nameuse{aeb@setPDFPackage}}
+\@ifpackageloaded{web}{}
+ {\def\aebwritelastpage{%
+ \immediate\write\@auxout{\string\expandafter\string\gdef
+ \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}}
+ \AtEndDocument{\clearpage\addtocounter{page}{-1}\aebwritelastpage
+ \addtocounter{page}{1}}%
+}
+\ap@restoreCats
+\endinput
+%%
+%% End of file `aeb_pro.sty'.
diff --git a/texmf-dist/tex/latex/aeb-pro/aeblayers.def b/texmf-dist/tex/latex/aeb-pro/aeblayers.def
new file mode 100644
index 00000000..ba716796
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/aeblayers.def
@@ -0,0 +1,306 @@
+%%
+%% This is file `aeblayers.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,aeblayers')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifaeb@ocOn \aeb@ocOntrue
+\ifaeb@ocOn
+\AtBeginDocument{%
+\headerps@out{%
+{/OCProcSet /ProcSet findresource} stopped not
+{/initialize get exec}
+{
+/BeginOC /pop load def
+/EndOC {} def
+/SimpleOC /pop load def
+/SetOCGInitState {pop pop} bind def
+/OCEndPage {} def
+/SetOCGIntent {pop pop} bind def
+/SetOCGUsage {pop pop} bind def
+/AddASEvent {pop pop pop} bind def
+}
+ifelse
+}
+}\fi
+\ifaeb@ocOn
+ \AtEndDocument{\literalps@out{{/OCProcSet /ProcSet findresource
+ /terminate get exec} stopped pop}}
+\fi
+\begin{insDLJS}[getxBld]{aebocg}{AeB Pro: OCG Support}
+var ocgs = this.getOCGs();
+var xBlds = new Array();
+if ( ocgs != null ) {
+ var l = ocgs.length;
+ for ( i=0; i<l; i++ ) {
+ if (ocgs[0].name.substring(0,3) == "xb." )
+ xBlds.push(ocgs.shift());
+ else ocgs.push(ocgs.shift());
+ }
+}
+var assocxLayers = new Array();
+if ( xBlds != null ) {
+ for ( var i=0; i<xBlds.length; i++)
+ assocxLayers[xBlds[i].name]=i;
+}
+function getxBld (name) {
+ var i = assocxLayers["xb."+name];
+ return ( i == undefined ) ? null : xBlds[i];
+}
+function toggleHelp (name)
+{
+ var o = getxBld(name);
+ if ( o != null ) o.state = (event.name.indexOf("Enter") != -1);
+}
+function toggleSetThisLayer(name, bState) {
+ var oLayer = getxBld(name);
+ if ( oLayer != null )
+ oLayer.state = (arguments.length > 1) ? bState : !oLayer.state;
+}
+function getLayerState(name) {
+ var oLayer = getxBld(name);
+ return ( oLayer != null ) ? oLayer.state : null;
+}
+\end{insDLJS}
+\newcommand{\texHelpIndicator}[1]{#1\thinspace${}^{\mbox
+ {\footnotesize\negthinspace\ding{109}}\raisebox{.225ex}
+ {\llap{\color{webblue}\tiny?\hspace{1.3ex}}}}$}
+\newcommand{\addJStexHelpEnter}[1]{\def\aebp@addJStexHelpEnter{\r#1}}
+\newcommand{\addJStexHelpExit}[1]{\def\aebp@addJStexHelpExit{\r#1}}
+\newcommand{\resetaddJStexHelp}{%
+ \let\aebp@addJStexHelpEnter\@empty
+ \let\aebp@addJStexHelpExit\@empty
+}
+\resetaddJStexHelp
+\newcommand{\texHelp}[2]{%
+ \let\rollormargstring\texorpdfstring
+ \sbox{\aebsavehelp}{\texHelpIndicator{#2}}%
+ \makebox[0pt][l]{\pushButton[\S{S}\BG{}\BC{}\H{N}
+ \AA{\AAMouseEnter{\JS{toggleHelp("#1");\aebp@addJStexHelpEnter}}%
+ \AAMouseExit{\JS{toggleHelp("#1");\aebp@addJStexHelpExit}}}]{#1}%
+ {\wd\aebsavehelp}{\ht\aebsavehelp+\dp\aebsavehelp}}%
+ \usebox{\aebsavehelp}\resetaddJStexHelp
+ \let\rollormargstring\@gobbletwo
+}
+\newif\ifaeb@SimpleOCOn \aeb@SimpleOCOnfalse
+\newcommand{\@SOC}[2][false]{\global\aeb@SimpleOCOntrue%
+ \ifaeb@ocOn\literalps@out{(#2) SimpleOC (#2) #1 SetOCGInitState}\fi}
+\newcommand{\b@OC}[2][false]{\ifaeb@SimpleOCOn\@aebSimpleNesterror\fi
+ \ifaeb@ocOn\literalps@out{(#2) BeginOC (#2) #1 SetOCGInitState}\fi}
+\newcommand{\e@OC}{\ifaeb@ocOn\literalps@out{EndOC}\fi}
+\newcommand{\xBld}[2][]{%
+ \setkeys{aebpxBld}{false,#1}\b@OC[\aebpxBld@visible]{xb.#2}%
+ \ifx\aebpxBld@print\@empty\else
+ \literalps@out{/Print [/Print] [(xb.#2)] AddASEvent}%
+ \ifAEBP@aebpxBld@print
+ \literalps@out{(xb.#2) << /Print<<
+ /PrintState/ON >> >> SetOCGUsage}%
+ \else
+ \literalps@out{(xb.#2) << /Print<<
+ /PrintState/OFF >> >> SetOCGUsage}%
+ \fi
+ \global\let\aebpxBld@print\@empty
+ \fi
+}
+\let\eBld\e@OC
+\def\@aebSimpleNesterror{\PackageWarning{aeb}
+{The scope of the last \string\Bld\space command
+\MessageBreak includes the scope of the nested Bld.
+\MessageBreak Executing \protect\ocOff\space to correct this.
+\MessageBreak The problem occurs}\ocOff}
+\newif\ifAEBP@aebpxBld@print \AEBP@aebpxBld@printfalse
+\define@choicekey+{aebpxBld}{print}[\val\nr]{true,false,%
+ visible,always,never}[visible]{%
+ \ifcase\nr\relax
+ \def\aebpxBld@print{true}\AEBP@aebpxBld@printtrue\or
+ \def\aebpxBld@print{false}\AEBP@aebpxBld@printfalse\or
+ \let\aebpxBld@print\@empty\or
+ \def\aebpxBld@print{true}\AEBP@aebpxBld@printtrue\or
+ \def\aebpxBld@print{false}\AEBP@aebpxBld@printfalse\fi
+}{\PackageWarning{aeb_pro}{Bad choice for initState, permissible values
+ are true, false, visible, always, and never. Try again}}
+\let\aebpxBld@print\@empty
+\define@key{aebpxBld}{true}[true]{\def\aebpxBld@visible{#1}}
+\define@key{aebpxBld}{false}[false]{\def\aebpxBld@visible{#1}}
+\define@choicekey+{aebpxBld}{initState}[\val\nr]{on,off,%
+ true,false}[false]{%
+ \ifcase\nr\relax
+ \def\aebpxBld@visible{true}\or
+ \def\aebpxBld@visible{false}\or
+ \def\aebpxBld@visible{true}\or
+ \def\aebpxBld@visible{false}\fi
+}{\PackageWarning{aeb_pro}{Bad choice for initState, permissible values
+ are on, off, true and false. Try again}}
+\long\def\defineRC#1#2{\csarg\def{RC#1}{#2}}
+\def\insertRC#1{\@nameuse{RC#1}}
+\long\def\definePR#1#2{%
+ \ifeqforpaper\csarg\def{PR#1}{#2}\else
+ \ifeq@proofing\csarg\def{PR#1}{#2}\else
+ \csarg\let{PR#1}\relax\fi\fi
+}
+\def\insertPR#1{%
+ \ifeq@proofing\@nameuse{PR#1}\else
+ \csarg\let{insertPR}\@gobble\fi
+ \csarg\let{PR#1}\relax
+}
+\@ifundefined{ifeqforpaper}{\newif\ifeqforpaper \eqforpaperfalse}{}
+\@ifundefined{ifeq@proofing}{\newif\ifeq@proofing \eq@proofingfalse}{}
+\providecommand\turnProofingOn{\eq@proofingtrue}
+\providecommand\turnProofingOff{\eq@proofingfalse}
+\def\proofRollovers{%
+ \ifeqforpaper
+ \ifeq@proofing
+ \includecomment{rollover}%
+ \includecomment{printRollover}%
+ \else
+ \excludecomment{printRollover}%
+ \includecomment{rollover}%
+ \fi
+ \else
+ \ifeq@proofing
+ \includecomment{rollover}%
+ \includecomment{printRollover}%
+ \else
+ \excludecomment{printRollover}%
+ \includecomment{rollover}%
+ \fi
+ \fi
+}
+\proofRollovers
+\@onlypreamble\proofRollovers
+\newcommand\texPHProof[2]{\small\raggedright\texttt{#1}: #2}
+\let\rollormargstring\@gobbletwo
+\def\texPrintHelp#1#2{%
+ \let\rollormargstring\texorpdfstring
+ \ifeqforpaper
+ \ifeq@proofing
+ \texHelp{#1}{#2}\marginpar{\Hy@pdfstringfalse
+ \texPHProof{#1}{#2}}\else
+ \texHelpIndicator{#2}\fi
+ \else
+ \texHelp{#1}{#2}\ifeq@proofing\marginpar{\Hy@pdfstringfalse
+ \texPHProof{#1}{#2}}\fi
+ \fi
+ \let\rollormargstring\@gobbletwo
+}
+\newcommand{\animeBld}[1][]{\stepcounter{ocSeq}%
+ \xBld[#1]{\animBldName}}
+\newcounter{ocSeq}
+\newcommand{\animeName}[1]{anime!!#1}%01/01/2010
+\newcommand{\DeclareAnime}[3]
+{%
+ \setcounter{ocSeq}{0}%
+ \xdef\animBaseName{anime!!#1}%01/01/2010
+ \xdef\animSpeed{#2}\xdef\nFrames{#3}%
+ \gdef\animBldName{\animBaseName\#\theocSeq}%
+}
+\newcommand{\backAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings3}\uCA{FEFF00C5}\TU{Reverse}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersBackward(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnBack}{#2}{#3}%
+}
+\newcommand{\clearAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings}\CA{n}\TU{Clear}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersClear(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnClear}{#2}{#3}%
+}
+\newcommand{\forwardAnimeBtn}[3][]
+{%
+ \pushButton[\textFont{Wingdings3}\uCA{FEFF00C6}\TU{Graph It!}#1
+ \A{\JS{%
+ try { aebAnimeTimeOutF.running=false; } catch(e) {}\r
+ try { aebAnimeTimeOutB.running=false; } catch(e) {}\r
+ aebAnimeLayersForward(\animSpeed,\nFrames,"\animBaseName");
+ }}]{\animBaseName BtnForward}{#2}{#3}%
+}
+\begin{insDLJS}[_animeLayers]{animelayers}
+ {AeB Pro: JS in Support of Anime}
+var _animeLayers = true;
+var aebAnimeTimeOutF = new Object();
+aebAnimeTimeOutF.running=false;
+var aebAnimeTimeOutB = new Object();
+aebAnimeTimeOutB.running=false;
+var aebAnimeTimeOutC = new Object();
+function aebAnimeLayersForward(animSpeed,nFrames,baseName)
+{
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutF = app.setInterval("aebAnimeTimeOutF.count++;"
+ + "if (aebAnimeTimeOutF.count > "
+ + nFrames + " || !aebAnimeTimeOutF.running )"
+ +" app.clearInterval(aebAnimeTimeOutF);\r"
+ + "else { if (aebAnimeTimeOutF.count == 1 )"
+ +" getxBld('"+baseName+"\#1').state=true;\t"
+ + "else { getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutF.count-1)).state=false;\t"
+ + "getxBld('"+baseName+"\#'"
+ + "+aebAnimeTimeOutF.count).state=true;}}", timeinterval);
+ aebAnimeTimeOutF.running = true;
+ aebAnimeTimeOutF.start = 1;
+ aebAnimeTimeOutF.count=0;
+}
+function aebAnimeLayersBackward(animSpeed,nFrames,baseName)
+{
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutB = app.setInterval("aebAnimeTimeOutB.count++;\r"
+ + "if (aebAnimeTimeOutB.count > "+nFrames
+ +"|| !aebAnimeTimeOutB.running )"
+ +" app.clearInterval(aebAnimeTimeOutB);\r"
+ + "else { if (aebAnimeTimeOutB.count == "
+ +nFrames+") getxBld('"+baseName+"\#1').state=false;\r"
+ + "else { getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutB.start-%
+aebAnimeTimeOutB.count+1)).state=false;\r"
+ + "getxBld('"+baseName+"\#'"
+ + "+(aebAnimeTimeOutB.start-%
+aebAnimeTimeOutB.count)).state=true;}}",
+ timeinterval);
+ aebAnimeTimeOutB.running = true;
+ aebAnimeTimeOutB.start = nFrames;
+ aebAnimeTimeOutB.count=0;
+}
+function aebAnimeLayersClear(animSpeed,nFrames,baseName)
+{
+ aebAnimeTimeOutF.running = false;
+ aebAnimeTimeOutB.running = false;
+ clearFrames = app.setTimeOut(
+ "hideAllFrames("+nFrames+",\""+baseName+"\")",animSpeed);
+ var timeinterval = animSpeed;
+ aebAnimeTimeOutC = app.setInterval("aebAnimeTimeOutC.count++;\r"
+ + "if (aebAnimeTimeOutC.count >= "+nFrames
+ +") app.clearInterval(aebAnimeTimeOutC);\r"
+ + "else { getxBld('"+baseName+"\#'"
+ +"+(aebAnimeTimeOutC.start-aebAnimeTimeOutC.count)).state=false;}",
+ timeinterval);
+ aebAnimeTimeOutC.start = nFrames;
+ aebAnimeTimeOutC.count=0;
+}
+function hideAllFrames(n, baseName)
+{
+ for ( var i=1; i <= n ; i++ )
+ getxBld(baseName+"\#"+i).state=false;
+}
+\end{insDLJS}
+\endinput
+%%
+%% End of file `aeblayers.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/aebpro.cfg b/texmf-dist/tex/latex/aeb-pro/aebpro.cfg
new file mode 100644
index 00000000..19f0e8e1
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/aebpro.cfg
@@ -0,0 +1,12 @@
+%
+% AeB Pro Configuration file
+%
+\ExecuteOptionsX{driver=dvips}
+% In the defintion below, place the absolute path to the
+% icon file btn\_anime\_icons1.pdf found in the icons subfolder of this current
+% folder. For example,
+% \renewcommand{\pathToBtnCtrlIcons}
+% {C:/Users/Public/Documents/My TeX Files/tex/latex/aeb_pro/icons}
+% replacing the path above to the correct one on your file system.
+%
+\renewcommand{\pathToBtnCtrlIcons}{}
diff --git a/texmf-dist/tex/latex/aeb-pro/aebpro.def b/texmf-dist/tex/latex/aeb-pro/aebpro.def
new file mode 100644
index 00000000..a94a39a8
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/aebpro.def
@@ -0,0 +1,1237 @@
+%%
+%% This is file `aebpro.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,aebpro')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\@tfor\aeb@windowopts:={{fit}{FitWindow}}{{center}{CenterWindow}}%
+ {{fullscreen}{FullScreen}}{{showtitle}{DisplayDocTitle}}\do
+{%
+ \expandafter\getargsii\aeb@windowopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{aebWindowOpts}{\aeb@argi}[true]{%
+ \noexpand\def\csname aeb@windowopts\aeb@argii\endcsname{%
+ /\aeb@argii\space##1}%
+ }%
+ }\temp@expand@def
+ \csarg\let{aeb@windowopts\aeb@argii}\@empty
+}
+\newcommand{\setWindowOptions}[1]{\cxkvsetkeys{aebWindowOpts}{#1}}
+\@tfor\aeb@uiopts:={{hidetoolbar}{HideToolbar}}
+ {{hidemenubar}{HideMenubar}}{{hidewindowui}{HideWindowUI}}\do{%
+ \expandafter\getargsii\aeb@uiopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{aebUIOpts}{\aeb@argi}[true]%
+ {%
+ \noexpand\edef\csname aeb@uiopts\aeb@argii\endcsname{%
+ /\aeb@argii\space##1}%
+ }%
+ }\temp@expand@def
+ \csarg\let{aeb@uiopts\aeb@argii}\@empty
+}
+\newcommand{\setUIOptions}[1]{\cxkvsetkeys{aebUIOpts}{#1}}
+\define@choicekey+{aebLayoutMag}{navitab}{UseNone,UseOutlines,%
+ UseThumbs,FullScreen,UseOC,UseAttachments}[UseNone]{%
+ \def\aeb@layoutMagNaviTab{#1}%
+}{\PackageWarning{aeb}{Bad choice for PageLayout, permissible values
+ are UseNone, UseOutlines, UseThumbs, FullScreen,%
+ UseOC, UseAttachments. Try again}}
+\let\aeb@layoutMagNaviTab\@empty
+\define@choicekey+{aebLayoutMag}{pagelayout}{SinglePage,OneColumn,%
+ TwoColumnLeft,TwoColumnRight,TwoPageLeft,TwoPageRight}[SinglePage]{%
+ \def\aeb@layoutMagPageLayout{#1}%
+}{\PackageWarning{aeb}{Bad choice for PageLayout, permissible values
+ are SinglePage, OneColumn, TwoColumnLeft, TwoColumnRight,
+ TwoPageLeft,TwoPageRight. Try again}}
+\let\aeb@layoutMagPageLayout\@empty
+\define@choicekey+{aebLayoutMag}{mag}[\val\nr]%
+ {ActualSize,FitPage,FitWidth,FitHeight,FitVisible}[FitPage]%
+{%
+ \ifcase\nr\relax
+ \edef\aeb@layoutMagMag{\dl@actualsize}\or
+ \def\aeb@layoutMagMag{\dl@fitpage}\or
+ \def\aeb@layoutMagMag{\dl@fitwidth}\or
+ \def\aeb@layoutMagMag{\dl@fitheight}\or
+ \def\aeb@layoutMagMag{\dl@fitvisible}\fi
+}{\setlength\@tempdima{1pt*\ratio{\val pt}{100pt}}%
+ \edef\aeb@layoutMagMag{\dl@mag{\strip@pt\@tempdima}}}
+\let\aeb@layoutMagMag\@empty
+\define@key{aebLayoutMag}{openatpage}[1]{\def\aeb@openatpageChoice{#1}%
+ \ifpdfmarkup\def\aeb@layoutMagPage{Page#1}\else
+ \def\aeb@layoutMagPage{#1}\fi}
+\let\aeb@openatpageChoice\@empty
+\let\aeb@layoutMagPage\@empty
+\newcommand{\setLayoutMag}[1]{\setkeys{aebLayoutMag}{openatpage=1}%
+ \cxkvsetkeys{aebLayoutMag}{#1}}
+\define@key{aebDeclareInitView}{layoutmag}
+ {\def\aebDeclareInitView@layoutmag{#1}}
+\let\aebDeclareInitView@layoutmag\@empty
+\define@key{aebDeclareInitView}{windowoptions}
+ {\def\aebDeclareInitView@windowoptions{#1}}
+\let\aebDeclareInitView@windowoptions\@empty
+\define@key{aebDeclareInitView}{uioptions}
+ {\def\aebDeclareInitView@uioptions{#1}}
+\let\aebDeclareInitView@uioptions\@empty
+\newcommand{\DeclareInitView}[1]{%
+ \setkeys{aebDeclareInitView}{#1}%
+ \edef\temp@expand@sets{%
+ \noexpand\setLayoutMag{\aebDeclareInitView@layoutmag}%
+ \noexpand\setWindowOptions{\aebDeclareInitView@windowoptions}%
+ \noexpand\setUIOptions{\aebDeclareInitView@uioptions}%
+ }\temp@expand@sets
+}
+\providecommand{\taggedPDF}{\def\aeb@TaggedPDF{true}}
+\let\aeb@TaggedPDF\@empty
+\@onlypreamble\taggedPDF
+\let\aeb@addOpenAction\@empty
+\let\aeb@addActionCode\@empty
+\let\aeb@addOpenActionArg\@empty
+\def\AEB@psMrk{[\space}
+\let\aebpopentoks\@empty
+\let\aebpFA\aebp@NO
+\def\aebp@rightDelimiters{}
+\let\@pdfstartview\@empty
+\let\@pdfstartpage\@empty
+\renewcommand{\addToDocOpen}[1]{%
+ \ifx\aebpFA\aebp@NO
+ \gdef\aeb@addOpenActionArg{#1}%
+ \g@addto@macro\aebpopentoks{#1}%
+ \def\aeb@addActionCode{\bgroup\makeJSspecials\dl@preProcDefns
+\ifpdfmarkup
+ \literalps@out{\AEB@psMrk/_objdef {pubAddToDocOpen}
+ /type/dict /OBJ pdfmark^^J%
+ \AEB@psMrk{pubAddToDocOpen}
+ << \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters
+ >> /PUT pdfmark}%
+ \gdef\pubAddToDocOpen{{pubAddToDocOpen}}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\else\ifpdf
+ \immediate\pdfobj{<< \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters
+ >>}\xdef\pubAddToDocOpen{\the\pdflastobj\space 0 R}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\else\ifxetex
+ \immediate\@pdfm@mark{obj @pubAddToDocOpen << \aebpopentoks
+ \ifx\dev@addOpenAction\@empty\else
+ \ifx\aeb@addOpenActionArg\@empty\else^^J%
+ \dev@addOpenAction\fi\fi\aebp@rightDelimiters >> }%
+ \gdef\pubAddToDocOpen{@pubAddToDocOpen}%
+ \xdef\aeb@addOpenAction{/Next \pubAddToDocOpen}%
+\fi\fi\fi\egroup}%
+ \global\let\aebpFA\aebp@YES
+ \else
+ \edef\aebp@dljstmp{\aebp@rightDelimiters}%
+ \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
+ \g@addto@macro\aebpopentoks{/Next << #1 }%
+ \fi
+}
+\let\additionalOpenAction\addToDocOpen
+\let\dev@addOpenAction\@empty
+\let\dev@addOpenActionArg\@empty
+\let\dev@addActionCode\@empty
+\let\aebpFAP\aebp@NO
+\let\aebpopentoksP\@empty
+\def\aebp@rightDelimitersP{}
+\newcommand{\dev@addToDocOpen}[1]{%
+ \ifx\aebpFAP\aebp@NO
+ \gdef\dev@addOpenActionArg{#1}%
+ \g@addto@macro\aebpopentoksP{#1}%
+ \def\dev@addActionCode{\bgroup\makeJSspecials\dl@preProcDefns
+\ifpdfmarkup
+ \literalps@out{\AEB@psMrk/_objdef {privAddDocOpen}
+ /type/dict /OBJ pdfmark^^J%
+ \AEB@psMrk{privAddDocOpen} << \aebpopentoksP
+ \aebp@rightDelimitersP\space>> /PUT pdfmark}%
+ \gdef\privAddDocOpen{{privAddDocOpen}}%
+ \gdef\dev@addOpenAction{/Next {privAddDocOpen}}%
+\else\ifpdf
+ \immediate\pdfobj{<< \aebpopentoksP
+ \aebp@rightDelimitersP\space>>}%
+ \xdef\privAddDocOpen{\the\pdflastobj\space 0 R}%
+ \xdef\dev@addOpenAction{/Next \privAddDocOpen}%
+\else\ifxetex
+ \immediate\@pdfm@mark{obj @privAddToDocOpen << \aebpopentoksP
+ \aebp@rightDelimitersP\space>> }%
+ \gdef\privAddDocOpen{@privAddToDocOpen}%
+ \gdef\dev@addOpenAction{/Next \privAddDocOpen}%
+\fi\fi\fi\egroup}%
+ \global\let\aebpFAP\aebp@YES
+ \else
+ \edef\aebp@dljstmpP{\aebp@rightDelimitersP}%
+ \xdef\aebp@rightDelimitersP{\aebp@dljstmpP >> }%
+ \g@addto@macro\aebpopentoksP{/Next << #1 }%
+ \fi
+}
+\def\aebp@warnonly{warnonly}
+\newcommand{\aebp@app@title}{AcroTeX Message}
+\newcommand{\requiresVersion}[2][]{\def\aebp@argi{#1}%
+ \def\requiredVersionNumber{#2}\dev@addToDocOpen{\JS{%
+\ifx\aebp@argi\aebp@warnonly
+ var warnOnly=true;
+\else
+ var warnOnly=false;
+\fi
+ var reqVerMsgC=("\aeb@requiredVersionMsg\space")
+ + ((warnOnly) ? ("\aeb@reqVerMsgW") : ("\aeb@reqVerMsgC"));
+ var reqVerMsgR=("\aeb@requiredVersionMsgRedirect\space")
+ + ((warnOnly) ? ("\aeb@reqVerMsgW") : ("\aeb@reqVerMsgR"));
+ if( app.viewerVersion < #2 ) {
+ var viewerPassedReq=false;
+ try {
+ if (this.external) {
+ app.alert({cTitle:"\aebp@app@title", cMsg: reqVerMsgR});
+ if (!warnOnly) {
+ if (app.viewerVersion >= 7.0)
+ app.launchURL("\aebAlternateDocumentURL");
+ else
+ this.getURL("\aebAlternateDocumentURL",false);
+ }
+ } else {
+ app.alert({cTitle:"\aebp@app@title", cMsg: reqVerMsgC});
+ if (!warnOnly) this.closeDoc(true);
+ }
+ } catch(e) {}
+ } else {
+ var viewerPassedReq=true;
+ \aeb@ViewerPassedRequirementJS
+ }
+}}}
+\def\requiredVersionNumber{7}
+\newcommand{\alternateDocumentURL}[1]{\def\aebAlternateDocumentURL{#1}}
+\alternateDocumentURL{http://www.acrotex.net/}
+\newcommand{\requiredVersionMsg}[1]{\def\aeb@requiredVersionMsg{#1}}
+\requiredVersionMsg{This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.}
+\newcommand{\requiredVersionResult}[3]{\def\aeb@reqVerMsgC{#1}%
+ \def\aeb@reqVerMsgR{#2}\def\aeb@reqVerMsgW{#3}}
+\requiredVersionResult{The document is now closing.}
+ {Redirecting browser to an alternate page.}
+ {Some features of this document may not work properly.}
+\newcommand{\requiredVersionMsgRedirect}[1]{%
+ \def\aeb@requiredVersionMsgRedirect{#1}}
+\requiredVersionMsgRedirect{%
+ This document requires Adobe Reader or Acrobat,
+ version \requiredVersionNumber\space or later.}
+\newcommand{\afterRequirementPassedJS}[1]{%
+ \def\aeb@ViewerPassedRequirementJS{#1}}
+\let\aeb@ViewerPassedRequirementJS\@empty
+\def\aeb@SetCatalog{%
+ \ifx\aebpFA\aebp@NO\addToDocOpen{\JS{;}}\fi
+ \ifx\aebpFAP\aebp@YES\dev@addActionCode\fi
+ \aeb@addActionCode
+\def\aeb@CatEntry{/ViewerPreferences<<%
+ \ifx\aeb@windowoptsFitWindow\@empty\else
+ \aeb@windowoptsFitWindow\fi
+ \ifx\aeb@windowoptsCenterWindow\@empty\else
+ \aeb@windowoptsCenterWindow\fi
+ \ifx\aeb@windowoptsDisplayDocTitle\@empty\else
+ \aeb@windowoptsDisplayDocTitle\fi
+ \ifx\aeb@uioptsHideToolbar\@empty\else
+ \aeb@uioptsHideToolbar\fi
+ \ifx\aeb@uioptsHideMenubar\@empty\else
+ \aeb@uioptsHideMenubar\fi
+ \ifx\aeb@uioptsHideWindowUI\@empty\else
+ \aeb@uioptsHideWindowUI\fi
+ \ifx\aeb@layoutMagNaviTab\@empty\else
+ /NonFullScreenPageMode/\aeb@layoutMagNaviTab\fi
+>>%
+ \ifx\aeb@TaggedPDF\@empty\else
+ /MarkInfo<</Marked true>>\fi
+ \ifx\aeb@layoutMagPageLayout\@empty\else
+ /PageLayout/\aeb@layoutMagPageLayout\fi
+ \ifx\aeb@windowoptsFullScreen\@empty
+ \ifx\aeb@layoutMagNaviTab\@empty\else
+ /PageMode/\aeb@layoutMagNaviTab\fi
+ \else/PageMode/FullScreen\fi
+\ifpdfmarkup
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction<</D[{Page1}\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[{\aeb@layoutMagPage}/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<</D[{\aeb@layoutMagPage}\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\else\ifpdf
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction <<%
+ /D[\pdfpageref1\space\space 0 R\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[\expandafter
+ \pdfpageref\aeb@layoutMagPage\space\space 0 R/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<</D[\expandafter\pdfpageref
+ \aeb@layoutMagPage\space\space 0 R\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\else\ifxetex
+ \ifx\aeb@layoutMagPage\@empty
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction \pubAddToDocOpen
+ \else/OpenAction<</D[@page1 \aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \else
+ \ifx\aeb@layoutMagMag\@empty
+ /OpenAction<</D[@page\aeb@layoutMagPage\space/Fit]%
+ /S/GoTo\aeb@addOpenAction>>\else
+ /OpenAction<<%
+ /D[@page\aeb@layoutMagPage\space\aeb@layoutMagMag]%
+ /S/GoTo\aeb@addOpenAction>>\fi
+ \fi
+\fi\fi\fi}%
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{Catalog}
+ <<\aeb@CatEntry>> /PUT pdfmark}\else
+ \ifpdf\pdfcatalog{\aeb@CatEntry}\else
+ \ifxetex\immediate\@pdfm@mark{put @catalog <<\aeb@CatEntry>>}%
+ \fi\fi\fi
+}
+\AtBeginDocument{\aeb@SetCatalog}
+\newcommand{\setDefaultFS}[1]
+{%
+ \setkeys{aebDefFS}{Trans=Replace}\setkeys{aebDefFS}{#1}%
+ \makeatletter
+ \InputIfFileExists{fsprodef.js}{}{\PackageWarning{aeb_pro}
+ {Cannot find fsprodef.js, please run aeb_pro.ins again}}
+ \makeatother
+}
+\@onlypreamble\setDefaultFS
+\def\aeb@NoTransition{NoTransition}
+\define@choicekey+{aebDefFS}{Trans}
+{NoTransition,UncoverLeft,UncoverRight,UncoverDown,UncoverUp,%
+UncoverLeftDown,UncoverLeftUp,UncoverRightDown,UncoverRightUp,%
+CoverLeft,CoverRight,CoverDown,CoverUp,CoverLeftDown,CoverLeftUp,%
+CoverRightDown,CoverRightUp,PushLeft,PushRight,PushDown,PushUp,%
+PushLeftDown,PushLeftUp,PushRightDown,PushRightUp,FlyInRight,%
+FlyInLeft,FlyInDown,FlyInUp,FlyOutRight,FlyOutLeft,FlyOutDown,%
+FlyOutUp,FlyIn,FlyOut,Blend,Fade,Random,Dissolve,%
+GlitterRight,GlitterDown,GlitterRightDown,BoxIn,BoxOut,%
+BlindsHorizontal,BlindsVertical,SplitHorizontalIn,%
+SplitHorizontalOut,SplitVerticalIn,SplitVerticalOut,WipeLeft,%
+WipeRight,WipeDown,WipeUp,WipeLeftDown,WipeLeftUp,%
+WipeRightDown,WipeRightUp,Replace,ZoomInDown,ZoomInLeft,%
+ZoomInLeftDown,ZoomInLeftUp,ZoomInRight,ZoomInRightDown,%
+ZoomInRightUp,ZoomInUp,ZoomOutDown,ZoomOutLeft,ZoomOutLeftDown,%
+ZoomOutLeftUp,ZoomOutRight,ZoomOutRightDown,ZoomOutRightUp,%
+ZoomOutUp,CombHorizontal,CombVertical}[Replace]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fsTran\@empty\else
+ \ifx\aeb@arg\aeb@NoTransition
+ \def\aeb@fsTran{app.fs.defaultTransition = "";^^J}
+ \else
+ \def\aeb@fsTran{app.fs.defaultTransition = "#1";^^J}\fi\fi}
+{\PackageWarning{aeb}{Bad choice, try again. Meanwhile,
+ will use the default, Replace}%
+ \def\aeb@fsTran{app.fs.defaultTransition = "Replace";^^J}}
+\define@key{aebDefFS}{bgColor}[]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fsBGColor\@empty\else
+ \def\aeb@fsBGColor{app.fs.backgroundColor = #1;^^J}\fi}
+\let\aeb@fsBGColor\@empty
+\define@key{aebDefFS}{timeDelay}[]{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fstimeDelay\@empty\else
+ \def\aeb@fstimeDelay{app.fs.timeDelay = #1;^^J}\fi}
+\let\aeb@fstimeDelay\@empty
+\define@boolkey{aebDefFS}{loop}[true]{%
+ \def\aeb@fsLoop{app.fs.loop = #1;^^J}}
+\let\aeb@fsLoop\@empty
+\define@choicekey+{aebDefFS}{cursor}{hidden,delay,visible}{%
+ \def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@fscursor\@empty\else
+ \def\aeb@fscursor{app.fs.cursor = cursor.#1;^^J}\fi
+}{\PackageWarning{aeb}{Bad choice for cursor, permissible values
+ are hidden, delay and visible. Try again}}
+\let\aeb@fscursor\@empty
+\define@boolkey{aebDefFS}{escape}[true]{%
+ \def\aeb@fsEscape{app.fs.escapeExits = #1;^^J}}
+\let\aeb@fsEscape\@empty
+\define@boolkey{aebDefFS}{clickAdv}[true]{%
+ \def\aeb@fsclickAdv{app.fs.clickAdvances = #1;^^J}}
+\let\aeb@fsclickAdv\@empty
+\define@boolkey{aebDefFS}{fullscreen}[true]{%
+ \def\aeb@windowoptsFullScreen{true}%
+}
+\let\aeb@fsFS\@empty
+\define@boolkey{aebDefFS}{useTimer}[true]{%
+ \def\aeb@fsuseTimer{app.fs.useTimer = #1;^^J}}
+\let\aeb@fsuseTimer\@empty
+\define@boolkey{aebDefFS}{usePageTiming}[true]{%
+ \def\aeb@fsusePageTiming{app.fs.usePageTiming = #1;^^J}}
+\let\aeb@fsusePageTiming\@empty
+\def\aebp@PageTransCnt{0}
+\def\aebp@Step@PageTransCnt{{\count0=\aebp@PageTransCnt\relax
+ \advance\count0by1\relax
+ \xdef\aebp@PageTransCnt{\the\count0 }}}
+\newcommand{\setPageTransition}[1]{%
+ \begingroup
+ \aebp@Step@PageTransCnt
+ \setkeys{aebTrans}{TransDur,Speed,#1}%
+ \edef\aeb@pagetranschoices{\aeb@Page@Dur
+ /Trans <<\aeb@Trans@Dur\aeb@TranChoice>>}%
+ \csarg{\xdef}{aeb@pagetransCodeL\aebp@PageTransCnt}{%
+ \ifpdfmarkup
+ \noexpand\literalps@out{\AEB@psMrk{ThisPage} <<
+ \aeb@pagetranschoices\space>> /PUT pdfmark}%
+ \else\ifpdf
+ \noexpand\global\noexpand\pdfpageattr=\noexpand\expandafter
+ {\noexpand\the\noexpand\pdfpageattr\aeb@pagetranschoices}%
+ \else\ifxetex
+ \noexpand\immediate\noexpand\@pdfm@mark{put @thispage <<
+ \aeb@pagetranschoices\space >>}
+ \fi\fi\fi
+ }
+ \ifx\aeb@TranChoice\@empty\else
+ \csarg\xdef{aebpP@geTr@nsP@ge\arabic{page}}%
+ {\noexpand\@nameuse{aeb@pagetransCodeL\aebp@PageTransCnt}}%
+ \fi
+ \endgroup
+}
+\newcommand{\setPageTransitionAt}[2]{%
+ \begingroup
+ \aebp@Step@PageTransCnt
+ \setkeys{aebTrans}{#2}%
+ \edef\aeb@pagetranschoices{\aeb@Page@Dur
+ /Trans <<\aeb@Trans@Dur\aeb@TranChoice>>}%
+ \csarg{\xdef}{aeb@pagetransCode\aebp@PageTransCnt}{%
+ \ifpdfmarkup
+ \noexpand\literalps@out{\AEB@psMrk{ThisPage} <<
+ \aeb@pagetranschoices\space>> /PUT pdfmark}%
+ \else\ifpdf
+ \noexpand\global\noexpand\pdfpageattr=\noexpand\expandafter
+ {\noexpand\the\noexpand\pdfpageattr\aeb@pagetranschoices}%
+ \else\ifxetex
+ \noexpand\immediate\noexpand\@pdfm@mark{put @thispage <<
+ \aeb@pagetranschoices\space>>}
+ \fi\fi\fi
+ }
+ \ifx\aeb@TranChoice\@empty\else
+ \expandafter\aebp@rse\expandafter{#1}%
+ \edef\shakeandbake{%
+ \noexpand\@for\noexpand\@mypage:=\the\aeb@parsetoks}%
+ \shakeandbake \do {%
+ \csarg\xdef{aebpP@geTr@nsP@ge\@mypage}%
+ {\noexpand\@nameuse{aeb@pagetransCode\aebp@PageTransCnt}}%
+ }%
+ \fi
+ \endgroup
+}
+\define@choicekey+{aebTrans}{Trans}
+{NoTransition,UncoverLeft,UncoverRight,UncoverDown,UncoverUp,%
+UncoverLeftDown,UncoverLeftUp,UncoverRightDown,UncoverRightUp,%
+CoverLeft,CoverRight,CoverDown,CoverUp,CoverLeftDown,CoverLeftUp,%
+CoverRightDown,CoverRightUp,PushLeft,PushRight,PushDown,PushUp,%
+PushLeftDown,PushLeftUp,PushRightDown,PushRightUp,FlyInRight,%
+FlyInLeft,FlyInDown,FlyInUp,FlyOutRight,FlyOutLeft,FlyOutDown,%
+FlyOutUp,FlyIn,FlyOut,Blend,Fade,Random,Dissolve,%
+GlitterRight,GlitterDown,GlitterRightDown,BoxIn,BoxOut,%
+BlindsHorizontal,BlindsVertical,SplitHorizontalIn,%
+SplitHorizontalOut,SplitVerticalIn,SplitVerticalOut,WipeLeft,%
+WipeRight,WipeDown,WipeUp,WipeLeftDown,WipeLeftUp,%
+WipeRightDown,WipeRightUp,Replace,ZoomInDown,ZoomInLeft,%
+ZoomInLeftDown,ZoomInLeftUp,ZoomInRight,ZoomInRightDown,%
+ZoomInRightUp,ZoomInUp,ZoomOutDown,ZoomOutLeft,ZoomOutLeftDown,%
+ZoomOutLeftUp,ZoomOutRight,ZoomOutRightDown,ZoomOutRightUp,%
+ZoomOutUp,CombHorizontal,CombVertical}[Replace]%
+ {\edef\aeb@TranChoice{\csname aeb@Trans@#1\endcsname}%
+}{\PackageWarning{aeb}{Bad choice, try again}}
+\let\aeb@TranChoice\@empty
+\define@key{aebTrans}{TransDur}[]{\def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@Trans@Dur\@empty\else\def\aeb@Trans@Dur{/D #1}\fi}
+\let\aeb@Trans@Dur\@empty
+\define@choicekey+{aebTrans}{Speed}[\val\nr]%
+ {Slow,Medium,Fast}[Slow]{%dps/change 02/27/07
+ \ifcase\nr\relax
+ \let\aeb@Trans@Speed\@empty\or
+ \def\aeb@Trans@Speed{/D 0.666656}\or
+ \def\aeb@Trans@Speed{/D 0.333328}\fi
+}{\PackageWarning{aeb}{Bad choice for Speed, permissible values
+ are Slow, Medium and Fast. Try again}}
+\let\apb@apbTrans@Speed\@empty
+\define@key{aebTrans}{PageDur}[]{\def\aeb@arg{#1}\ifx\aeb@arg\@empty
+ \let\aeb@Page@Dur\@empty\else\def\aeb@Page@Dur{/Dur #1}\fi}
+\let\aeb@Page@Dur\@empty
+\def\aeb@Trans@NoTransition{}
+\def\aeb@Trans@SplitHorizontalIn{/Dm/H/M/I/S/Split}
+\def\aeb@Trans@SplitHorizontalOut{/Dm/H/M/O/S/Split}
+\def\aeb@Trans@SplitVerticalIn{/Dm/V/M/I/S/Split}
+\def\aeb@Trans@SplitVerticalOut{/Dm/V/M/O/S/Split}
+\def\aeb@Trans@BlindsHorizontal{/Dm/H/S/Blinds}
+\def\aeb@Trans@BlindsVertical{/Dm/V/S/Blinds}
+\def\aeb@Trans@BoxIn{/M/I/S/Box}
+\def\aeb@Trans@BoxOut{/M/O/S/Box}
+\def\aeb@Trans@WipeLeft{/Di 180/S/Wipe}
+\def\aeb@Trans@WipeRight{/Di 0/S/Wipe}
+\def\aeb@Trans@WipeDown{/Di 270/S/Wipe}
+\def\aeb@Trans@WipeUp{/Di 90/S/Wipe}
+\def\aeb@Trans@Dissolve{/S/Dissolve}
+\def\aeb@Trans@GlitterRight{/Di 0/S/Glitter}
+\def\aeb@Trans@GlitterDown{/Di 270/S/Glitter}
+\def\aeb@Trans@GlitterRightDown{/Di 315/S/Glitter}
+\def\aeb@Trans@Replace{/S/R}
+\def\aeb@Trans@FlyInRight{/Di 0/M/I/S/Fly}
+\def\aeb@Trans@FlyInLeft{/Di 180/M/I/S/Fly}
+\def\aeb@Trans@FlyInDown{/Di 270/M/I/S/Fly}
+\def\aeb@Trans@FlyInUp{/Di 90/M/I/S/Fly}
+\def\aeb@Trans@FlyOutRight{/Di 0/M/O/S/Fly}
+\def\aeb@Trans@FlyOutLeft{/Di 180/M/O/S/Fly}
+\def\aeb@Trans@FlyOutDown{/Di 270/M/O/S/Fly}
+\def\aeb@Trans@FlyOutUp{/Di 90/M/O/S/Fly}
+\def\aeb@Trans@FlyIn{/M/I/S/Fly}
+\def\aeb@Trans@FlyOut{/M/O/S/Fly}
+\def\aeb@Trans@PushLeft{/Di 180/S/Push}
+\def\aeb@Trans@PushRight{/Di 0/S/Push}
+\def\aeb@Trans@PushDown{/Di 270/S/Push}
+\def\aeb@Trans@PushUp{/Di 90/S/Push}
+\def\aeb@Trans@CoverLeft{/Di 180/S/Cover}
+\def\aeb@Trans@CoverRight{/Di 0/S/Cover}
+\def\aeb@Trans@CoverDown{/Di 270/S/Cover}
+\def\aeb@Trans@CoverUp{/Di 90/S/Cover}
+\def\aeb@Trans@CoverLeftDown{/Di 225.0/S/Cover}
+\def\aeb@Trans@CoverLeftUp{/Di 135.0/S/Cover}
+\def\aeb@Trans@CoverRightDown{/Di 315.0/S/Cover}
+\def\aeb@Trans@CoverRightUp{/Di 45.0/S/Cover}
+\def\aeb@Trans@UncoverLeft{/Di 180/S/Uncover}
+\def\aeb@Trans@UncoverRight{/Di 0/S/Uncover}
+\def\aeb@Trans@UncoverDown{/Di 270/S/Uncover}
+\def\aeb@Trans@UncoverUp{/Di 90/S/Uncover}
+\def\aeb@Trans@UncoverLeftDown{/Di 225.0/S/Uncover}
+\def\aeb@Trans@UncoverLeftUp{/Di 135.0/S/Uncover}
+\def\aeb@Trans@UncoverRightDown{/Di 315.0/S/Uncover}
+\def\aeb@Trans@UncoverRightUp{/Di 45.0/S/Uncover}
+\def\aeb@Trans@Fade{/S/Fade}
+\def\aeb@Trans@Random{/S/Random}
+\def\aeb@Trans@Blend{/S/Blend}
+\def\aeb@Trans@PushLeftDown{%
+ /S/Push/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@PushLeftUp{%
+ /S/Push/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@PushRightDown{%
+ /S/Push/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@PushRightUp{%
+ /S/Push/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@WipeLeftDown{%
+ /S/Wipe/Directional/BiDir/Di 225/Curve/Easy}
+\def\aeb@Trans@WipeLeftUp{%
+ /S/Wipe/Directional/BiDir/Di 135/Curve/Easy}
+\def\aeb@Trans@WipeRightDown%
+ {/S/Wipe/Directional/BiDir/Di 315/Curve/Easy}
+\def\aeb@Trans@WipeRightUp{%
+ /S/Wipe/Directional/BiDir/Di 45/Curve/Easy}
+\def\aeb@Trans@ZoomInDown{%
+ /S/ZoomIn/Directional/BiDir/Di 270.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeft{%
+ /S/ZoomIn/Directional/BiDir/Di 180.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeftDown{%
+ /S/ZoomIn/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@ZoomInLeftUp{%
+ /S/ZoomIn/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRight{%
+ /S/ZoomIn/Directional/BiDir/Di 0.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRightDown{%
+ /S/ZoomIn/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@ZoomInRightUp{%
+ /S/ZoomIn/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@ZoomInUp{%
+ /S/ZoomIn/Directional/BiDir/Di 90.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutDown{%
+ /S/ZoomOut/Directional/BiDir/Di 270.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeft{%
+ /S/ZoomOut/Directional/BiDir/Di 180.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeftDown{%
+ /S/ZoomOut/Directional/BiDir/Di 225.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutLeftUp{%
+ /S/ZoomOut/Directional/BiDir/Di 135.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRight{%
+ /S/ZoomOut/Directional/BiDir/Di 0.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRightDown{%
+ /S/ZoomOut/Directional/BiDir/Di 315.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutRightUp{%
+ /S/ZoomOut/Directional/BiDir/Di 45.0/Curve/Easy}
+\def\aeb@Trans@ZoomOutUp{%
+ /S/ZoomOut/Directional/BiDir/Di 90.0/Curve/Easy}
+\def\aeb@Trans@CombHorizontal{%
+ /S/Comb/Directional/BiDir/Dm/H/Curve/Easy}
+\def\aeb@Trans@CombVertical{%
+ /S/Comb/Directional/BiDir/Dm/V/Curve/Easy}
+\def\canceleveryPageOpen{\global\@everyPageOpenfalse
+ \global\let\every@PageOpen\@empty}
+\def\canceleveryPageClose{\global\@everyPageClosefalse
+ \global\let\every@PageClose\@empty}
+\newenvironment{everyPageOpen}[1][]
+{\global\@everyPageOpentrue\@defineJS[#1]{\every@PageOpen}}
+{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\every@PageOpen}}{}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
+}
+\newenvironment{everyPageClose}[1][]
+{\global\@everyPageClosetrue\@defineJS[#1]{\every@PageClose}}
+{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoCloseJS{\thisPageAction{}{\JS{\every@PageClose}}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
+}
+\let\every@PageOpen\@empty
+\let\every@PageClose\@empty
+\newenvironment{addJSToPageOpen}[1][]
+{\@defineJS[#1]{\addJST@PageOpen}}{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\addJST@PageOpen}}{}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
+}
+\newenvironment{addJSToPageOpenAt}[2][]
+{\@@defineJS[#1]{addJST@PageOpenAt}{#2}}{\end@@defineJS
+ \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \thisPageAction{\JS{\@nameuse{addJST@PageOpenAt1}}}{}\fi\fi
+}
+\newenvironment{addJSToPageClose}[1][]
+{\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
+ \ifnum\value{page}=1\relax
+ \gdef\ap@AddtoCloseJS{%
+ \thisPageAction{}{\JS{\addJST@PageClose}}}%
+ \expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
+}
+\newenvironment{addJSToPageCloseAt}[2][]
+{\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
+ \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \thisPageAction{}{\JS{\@nameuse{addJST@PageCloseAt1}}}\fi\fi
+}
+\let\addJST@PageOpen\@empty
+\let\addJST@PageClose\@empty
+\def\aebp@PageOpenCloseHandler{%
+ \@ifundefined{addJST@PageOpenAt\arabic{page}}%
+ {\global\let\thisOpenPageActionAt\@empty}%
+ {\gdef\thisOpenPageActionAt{%
+ \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
+ \@ifundefined{addJST@PageCloseAt\arabic{page}}%
+ {\global\let\thisClosePageActionAt\@empty}%
+ {\gdef\thisClosePageActionAt{%
+ \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
+ \aebPageAction{\thisOpenPageActionAt\addJST@PageOpen}%
+ {\thisClosePageActionAt\addJST@PageClose}%
+ \global\let\addJST@PageOpen\@empty
+ \global\let\addJST@PageClose\@empty
+}
+\def\aebp@PageTransHandler{\@ifundefined{aebpP@geTr@nsP@ge\arabic{page}}
+ {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
+\AddToShipoutPicture{\aebp@PageOpenCloseHandler
+ \aebp@PageTransHandler}
+\newenvironment{@@defineJS}[3][]
+{%
+ \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}%
+ \def\verbatim@processline
+ {%
+ \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
+ \global\JStoks=\expandafter{\JS@temp}%
+ }%
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ #1%
+ \verbatim@start
+}{%
+ \expandafter\aebp@rse\expandafter{\defineJSArg}%
+ \edef\shakeandbake{%
+ \noexpand\@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
+ \aeb@parsecnt=0 \shakeandbake \do {%
+ \ifnum\aeb@parsecnt=0
+ \edef\firsttok{\@mytoks}%
+ \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
+ \else
+ \edef\letsmakelet{\global\let\expandafter\noexpand
+ \csname\argType\@mytoks\endcsname=\expandafter\noexpand
+ \csname\argType\firsttok\endcsname}%
+ \letsmakelet
+ \fi
+ \advance\aeb@parsecnt1\relax
+ }%
+}
+\newif\ifaeb@PageOpen
+\newif\ifaeb@PageClose
+\newif\if@everyPageOpen\@everyPageOpenfalse
+\newif\if@everyPageClose\@everyPageClosefalse
+\newcommand\aebPageAction[3][ThisPage]{%
+ \let\ispageactions=0\aeb@PageOpenfalse\aeb@PageClosefalse
+ \def\@aebOpen{#2}%
+ \if1\@aebOpen1%
+ \if@everyPageOpen
+ \aeb@PageOpentrue\let\ispageactions=1%
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
+ \fi
+ \else
+ \let\ispageactions=1%
+ \aeb@PageOpentrue
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
+ \fi
+ \def\@aebClose{#3}%
+ \if1\@aebClose1%
+ \if@everyPageClose
+ \aeb@PageClosetrue\let\ispageactions=1%
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
+ \fi
+ \else
+ \let\ispageactions=1%
+ \aeb@PageClosetrue
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
+ \fi
+ \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions=1\fi
+ \if@everyPageClose\@everyPageClosetrue\let\ispageactions=1\fi
+ \if\ispageactions1%
+ \xdef\aebp@PageActionCode{/AA <<
+ \ifaeb@PageOpen\@aebOpen\space\fi
+ \ifaeb@PageClose\@aebClose\space\fi >>}
+ \ifnum\value{page}=1\relax\else
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
+ \aebp@PageActionCode\space >> /PUT pdfmark}\else
+ \ifpdf\global\pdfpageattr=\expandafter
+ {\aebp@PageActionCode}\else
+ \ifxetex\@pdfm@mark{put @thispage <<
+ \aebp@PageActionCode\space>>}\fi\fi\fi
+ \fi
+ \fi
+}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\let\ahrefexafter\aeb@exiii
+\def\atPage#1{\@ifundefined{r@#1}{1}
+ {\aeb@exiii\@secondoffive\csname r@#1\endcsname}}
+\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
+ {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
+\newtoks\aeb@parsetoks
+\newcount\aeb@parsecnt
+\def\ap@gobtonil#1\@nil{}
+\def\ap@gettonil#1\@nil{\def\to@nilarg{#1}}
+\def\ap@ifspc{\ifx\@let@token\@sptoken
+ \let\ap@next\ap@xifspc\else
+ \let\ap@next\ap@gettonil\fi\ap@next}
+\begingroup
+\def\:{\ap@xifspc}
+\expandafter\gdef\: {\futurelet\@let@token\ap@ifspc}
+\endgroup
+\def\ap@strpspcs{\futurelet\@let@token\ap@ifspc}
+\def\ap@pgrngLabelsInPream{\@ifundefined{aebLastPage}
+ {\PackageWarning{aeb_pro}{The \string\atPage\space
+ command is not supported\MessageBreak in the preamble}}{}}
+\def\aeb@removelastcomma#1,\@nil{\aeb@parsetoks={#1}}
+\def\aebp@rse#1{\global\let\frstPageSpec\aebp@NO
+ \aeb@parsetoks={}\aeb@parse#1,\relax}
+\def\aeb@parse{\@ifnextchar\relax
+ {\expandafter\aeb@removelastcomma\the\aeb@parsetoks\@nil}
+ {\aeb@@parse}}
+\def\aeb@@parse#1,{\aeb@@@parse#1-\@nil}
+\def\aeb@@@parse#1-#2\@nil{%
+ \def\argi{#2}\ifx\argi\@empty\def\aeb@next{\aeb@@@@parse{#1}}\else
+ \def\aeb@next{\aeb@@@@@parse#1-#2}\fi\aeb@next}
+\def\aeb@@@@parse#1{%single page #1
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#1\@nil
+ \aeb@parsecnt=#1\relax
+ \edef\edefaeb@parsetoks{\the\aeb@parsetoks\the\aeb@parsecnt,}%
+ \aeb@parsetoks=\expandafter{\edefaeb@parsetoks}%
+ \ifnum\aeb@parsecnt=1\relax\global\let\frstPageSpec\aebp@YES\fi
+ \aeb@parse}
+\def\aeb@@@@@parse#1-#2-{\def\aeb@lowerlimit{#1}\def\aeb@upperlimit{#2}%
+ % range argument from #1 to \csname aebLastPage\endcsname
+ \ifx\aeb@upperlimit\@empty
+ \@ifundefined{aebLastPage}{\aeb@parsecnt=#1}
+ {\expandafter\aeb@parsecnt\expandafter=
+ \csname aebLastPage\endcsname}%
+ \else % page range #1 to #2, switch the two if #2 < #1
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+ \edef\aeb@lowerlimit{\the\aeb@parsecnt}
+ \aeb@parsecnt=\aeb@upperlimit\relax
+ \ifnum\aeb@parsecnt<\aeb@lowerlimit\relax
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+ \def\aeb@lowerlimit{#2}%
+ \def\aeb@upperlimit{#1}%
+ \fi
+ \fi
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#1\@nil
+ \@ifnextchar\atPage{\ap@pgrngLabelsInPream\ap@gobtonil}
+ {\ap@gobtonil}#2\@nil
+ \advance\aeb@parsecnt1\relax
+ \edef\aeb@upperlimit{\the\aeb@parsecnt}%
+ \aeb@parsecnt=\aeb@lowerlimit\relax
+ \ifnum\aeb@parsecnt=1\relax\global\let\frstPageSpec\aebp@YES\fi
+ \loop
+ \edef\edefaeb@parsetoks{\the\aeb@parsetoks\the\aeb@parsecnt,}%
+ \aeb@parsetoks=\expandafter{\edefaeb@parsetoks}%
+ \advance\aeb@parsecnt1\relax
+ \ifnum\aeb@parsecnt < \aeb@upperlimit\relax\repeat
+ \aeb@parse}
+\@ifpackageloaded{insdljs}{%
+ \newenvironment{fs@willClose}
+ {\@defineJS{\fs@will@Close}}
+ {\end@defineJS}
+ \let\fs@will@Close\@empty
+}{%
+ \newenvironment{willClose}
+ {\@defineJS{\will@Close}}
+ {\end@defineJS}
+ \let\will@Close\@empty
+ \newenvironment{fs@willClose}
+ {\@defineJS{\fs@will@Close}}
+ {\end@defineJS}
+ \let\fs@will@Close\@empty
+ \newenvironment{willSave}
+ {\@defineJS{\will@Save}}
+ {\end@defineJS}
+ \let\will@Save\@empty
+ \newenvironment{didSave}
+ {\@defineJS{\did@Save}}
+ {\end@defineJS}
+ \let\did@Save\@empty
+ \newenvironment{willPrint}
+ {\@defineJS{\will@Print}}
+ {\end@defineJS}
+ \let\will@Print\@empty
+ \newenvironment{didPrint}
+ {\@defineJS{\did@Print}}
+ {\end@defineJS}
+ \let\did@Print\@empty
+}
+\let\developer@will@Close\@empty
+\let\developer@will@Save\@empty
+\let\developer@did@Save\@empty
+\let\developer@will@Print\@empty
+\let\developer@did@Print\@empty
+\newcommand\@setDocActions{%
+ \edef\test@will@Close{%
+ \fs@will@Close\will@Close\developer@will@Close}%
+ \edef\test@will@Save{\will@Save\developer@will@Save}%
+ \edef\test@did@Save{\did@Save\developer@did@Save}%
+ \edef\test@will@Print{\will@Print\developer@will@Print}%
+ \edef\test@did@Print{\did@Print\developer@did@Print}%
+ \def\aebp@DocActionsCode{/AA << %
+ \ifx\test@will@Close\@empty\else/WC <<
+ \JS{\fs@will@Close\will@Close\developer@will@Close} >>\fi
+ \ifx\test@will@Save\@empty\else/WS <<
+ \JS{\will@Save\developer@will@Save} >>\fi
+ \ifx\test@did@Save\@empty\else/DS <<
+ \JS{\did@Save\developer@did@Save} >>\fi
+ \ifx\test@will@Print\@empty\else/WP <<
+ \JS{\will@Print\developer@will@Print} >>\fi
+ \ifx\test@did@Print\@empty\else/DP <<
+ \JS{\did@Print\developer@did@Print} >>\fi
+ >>
+ }
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{Catalog}
+ << \aebp@DocActionsCode\space>> /PUT pdfmark}\else
+ \ifpdf\pdfcatalog{\aebp@DocActionsCode}\else
+ \ifxetex\immediate
+ \@pdfm@mark{put @catalog <<\aebp@DocActionsCode\space>>}\fi
+ \fi\fi
+}
+\AtBeginDocument{\@setDocActions}
+\def\aref(#1){\csname aeb@aDescript@#1\endcsname}
+\def\aeb@initAttachWrite{%
+ \newwrite \aeb@attachmentswrite
+ \immediate\openout \aeb@attachmentswrite \jobname_attach.cut
+ \let\verbatim@out\aeb@attachmentswrite
+ \aeb@IWVO{\string\begin{execJS}{aebpro_attach}}%
+ {\lccode`P=`\{\lowercase{\aeb@IWVO{try P}}}%
+}
+\newcommand{\prjInputUser}[1]{\input{#1}}
+\newcommand{\prjIncludeUser}[1]{\include{#1}}
+\newcommand{\addtoOptAttachments}[1]{%
+ \g@addto@macro\AP@addtoAttachments{,#1}}
+\newcommand{\getcNameFromFileName}[1]{\@nameuse{descrip4#1}}
+\def\AP@addtoAttachments{}
+\def\jsstrsps{replace(/^\string\s*/, "")}
+\def\jsstrdotsp{replace(/\string\.\string\s*/g, ".")}
+\ifoptattachments
+ \def\AP@writeOptAttach{%
+ \newwrite\AP@OptAttachlist
+ \immediate\openout \AP@OptAttachlist \jobname_oa.cut
+ \immediate\write\AP@OptAttachlist{\string\def\string
+ \APOptAttachments{\AP@addtoAttachments}}
+ \immediate\closeout\AP@OptAttachlist}
+ \AtEndDocument{\AP@writeOptAttach}
+ \def\AP@pathInput#1{%
+ \addtoOptAttachments{#1}\prjInputUser{#1}}
+ \def\AP@pathInclude#1{%
+ \addtoOptAttachments{#1.tex}\prjIncludeUser{#1}}
+ \InputIfFileExists{\jobname_oa.cut}{%
+ \def\AP@next{\edef\aeb@attachments
+ {\aeb@attachments\APOptAttachments}}%
+ }{\let\AP@next\relax}
+ \AP@next
+\else
+ \def\AP@pathInput#1{\prjInputUser{#1}}
+ \def\AP@pathInclude#1{\prjIncludeUser{#1}}
+\fi
+\ifoptattachmentsTaken
+ \def\prjinput{\hyper@normalise\AP@pathInput}
+ \def\prjinclude{\hyper@normalise\AP@pathInclude}
+ \let\AP@includeonly\includeonly
+ \def\includeonly{\hyper@normalise\AP@includeonly}
+\else
+ \def\prjinput{\prjInputUser}
+ \def\prjinclude{\prjIncludeUser}
+\fi
+\ifx\aeb@attachsource\@empty
+ \ifx\aeb@attachments\@empty
+ \else\aeb@initAttachWrite\fi
+\else
+ \@ifundefined{aeb@attachmentswrite}
+ {\aeb@initAttachWrite}{}
+\fi
+\def\ap@cName(#1){\csname aeb@aName@attach#1\endcsname}
+\def\ap@cNamexdef(#1){\expandafter
+ \xdef\csname aeb@aName@attach#1\endcsname}
+\def\ap@cDescript(#1){\csname aeb@aDescript@attach#1\endcsname}
+\def\ap@cDescriptSource(#1){\csname aeb@aDescript@#1\endcsname}
+\def\ap@cDescriptxdef(#1){\expandafter
+ \xdef\csname aeb@aDescript@attach#1\endcsname}
+\def\ap@cDescriptSourcexdef(#1){\expandafter
+ \xdef\csname aeb@aDescript@#1\endcsname}
+\ifx\aeb@attachsource\@empty\else
+ \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\aeb@attachsource}
+ \temp@expand\do{%
+ \ifx\@@tmp\@empty\else
+ \expandafter\ap@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
+ \ap@cDescriptSourcexdef(\@@tmp){\jobname.\@@tmp}%
+ \aeb@IWVO{\space\space\space\space
+ var retn=\string\importDataObject({%
+ cName: "\@@tmp",
+ cDIPath: "\jobname.\@@tmp".\jsstrdotsp});}%
+ \aeb@IWVO{\space\space\space\space
+ if ( (app.viewerVersion>7) && retn )
+ this.getDataObject("\@@tmp").description=%
+ "\string\ap@cDescriptSource(\@@tmp)".\jsstrdotsp;}%
+ \expandafter
+ \edef\csname aeb@aName@\@@tmp\endcsname{\jobname.\@@tmp}%
+ \fi
+ }%
+\fi
+\ifx\aeb@attachments\@empty\else
+\typeout{\string\aeb@attachments: \aeb@attachments}%
+ \aeb@parsecnt=0
+ \edef\temp@expand{\noexpand\@for\noexpand\@@tmp:=\aeb@attachments}
+ \temp@expand\do
+ {%
+ \ifx\@@tmp\@empty\else
+ \expandafter\ap@strpspcs\@@tmp\@nil\edef\@@tmp{\to@nilarg}%
+ \advance\aeb@parsecnt1\relax
+ \ap@cNamexdef(\the\aeb@parsecnt){attach\the\aeb@parsecnt}%
+ \ap@cDescriptxdef(\the\aeb@parsecnt)%
+ {AeB Attachment \the\aeb@parsecnt}%
+ \aeb@IWVO{\space\space\space\space
+ var retn=\string\importDataObject({%
+ cName:"\string\ap@cName(\the\aeb@parsecnt)",%
+ cDIPath: "\@@tmp".\jsstrsps});}%
+ \aeb@IWVO{\space\space\space\space
+ if ( (app.viewerVersion>7) && retn )
+ this.getDataObject(%
+ "\string\ap@cName(\the\aeb@parsecnt)").description=%
+ "\string\ap@cDescript(\the\aeb@parsecnt)";}%
+ \expandafter
+ \expandafter\xdef\csname descrip4\@@tmp\endcsname
+ {\noexpand\ap@cName(\the\aeb@parsecnt)}%
+ \fi
+ }
+\fi
+\@ifundefined{aeb@attachmentswrite}{}
+{%
+ {\lccode`P=`\}\def\jsMsg{"Attachments error: "
+ + e.toString()}\lowercase{\aeb@IWVO{P catch(e)
+ { console.println( \jsMsg\space); }}}}%
+ \aeb@IWVO{\string\end{execJS}}
+ \immediate\closeout \aeb@attachmentswrite
+}
+\def\aeb@inputAttachments{\@ifundefined{aeb@attachmentswrite}{}
+ {\InputIfFileExists{\jobname_attach.cut}%
+ {\typeout{Inputting attachments file}}%
+ {\typeout{Cannot find attachments file}}}%
+}
+\define@choicekey+{aebpdfpack}{viewmode}[\val\nr]%
+ {details,tile,layout,hidden}{%
+ \ifcase\nr\relax
+ \def\aeb@pdfpack@viewmode{/D}\or
+ \def\aeb@pdfpack@viewmode{/T}\or
+ \def\aeb@pdfpack@viewmode{/T}\or
+ \def\aeb@pdfpack@viewmode{/H}\fi
+}{}
+\define@key{aebpdfpack}{initview}[]{\def\aeb@pdfpack@initview{#1}}
+\let\aeb@pdfpack@initview\@empty
+\newcommand{\earlyAttachForPkgs}{%
+if (this.collection!=null&&this.collection.initialView == "Hidden")
+var hideto=app.setTimeOut("app.clearTimeOut(hideto);"
+ +"app.execMenuItem('CollectionPreview');",1);
+\if@gopro
+if(typeof _aebpro_attach == "undefined")
+( app.viewerVersion > 8 ) ? %
+aebTrustedFunctions(this,aebImportAnFDF,"aebpro_attach.fdf") : %
+this.importAnFDF("aebpro_attach.fdf");\fi
+\ifisPDFPackage\ifx\aeb@pdfpack@initview\@empty^^J%
+if(app.viewerVersion<15)^^J%
+var pkto=app.setTimeOut("app.clearTimeOut(pkto);"
++"app.execMenuItem('CollectionShowRoot');",5000);\fi\fi}
+\newif\ifisPDFPackage\isPDFPackagefalse
+\newcommand{\makePDFPackage}[1]{\isPDFPackagetrue
+ \setkeys{aebpdfpack}{viewmode=details,#1}%
+ \ifx\aeb@pdfpack@initview\@empty
+ \let\aeb@pdfpackage@initview\@empty
+ \else
+ {\obeyspaces\sanitize@attach\gdef\aeb@pdfpackage@initview%
+{/D<\expandafter\stringiiUnicode\aeb@pdfpack@initview\relax>}}%
+ \fi
+ \def\aeb@PDFPackageCode{/PageMode/UseAttachments%
+ /Collection<</Type/Collection%
+ \aeb@pdfpackage@initview/View\aeb@pdfpack@viewmode>>}%
+ \ifpdfmarkup
+ \def\aeb@setPDFPackage{\literalps@out{\AEB@psMrk{Catalog}
+ <<\aeb@PDFPackageCode>>/PUT pdfmark}}%
+ \else\ifpdf\def\aeb@setPDFPackage{%
+ \pdfcatalog{\aeb@PDFPackageCode}}\else
+ \ifxetex\def\aeb@setPDFPackage{\immediate
+ \@pdfm@mark{put @catalog <<\aeb@PDFPackageCode>>}}\else
+ \let\aeb@setPDFPackage\relax\PackageWarning{aeb_pro}
+ {The \string\makePDFPackage/string\makePDFPortfolio\space
+ is supported for\MessageBreak
+ dvips, pdftex, and xetex only}\fi\fi\fi
+}
+\let\makePDFPortfolio\makePDFPackage
+\@onlypreamble\makePDFPackage
+\let\aebp@attachments\aebp@Zero
+\ifx\aeb@attachsource\@empty\else\let\aebp@attachments\aebp@One\fi
+\ifx\aeb@attachments\@empty\else\let\aebp@attachments\aebp@One\fi
+\ifx\aebp@attachments\aebp@One
+ \dev@addToDocOpen{\JS{\earlyAttachForPkgs}}%
+\fi
+\newenvironment{docassembly}{%
+\execJS{docassembly}
+}{\endexecJS}
+\let\ap@mrk\@empty
+\def\ap@gobtocomma#1,{}
+\providecommand\chngDocObjectTo[2]{%
+ \def#1##1\ap@mrk{#2,\ap@gobtocomma##1}}
+\def\ap@TF{aebTrustedFunctions}
+\def\theDocObject{this}
+\providecommand\DeclareJSHelper[2]{%
+ \def#1##1({\ap@TF(##1\theDocObject,#2,\ap@mrk}}
+\DeclareJSHelper{\addWatermarkFromFile}{aebAddWatermarkFromFile}
+\DeclareJSHelper{\importIcon}{aebImportIcon}
+\DeclareJSHelper{\importSound}{aebImportSound}
+\DeclareJSHelper{\appopenDoc}{aebAppOpenDoc}
+\DeclareJSHelper{\docSaveAs}{aebDocSaveAs}
+\DeclareJSHelper{\insertPages}{aebInsertPages}
+\DeclareJSHelper{\createTemplate}{aebCreateTemplate}
+\DeclareJSHelper{\importDataObject}{aebImportDataObject}
+\DeclareJSHelper{\executeSave}{aebSaveAs,"Save"\@gobble}
+\DeclareJSHelper{\extractPages}{aebExtractPages}
+\DeclareJSHelper{\mailDoc}{aebMailDoc}
+\newcommand{\sigInfo}{var oSigInfo=}
+\def\sigFieldObj(#1){var oSigField=this.getField(#1)}
+\def\signatureSetSeedValue#1{%
+ \ap@TF( oSigField, aebSignatureSetSeedValue, }
+\begin{defineJS}[\def\defineJSjsR{^^J}]{\signatureSign}
+if ( typeof oSigInfo.oHandler=="undefined" )
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,
+ aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ?
+ aebTrustedFunctions( this, aebAppGetPath,
+ {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert :
+ oSigInfo.path2Cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,
+ { cPassword: oSigInfo.password, cDIPath: path2Cert});
+var oSigField = this.getField(oSigInfo.cSigFieldName);
+oSigInfo.oInfo.password=oSigInfo.password;
+if ( typeof oSigInfo.sv!="undefined" ) {
+ for (var o in oSigInfo.sv )
+ oSigInfo.oInfo[o]=oSigInfo.sv[o];
+}
+var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
+if ( typeof oSigInfo.cLegalAttest!="undefined" )
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+if ( typeof oSigInfo.cDIPath!="undefined")
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
+if ( typeof oSigInfo.bUI!="undefined")
+ oSigArgs.bUI=oSigInfo.bUI;
+aebTrustedFunctions( oSigField, aebSignatureSign, oSigArgs );
+\end{defineJS}
+\begin{defineJS}[\def\defineJSjsR{^^J}]{\certifyInvisibleSign}
+if ( typeof oSigInfo.oHandler=="undefined" )
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,
+ aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert=aebTrustedFunctions( this, aebAppGetPath,
+ {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,
+ { cPassword: oSigInfo.password, cDIPath: path2Cert});
+oSigInfo.oInfo.password=oSigInfo.password;
+var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
+if ( typeof oSigInfo.cLegalAttest!="undefined" )
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+if ( typeof oSigInfo.cDIPath!="undefined")
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
+if ( typeof oSigInfo.bUI!="undefined")
+ oSigArgs.bUI=oSigInfo.bUI;
+aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
+\end{defineJS}
+\let\predocassemJS\@empty
+\def\aeb@image@cnt{0}
+\define@key{importIcons}{name}[]{\def\importIcons@name{#1}}
+\define@key{importIcons}{path}[]{\def\importIcons@path{#1}}
+\define@key{importIcons}{page}[]{\def\importIcons@page{#1}}
+\define@key{importIcons}{placement}[]{\def\importIcons@placement{#1}}
+\define@boolkey{importIcons}{embedonly}[true]{}
+\define@key{importIcons}{firstpage}[]{\def\importIcons@firstpage{#1}}
+\define@key{importIcons}{lastpage}[]{\def\importIcons@lastpage{#1}}
+\newcommand{\aebp@getFace}[1][0]{%
+ \def\importIcons@face{#1}\aebp@getPlacement}
+\def\aebp@getPlacement#1\@nil{\def\importIcons@fieldname{#1}%
+ \expandafter\ap@strpspcs\importIcons@fieldname\@nil
+ \edef\importIcons@fieldname{\to@nilarg}%
+}
+\newcommand{\declareMultiImages}[1]{%
+ \edef\@tforExp{\noexpand\@tfor\noexpand\@dipArgs:=#1}%
+ \@tforExp\do{%
+ \expandafter\declareImageAndPlacement
+ \expandafter{\@dipArgs}%
+ }%
+}
+\newcommand{\declareImageAndPlacement}[1]{%
+ \edef\@tempexp{\noexpand\setkeys{importIcons}{name,path,page,%
+ placement,embedonly=false,#1}}\@tempexp
+ \ifx\importIcons@name\@empty{\count0=\aeb@image@cnt
+ \advance\count0by1\relax\xdef\aeb@image@cnt{\the\count0}}%
+ \edef\importIcons@name{aebImage\aeb@image@cnt}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \ifx\importIcons@placement\@empty\ifKV@importIcons@embedonly\else
+ \PackageWarningNoLine{aeb_pro}{%
+ The `placement' key was not found for the\MessageBreak
+ image named "\importIcons@name".\MessageBreak
+ Specify this key, or insert the image manually in\MessageBreak
+ the docassembly environment.}\fi\fi
+ \xdef\predocassemJS{\predocassemJS
+ var retn=\importIcon({cName:"\importIcons@name",%
+ cDIPath:"\importIcons@path"%
+ \ifx\importIcons@page\@empty\else,%
+ nPage:\importIcons@page\fi});^^J%
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not be opened.");^^J%
+ if ( retn==-2 ) console.println("Selected page
+ (page=\importIcons@page) for \string\"\importIcons@path\string\"
+ is invalid.");^^J}%
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \xdef\predocassemJS{\predocassemJS
+ var f = this.getField("\importIcons@fieldname");^^J%
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname\string\"
+ does not exist.");^^J%
+ try { f.buttonSetIcon(this.getIcon("\importIcons@name"),%
+ \importIcons@face); }
+ catch(e){};^^J}%
+ }%
+ \fi
+}
+\@onlypreamble\declareImageAndPlacement
+\newcommand{\iconNameI}[1]{\def\IconNameI(##1){#1}}
+\iconNameI{#1+"."+i}
+\@onlypreamble\iconNameI
+\newcommand{\embedMultiPageImages}[1]{%
+ \setkeys{importIcons}{name,path,page,placement,%
+ firstpage,lastpage,#1}%
+ \ifx\importIcons@firstpage\@empty
+ \def\importIcons@firstpage{1}\else
+ {\count0=\importIcons@firstpage}\fi
+ \ifx\importIcons@lastpage\@empty
+ \def\importIcons@lastpage{this.numPages}\else
+ {\count0=\importIcons@lastpage}\fi
+ \ifx\importIcons@name\@empty
+ \PackageError{aeb_pro}{The `name' key is required}
+ {Please give the icon family a name.}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \def\r{^^J}\def\t{\space\space\space\space}%
+ \let\predocassemJSPlace\@empty
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \edef\predocassemJSPlace{\predocassemJSPlace\t
+ var f = this.getField("\importIcons@fieldname."+i);\r\t
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname."+i+"\string\"
+ does not exist.");\r\t
+ try { f.buttonSetIcon(this.getIcon(%
+\IconNameI("\importIcons@name")),%
+ \importIcons@face); }
+ catch(e){};\r}%
+ }%
+ \fi
+ \xdef\predocassemJS{\predocassemJS
+ var l=\importIcons@lastpage-\importIcons@firstpage+1;\r
+ for (var i=0; i<l; i++) {\r\t
+ var retn=\importIcon({%
+ cName:\IconNameI("\importIcons@name"),%
+ cDIPath:"\importIcons@path",%
+ nPage:\importIcons@firstpage+i-1});\r\t
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not
+ be opened.");\r\t
+ if ( retn==-2 ) console.println("Selected page
+ (page="+(i+1)+") for \string\"\importIcons@path\string\"
+ is invalid.");\r
+ \predocassemJSPlace
+ }\r
+ var oIcon=this.getIcon("nullIcon");\r
+ if ( oIcon == null )
+ this.addIcon("nullIcon", this.createIcon("", 0, 0));\r
+ }%
+}
+\@onlypreamble\embedMultiPageImages
+\newcommand{\placeImageToBtn}[1]{%
+ \setkeys{importIcons}{name,path,page,placement,#1}%
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \xdef\predocassemJS{\predocassemJS
+ var f = this.getField("\importIcons@fieldname");^^J%
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname\string\"
+ does not exist.");^^J%
+ try { f.buttonSetIcon(this.getIcon("\importIcons@name"),%
+ \importIcons@face); }
+ catch(e){};^^J}%
+ }%
+ \fi
+}
+\newcommand{\insertPreDocAssembly}{\predocassemJS}
+\let\importAndSetImages\insertPreDocAssembly
+\newcommand{\placeImage}[4][]{\pushButton[%
+ \BC{}\BG{}\S{S}\Ff{\FfReadOnly}\autoCenter{n}\FB{true}
+ #1\I{null}\TP{1}]{#2}{#3}{#4}}
+\endinput
+%%
+%% End of file `aebpro.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/anime_support.def b/texmf-dist/tex/latex/aeb-pro/anime_support.def
new file mode 100644
index 00000000..7fe42aae
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/anime_support.def
@@ -0,0 +1,493 @@
+%%
+%% This is file `anime_support.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,animecommon')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\placeAnimeCtrlBtnFaces}[3][\pathToBtnCtrlIcons]{\begingroup
+ \toks@={\aep@I{\aep@setAFirst}{animeFirst}%
+ \aep@I{\aep@setASB}{animeSB}%
+ \aep@I{\aep@setAPB}{animePB}%
+ \aep@I{\aep@setAPaus}{animePause}%
+ \aep@I{\aep@setAPF}{animePF}%
+ \aep@I{\aep@setASF}{animeSF}%
+ \aep@I{\aep@setALast}{animeLast}%
+ \aep@I{\aep@setAPlus}{animePlus}%
+ \aep@I{\aep@setAMinus}{animeMinus}}%
+ \def\aep@I##1##2{\let##1\@empty}\the\toks@
+ \def\aep@I##1##2{\edef##1{##1,\aep@thisAnime4BtnCtrl.##2}}%
+ \@for\aep@thisAnime:=#3\do{\the\toks@}%
+ \def\aep@I##1##2{\edef##1{\expandafter\@gobble##1}}\the\toks@
+ \ifx\pathToBtnCtrlIcons\@empty
+ \let\@pathsep\@empty\else\def\@pathsep{/}\fi
+ \declareMultiImages{%
+ {path=#1\@pathsep#2,page=0,placement={\aep@setAFirst}}
+ {path=#1\@pathsep#2,page=2,placement={\aep@setASB}}
+ {path=#1\@pathsep#2,page=4,placement={\aep@setAPB}}
+ {path=#1\@pathsep#2,page=6,placement={\aep@setAPaus}}
+ {path=#1\@pathsep#2,page=5,placement={\aep@setAPF}}
+ {path=#1\@pathsep#2,page=3,placement={\aep@setASF}}
+ {path=#1\@pathsep#2,page=1,placement={\aep@setALast}}
+ {path=#1\@pathsep#2,page=7,placement={\aep@setAPlus}}
+ {path=#1\@pathsep#2,page=8,placement={\aep@setAMinus}}
+ }%
+ \endgroup
+}
+\@onlypreamble\placeAnimeCtrlBtnFaces
+\newcommand{\animeSetup}[1]{%
+ \let\animeSetupPresets\@empty
+ \edef\@tempExp{\noexpand\setkeys{btnAnime}{#1}}\@tempExp
+ \ifx\btnAnimeCtrlBdryColor\@empty\else
+ \edef\@tmpExp{\noexpand\g@addto@macro%
+ \noexpand\animeSetupPresets{%
+ \noexpand\BC{\btnAnimeCtrlBdryColor}}}\@tmpExp
+ \edef\@tmpExp{\noexpand\g@addto@macro%
+ \noexpand\animeSetupPresets{%
+ \noexpand\W{\btnAnimeCtrlBdryWidth}}}\@tmpExp\fi
+ \edef\@btnanimerowsep{\btnanimerowsep}% dps10
+ \setlength{\@tempdima}{%
+ (\btnAnimeCtrlW+2bp)*\numWidgetsFirstRow+%
+ (\btnanimebtnsep*(\numWidgetsFirstRow-1))}%
+ \addtolength{\@tempdima}{\addSpaceBtwnPMBtns}%
+ \edef\widthFirstRow{\the\@tempdima}%
+}
+\newcommand{\insertCtrlButtons}[1][c]{%
+ \parbox[#1][\totalheight+2bp]{\widthFirstRow}{%
+ \offinterlineskip\centering\aep@btn@anime@controls}}
+\newcommand{\setspaceBtwnPMBtns}[1]{{%
+ \settowidth{\@tempdima}{#1\kern2bp}%
+ \xdef\tmp@spaceBtwnPMBtns{\the\@tempdima}}%
+ \edef\@spaceBtwnPMBtns{\tmp@spaceBtwnPMBtns}}
+\setspaceBtwnPMBtns{\space}
+\def\addSpaceBtwnPMBtns{\ifKV@btnAnime@usetworows0bp\else
+ \ifKV@btnAnime@nospeedcontrol0bp\else\@spaceBtwnPMBtns\fi\fi}
+\define@choicekey+{btnAnime}{type}[\val\nr]%
+ {loop,palindrome,stopatboundary}[stopatboundary]{%
+ \edef\aebp@btnAnime@type{\nr}}{}
+\define@key{btnAnime}{fieldName}[]{\gdef\animeBtnFieldName{#1}}
+\define@key{btnAnime}{ocgAnimeName}[]{\gdef\animeBtnFieldName{#1}}
+\define@key{btnAnime}{iconName}[]{\gdef\animeBtnBaseName{#1}}
+\define@key{btnAnime}{speed}[200]{\gdef\animeBtnSpeed{#1}}
+\define@key{btnAnime}{nFrames}[]{\gdef\nFrames{#1}}
+\define@boolkey{btnAnime}{autorun}[true]{}
+\define@boolkey{btnAnime}{autopause}[true]{}
+\define@choicekey+{btnAnime}{autoplayevent}[\val\nr]%
+ {pageopen,pagevisible}[pageopen]{\ifcase\nr\relax
+ \def\aebp@autoplayevent{\AAPageOpen}\or
+ \def\aebp@autoplayevent{\AAPageVisible}\fi}{}%
+\def\aebp@autoplayevent{\AAPageOpen}
+\define@choicekey+{btnAnime}{autopauseevent}[\val\nr]%
+ {pageclose,pageinvisible}[pageclose]{\ifcase\nr\relax
+ \def\aebp@autopauseevent{\AAPageClose}\or
+ \def\aebp@autopauseevent{\AAPageInvisible}\fi}{}%
+\def\aebp@autopauseevent{\AAPageClose}
+\define@choicekey+{btnAnime}{poster}[\val\nr]%
+ {first,last,none}[first]{\edef\aebp@btnAnime@poster{\nr}}{}
+\define@key{btnAnime}{ctrlwidth}[18bp]{\def\btnAnimeCtrlW{#1}}
+\define@key{btnAnime}{ctrlheight}[9bp]{\def\btnAnimeCtrlH{#1}}
+\define@choicekey{btnAnime}{ctrlbdrywidth}[\val\nr]{none,%
+ thin,medium,thick}[thin]{\edef\btnAnimeCtrlBdryWidth{\nr}}
+\define@key{btnAnime}{ctrlbdrycolor}[]{\def\ap@argi{#1}%
+ \ifx\ap@argi\@empty\let\btnAnimeCtrlBdryColor\@empty\else
+ \HyColor@IfXcolor{\HyColor@XZeroOneThreeFour{#1}
+ {\btnAnimeCtrlBdryColor}{}{}}
+ {\edef\btnAnimeCtrlBdryColor{#1}}\fi
+} % PDF color
+\let\animeSetupPresets\@empty
+\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]} % dps10
+\newcommand{\btnanimebtnsep}{1bp}
+\newcommand{\vspacectrlsep}{3bp}
+\newcommand{\aep@vspacectrlsep}{\vspacectrlsep}
+\newcommand{\btnanimerowsep}{1bp}
+\newcommand{\btnAnimeSkini}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}\ifKV@btnAnime@nospeedcontrol\else
+ \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
+ \makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast
+ \ifKV@btnAnime@nospeedcontrol\else
+ \kern\@spaceBtwnPMBtns\btnAnimePlus
+ \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkinii}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimePlayBack
+ \@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}%
+ \ifKV@btnAnime@nospeedcontrol\else\vcgBdry[\@btnanimerowsep]%
+ \makebox[\linewidth][c]{\btnAnimePlus\@ctrlsbtnsep
+ \btnAnimeMinus}\fi\else\makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst\@ctrlsbtnsep
+ \btnAnimePlayBack\@ctrlsbtnsep\btnAnimePause%
+ \@ctrlsbtnsep\btnAnimePlayForward\@ctrlsbtnsep
+ \btnAnimeGoToLast\ifKV@btnAnime@nospeedcontrol\else
+ \kern\@spaceBtwnPMBtns\btnAnimePlus
+ \@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkiniii}{\ifKV@btnAnime@usetworows
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward}%
+ \ifKV@btnAnime@nospeedcontrol\else
+ \vcgBdry[\@btnanimerowsep]\makebox[\linewidth][c]{%
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus}\fi\else
+ \makebox[\linewidth][s]{\hss
+ \btnAnimeGoToFirst\@ctrlsbtnsep\btnAnimePause
+ \@ctrlsbtnsep\btnAnimePlayForward
+ \ifKV@btnAnime@nospeedcontrol\else\kern\@spaceBtwnPMBtns
+ \btnAnimePlus\@ctrlsbtnsep\btnAnimeMinus\fi\hss}\fi}
+\newcommand{\btnAnimeSkiniv}{%
+ \makebox[\linewidth][c]{%
+ \btnAnimeGoToFirst
+ \@ctrlsbtnsep\btnAnimeStepBack
+ \@ctrlsbtnsep\btnAnimeStepForward
+ \@ctrlsbtnsep\btnAnimeGoToLast}}
+\newcommand{\btnAnimeSkinv}{\PackageWarning{aeb_pro}
+ {skin5 is undefined.\MessageBreak You may customize
+ by defining skin5;\MessageBreak meanwhile, using default,
+ skin1}\btnAnimeSkini}
+\newcommand{\btnAnimeSkinvi}{\PackageWarning{aeb_pro}
+ {skin6 is undefined.\MessageBreak You may customize
+ by defining skin6;\MessageBreak meanwhile, using default,
+ skin1}\btnAnimeSkini}
+\newcommand{\aepnumWidgetsFirstRow}[2]{\def\numWidgetsFirstRow{%
+ \ifKV@btnAnime@nospeedcontrol#1\else
+ \ifKV@btnAnime@usetworows#1\else#2\fi\fi}}
+\newcommand{\numWidgetsFirstRowV}{\aepnumWidgetsFirstRow{7}{9}}
+\newcommand{\numWidgetsFirstRowVI}{\aepnumWidgetsFirstRow{7}{9}}
+\define@choicekey+{btnAnime}{controls}[\val\nr]%
+ {none,skin1,skin2,skin3,skin4,skin5,skin6}[skin1]{%
+ \ifcase\nr\relax
+ \let\aep@btn@anime@controls\@empty
+ \def\widthFirstRow{0pt}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkini}%
+ \aepnumWidgetsFirstRow{7}{9}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinii}%
+ \aepnumWidgetsFirstRow{5}{7}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkiniii}%
+ \aepnumWidgetsFirstRow{3}{5}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkiniv}%
+ \aepnumWidgetsFirstRow{4}{4}\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinv}%
+ \numWidgetsFirstRowV\or
+ \def\aep@btn@anime@controls{\btnAnimeSkinvi}%
+ \numWidgetsFirstRowVI\fi
+ }{}
+\define@boolkey{btnAnime}{usetworows}[true]{}
+\define@boolkey{btnAnime}{nospeedcontrol}[true]{}
+\setkeys{btnAnime}{fieldName,iconName,speed,nFrames,type,poster,
+ controls,usetworows=false,nospeedcontrol=false,ctrlwidth,ctrlheight,
+ ctrlbdrywidth,ctrlbdrycolor}
+\newcommand{\btnAnimePresets}[1]{\def\aeb@btnAnimePresets{#1}}
+\def\aeb@btnAnimePresets{}
+\newcommand{\ctrlButtonsWrapper}[1]{#1}
+\newcommand{\btnAnimeCtrlPresets}[1]{\def\aeb@btnAnimeCtrlPresets{#1}}
+\def\aeb@btnAnimeCtrlPresets{}
+\newcommand{\btnAnimeGoToFirst}{%
+ \pushButton[\TU{Go to first frame}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeFirstAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeFirst}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}%
+\newcommand{\btnAnimeStepBack}{%
+ \pushButton[\TU{Step Back}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeSBAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeSB}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePlayBack}{%
+ \pushButton[\TU{Play Backwards}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePBAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePB}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePause}{%
+ \pushButton[\TU{Pause}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePauseAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePause}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePlayForward}{%
+ \pushButton[\TU{Play Forwards}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePFAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePF}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeStepForward}{%
+ \pushButton[\TU{Step Forward}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeSFAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeSF}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeGoToLast}{%
+ \pushButton[\TU{Go to last frame}\S{S}\BC{}
+ \FB{false}\I{null}\TP{1}\presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeLastAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeLast}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimePlus}{%
+ \pushButton[\TU{Increase speed\r Shift-click to restore
+ default speed}%\textFont{HeBo}\CA{+}
+ \S{S}\BC{}\FB{false}\I{null}\TP{1}
+ \presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimePlusAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animePlus}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeMinus}{%
+ \pushButton[\TU{Decrease speed\r Shift-click to restore
+ default speed}%\textFont{HeBo}\uCA{FEFF2212}
+ \S{S}\BC{}\FB{false}\I{null}\TP{1}
+ \presets{\aeb@btnAnimeCtrlPresets}
+ \presets{\animeSetupPresets}\A{\JS{\btnAnimeMinusAction}}]%
+ {\animeBtnFieldName4BtnCtrl.animeMinus}%
+ {\btnAnimeCtrlW}{\btnAnimeCtrlH}}
+\newcommand{\btnAnimeFirstAction}{%
+if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeFirst(\animeBtnFieldName);
+}
+\newcommand{\btnAnimeSBAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
+ \aebp@btnAnime@type,true);
+}
+\newcommand{\btnAnimePBAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,false,%
+ \aebp@btnAnime@type,false);
+}
+\newcommand{\btnAnimePauseAction}{%
+ if ((typeof \animeBtnFieldName\space == "object")&&%
+ \animeBtnFieldName.animeStart)\r\t
+ btnAnimePause(\animeBtnFieldName);
+}
+\newcommand{\btnAnimePFAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
+ \aebp@btnAnime@type,false);
+}
+\newcommand{\btnAnimeSFAction}{%
+ if ( typeof \animeBtnFieldName\space=="undefined")\r\t
+ var \animeBtnFieldName= new Object();\r
+ btnAnimePlay(\animeBtnFieldName,"\animeBtnFieldName",%
+ "\animeBtnBaseName",\animeBtnSpeed,\nFrames,true,%
+ \aebp@btnAnime@type,true);
+}
+\newcommand{\btnAnimeLastAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeLast(\animeBtnFieldName);
+}
+\newcommand{\btnAnimePlusAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimePlus(\animeBtnFieldName,\animeBtnSpeed);
+}
+\newcommand{\btnAnimeMinusAction}{%
+ if (typeof \animeBtnFieldName\space == "object")\r\t
+ btnAnimeMinus(\animeBtnFieldName,\animeBtnSpeed);
+}
+\begin{insDLJS}[_loadBtnAnimeCtrls]{btnanime}
+ {AeB Pro: Button and Ocg Anime Controls}
+var _loadBtnAnimeCtrls=true;
+var activeAnimes=new Array();
+function btnAnimePlay(oAnime,fieldName,baseFrameName,%
+nSpeed,nFrames,bForward,type,bStep) {
+ // ocgAnime is characterized by baseFrameName=""
+ if ( oAnime.animeStart && !oAnime.animePause ) return;
+ var callingFieldName=event.target.name;
+ var re=/\.anime(PB|PF)/;
+ var doRebuild=( event.shift && re.test(callingFieldName) );
+ if ( (arguments.length>1) && %
+( (typeof activeAnimes[fieldName] == "undefined")|| doRebuild) ) {
+ activeAnimes[fieldName]=oAnime;
+ oAnime.isOcgAnime=(baseFrameName==""); // ocg change
+ oAnime.fieldName=fieldName;
+ oAnime.baseFrameName=baseFrameName;
+ oAnime.numSecs=nSpeed;
+ oAnime.nFrames=nFrames;
+ oAnime.type=type;
+ oAnime.bStep=bStep;
+ oAnime.aMyIcons = new Array();
+ oAnime.count = 0;
+ if ( !oAnime.isOcgAnime ) {// ocg change
+ for ( var i=0; i < nFrames; i++) {
+ oAnime.aMyIcons[i] = this.getField(fieldName+"."+i);
+ oAnime.aMyIcons[i].display=(i==0)?display.visible:%
+display.hidden;
+ }
+ }
+ }
+ if (arguments.length>1) {
+ oAnime.bForward=bForward;
+ oAnime.bStep=bStep;
+ }
+ if (oAnime.bStep) {
+ this.delay=true
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ var currCount=oAnime.count;
+ if (oAnime.bForward) {
+ oAnime.count++;
+ if (oAnime.count==oAnime.nFrames) // hit upper boundary
+ oAnime.count=(oAnime.type==0)?0:currCount;
+ } else {
+ oAnime.count--;
+ if (oAnime.count<0)
+ oAnime.count=(oAnime.type==0)?(oAnime.nFrames-1):0;
+ }
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.visible;
+ this.delay=false;
+ } else {
+ var args="\""+oAnime.fieldName+"\","+oAnime.type;
+ oAnime.run = app.setInterval(%
+"btnAnimeNewFrame("+args+")",oAnime.numSecs);
+ oAnime.animeStart=true;
+ oAnime.animePause=false;
+ }
+}
+function btnAnimeFirst(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ oAnime.count=0;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[0].display=display.visible;
+}
+function btnAnimeLast(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ var l = oAnime.nFrames-1;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false; // ocg
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ oAnime.count=l;
+ if ( oAnime.isOcgAnime )
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(l+1)).state=true; // ocg
+ else
+ oAnime.aMyIcons[l].display=display.visible;
+}
+function btnAnimePause(oAnime)
+{
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ oAnime.animePause=true;
+}
+function btnAnimePlus(oAnime,nDefSpeed){
+ var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
+ if (isPlaying) btnAnimePause(oAnime);
+ if ( event.shift ) oAnime.numSecs=nDefSpeed;
+ else oAnime.numSecs -= 50;
+ if (oAnime.numSecs<10) oAnime.numSecs=10
+ if (isPlaying) btnAnimePlay(oAnime);
+}
+function btnAnimeMinus(oAnime,nDefSpeed){
+ var isPlaying=(oAnime.animeStart&&!oAnime.animePause);
+ if (isPlaying) btnAnimePause(oAnime);
+ if ( event.shift ) oAnime.numSecs=nDefSpeed;
+ else oAnime.numSecs += 50;
+ if (isPlaying) btnAnimePlay(oAnime);
+}
+function btnAnimeNewFrame(fieldName, type)
+{
+ var oAnime=activeAnimes[fieldName];
+ this.delay=true
+ if ( oAnime.isOcgAnime ) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=false;
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.hidden;
+ var currCount=oAnime.count;
+ var bBdaryMet=false;
+ if (oAnime.bForward) {
+ oAnime.count++;
+ if (oAnime.count==oAnime.nFrames) {
+ if(type==0) oAnime.count \%= oAnime.nFrames;
+ else if(type==1) {
+ oAnime.count=currCount;
+ oAnime.count--;
+ oAnime.bForward=false;
+ } else {
+ bBdaryMet=true;
+ oAnime.count=currCount;
+ }
+ }
+ } else {
+ oAnime.count--;
+ if (oAnime.count<0) {
+ if(type==0) oAnime.count=(oAnime.nFrames-1);
+ else if(type==1) {
+ oAnime.count=currCount;
+ oAnime.count++;
+ oAnime.bForward=true;
+ } else { // stop
+ bBdaryMet=true;
+ oAnime.count=currCount;
+ }
+ }
+ }
+ if ( oAnime.isOcgAnime) // ocg change
+ getxBld("anime!!"+oAnime.fieldName+"\#"%
++(oAnime.count+1)).state=true;
+ else
+ oAnime.aMyIcons[oAnime.count].display=display.visible;
+ this.delay=false;
+ if ( type==2 && bBdaryMet ) {
+ try { app.clearInterval(oAnime.run);} catch(e){}
+ // try { app.clearTimeOut(timeout);} catch(e){}
+ oAnime.animeStart=false;
+ oAnime.animePause=false;
+ }
+}
+\end{insDLJS}
+\endinput
+%%
+%% End of file `anime_support.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/btnnanime.def b/texmf-dist/tex/latex/aeb-pro/btnnanime.def
new file mode 100644
index 00000000..6ad8a889
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/btnnanime.def
@@ -0,0 +1,56 @@
+%%
+%% This is file `btnnanime.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,btnanime')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\btnAnime}[3]{\begingroup\animeSetup{#1}%
+ \ifx\animeBtnFieldName\@empty\PackageError{aeb_pro}%
+ {The fieldName key is required}{}\fi
+ \ifx\animeBtnBaseName\@empty\PackageError{aeb_pro}%
+ {The iconName key is required}{}\fi
+ \ifx\nFrames\@empty\PackageError{aeb_pro}%
+ {The nFrames key is required}{}\fi
+ \parbox[t][#3]{#2}{%
+ \everyPushButton{\BC{}\BG{}\S{S}\autoCenter{n}\FB{true}\TP{1}%
+ \Ff{\FfReadOnly}\presets{\aeb@btnAnimePresets}\I{null}}%
+ \edef\termLoop{\nFrames}\edef\firstBtnOpts{%
+ \ifnum\aebp@btnAnime@poster=0 \else\noexpand\F{\FHidden}\fi
+ \noexpand\AA{\ifKV@btnAnime@autorun
+ \aebp@autoplayevent{\noexpand\btnAnimePFAction}\fi
+ \ifKV@btnAnime@autopause
+ \aebp@autopauseevent{\noexpand\btnAnimePauseAction}\fi}}%
+ \makebox[0pt][l]{\expandafter\pushButton
+ \expandafter[\firstBtnOpts]{\animeBtnFieldName.0}{#2}{#3}}%
+ \ifnum\aebp@btnAnime@poster=1
+ \count0=\nFrames\relax\advance\count0by-1
+ \edef\termLoop{\the\count0}\fi\@tempcnta=1
+ \loop\ifnum\@tempcnta<\termLoop\relax
+ \makebox[0pt][l]{\pushButton[\F{\FHidden}]{%
+ \animeBtnFieldName.\the\@tempcnta}{#2}{#3}}%
+ \advance\@tempcnta1\relax\repeat
+ \ifnum\aebp@btnAnime@poster=1\relax\makebox[0pt][l]{%
+ \pushButton{\animeBtnFieldName.\termLoop}{#2}{#3}}%
+ \fi\hfill\ifx\aep@btn@anime@controls\@empty\else
+ \offinterlineskip\vcgBdry[\vspacectrlsep]%
+ \everyPushButton{}\centering
+ \ctrlButtonsWrapper{\insertCtrlButtons}\fi
+ }%parbox
+ \endgroup
+}
+\endinput
+%%
+%% End of file `btnnanime.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/create_icon.def b/texmf-dist/tex/latex/aeb-pro/create_icon.def
new file mode 100644
index 00000000..2803e09f
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/create_icon.def
@@ -0,0 +1,156 @@
+%%
+%% This is file `create_icon.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,createicon')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{docassembly}{%
+\execJS{docassembly}
+}{\endexecJS}
+\let\ap@mrk\@empty
+\def\ap@gobtocomma#1,{}
+\providecommand\chngDocObjectTo[2]{%
+ \def#1##1\ap@mrk{#2,\ap@gobtocomma##1}}
+\def\ap@TF{aebTrustedFunctions}
+\def\theDocObject{this}
+\providecommand\DeclareJSHelper[2]{%
+ \def#1##1({\ap@TF(##1\theDocObject,#2,\ap@mrk}}
+\DeclareJSHelper{\importIcon}{aebImportIcon}
+\let\predocassemJS\@empty
+\def\aeb@image@cnt{0}
+\define@key{importIcons}{name}[]{\def\importIcons@name{#1}}
+\define@key{importIcons}{path}[]{\def\importIcons@path{#1}}
+\define@key{importIcons}{page}[]{\def\importIcons@page{#1}}
+\define@key{importIcons}{placement}[]{\def\importIcons@placement{#1}}
+\define@boolkey{importIcons}{embedonly}[true]{}
+\define@key{importIcons}{firstpage}[]{\def\importIcons@firstpage{#1}}
+\define@key{importIcons}{lastpage}[]{\def\importIcons@lastpage{#1}}
+\newcommand{\aebp@getFace}[1][0]{%
+ \def\importIcons@face{#1}\aebp@getPlacement}
+\def\aebp@getPlacement#1\@nil{\def\importIcons@fieldname{#1}%
+ \expandafter\ap@strpspcs\importIcons@fieldname\@nil
+ \edef\importIcons@fieldname{\to@nilarg}%
+}
+\newcommand{\declareMultiImages}[1]{%
+ \edef\@tforExp{\noexpand\@tfor\noexpand\@dipArgs:=#1}%
+ \@tforExp\do{%
+ \expandafter\declareImageAndPlacement
+ \expandafter{\@dipArgs}%
+ }%
+}
+\newcommand{\declareImageAndPlacement}[1]{%
+ \edef\@tempexp{\noexpand\setkeys{importIcons}{name,path,page,%
+ placement,embedonly=false,#1}}\@tempexp
+ \ifx\importIcons@name\@empty{\count0=\aeb@image@cnt
+ \advance\count0by1\relax\xdef\aeb@image@cnt{\the\count0}}%
+ \edef\importIcons@name{aebImage\aeb@image@cnt}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \ifx\importIcons@placement\@empty\ifKV@importIcons@embedonly\else
+ \PackageWarningNoLine{aeb_pro}{%
+ The `placement' key was not found for the\MessageBreak
+ image named "\importIcons@name".\MessageBreak
+ Specify this key, or insert the image manually in\MessageBreak
+ the docassembly environment.}\fi\fi
+ \xdef\predocassemJS{\predocassemJS
+ var retn=\importIcon({cName:"\importIcons@name",%
+ cDIPath:"\importIcons@path"%
+ \ifx\importIcons@page\@empty\else,%
+ nPage:\importIcons@page\fi});^^J%
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not be opened.");^^J%
+ if ( retn==-2 ) console.println("Selected page
+ (page=\importIcons@page) for \string\"\importIcons@path\string\"
+ is invalid.");^^J}%
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \xdef\predocassemJS{\predocassemJS
+ var f = this.getField("\importIcons@fieldname");^^J%
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname\string\"
+ does not exist.");^^J%
+ try { f.buttonSetIcon(this.getIcon("\importIcons@name"),%
+ \importIcons@face); }
+ catch(e){};^^J}%
+ }%
+ \fi
+}
+\@onlypreamble\declareImageAndPlacement
+\newcommand{\iconNameI}[1]{\def\IconNameI(##1){#1}}
+\iconNameI{#1+"."+i}
+\@onlypreamble\iconNameI
+\newcommand{\embedMultiPageImages}[1]{%
+ \setkeys{importIcons}{name,path,page,placement,%
+ firstpage,lastpage,#1}%
+ \ifx\importIcons@firstpage\@empty
+ \def\importIcons@firstpage{1}\else
+ {\count0=\importIcons@firstpage}\fi
+ \ifx\importIcons@lastpage\@empty
+ \def\importIcons@lastpage{this.numPages}\else
+ {\count0=\importIcons@lastpage}\fi
+ \ifx\importIcons@name\@empty
+ \PackageError{aeb_pro}{The `name' key is required}
+ {Please give the icon family a name.}\fi
+ \ifx\importIcons@path\@empty
+ \PackageError{aeb_pro}{The `path' key is required}
+ {Please give the path of the icon.}\fi
+ \def\r{^^J}\def\t{\space\space\space\space}%
+ \let\predocassemJSPlace\@empty
+ \ifx\importIcons@placement\@empty\else
+ \@for\@fieldname:=\importIcons@placement\do{%
+ \expandafter\aebp@getFace\@fieldname\@nil
+ \edef\predocassemJSPlace{\predocassemJSPlace\t
+ var f = this.getField("\importIcons@fieldname."+i);\r\t
+ if ( f == null ) console.println("The field
+ \string\"\importIcons@fieldname."+i+"\string\"
+ does not exist.");\r\t
+ try { f.buttonSetIcon(this.getIcon(%
+\IconNameI("\importIcons@name")),%
+ \importIcons@face); }
+ catch(e){};\r}%
+ }%
+ \fi
+ \xdef\predocassemJS{\predocassemJS
+ var l=\importIcons@lastpage-\importIcons@firstpage+1;\r
+ for (var i=0; i<l; i++) {\r\t
+ var retn=\importIcon({%
+ cName:\IconNameI("\importIcons@name"),%
+ cDIPath:"\importIcons@path",%
+ nPage:\importIcons@firstpage+i-1});\r\t
+ if ( retn==-1 ) console.println("The file
+ \string\"\importIcons@path\string\" could not
+ be opened.");\r\t
+ if ( retn==-2 ) console.println("Selected page
+ (page="+(i+1)+") for \string\"\importIcons@path\string\"
+ is invalid.");\r
+ \predocassemJSPlace
+ }\r
+ var oIcon=this.getIcon("nullIcon");\r
+ if ( oIcon == null )
+ this.addIcon("nullIcon", this.createIcon("", 0, 0));\r
+ }%
+}
+\@onlypreamble\embedMultiPageImages
+\newcommand{\insertPreDocAssembly}{\predocassemJS}
+\let\importAndSetImages\insertPreDocAssembly
+\newcommand{\placeImage}[4][]{\pushButton[%
+ \BC{}\BG{}\S{S}\Ff{\FfReadOnly}\autoCenter{n}\FB{true}
+ #1\I{null}\TP{1}]{#2}{#3}{#4}}
+\endinput
+%%
+%% End of file `create_icon.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/ocganime.def b/texmf-dist/tex/latex/aeb-pro/ocganime.def
new file mode 100644
index 00000000..3545c775
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/ocganime.def
@@ -0,0 +1,39 @@
+%%
+%% This is file `ocganime.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,ocganime')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{ocgAnime}[1]{\animeSetup{#1}%
+ \ifx\animeBtnFieldName\@empty\PackageError{aeb_pro}%
+ {The ocgAnimeName key is required}{}\fi
+ \ifx\nFrames\@empty\PackageError{aeb_pro}%
+ {The nFrames key is required}{}\fi
+ \DeclareAnime{\animeBtnFieldName}{\animeBtnSpeed}{\nFrames}%
+}{%
+ \edef\aep@ExpOpts{\noexpand\AA{\ifKV@btnAnime@autorun
+ \aebp@autoplayevent{\noexpand\btnAnimePFAction}\fi
+ \ifKV@btnAnime@autopause\aebp@autopauseevent{%
+ \noexpand\btnAnimePauseAction}\fi}}\smash{\makebox[0pt][l]%
+ {\expandafter\pushButton\expandafter[\aep@ExpOpts\W0\BC{}\BG{}\S{S}]%
+ {\animeBtnFieldName-autorunpause}{0bp}{0bp}}}%
+ \ifx\aep@btn@anime@controls\@empty\else\offinterlineskip
+ \vcgBdry[\vspacectrlsep]\everyPushButton{}%
+ \centering\ctrlButtonsWrapper{\insertCtrlButtons}\fi
+}
+\endinput
+%%
+%% End of file `ocganime.def'.
diff --git a/texmf-dist/tex/latex/aeb-pro/unicodes.def b/texmf-dist/tex/latex/aeb-pro/unicodes.def
new file mode 100644
index 00000000..2aa091f7
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/unicodes.def
@@ -0,0 +1,380 @@
+%%
+%% This is file `unicodes.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,unicode')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2017 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\define@key{ahref}{page}[0]{\def\ahref@page{#1}}
+\def\ahref@page{0}
+\def\ap@fslash{/}
+\def\@isfirstslash#1#2\@nil{\def\arg@i{#1}\ifx\ap@fslash\arg@i
+ \else\edef\ahref@view@keyvalue{/\ahref@view@keyvalue}\fi}
+\define@key{ahref}{view}[/Fit]{\edef\ahref@view@keyvalue{#1}%
+ \expandafter\@isfirstslash\ahref@view@keyvalue\@nil
+}
+\def\ahref@view@keyvalue{/Fit}
+\define@key{ahref}{dest}[]{\def\ahref@dest{#1}}
+\let\ahref@dest\@empty
+\define@choicekey{ahref}{open}[\val\nr]{userpref,new,existing}
+{%
+ \ifcase\nr\relax
+ \let\ahref@open@keyvalue\@empty\or
+ \def\ahref@open@keyvalue{/NewWindow true }\or
+ \def\ahref@open@keyvalue{/NewWindow false }\fi
+}{}
+\let\ahref@open@keyvalue\@empty
+\define@choicekey{ahref}{border}[\val\nr]{visible,invisible}
+{%
+ \ifcase\nr\relax
+ \def\ahref@border{0 0 1}%
+ \def\ahef@invisible@border{1}\or
+ \def\ahref@border{0 0 0}% W = 0 also?
+ \let\ahef@invisible@border\@empty\fi
+}{}
+\define@choicekey{ahref}{highlight}[\val\nr]{none,invert,outline,insert}
+{%
+ \ifcase\nr\relax
+ \let\ahref@highlight\@empty\or
+ \def\ahref@highlight{/H/I}\or
+ \def\ahref@highlight{/H/O}\or
+ \def\ahref@highlight{/H/P}\fi
+}{}
+\define@key{ahref}{bordercolor}[]{\def\ap@argi{#1}\ifx\ap@argi\@empty
+ \let\ahref@bordercolor\@empty\else
+ \HyColor@IfXcolor{\HyColor@XZeroOneThreeFour{#1}
+ {\ahref@bordercolor}{}{}}
+ {\edef\ahref@bordercolor{#1}}\fi
+} % PDF color
+\let\ahref@bordercolor\@empty
+\define@choicekey{ahref}{linestyle}[\val\nr]{solid,dashed,underlined}
+{%
+ \ifcase\nr\relax
+ \def\ahref@linestyle@keyvalue{/S/S}\or
+ \def\ahref@linestyle@keyvalue{/S/D}\or % Dashed [0 0 1[3.0]]
+ \def\ahref@linestyle@keyvalue{/S/U}\fi
+}
+\def\ahref@dashedlinetyle{/S/D}
+\define@choicekey{ahref}{linewidth}[\val\nr]{thin,medium,thick}
+{%
+ \ifcase\nr\relax
+ \def\ahref@linewidth{1}\or
+ \def\ahref@linewidth{2}\or
+ \def\ahref@linewidth{3}\fi
+}
+\define@choicekey{ahref}{goto}[\val\nr]{p2c,c2p,c2c}
+{%
+ \ifcase\nr\relax
+ \global\let\targetDictionary\targetDictionary@pc\or
+ \global\let\targetDictionary\targetDictionary@cp\or
+ \global\let\targetDictionary\targetDictionary@cc\fi
+}{}
+\define@choicekey{ahref}{launch}[\val\nr]{save,view,viewnosave}
+ {\edef\ahref@launch@type{\nr}}{}
+\def\ahref@launch@type{0}%
+\define@key{ahref}{preset}[]{\def\ahref@preset{#1}}
+\let\ahref@preset\@mpty
+\def\ahypertxtcolor#1{\def\ahrefcolor{#1}}
+\def\ahrefcolor{red}
+\define@key{ahref}{textcolor}[]{\def\ahrefcolor{#1}}
+\def\targetDictionary@pc#1{%
+/T<</N<\expandafter\stringiiUnicode#1\relax>/R/C>>}
+\def\targetDictionary@cp#1{/T<</R/P>>}
+\def\targetDictionary@cc#1{%
+/T<</R/P/T<</N<\expandafter\stringiiUnicode#1\relax>/R/C>>>>}
+\def\factory@ahyperref@defaults{goto=p2c,page,dest,open=userpref,view,%
+ border=invisible,highlight=invert,linestyle=solid,linewidth=thin,%
+ bordercolor,textcolor=red,preset}
+\newcommand{\setahyperDefaults}[1]{\def\aeb@setahyperrefDefaults{#1}}
+\let\aeb@setahyperrefDefaults\@empty
+\newcommand{\resetahyperDefaults}{%
+ \let\aeb@setahyperrefDefaults\@empty}
+\def\aeb@initahref#1{%
+ \edef\expand@setkeys{%
+ \noexpand\setkeys{ahref}{\factory@ahyperref@defaults}}%
+ \expand@setkeys
+ \ifx\aeb@setahyperrefDefaults\@empty\else
+ \edef\expand@setkeys{\noexpand\setkeys{ahref}%
+ [dest,goto,page,preset]{\aeb@setahyperrefDefaults}}%
+ \expand@setkeys
+ \fi
+ \setkeys{ahref}{#1}%
+ \ifx\ahref@preset\@empty\else
+ \edef\expand@setkeys{%
+ \noexpand\setkeys{ahref}{\ahref@preset}}\expand@setkeys\fi
+ \let\ahref@dasharray\@empty
+ \ifx\ahref@linestyle@keyvalue\ahref@dashedlinetyle
+ \def\aeb@border@parameters{0 0 \ahref@linewidth[3.0]}%
+ \def\ahref@dasharray{/D[3.0]}%
+ \else
+ \edef\aeb@border@parameters{\ahref@border}%
+ \fi
+ \ifx\ahef@invisible@border\@empty\def\ahref@linewidth{0}\fi
+ \def\ahref@BS@Dict{/BS<<%
+ \ahref@dasharray\ahref@linestyle@keyvalue/W \ahref@linewidth>>
+ \ifx\ahref@bordercolor\@empty\else
+ /C[\ahref@bordercolor]\fi\ahref@highlight}%
+}
+\newcommand{\ahyperref}[3][]{%
+ \begingroup
+ \dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahref@dest\@empty
+ \def\ahref@dest@keyvalue{%
+ /D[\ahref@page\space\ahref@view@keyvalue]}%
+ \else
+ \edef\ahref@dest@keyvalue{/D(\labelRef{\ahref@dest})}%
+ \fi
+ \aeb@ahref@setlink{#2}{#3}%
+}
+\newcommand{\ahyperlink}[3][]{%
+ \begingroup
+ \dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahref@dest\@empty
+ \def\ahref@dest@keyvalue{%
+ /D[\ahref@page\space\ahref@view@keyvalue]}%
+ \else
+ \def\ahref@dest@keyvalue{/D(\ahref@dest)}%
+ \fi
+ \aeb@ahref@setlink{#2}{#3}%
+}
+\def\aeb@ahref@setlink#1#2{%
+ \ifx\ahrefcolor\@empty
+ \@eqlinktxtcolor{}\let\ahypercolor\@empty\else
+ \def\ahypercolor{\textcolor{\ahrefcolor}}\fi
+ \setLink[\Border{\aeb@border@parameters}%
+ \rawPDF{\ahref@BS@Dict}%
+ \A{\ahref@dest@keyvalue/S/GoToE%
+ \ahref@open@keyvalue\targetDictionary{#1}}]{\ahypercolor{#2}}%
+ \endgroup
+}
+\newcommand{\ahyperextract}[3][]
+{%
+ \begingroup\dl@preProcDefns
+ \def\u{\string\\u}%
+ \aeb@initahref{#1}%
+ \ifx\ahrefcolor\@empty
+ \@eqlinktxtcolor{}\let\ahypercolor\@empty\else
+ \def\ahypercolor{\textcolor{\ahrefcolor}}\fi
+ \setLink[\Border{\aeb@border@parameters}%
+ \rawPDF{\ahref@BS@Dict}%
+ \A{\JS{this.exportDataObject({cName: "#2",%
+nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
+ \endgroup
+}
+\def\convertChriiUnicode#1#2{\csarg\gdef{uni@#1}{#2}}%
+\convertChriiUnicode\space{0020}
+\convertChriiUnicode{!}{0021}
+{\@makeother\"
+\convertChriiUnicode{"}{0022}}
+\convertChriiUnicode{#}{0023}
+\convertChriiUnicode{$}{0024}
+{\@makeother\%
+\convertChriiUnicode{%}{0025}}
+\convertChriiUnicode{&}{0026}
+\convertChriiUnicode{'}{0027}
+\convertChriiUnicode{(}{0028}
+\convertChriiUnicode{)}{0029}
+\convertChriiUnicode{*}{002A}
+\convertChriiUnicode{+}{002B}
+\convertChriiUnicode{,}{002C}
+\convertChriiUnicode{-}{002D}
+\convertChriiUnicode{.}{002E}
+\convertChriiUnicode{/}{002F}
+\convertChriiUnicode{0}{0030}
+\convertChriiUnicode{1}{0031}
+\convertChriiUnicode{2}{0032}
+\convertChriiUnicode{3}{0033}
+\convertChriiUnicode{4}{0034}
+\convertChriiUnicode{5}{0035}
+\convertChriiUnicode{6}{0036}
+\convertChriiUnicode{7}{0037}
+\convertChriiUnicode{8}{0038}
+\convertChriiUnicode{9}{0039}
+\convertChriiUnicode{:}{003A}
+\convertChriiUnicode{;}{003B}
+\convertChriiUnicode{<}{003C}
+\convertChriiUnicode{=}{003D}
+\convertChriiUnicode{>}{003E}
+\convertChriiUnicode{?}{003F}
+\convertChriiUnicode{@}{0040}
+\convertChriiUnicode{A}{0041}
+\convertChriiUnicode{B}{0042}
+\convertChriiUnicode{C}{0043}
+\convertChriiUnicode{D}{0044}
+\convertChriiUnicode{E}{0045}
+\convertChriiUnicode{F}{0046}
+\convertChriiUnicode{G}{0047}
+\convertChriiUnicode{H}{0048}
+\convertChriiUnicode{I}{0049}
+\convertChriiUnicode{J}{004A}
+\convertChriiUnicode{K}{004B}
+\convertChriiUnicode{L}{004C}
+\convertChriiUnicode{M}{004D}
+\convertChriiUnicode{N}{004E}
+\convertChriiUnicode{O}{004F}
+\convertChriiUnicode{P}{0050}
+\convertChriiUnicode{Q}{0051}
+\convertChriiUnicode{R}{0052}
+\convertChriiUnicode{S}{0053}
+\convertChriiUnicode{T}{0054}
+\convertChriiUnicode{U}{0055}
+\convertChriiUnicode{V}{0056}
+\convertChriiUnicode{W}{0057}
+\convertChriiUnicode{X}{0058}
+\convertChriiUnicode{Y}{0059}
+\convertChriiUnicode{Z}{005A}
+\convertChriiUnicode{[}{005B}
+\convertChriiUnicode{]}{005D}
+\convertChriiUnicode{^}{005E}
+\convertChriiUnicode{_}{005F}
+\convertChriiUnicode{`}{0060}
+\convertChriiUnicode{a}{0061}
+\convertChriiUnicode{b}{0062}
+\convertChriiUnicode{c}{0063}
+\convertChriiUnicode{d}{0064}
+\convertChriiUnicode{e}{0065}
+\convertChriiUnicode{f}{0066}
+\convertChriiUnicode{g}{0067}
+\convertChriiUnicode{h}{0068}
+\convertChriiUnicode{i}{0069}
+\convertChriiUnicode{j}{006A}
+\convertChriiUnicode{k}{006B}
+\convertChriiUnicode{l}{006C}
+\convertChriiUnicode{m}{006D}
+\convertChriiUnicode{n}{006E}
+\convertChriiUnicode{o}{006F}
+\convertChriiUnicode{p}{0070}
+\convertChriiUnicode{q}{0071}
+\convertChriiUnicode{r}{0072}
+\convertChriiUnicode{s}{0073}
+\convertChriiUnicode{t}{0074}
+\convertChriiUnicode{u}{0075}
+\convertChriiUnicode{v}{0076}
+\convertChriiUnicode{w}{0077}
+\convertChriiUnicode{x}{0078}
+\convertChriiUnicode{y}{0079}
+\convertChriiUnicode{z}{007A}
+\convertChriiUnicode{|}{007C}
+{\@makeother~
+\convertChriiUnicode{~}{007E}}
+\def\EURO{20AC}
+\def\BSLASH{005C}
+\def\LBRACE{007B}
+\def\RBRACE{007D}
+\def\DQUOTE{0022}
+\def\displayUnicode#1{\csname uni@#1\endcsname}
+\def\stringiiUnicode{FEFF\expandafter\@stringiiUnicode}
+\def\@stringiiUnicode#1{%
+ \ifx#1\relax\else
+ \ifx#1\u\aeb@exiii\getRawUnicode
+ \else
+ \displayUnicode{#1}\aeb@exiii\@stringiiUnicode
+ \fi
+ \fi
+}
+\def\getRawUnicode{\expandafter\@getRawUnicode}
+\def\@getRawUnicode#1#2#3#4{#1#2#3#4\@stringiiUnicode}
+\def\unicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ FEFF#1\else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
+\def\ucspace{\u0020}
+\begingroup\catcode`\"=\active \gdef\DQ{\string\"}%
+ \gdef\@handledblquotes{\catcode`\"=\active\def"{\DQ}}%
+ \toks0=\expandafter{\DLspecialDefs\@handledblquotes}%
+ \xdef\DLspecialDefs{\the\toks0}%
+\endgroup
+\newif\ifHandleDblQuotes \HandleDblQuotesfalse
+\def\sanitize@attach{\ifHandleDblQuotes\@handledblquotes\fi%
+\@makeother\#\@makeother\$\@makeother\%\@makeother~}
+{\obeyspaces\gdef\getdscrptCont#1{\gdef\aebp@description{#1}%
+\aeb@labelName}%
+\gdef\getdscrptStrCont#1{\gdef\aebp@description{#1}%
+\aeb@labelNamestar}}%
+\let\aeb@isFromAutoLabelNum\aebp@Zero
+\def\labelName#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@Zero
+ \@for\x:=ABCDEFabcdef\do{\@makeother\x}%
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@i}{}}
+\def\labelName@a#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@One
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@i}{}}
+\def\labelName@i{\obeyspaces\sanitize@attach\getdscrptCont}%
+\def\labelName@star#1{\bgroup\@for\x:=ABCDEFabcdef\do{\@makeother\x}%
+ \def\aebp@labelname{#1}\@ifnextchar\bgroup{\labelName@star@i}{}}%
+\def\labelName@star@i{\obeyspaces\sanitize@attach\getdscrptStrCont}%
+\newcommand{\autolabelNum}{%
+ \@ifstar{\aeb@autoLabelNumstar}{\aeb@autoLabelNum}}
+\newcommand\aeb@autoLabelNum[2][]{\def\alnargi{#1}%
+ \def\@thisattachnum{#2}%
+ \ifx\alnargi\@empty
+ \def\aeb@next{%
+ \labelName@a{attach#2}{AeB\space Attachment\space #2}}%
+ \else
+ \def\aeb@next{%
+ \labelName@a{#1}{AeB\space Attachment\space #2}}%
+ \fi
+ \aeb@next%
+}
+\newcommand{\aeb@autoLabelNumstar}[2][]{%
+ \def\alnargi{#1}\gdef\@thisattachnum{#2}%
+ \ifx\alnargi\@empty\def\aeb@next{\labelName@star{attach#2}}\else
+ \def\aeb@next{\labelName@star{#1}}\fi
+ \aeb@next%
+}
+\def\aeb@labelName{%
+ \if\aeb@isFromAutoLabelNum\aebp@One
+ \global\csarg\let
+ {aeb@aDescript@attach\@thisattachnum}\aebp@description
+ \global\csarg\let
+ {aeb@aName@attach\@thisattachnum}\aebp@labelname
+ \else
+ \global\csarg\let
+ {aeb@aDescript@\aebp@labelname}\aebp@description
+ \global\csarg\let
+ {aeb@aName@\aebp@labelname}\aebp@labelname\fi\egroup}
+\def\aeb@labelNamestar{%
+ \global\csarg\let
+ {aeb@aDescript@attach\@thisattachnum}\aebp@description
+ \global\csarg\let{aeb@aName@attach\@thisattachnum}\aebp@labelname
+ \global\csarg\let{aeb@aDescript@\aebp@labelname}\aebp@description
+ \global\csarg\let{aeb@aName@\aebp@labelname}\aebp@labelname\egroup}
+\@ifpackageloaded{exerquiz}{}
+{%
+ \def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active\catcode`\^^I=12%
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start}
+ \def\endverbatimwrite{\@esphack}
+}
+\newenvironment{attachmentNames}{%
+ \newwrite \aeb@attachments@xref
+ \immediate\openout \aeb@attachments@xref \jobname_xref.cut
+ \let\verbatim@out\aeb@attachments@xref
+ \immediate\write\verbatim@out{\string\begingroup
+ \string\HandleDblQuotestrue}%
+ \verbatimwrite}{%
+ \endverbatimwrite
+ \immediate\write\verbatim@out{\string\endgroup}%
+ \immediate\closeout \aeb@attachments@xref
+ \aftergroup\aeb@Input@xref}
+\def\aeb@Input@xref{\InputIfFileExists{\jobname_xref.cut}{}{}}
+\endinput
+%%
+%% End of file `unicodes.def'.
diff --git a/texmf-dist/tex/latex/aebxmp/aebxmp.sty b/texmf-dist/tex/latex/aebxmp/aebxmp.sty
new file mode 100644
index 00000000..346eb2aa
--- /dev/null
+++ b/texmf-dist/tex/latex/aebxmp/aebxmp.sty
@@ -0,0 +1,446 @@
+%%
+%% This is file `aebxmp.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aebxmp.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aebxmp.sty package, 2016-05-29 %%
+%% Copyright (C) 2006--2016 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{aebxmp}
+ [2017/02/17 v2.5a Populate advanced metadata (dps)]
+\RequirePackage{xkeyval}
+\@ifpackageloaded{insdljs}{\let\execjs=y}
+ {\RequirePackage[execJS]{insdljs}[2016/07/31]} % incls conv-xkv
+\newif\if@xmp@several \@xmp@severaltrue
+\def\xmp@testBrace#1{\@ifnextchar\bgroup
+ {\@xmp@severaltrue#1}{\@xmp@severalfalse#1}}
+\newcommand{\xmpLangAndArg}[1][]{%x-default
+ \edef\xmpLang{#1}\xmpGetNextArg}
+\def\xmpGetNextArg#1\@nil{\edef\xmpArg{#1}}
+\edef\xmp@dquoteCat{\the\catcode`\"}
+\catcode`\"=12\relax
+\def\xmp@ProcessArgs#1#2{%
+ \if@xmp@several
+ \@tfor\xmpArg:=#1\do{%
+ \expandafter\xmpLangAndArg\xmpArg\@nil
+ \ifnum\count0=0\relax
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="x-default";}%
+ \ifx\xmpLang\@empty\else
+ \advance\count0by1\relax
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \else
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \advance\count0by1\relax
+ }%
+ \else
+ \@tfor\xmpArg:={#1}\do{%
+ \expandafter\xmpLangAndArg\xmpArg\@nil
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="x-default";}%
+ \ifx\xmpLang\@empty\else
+ \advance\count0by1
+ \xdef#2{#2^^J%
+ \xmp@insItem[\the\count0]="\xmpArg";^^J%
+ \xmp@insItem[\the\count0].@xml::lang="\xmpLang";}%
+ \fi
+ \advance\count0by1\relax
+ }%
+ \fi
+}
+\bgroup\obeyspaces
+\gdef\tabiv{ }%
+\egroup
+\let\arrayOfRights\@empty
+\newcommand{\copyrightNotice}[1]{\def\xmpcopyrightNotice{#1}%
+ \xmp@testBrace{\xmp@cont@CopyRightNotice}#1\@nil}%
+\let\xmpcopyrightNotice\@empty
+\def\xmp@cont@CopyRightNotice#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::rights.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpcopyrightNotice\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfRights}%
+ \fi
+ \endgroup
+}
+\let\arrayOfAuthors\@empty
+\let\xmpAuthors\@empty
+\newcommand{\Authors}[1]{\def\xmpAuthors{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insSeqItem{p.aebdc::creator.aebrdf::Seq.aebrdf::li}%
+ \ifx\xmpAuthors\@empty\else
+ \let\arrayOfAuthors\@gobble
+ \@tfor\xmpAuthor:=#1\do{%
+ \xdef\arrayOfAuthors{\arrayOfAuthors^^J%
+ \insSeqItem[\the\count0]="\xmpAuthor";}%
+ \advance\count0by1
+ }%
+ \fi
+ \endgroup
+}
+\def\insertAuthors{\ifx\arrayOfAuthors\@empty\else
+ ^^J\arrayOfAuthors\fi}
+\let\arrayOfTitles\@empty
+\newcommand{\Title}[1]{\edef\xmpTitle{#1}%
+ \xmp@testBrace{\xmp@cont@Title}#1\@nil}
+\def\xmp@cont@Title#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::title.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpTitle\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfTitles}%
+ \fi
+ \endgroup
+}
+\def\insertTitles{\ifx\arrayOfTitles\@empty\else
+ ^^J\arrayOfTitles\fi}
+\let\arrayOfSubjects\@empty
+\newcommand{\Subject}[1]{\edef\xmpSubject{#1}%
+ \xmp@testBrace{\xmp@cont@Subject}#1\@nil}%
+\def\xmp@cont@Subject#1\@nil{%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\xmp@insItem{p.aebdc::description.aebrdf::Alt.aebrdf::li}%
+ \ifx\xmpSubject\@empty\else
+ \xmp@ProcessArgs{#1}{\arrayOfSubjects}%
+ \fi
+ \endgroup
+}
+\def\insertSubjects{\ifx\arrayOfSubjects\@empty\else
+ ^^J\arrayOfSubjects\fi}
+\let\arrayOfLangs\@empty
+\newcommand{\metaLang}[1]{\def\xmplangOfDoc{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insBagItem{p.aebdc::language.aebrdf::Bag.aebrdf::li}%
+ \ifx\xmpLangs\@empty\else
+ \let\arrayOfLangs\@gobble
+ \@for\xmpLang:=#1\do{%
+ \xdef\arrayOfLangs{\arrayOfLangs^^J%
+ \insBagItem[\the\count0]="\xmpLang";}%
+ \advance\count0by1
+ }%
+ \fi
+ \endgroup
+}
+\def\insertLangs{\ifx\arrayOfLangs\@empty\else
+ ^^J\arrayOfLangs\fi}
+\newcommand{\sourceFile}[1]{\let\xmp@bSourcefile=1
+ \def\xmp@sourcefile{#1}}
+\let\xmp@bSourcefile=0
+\let\xmp@sourcefile\@empty
+\def\insertSource{%
+ \if\xmp@bSourcefile0
+ ^^Jp.aebdc::source="\jobname.tex"\else
+ \ifx\xmp@sourcefile\@empty\else
+ ^^Jp.aebdc::source="\xmp@sourcefile"\fi\fi}
+\let\arrayOfKeywords\@empty
+\let\aKeywords\@empty
+\let\xmpKeywords\@empty
+\newcommand{\Keywords}[1]{\def\xmpKeywords{#1}%
+ \begingroup\let\u\relax\count0=0\relax
+ \def\insBagItem{%
+ p.aebdc::subject.aebrdf::Bag.aebrdf::li}%
+ \ifx\xmpKeywords\@empty\else
+ \let\arrayOfKeywords\@gobble
+ \let\aKeywords\@gobbletwo
+ \@for\xmpKeyword:=#1\do{%
+ \xdef\arrayOfKeywords{\arrayOfKeywords^^J%
+ \insBagItem[\the\count0]="\xmpKeyword";}%
+ \xdef\aKeywords{\aKeywords;\space\xmpKeyword}%
+ \advance\count0by1
+ }%
+ \xdef\aKeywords{"\aKeywords"}%
+ \fi
+ \endgroup
+}
+\def\insertKeywords{\ifx\arrayOfKeywords\@empty\else
+ ^^J\arrayOfKeywords\fi}
+\let\xmpInsScript\@empty
+\newcommand{\xmpDoNotInsKWScript}{\let\xmpInsScript\null}
+\newcommand{\copyrightStatus}[1]{%
+ \setkeys{aebxmp}{copyrightstatus=#1}}
+\define@choicekey*+{aebxmp}{copyrightstatus}[\val\nr]%
+ {true,false,unknown}[unknown]{%
+ \ifcase\nr\relax
+ \def\xmpcopyrightStatus{True}\or
+ \def\xmpcopyrightStatus{False}\else
+ \let\xmpcopyrightStatus\@empty\fi
+}{\PackageWarning{aebxmp}{%
+ Bad choice for \string\copyrightStatus,\MessageBreak
+ you entered '#1'.\MessageBreak
+ Permissible values are true, false, or unknown\MessageBreak
+ (or an empty argument). Setting status to 'unknown'.\MessageBreak
+ Try again,}}
+\let\xmpcopyrightStatus\@empty
+\def\insertMarked{\ifx\xmpcopyrightStatus\@empty
+ \else^^Jp.aebxapRights::Marked="\xmpcopyrightStatus";\fi}
+\def\insertCopyrightNotice{\ifx\arrayOfRights\@empty\else
+ \arrayOfRights\fi}
+\newcommand{\copyrightInfoURL}[1]{\def\xmpcopyrightInfoURL{#1}}
+\let\xmpcopyrightInfoURL\@empty
+\def\insertWebStatement{\ifx\xmpcopyrightInfoURL\@empty
+ \else^^Jp.aebxapRights::WebStatement="\xmpcopyrightInfoURL";\fi}
+\let\insertCusProps\@empty
+\newcommand\customProperties[1]{\def\pdfx@cusProps{#1}%
+ \begingroup\let\u\relax
+ \@tfor\thisproperty:=#1\do{%
+ \edef\tmp@exp{\noexpand
+ \cxkvsetkeys{pdfx@cusPropKV}{name,value,\thisproperty}}\tmp@exp
+ \xdef\insertCusProps{\insertCusProps^^J%
+ p.aebpdfx::\pdfx@KName="\pdfx@VValue";}
+ }%
+ \endgroup
+}
+\define@key{pdfx@cusPropKV}{name}[]{\def\pdfx@KName{#1}}
+\define@key{pdfx@cusPropKV}{value}[]{\def\pdfx@VValue{#1}}
+\def\insertCreateDate{^^Jp.@aebxap::CreateDate=createDateStr;%
+^^Jp.@aebxap::ModifyDate=createDateStr;}
+\def\xmpnEOL{\string\n\string\^^J}
+\newcommand{\authortitle}[1]{\def\xmpauthortitle{#1}}
+\let\authorTitle\authortitle
+\let\xmpauthortitle\@empty
+\def\insertAuthorTitle{\ifx\xmpauthortitle\@empty
+ \else^^Jp.aebphotoshop::AuthorsPosition="\xmpauthortitle";\fi}
+\newcommand{\descriptionwriter}[1]{\def\xmpdescriptionwriter{#1}}
+\let\descriptionWriter\descriptionwriter
+\let\xmpdescriptionwriter\@empty
+\def\insertDescriptionWriter{\ifx\xmpdescriptionwriter\@empty
+ \else^^Jp.aebphotoshop::CaptionWriter="\xmpdescriptionwriter";\fi}
+\def\insertKWJS{\ifx\aKeywords\@empty\else
+ this.info.Keywords=\aKeywords;^^J\fi}
+\def\xNNS{new Namespace}
+\def\xAdbNS{http://ns.adobe.com}
+\def\xWiiiNS{http://www.w3.org}
+\begin{execJS}{execXMP}
+var meta=this.metadata;
+var aebXMPData=new XML(meta);
+var aebx=\xNNS("x","adobe:ns:meta/");
+var xmlns=\xNNS("xmlns","\xWiiiNS/2000/xmlns/");
+var xml=\xNNS("xml", "\xWiiiNS/XML/1998/namespace");
+var aebrdf=\xNNS("rdf","\xWiiiNS/1999/02/22-rdf-syntax-ns#");
+var aebdc=\xNNS("dc","http://purl.org/dc/elements/1.1/");
+var aebpdf=\xNNS("pdf","\xAdbNS/pdf/1.3/");
+var aebxap=\xNNS("xmp","\xAdbNS/xap/1.0/");
+var aebxapRights=\xNNS("xmpRights","\xAdbNS/xap/1.0/rights/");
+var aebphotoshop=\xNNS("photoshop","\xAdbNS/photoshop/1.0/");
+var aebpdfx=\xNNS("pdfx","\xAdbNS/pdfx/1.3/");
+var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+if ( p.@aebpdfx::*.toString() == "" ) p.@xmlns::pdfx=aebpdfx.uri;
+p.@xmlns::photoshop=aebphotoshop.uri;
+p.@xmlns::xmpRights=aebxapRights.uri;
+var d=new Date();
+var createDateStr=util.printd("yyyy-mm-ddTHH:MM:ss",d);
+delete p.@aebdc::rights.aebrdf::Alt.aebrdf::li;
+/*
+ Dublin Core Properties
+*/%
+\insertTitles%
+\insertAuthors%
+\insertSubjects%
+\insertKeywords%
+\insertLangs%
+\insertSource%
+\insertCopyrightNotice%
+
+/*
+ XMP Rights Management Properties
+*/
+delete p.@aebxapRights::Marked;
+delete p.@aebxapRights::WebStatement;%
+\insertMarked%
+\insertWebStatement%
+
+delete p.@aebphotoshop::AuthorsPosition;
+delete p.@aebphotoshop::CaptionWriter;
+delete p.@aebxap::CreateDate;
+/*
+ Adobe Photoshop Properties
+*/%
+\insertAuthorTitle%
+\insertDescriptionWriter%
+
+/*
+ Acrobat Custom Properties
+*/%
+\insertCusProps%
+
+/*
+ XMP Core Properties
+*/%
+\insertCreateDate%
+
+/*
+ Convert aebXMPData into an XML String
+ and save is as this.metadata
+*/
+var aebNewXMPStr=aebXMPData.toXMLString();
+try { this.metadata=aebNewXMPStr; }
+ catch(e) {console.println(e.toString());}
+\insertKWJS%
+\end{execJS}
+\ifx\xmpInsScript\@empty
+\begin{insDLJS}{xmpjs}{Access to Title, Subject, and Keywords}
+function getKeywordsXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ return p.aebdc::subject.aebrdf::Bag.aebrdf::li[i];
+}
+var i=0;
+var aKeywords=new Array();
+while ( typeof getKeywordsXMP(i)!="undefined" ) {
+ aKeywords[i]=getKeywordsXMP(i).toString(); i++;
+}
+function getTitleXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="[" + p.aebdc::title.aebrdf::Alt.aebrdf::li[i].%
+@xml::lang.toString()+"]: "
+ + p.aebdc::title.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aTitle=new Array();
+while ( getTitleXMP(i)!="undefined" ) {
+ aTitle[i]=getTitleXMP(i); i++;
+}
+function getSubjectXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="[" + p.aebdc::description.aebrdf::Alt.aebrdf::li[i].%
+@xml::lang.toString()+"]: "
+ + p.aebdc::description.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aSubject=new Array();
+while ( getSubjectXMP(i)!="undefined" ) {
+ aSubject[i]=getSubjectXMP(i); i++;
+}
+function getRightsXMP(i) {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriDc="http://purl.org/dc/elements/1.1/";
+ var uriXML="http://www.w3.org/XML/1998/namespace";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var aebrdf=new Namespace(uriRdf);
+ var aebdc=new Namespace(uriDc);
+ var xml=new Namespace("xml",uriXML);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ var retnStr;
+ try { retnStr="["+ p.aebdc::rights.aebrdf::Alt.aebrdf::li[i]%
+.@xml::lang.toString()+"]: "
+ + p.aebdc::rights.aebrdf::Alt.aebrdf::li[i].toString();
+ } catch(e) { retnStr="undefined" };
+ return retnStr;
+}
+var i=0;
+var aRights=new Array();
+while ( getRightsXMP(i)!="undefined" ) {
+ aRights[i]=getRightsXMP(i); i++;
+}
+function getCopyrightStatus() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriXAP="http://ns.adobe.com/xap/1.0/rights/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebxapRights=new Namespace("xmpRights",uriXAP);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::xmpRights=aebxapRights.uri;
+ var copyrightStatus = p.@aebxapRights::Marked;
+ if ( copyrightStatus=="True" )
+ return "Copyrighted";
+ else if ( copyrightStatus=="False" )
+ return "Public Domain";
+ else return "Unknown";
+}
+function getCopyrightInfoURL() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriXAP="http://ns.adobe.com/xap/1.0/rights/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebxapRights=new Namespace("xmpRights",uriXAP);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::xmpRights=aebxapRights.uri;
+ var copyrightInfoURL=(p.@aebxapRights::WebStatement.toString()!="")?
+ (p.@aebxapRights::WebStatement):"Not provided";
+ return copyrightInfoURL;
+}
+function getAuthorTitle() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriPhotoshop="http://ns.adobe.com/photoshop/1.0/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebPhotoshop=new Namespace("photoshop",uriPhotoshop);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::photoshop=aebPhotoshop.uri;
+ var authorTitle=(p.@aebPhotoshop::AuthorsPosition.toString()!="")?
+ (p.@aebPhotoshop::AuthorsPosition):"Not provided";
+ return authorTitle;
+}
+function getDescriptionWriter() {
+ var uriRdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+ var uriPhotoshop="http://ns.adobe.com/photoshop/1.0/";
+ var meta=this.metadata;
+ var aebXMPData=new XML(meta);
+ var xmlns=new Namespace("xmlns","http://www.w3.org/2000/xmlns/");
+ var aebrdf=new Namespace(uriRdf);
+ var aebPhotoshop=new Namespace("photoshop",uriPhotoshop);
+ var p=aebXMPData.aebrdf::RDF.aebrdf::Description;
+ p.xmlns::photoshop=aebPhotoshop.uri;
+ var captionWriter=(p.@aebPhotoshop::CaptionWriter.toString()!="")?
+ (p.@aebPhotoshop::CaptionWriter):"Not provided";
+ return captionWriter;
+}
+\end{insDLJS}
+\fi
+\catcode`\"=\xmp@dquoteCat
+\endinput
+%%
+%% End of file `aebxmp.sty'.
diff --git a/texmf-dist/tex/latex/annot-pro/annot_pro.sty b/texmf-dist/tex/latex/annot-pro/annot_pro.sty
new file mode 100644
index 00000000..e6b108b3
--- /dev/null
+++ b/texmf-dist/tex/latex/annot-pro/annot_pro.sty
@@ -0,0 +1,616 @@
+%%
+%% This is file `annot_pro.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% annot_pro.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% annot_pro package, %%
+%% Copyright (C) 2002-2016 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{annot_pro}
+ [2016/10/18 v1.1b Provides selected PDF annotation support (dps)]
+\RequirePackage{xkeyval}
+\DeclareOptionX{preview}{\previewtrue}
+\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+\newif\ifuseAAXdim\useAAXdimtrue
+\DeclareOptionX{useA10Icons}{\useAAXdimtrue}
+\DeclareOptionX{!useA10Icons}{\useAAXdimfalse}
+\DeclareOptionX{useTextBox}{\def\ap@requireRichTextAsNeeded{%
+ \RequirePackage{richtext}[2016/10/03]}}
+\let\ap@requireRichTextAsNeeded\relax
+\ProcessOptionsX\relax
+\RequirePackage{hyperref}
+\RequirePackage{calc}
+\RequirePackage{insdljs}
+\RequirePackage[structure]{taborder}
+\ap@requireRichTextAsNeeded
+\@ifpackageloaded{graphicxsp}{%
+ \let\ap@graphicxsp=1}{\let\ap@graphicxsp=0}
+\@ifpackageloaded{eforms}{}
+ {\newif\ifto@structOrder\to@structOrderfalse}
+\def\ap@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\def\ap@Bbox#1#2{%
+ \edef\bbox@width{#1}\edef\bbox@height{#2}%
+ \hbox{\ifpreview\setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
+ \@tempdima=\bbox@width\advance\@tempdima by-\fboxrule
+ \@tempdimb=\bbox@height\advance\@tempdimb by-\fboxrule
+ \fbox{\parbox[c][\@tempdimb][c]{\@tempdima}{\hfill\vfill}}\else
+ \parbox[c][\bbox@height][c]{\bbox@width}{\hfill\vfill}\fi}%
+}
+\def\ap@Rect{/Rect [pdf@llx pdf@ury pdf@urx pdf@lly]}
+\newcommand{\defineAPath}[1]{\def\ap@ctrl@Name{#1}%
+ \hyper@normalise\ap@defineAPath}
+\def\ap@defineAPath#1{\expandafter\xdef\ap@ctrl@Name{#1}}
+\define@choicekey+{annotpro}{type}[\val\nr]%
+ {text,stamp,fileattachment,textbox}[text]{%
+ \edef\ap@save@type{\nr}%
+ \ifcase\nr\relax
+ \def\ap@type{Text}\or
+ \def\ap@type{Stamp}\or
+ \def\ap@type{FileAttachment}\or
+ \def\ap@type{FreeText}\fi
+}{\PackageWarning{annot_pro}{Bad choice for type, permissible values
+ are text, stamp, fileattachment, textbox. Try again}}
+\def\ap@freetext@type{3}
+\let\ap@type\@empty
+\define@key{annotpro}{name}[]{\def\annotpro@name{#1}}
+\let\annotpro@name\@empty
+\define@choicekey+{annnotprotext}{name}{%
+Comment,Key,Note,Help,NewParagraph,Paragraph,Insert,Check,%
+Circle,Cross,Star,RightArrow,RightPointer,UpArrow,UpLeftArrow,%
+CrossHairs}[Note]{\def\annotpro@@name{#1}}%
+{\PackageWarning{annot_pro}{Bad choice for name, permissible values
+are Comment, Key, Note, Help, NewParagraph, Paragraph, Insert, Check,
+Circle, Cross, Star, RightArrow, RightPointer, UpArrow,
+UpLeftArrow, CrossHairs. Try again}}
+\let\annotpro@@name\@empty
+\define@choicekey+{annnotprostamp}{name}{%
+Approved,AsIs,Confidential,Departmental,Draft,%
+Experimental,Expired,Final,ForComment,%
+ForPublicRelease,NotApproved,NotForPublicRelease,Sold,%
+TopSecret}[Draft]{\def\annotpro@@name{#1}}%
+{\def\ap@custom@name{#1}}
+\let\ap@custom@name\@empty
+\define@key{annotpro}{customStamp}[]{\def\ap@customstamp@name{#1}}
+\let\ap@customstamp@name\@empty
+\define@key{annotpro}{ap}[]{\def\annotpro@ap{#1}}
+\let\annotpro@ap\@empty
+\define@key{annotpro}{width}[]{\def\annotpro@width{#1}}
+\let\annotpro@width\@empty
+\define@key{annotpro}{height}[]{\def\annotpro@height{#1}}
+\let\annotpro@height\@empty
+\define@key{annotpro}{rotate}[]{\def\annotpro@rotate{#1}}
+\let\annotpro@rotate\@empty
+\define@key{annotpro}{scale}[]{\def\annotpro@scale{#1}}
+\let\annotpro@scale\@empty
+\define@key{annotpro}{widthTo}[]{\def\annotpro@widthTo{#1}}
+\let\annotpro@widthTo\@empty
+\define@key{annotpro}{heightTo}[]{\def\annotpro@heightTo{#1}}
+\let\annotpro@heightTo\@empty
+\define@choicekey+{annnotprofileattach}{name}{%
+Graph,Paperclip,PushPin,Tag}[PushPin]{\def\annotpro@@name{#1}}
+{\PackageWarning{annot_pro}{Bad choice for name, permissible values
+are Graph,Paperclip,PushPin,Tag. Try again}}
+\define@key{annotpro}{file}[]{%
+ \edef\annotpro@file{#1}%
+ \ifx\annotpro@file\@empty\else
+ \edef\ap@exp@tmp{\noexpand\filename@parse{#1}}\ap@exp@tmp
+ \edef\ap@thisFileName{\filename@base.\filename@ext}\fi
+}
+\let\annotpro@file\@empty
+\define@key{annotprofreetext}{name}[FreeText]{\def\annotpro@@name{#1}}
+\define@key{annotprofreetext}{defstyle}[]{\def\annotpro@@ds{#1}}
+\let\annotpro@@ds\@empty
+\define@key{annotprofreetext}{richtext}[]{\def\annotpro@@rt{#1}}
+\let\annotpro@@rt\@empty
+\define@key{annotpro}{margin}[0]{%
+ \def\annotpro@margin{0}}
+\let\annotpro@margin\@empty
+\define@key{annotpro}{margintext}[]{%
+ \def\apmargintext{\centering\break
+ \parbox{\linewidth}{\apmargintextformat\strut#1}}}
+\let\apmargintext\@empty
+\newcommand{\margintextformat}[1]{\def\apmargintextformat{#1}}
+\margintextformat{\bfseries\tiny\color{blue}}
+\define@key{annotpro}{presets}[]{\def\annotpro@presets{#1}}
+\let\annotpro@presets\@empty
+\define@key{annotpro}{objdef}[]{\def\eq@objdef{/_objdef {#1}}%
+ \def\eq@objdefName{#1}}
+\let\eq@objdef\@empty
+\define@key{annotpro}{taborder}[]{\def\eq@taborder{#1}}
+\let\eq@taborder\@empty
+\define@choicekey+{annotpro}{open}[\val\nr]{true,false}[true]{%
+ \def\annotpro@open{#1}}{\PackageWarning{annot_pro}{Bad
+ choice for open, permissible values are true and false. Try again}}
+\def\annotpro@open{false}
+\define@key{annotpro}{subject}[]{\def\annotpro@subject{#1}}
+\define@key{annotpro}{title}[]{\def\annotpro@title{#1}}
+\define@key{annotpro}{color}[1 0 0]{\def\annotpro@color{#1}}
+\define@key{annotpro}{bgcolor}[]{\def\annotpro@bgcolor{#1}}
+\def\annotpro@bgcolor{white}
+\define@key{annotpro}{bcolor}[]{\def\annotpro@bcolor{#1}}
+\let\annotpro@bcolor\@empty
+\def\annotpro@def@bcolor{black}
+\def\ap@BE@i{4.08768}
+\def\ap@BE@i@calc{\ap@BE@i\space\ap@bwidthNum\space add}
+\def\ap@BE@ii{8.26857}
+\def\ap@BE@ii@calc{\ap@BE@ii\space add \ap@bwidthNum}
+\define@choicekey+{annotpro}{borderstyle}[\val\nr]{none,solid,%
+ dash1,dash2,dash3,dash4,dash5,dash6,cloud1,cloud2}[solid]{%
+ \ifcase\nr\relax
+ \def\ap@border@code{}\or
+ \def\ap@border@code{/BS <</S/S\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[2.0 2.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[3.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 3.0 2.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[4.0 3.0 16.0 3.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BS <</D[8.0 4.0 4.0 4.0]/S/D\ap@bwidth>>}\or
+ \def\ap@border@code{/BE<</I 1.0/S/C>>/RD[\ap@BE@i@calc\space\ap@BE@i@calc
+ \space\ap@BE@i@calc\space\ap@BE@i@calc]%
+ \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\or
+ \def\ap@border@code{/BE<</I 2.0/S/C>>/RD[\ap@BE@ii@calc\space\ap@BE@ii@calc
+ \space\ap@BE@ii@calc\space\ap@BE@ii@calc]%
+ \ifx\ap@bwidth\@empty\else/BS <<\ap@bwidth>>\fi}\fi
+ \def\annotpro@border{#1}}{\PackageWarning{annot_pro}{Bad
+ choice for borderstyle,\MessageBreak permissible values are none, solid,%
+ dash1, dash2, dash3,\MessageBreak dash4, dash5, dash6, cloud1, cloud2. Try again}}
+\def\ap@border@code{/BS <</S/S\ap@bwidth>>}
+\define@choicekey+{annotpro}{borderwidth}[\val\nr]{.5,1,2,3,4,6,8,10}[1]{%
+ \edef\ap@bwidthNum{\val}%
+ \def\ap@bwidth{/W #1}}{\PackageWarning{annot_pro}{Bad
+ choice for borderwidth,\MessageBreak permissible values are .5, 1, 2,\MessageBreak
+ 3, 4, 6, 8, 10. Try again}}
+\def\ap@bwidthNum{1}
+\let\ap@bwidth\@empty
+\define@key{annotpro}{readonly}[ 64 add]{\def\ap@readonly{#1}}
+\let\ap@readonly\@empty
+\define@key{annotpro}{nohspace}[]{\def\annotpro@hspace{0pt}}
+\define@key{annotpro}{novspace}[]{\def\annotpro@vspace{0pt}}
+\define@key{annotpro}{nospace}[]{\def\annotpro@hspace{0pt}%
+ \def\annotpro@vspace{0pt}}
+\let\annotpro@hspace\@empty\let\annotpro@vspace\@empty
+\define@key{annotpro}{opacity}[]{%
+ \def\ap@add@ops{[ /ca #1 /SetTransparency pdfmark}%
+ \def\annotpro@opacity{#1}}
+\let\annotpro@opacity\@empty
+\def\getargsiii#1#2#3{\def\ap@argi{#1}\def\ap@argii{#2}%
+ \def\ap@argiii{#3}}
+\ifuseAAXdim
+\@tfor\ap@text@dimen:={{Comment}{18bp}{18bp}}%
+{{Key}{13bp}{18bp}}{{Note}{18bp}{20bp}}{{Help}{20bp}{20bp}}%
+{{NewParagraph}{13bp}{20bp}}{{Paragraph}{20bp}{20bp}}%
+{{Insert}{17bp}{20bp}}{{Check}{20bp}{19bp}}%
+{{Circle}{20bp}{20bp}}{{Cross}{20bp}{19bp}}%
+{{Star}{20bp}{19bp}}{{RightArrow}{20bp}{20bp}}%
+{{RightPointer}{20bp}{17bp}}{{UpArrow}{17bp}{20bp}}%
+{{UpLeftArrow}{17bp}{17bp}}{{CrossHairs}{20bp}{20bp}}\do{%
+ \expandafter\getargsiii\ap@text@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \else
+\@tfor\ap@text@dimen:={{Comment}{20bp}{18bp}}%
+{{Key}{18bp}{17bp}}{{Note}{18bp}{20bp}}{{Help}{20bp}{20bp}}%
+{{NewParagraph}{13bp}{20bp}}{{Paragraph}{11bp}{20bp}}%
+{{Insert}{20bp}{17bp}}{{Check}{20bp}{19bp}}%
+{{Circle}{20bp}{20bp}}{{Cross}{20bp}{20bp}}%
+{{Star}{20bp}{19bp}}{{RightArrow}{20bp}{14bp}}%
+{{RightPointer}{20bp}{18bp}}{{UpArrow}{19bp}{20bp}}%
+{{UpLeftArrow}{17bp}{17bp}}{{CrossHairs}{24bp}{24bp}}\do{%
+ \expandafter\getargsiii\ap@text@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \fi
+\ifuseAAXdim
+\@tfor\ap@fa@dimen:={{Graph}{20bp}{20bp}}
+ {{Paperclip}{7bp}{17bp}}{{PushPin}{14bp}{20bp}}
+ {{Tag}{20bp}{16bp}}\do{%
+ \expandafter\getargsiii\ap@fa@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\else
+\@tfor\ap@fa@dimen:={{Graph}{18bp}{18bp}}
+ {{Paperclip}{5bp}{15bp}}{{PushPin}{12bp}{18bp}}
+ {{Tag}{18bp}{14bp}}\do{%
+ \expandafter\getargsiii\ap@fa@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+} \fi
+\newcommand{\defaultStampWidth}{50bp}
+\newcommand{\defaultStampHeight}{50bp}
+\newcommand{\standardStampWidth}{245.38bp}
+\newcommand{\standardStampHeight}{64.53bp}
+\@tfor\ap@dimen:={{SBApproved}{163.50bp}{49.50bp}}
+{{SBCompleted}{175.87bp}{49.50bp}}
+{{SBConfidential}{209.62bp}{49.50bp}}
+{{SBDraft}{113.14bp}{49.75bp}}
+{{SBFinal}{97.80bp}{49.75bp}}
+{{SBForComment}{211.87bp}{49.50bp}}
+{{SBForPublicRelease}{290.04bp}{49.55bp}}
+{{SBInformationOnly}{275.00bp}{49.55bp}}
+{{SBNotApproved}{218.62bp}{49.50bp}}
+{{SBNotForPublicRelease}{346.04bp}{49.55bp}}
+{{SBPreliminaryResults}{304.04bp}{49.55bp}}
+{{SBVoid}{91.04bp}{49.75bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\@tfor\ap@dimen:={{SBRejected}{22.68bp}{22.66bp}}
+{{SHAccepted}{23.29bp}{20.45bp}}
+{{SHInitialHere}{99.69bp}{30.34bp}}
+{{SHSignHere}{99.69bp}{30.34bp}}
+{{SHWitness}{99.69bp}{30.34bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\catcode`\#=11\relax
+\@tfor\ap@dimen:={{#DApproved}{255.64bp}{53.83bp}}
+{{#DConfidential}{163.28bp}{57.10bp}}
+{{#DReceived}{255.64bp}{55.11bp}}
+{{#DReviewed}{255.64bp}{55.11bp}}
+{{#DRevised}{127.47bp}{55.85bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\catcode`\#=6\relax
+\newcommand{\stampWidth}[1]{\csname ap@#1Width\endcsname}
+\newcommand{\stampHeight}[1]{\csname ap@#1Height\endcsname}
+\@tfor\ap@dimen:={{WordsAGenuineFind}{120.68bp}{190.83bp}}
+{{WordsBigSavings}{282.84bp}{117.86bp}}
+{{WordsDeals}{345.40bp}{132.55bp}}
+{{WordsHappyBirthday}{326.50bp}{166.32bp}}
+{{WordsHot}{249.64bp}{176.75bp}}
+{{WordsLookWhatsNew}{316.59bp}{229.81bp}}
+{{WordsNeato}{171.12bp}{86.88bp}}
+{{WordsTheBestJustGotBetter}{153.53bp}{153.53bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\@tfor\ap@dimen:={{FacesEcstatic}{223.20bp}{202.80bp}}
+{{FacesElectric}{295.80bp}{280.50bp}}
+{{FacesGrumpy}{289.92bp}{194.64bp}}
+{{FacesHappy}{161.65bp}{161.65bp}}
+{{FacesHurt}{289.50bp}{285.75bp}}
+{{FacesNeutral}{291.04bp}{279.32bp}}
+{{FacesSmirk}{276.75bp}{292.50bp}}
+{{FacesSurprised}{220.08bp}{215.04bp}}
+{{FacesWorried}{298.11bp}{235.12bp}}
+{{FacesWow}{242.32bp}{289.17bp}}
+{{FacesZippy}{290.59bp}{263.81bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\@tfor\ap@dimen:={{PointersBogus}{128.32bp}{53.82bp}}
+{{PointersBug}{128.32bp}{51.94bp}}
+{{PointersDOA}{136.99bp}{51.48bp}}
+{{PointersFYEO}{128.32bp}{48.60bp}}
+{{PointersFix}{145.60bp}{58.11bp}}
+{{PointersNuke}{128.32bp}{52.30bp}}
+{{PointersOptimize}{128.32bp}{48.60bp}}
+{{PointersRedFlag}{128.32bp}{57.12bp}}
+{{PointersValidate}{128.32bp}{48.60bp}}
+{{PointersWarning}{128.32bp}{57.23bp}}
+{{PointersWhen}{128.32bp}{63.79bp}}\do{%
+ \expandafter\getargsiii\ap@dimen
+ \ap@csarg\edef{ap@\ap@argi Width}{\ap@argii}%
+ \ap@csarg\edef{ap@\ap@argi Height}{\ap@argiii}%
+}
+\def\ap@FreeTextWidth{144bp}
+\def\ap@FreeTextHeight{72bp}
+\newcommand{\makeStamp}[3]{%
+\ap@csarg\def{stamp@#2}{%
+ \begin{sp@createImage}{#1}{#2\the\ap@cusstamp@cnt}
+ \ap@add@ops#3
+ \end{sp@createImage}}}
+\let\ap@add@ops\@empty
+\newcommand{\ap@useStamp}[1]{%
+ \global\advance\ap@cusstamp@cnt1\relax
+ \@nameuse{stamp@#1}}
+\newcommand{\setAnnotOptions}[1]{%
+ \setkeys{annotpro}{#1}%
+}
+\begingroup
+\def\withoptz@#1{\ifnum#1<10 0\fi\the#1}
+\edef\ap@pdfdate{\the\year\withoptz@\month\withoptz@\day}
+\count0=\time \count2=\count0
+\divide\count2by60
+\edef\ap@pdfdate{\ap@pdfdate\withoptz@{\count2}}
+\multiply\count2by60 \advance\count0by-\count2
+\xdef\ap@pdfdate{\ap@pdfdate\withoptz@{\count0}00}
+\endgroup
+\newcount\ap@annot@cnt
+\newcount\ap@cusstamp@cnt
+{\catcode`\#=12\gdef\ap@signalCustomAP{#}}
+\def\pStamp#1{\ap@signalCustomAP#1}
+\def\ap@RV@Body{<?xml version="1.0"?><body %
+ xfa:APIVersion="Acrobat:9.5.5" %
+ xfa:contentType="text/html" %
+ xfa:spec="2.0.2" xmlns="http://www.w3.org/1999/xhtml" %
+ xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
+\def\ap@RV@endBody{<body>}
+\def\ap@sub#1{\rvorvstring{<span style="vertical-align:-0.0pt;">#1</span>}{#1}}%
+\def\ap@sup#1{\rvorvstring{<span style="vertical-align:+0.0pt;">#1</span>}{#1}}%
+\def\ap@uDec#1{\rt@amp\rt@hashtag#1;}
+\def\ap@uHex#1{\rt@amp\rt@hashtag x#1;}
+\def\ap@afterParaFont{%
+ \rt@formfieldfalse
+}
+\def\ap@afterFont{%
+ \rt@formfieldfalse
+ \let\rt@url\@empty
+}
+\newenvironment{textboxpara}{%
+ \let\rt@sub\ap@sub\let\rt@sup\ap@sup
+ \let\rt@afterParaFont\ap@afterParaFont
+ \let\rt@afterFont\ap@afterFont
+ \def\rt@br{\rvorvstring{\rt@amp\rt@hashtag13;}{\string\r}}%
+ \def\rt@spc{\space}\let\uDec\ap@uDec\let\uHex\ap@uHex
+}{}
+\newcommand{\annotpro}{%
+ \begingroup
+ \let\#\ap@signalCustomAP
+ \@nnotpro
+}
+\newcommand{\@nnotpro}[1][]{%
+ \global\advance\ap@annot@cnt1\relax
+ \setkeys{annotpro}{#1}%
+ \@nn@tpro
+}
+\newcommand{\@nn@tpro}[1]
+{%
+ \ifx\annotpro@presets\@empty\else
+ \edef\ap@exp@tmp{\noexpand\setkeys{annotpro}{\annotpro@presets}}%
+ \ap@exp@tmp\fi
+ \ifx\ap@type\@empty\def\ap@type{Text}\def\ap@save@type{0}\fi
+ \ifcase\ap@save@type\relax
+ \def\annot@subtype{annnotprotext}%
+ \ifx\annotpro@subject\@empty\def\annotpro@subject{Sticky Note}\fi
+ \ifx\annotpro@name\@empty\def\annotpro@name{Note}\fi
+ \def\ap@def@name{Note}\or
+ \ifx\annotpro@subject\@empty\def\annotpro@subject{Rubber Stamp}\fi
+ \def\annot@subtype{annnotprostamp}%
+ \def\ap@def@name{Draft}\or
+ \ifx\annotpro@subject\@empty
+ \def\annotpro@subject{File Attachment}\fi
+ \def\annot@subtype{annnotprofileattach}%
+ \def\ap@def@name{PushPin}\or
+ \ifx\annotpro@subject\@empty
+ \def\annotpro@subject{Text Box}\fi
+ \def\annot@subtype{annotprofreetext}%
+ \def\ap@def@name{FreeText}%
+ \fi
+ \edef\ap@exp@tmp{%
+ \noexpand\setkeys{\annot@subtype}{name=\annotpro@name}}%
+ \ap@exp@tmp\xdef\ap@def@type{\ap@type}%
+ \let\annotpro@enc@contents\@empty
+ \makespecialJS
+\if\ap@save@type\ap@freetext@type
+ \let\eq@RV@Body\ap@RV@Body\let\eq@RV@endBody\ap@RV@endBody
+ \setkeys{annotprofreetext}{#1}%
+ \ifx\annotpro@@ds\@empty
+ \def\ap@defaultstyle{\useDefaultDS}\else
+ \edef\ap@defaultstyle{\noexpand\useDS{\annotpro@@ds}}\fi
+ \ifx\annotpro@@rt\@empty
+ \let\annotpro@RC\@empty\let\annotpro@C\@empty\else
+ \edef\annotpro@RC{\noexpand\useRVContent{\annotpro@@rt}}%
+ \edef\annotpro@C{\noexpand\useVContent{\annotpro@@rt}}\fi
+\else
+ \pdfstringdef\annotpro@enc@contents{#1}%
+\fi
+ \let\annotpro@enc@title\@empty
+ \pdfstringdef\annotpro@enc@title{\annotpro@title}%
+ \let\annotpro@enc@subject\@empty
+ \pdfstringdef\annotpro@enc@subject{\annotpro@subject}%
+ \HyColor@XZeroOneThreeFour{\annotpro@color}%
+ {\annotpro@enc@color}{annotpro}{color}%
+\ifx\annotpro@bgcolor\@empty\else
+ \HyColor@XZeroOneThreeFour{\annotpro@bgcolor}
+ {\annotpro@enc@bgcolor}{annotpro}{bgcolor}\fi
+\ifx\annotpro@bcolor\@empty
+ \edef\annotpro@bcolor{\annotpro@def@bcolor}\fi
+ \HyColor@FieldColor{\annotpro@bcolor}
+ {\annotpro@enc@bcolor}{annotpro}{bcolor}%
+ \let\ap@this@AP\@empty\let\ap@this@FS\@empty\let\ap@this@CA\@empty
+ \let\ap@this@Rotate\@empty
+ \ifx\annotpro@opacity\@empty\else
+ \def\ap@this@CA{/CA \annotpro@opacity}\fi
+ \ifcase\ap@save@type
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \edef\ap@thisWidth{\ifx\annotpro@hspace\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@hspace\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@vspace\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@vspace\fi}%
+ \or
+ \ifx\annotpro@@name\@empty
+ \ifx\ap@custom@name\@empty
+ \ifx\ap@customstamp@name\@empty
+ \ifx\annotpro@@name\@empty
+ \edef\annotpro@@name{\ap@def@name}\fi
+ \edef\ap@thisWidth{\standardStampWidth}%
+ \edef\ap@thisHeight{\standardStampHeight}%
+ \else
+ \if\ap@graphicxsp0\PackageError{annot_pro}%
+ {Specifying a custom name for a stamp requires
+ the graphicxsp package.}\fi
+ \ifx\annotpro@ap\@empty
+ \PackageError{annot_pro}{You must specify a value
+ for the ap key}\fi
+ \def\ap@ImageRef{\annotpro@ap\the\ap@cusstamp@cnt}%
+ \expandafter\ap@useStamp\expandafter{\annotpro@ap}%
+ \edef\ap@thisWidth{\widthOf{\ap@ImageRef}bp}%
+ \@tempdima=\ap@thisWidth\advance\@tempdima-2bp
+ \edef\ap@thisWidth{\the\@tempdima}%
+ \edef\ap@thisHeight{\heightOf{\ap@ImageRef}bp}%
+ \@tempdima=\ap@thisHeight\advance\@tempdima-2bp
+ \edef\ap@thisHeight{\the\@tempdima}%
+ \def\ap@this@AP{/AP << /N {\ap@ImageRef} >>}%
+ \edef\annotpro@@name{%
+ \ap@signalCustomAP\ap@customstamp@name}%
+ \fi
+ \else
+ \edef\annotpro@@name{\ap@custom@name}%
+ \@ifundefined{ap@\ap@custom@name Width}{%
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \defaultStampWidth\else\annotpro@width\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \defaultStampWidth\else\annotpro@height\fi}%
+ }{%
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@width\fi}%
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@height\fi}%
+ }%
+ \fi
+ \else
+ \edef\ap@thisWidth{\standardStampWidth}%
+ \edef\ap@thisHeight{\standardStampHeight}%
+ \fi
+ \ifx\annotpro@scale\@empty
+ \ifx\annotpro@widthTo\@empty
+ \ifx\annotpro@heightTo\@empty\else % heightTo
+ \edef\ap@thisWidth{%
+ (\ap@thisWidth)*\noexpand
+ \ratio{\annotpro@heightTo}{\ap@thisHeight}}%
+ \edef\ap@thisHeight{\annotpro@heightTo}%
+ \fi
+ \else % widthTo
+ \edef\ap@thisHeight{%
+ (\ap@thisHeight)*\noexpand
+ \ratio{\annotpro@widthTo}{\ap@thisWidth}}%
+ \edef\ap@thisWidth{\annotpro@widthTo}%
+ \fi
+ \else %scale
+ \edef\ap@thisWidth{(\ap@thisWidth)*\noexpand
+ \real{\annotpro@scale}}%
+ \edef\ap@thisHeight{(\ap@thisHeight)*\noexpand
+ \real{\annotpro@scale}}%
+ \fi
+ \setlength{\@tempdima}{\ap@thisWidth}%
+ \edef\ap@thisWidth{\the\@tempdima}%
+ \setlength{\@tempdima}{\ap@thisHeight}%
+ \edef\ap@thisHeight{\the\@tempdima}%
+ \ifx\annotpro@rotate\empty\else
+ \def\ap@this@Rotate{/Rotate \annotpro@rotate}%
+ \ap@set@Rotate@BBox
+ \fi
+ \or
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \ifx\annotpro@file\@empty\PackageError{annot_pro}%
+ {You must specify a path the file to be
+ attached using the file key.}\fi
+ \def\ap@this@FS{/FS {apEmbedFile\the\ap@annot@cnt}}%
+ \edef\ap@thisWidth{\@nameuse{ap@\annotpro@@name Width}}%
+ \edef\ap@thisHeight{\@nameuse{ap@\annotpro@@name Height}}%
+ \ap@EmbedThisFile
+ \or
+ \ifx\annotpro@@name\@empty\edef\annotpro@@name{\ap@def@name}\fi
+ \ifx\annotpro@width\@empty\else
+ \setlength\@tempdima{\annotpro@width}%
+ \def\annotpro@width{\the\@tempdima}\fi
+ \edef\ap@thisWidth{\ifx\annotpro@width\@empty
+ \@nameuse{ap@\annotpro@@name Width}\else
+ \annotpro@width\fi}%
+ \ifx\annotpro@height\@empty\else
+ \setlength\@tempdima{\annotpro@height}%
+ \def\annotpro@height{\the\@tempdima}\fi
+ \edef\ap@thisHeight{\ifx\annotpro@height\@empty
+ \@nameuse{ap@\annotpro@@name Height}\else
+ \annotpro@height\fi}%
+ \fi
+ \ifx\annotpro@margin\@empty\let\apmargintext\@empty
+ \expandafter\relax\else\expandafter\marginpar\fi
+ {\pdf@rect{\ap@Bbox{\ap@thisWidth}{\ap@thisHeight}}\literalps@out{%
+ [ \eq@objdef\ap@Rect
+ /F 4\ap@readonly
+ /Open \annotpro@open
+ /Title (\annotpro@enc@title)
+ /Subj (\annotpro@enc@subject)
+\if\ap@save@type\ap@freetext@type
+ /RC(\eq@RV@Body\annotpro@RC\eq@RV@endBody)
+ /Contents (\annotpro@C)
+ /DS (\ap@defaultstyle)
+ \ifx\annotpro@bgcolor\@empty\else
+ /C [\annotpro@enc@bgcolor]\fi
+ /DA (\annotpro@enc@bcolor\space/Helv 12 Tf)
+ \ap@border@code
+\else
+ /Open \annotpro@open
+ /Contents (\annotpro@enc@contents)
+ /Color [\annotpro@enc@color]
+\fi
+ /Name (\annotpro@@name)
+ /Subtype/\ap@type
+ /NM (annotpro\the\ap@annot@cnt)
+ /M (D:\ap@pdfdate)
+ \ap@this@AP\ap@this@FS\ap@this@CA\ap@this@Rotate
+ /ANN pdfmark}\apmargintext}%
+ \to@insertStrucTabOrder{Annot}\endgroup
+}
+\def\ap@set@Rotate@BBox{%
+ \CalculateSin\annotpro@rotate\CalculateCos\annotpro@rotate
+ \edef\c@cos{\UseCos\annotpro@rotate}%
+ \edef\c@sin{\UseSin\annotpro@rotate}%
+ \@tempdimb=\c@cos pt
+ \@tempdimb=\c@sin\@tempdimb
+ \let\ap@sign\@empty
+ \ifdim\@tempdimb<\z@\def\ap@sign{-}\fi
+ \@tempdima=\ap@sign\ap@thisWidth
+ \@tempdima=\c@cos\@tempdima
+ \@tempdimb=\ap@thisHeight
+ \@tempdimb=\c@sin\@tempdimb
+ \advance\@tempdima by\@tempdimb
+ \edef\ap@temp@thisWidth{\the\@tempdima}%
+ \@tempdima=\ap@thisWidth
+ \@tempdima=\c@sin\@tempdima
+ \@tempdimb=\ap@thisHeight
+ \@tempdimb=\c@cos\@tempdimb
+ \advance\@tempdima by\ap@sign\@tempdimb
+ \@tempdimb=\ap@temp@thisWidth\relax
+ \ifdim\@tempdimb<\z@\@tempdimb=-\the\@tempdimb\fi
+ \ifdim\@tempdima<\z@\@tempdima=-\the\@tempdima\fi
+ \edef\ap@thisWidth{\the\@tempdimb}%
+ \edef\ap@thisHeight{\the\@tempdima}%
+}
+\def\ap@EmbedThisFile{%
+ \literalps@out{%
+ [ /_objdef {apEmbedFile\the\ap@annot@cnt}/type/dict/OBJ pdfmark
+ [ {apEmbedFile\the\ap@annot@cnt} <<
+ /F (\ap@thisFileName)
+ /UF (\ap@thisFileName)
+ /EF << /F {apFileStream\the\ap@annot@cnt} >>
+ /Type/Filespec
+ >> /PUT pdfmark}%
+ \literalps@out{%
+ [ /_objdef {apFileStream\the\ap@annot@cnt}/type/stream/OBJ pdfmark
+ [ {apFileStream\the\ap@annot@cnt} (\annotpro@file)
+ (r) file /PUT pdfmark
+ [ {apFileStream\the\ap@annot@cnt} <<
+ /Type/EmbeddedFile
+ >> /PUT pdfmark
+ [ {apFileStream\the\ap@annot@cnt} /CLOSE pdfmark}%
+}
+\setAnnotOptions{title,subject,open=false,color}
+\endinput
+%%
+%% End of file `annot_pro.sty'.
diff --git a/texmf-dist/tex/latex/graphicxsp/graphicxsp.sty b/texmf-dist/tex/latex/graphicxsp/graphicxsp.sty
new file mode 100644
index 00000000..7f59f1a2
--- /dev/null
+++ b/texmf-dist/tex/latex/graphicxsp/graphicxsp.sty
@@ -0,0 +1,552 @@
+%%
+%% This is file `graphicxsp.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% graphicxsp.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% graphicxsp.sty package, 2007-08-14 %%
+%% Copyright (C) 2007 D. P. Story %%
+%% storyd@owc.edu / dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{graphicxsp}
+ [2016/02/19 v1.0 Graphicxsp: Extension of graphicx for dvips/dvipsone (dps)]
+\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+\DeclareOption{preview}{\previewtrue}
+\DeclareOption{dvipsone}{\def\gxsp@drivernum{0}}
+\DeclareOption{dvips}{\def\gxsp@drivernum{1}}
+\DeclareOption{showembeds}{\let\gxsp@showembeds=0}
+\let\gxsp@showembeds=1
+\def\gxsp@drivernum{1}
+\DeclareOption{draft}{\spxGin@drafttrue
+ \PassOptionsToPackage{draft}{graphicx}}
+\DeclareOption{final}{\spxGin@draftfalse
+ \PassOptionsToPackage{final}{graphicx}}
+\DeclareOption{shownonames}{\@spx@shownameindraftfalse}
+\newif\if@spx@shownameindraft \@spx@shownameindrafttrue
+\newif\ifspxGin@draft \spxGin@draftfalse
+\InputIfFileExists{graphics.cfg}{}{}
+\ProcessOptions
+\@ifundefined{eq@driver@name}{}{%
+\def\DVIPSONE{dvipsone}\ifx\eq@driver@name\DVIPSONE
+\def\gxsp@drivernum{0}\fi}
+\RequirePackage{graphicx}
+\ifspxGin@draft\Gin@drafttrue\fi
+\RequirePackage{eso-pic}
+\RequirePackage{verbatim}
+\def\grcxsp@hideEPS{\AtBeginDvi{\special{!%
+/product where{%
+pop
+product(Distiller)search{%
+ pop pop pop
+ userdict
+ /?pdfmark /exec load put%
+}{%
+pop
+userdict
+ begin
+ /?pdfmark /pop load def
+ end
+}ifelse%
+}if%
+}}}
+\@ifpackageloaded{hyperref}{\let\grcxsp@hideEPS\relax}{\grcxsp@hideEPS}
+\def\gxsp@literalps@out#1{\special{ps:#1}}
+\ifnum\gxsp@drivernum=1\relax
+\special{!userdict begin
+ /TeXtoPDF {65536 div DVImag mul} def % sp to pts
+ /PDFtoDvips {72.27 div Resolution mul} def % points to dots
+ /PDFtoVDvips {72.27 div VResolution mul} def % points to dots
+ /DvipstoPDF {72.27 mul Resolution div} def % dots to points
+ /HTeXtoDvips {TeXtoPDF PDFtoDvips} def % sp to dots
+ /VTeXtoDvips {TeXtoPDF PDFtoVDvips} def end} % sp to dots
+\special{!userdict begin /cstr {currentpoint translate
+ 1 PDFtoDvips DVImag mul -1 PDFtoDvips DVImag mul scale}def end}
+\def\gxsp@setPSCoor{cstr }
+\def\b@grxsp@Literal{userdict begin}
+\def\e@grxsp@Literal{end}
+\else
+\def\gxsp@setPSCoor{undsclx }
+\let\b@grxsp@Literal\@empty
+\let\e@grxsp@Literal\@empty
+\fi
+\special{!\b@grxsp@Literal
+ /currentpage 0 def
+ /graphicxspCnt 0 def
+ /graphicxspStr 10 string def
+ /graphicxspMergeStr {2 copy length exch length add string dup dup
+ 4 3 roll 4 index length exch putinterval 3 1 roll exch
+ 0 exch putinterval} def
+ /grcxspObjDef {
+ /graphicxspCnt graphicxspCnt 1 add def
+ currentpage graphicxspStr cvs graphicxspMergeStr
+ (-) graphicxspMergeStr
+ graphicxspCnt graphicxspStr cvs
+ graphicxspMergeStr
+ } def \e@grxsp@Literal
+}
+\def\ESO@AeBip@Hook{}
+\newcommand{\AddToEmbeddedEPSs}{\g@addto@macro\ESO@AeBip@Hook}
+\@ifundefined{@ShipoutPicture}{%
+ \ESO@isMEMOIR{%
+ \AtBeginShipout{%
+ \@tempdima=-\trimedge
+ \advance\@tempdima-\paperwidth
+ \advance\@tempdima\stockwidth
+ \if@twoside\ifodd\c@page\else
+ \advance\@tempdima2\trimedge
+ \advance\@tempdima\paperwidth
+ \advance\@tempdima-\stockwidth
+ \fi\fi
+ \@tempdimb=\ESO@yoffsetI
+ \advance\@tempdimb-\trimtop
+ \nointerlineskip
+ \AtBeginShipoutUpperLeft{%
+ \put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb}){%
+ \ESO@HookIII\ESO@HookI\ESO@HookII
+ \global\let\ESO@HookII\@empty
+ }%
+ }%
+ }
+ }{%
+ \AtBeginShipout{%
+ \nointerlineskip
+ \AtBeginShipoutUpperLeft{%
+ \put(0,\LenToUnit{\ESO@yoffsetI}){%
+ \ESO@HookIII\ESO@AeBip@Hook\ESO@HookI\ESO@HookII% dps
+ \global\let\ESO@HookII\@empty
+ \global\let\ESO@AeBip@Hook\@empty% dps
+ }%
+ }%
+ }
+ }
+}{%
+ \renewcommand{\@ShipoutPicture}{%
+ \bgroup
+ \@tempswafalse%
+ \ifx\ESO@HookI\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@HookII\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@HookIII\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@AeBip@Hook\@empty\else\@tempswatrue\fi%dps(08/16/07)
+ \if@tempswa%
+ \@tempdima=1in\@tempdimb=-\@tempdima%
+ \advance\@tempdimb\ESO@yoffsetI%
+ \ESO@isMEMOIR{%
+ \advance\@tempdima\trimedge%
+ \advance\@tempdima\paperwidth%
+ \advance\@tempdima-\stockwidth%
+ \if@twoside\ifodd\c@page\else%
+ \advance\@tempdima-2\trimedge%
+ \advance\@tempdima-\paperwidth%
+ \advance\@tempdima\stockwidth%
+ \fi\fi%
+ \advance\@tempdimb\trimtop}%
+ \unitlength=1pt%
+ \global\setbox\@cclv\vbox{%
+ \vbox{\let\protect\relax
+ \pictur@(0,0)(\strip@pt\@tempdima,\strip@pt\@tempdimb)%
+ \ESO@HookIII\ESO@AeBip@Hook\ESO@HookI\ESO@HookII%dps
+ \global\let\ESO@HookII\@empty%
+ \global\let\ESO@AeBip@Hook\@empty% %dps
+ \endpicture}%
+ \nointerlineskip%
+ \box\@cclv}%
+ \fi
+ \egroup
+ }
+}
+\AddToShipoutPicture{\special{ps: /currentpage \thepage\space def}}
+\def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active \catcode`\^^I=12
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start
+}
+\def\endverbatimwrite{\@esphack}
+\def\gxsp@IWVO{\immediate\write\verbatim@out}
+\def\x@namedef#1{\expandafter\xdef\csname #1\endcsname}
+\def\e@namedef#1{\expandafter\edef\csname #1\endcsname}
+\newcount\grxsp@cnt \grxsp@cnt=0
+\def\grcxsp@setPictureDimen#1#2#3#4#5{%
+ \x@namedef{#1Gin@llx}{#2}\x@namedef{#1Gin@lly}{#3}%
+ \x@namedef{#1Gin@urx}{#4}\x@namedef{#1Gin@ury}{#5}%
+ \x@namedef{#1BBox}{#2 #3 #4 #5}%
+ \begingroup
+ \@tempdima=#4bp
+ \advance\@tempdima-#2bp
+ \@tempdima=.99626\@tempdima
+ \x@namedef{#1widthOf}{\strip@pt\@tempdima}%
+ \@tempdima=#5bp
+ \advance\@tempdima-#3bp
+ \@tempdima=.99626\@tempdima
+ \x@namedef{#1heightOf}{\strip@pt\@tempdima}%
+ \endgroup
+}
+\def\heightOf#1{\csname#1heightOf\endcsname}
+\def\widthOf#1{\csname#1widthOf\endcsname}
+\def\bboxOf#1{\csname#1BBox\endcsname}
+\def\llxOf#1{\csname#1Gin@llx\endcsname}
+\def\llyOf#1{\csname#1Gin@lly\endcsname}
+\def\urxOf#1{\csname#1Gin@urx\endcsname}
+\def\uryOf#1{\csname#1Gin@ury\endcsname}
+\newcommand{\embedEPS}[3][]{%
+ \@ifundefined{#2Gin@llx}{}{%
+ \PackageError{graphicxsp}%
+ {The name, #2, on line \the\inputlineno\MessageBreak
+ is already defined. All embedded graphics\MessageBreak
+ must be assigned a unique name}
+ {Give this embedded graphic a unique name.}%
+ }%
+ \begingroup
+ \let\Gin@transparencygroup\@empty
+ \let\input@path\Ginput@path
+ \filename@parse{#3.eps}%
+ \Gin@getbase{.eps}%
+ \@ifundefined{Gin@base}{%
+ \PackageError{graphicxsp}%
+ {%
+ Graphics file #3 specified on \the\inputlineno\MessageBreak
+ was not found%
+ }{%
+ Verify the file exists, is an eps file,\MessageBreak
+ is on the latex search path, or is in the\MessageBreak
+ current directory.%
+ }%
+ }{}%
+ \e@namedef{gxsp@Gin@base}{\Gin@base}%
+ \Gread@eps{\gxsp@Gin@base.eps}%
+ \setkeys{Gin}{name=#2,#1}%
+ \grcxsp@setPictureDimen%
+ {\Gin@name}{\Gin@llx}{\Gin@lly}{\Gin@urx}{\Gin@ury}%
+ \def\gxsp@embedSF{1}%
+ \@tempdima=\Gin@urx bp
+ \advance\@tempdima-\Gin@llx bp
+ \ifdim\@tempdima>\paperwidth
+ \Gscale@div\gxsp@embedSF\paperwidth\@tempdima
+ \@tempdima=\Gin@ury bp
+ \advance\@tempdima-\Gin@lly bp
+ \@tempdima=\gxsp@embedSF\@tempdima
+ \ifdim\@tempdima>\paperheight
+ \edef\gxsp@embedSFSave{\gxsp@embedSF}%
+ \Gscale@div\gxsp@embedSF\paperheight\@tempdima
+ \@tempdima=\gxsp@embedSFSave\p@
+ \@tempdima=\gxsp@embedSF\@tempdima
+ \edef\gxsp@embedSF{\strip@pt\@tempdima}%
+ \fi
+ \else
+ \@tempdima=\Gin@ury bp
+ \advance\@tempdima\Gin@lly bp
+ \ifdim\@tempdima>\paperheight
+ \Gscale@div\gxsp@embedSF\paperheight\@tempdima
+ \fi
+ \fi
+ \edef\@tempa{%
+ \noexpand\AddToEmbeddedEPSs{\noexpand\AtPageLowerLeft%
+ {\noexpand\scalebox{\gxsp@embedSF}%
+ {\noexpand\gxsp@embedEPS{\gxsp@Gin@base}{\Gin@name}}}%
+ \noexpand\AtPageCenter{\noexpand\gcxsp@wrapEmbeddedFigure%
+ {\Gin@transparencygroup}{#2}{\Gin@transparency}}}}\@tempa
+ \endgroup
+}
+\@onlypreamble{\embedEPS}
+\def\grcxsp@coverEmbeds{%
+ \AddToEmbeddedEPSs{\AtPageLowerLeft{\colorbox{white}{%
+ \parbox[b][\paperheight]{\paperwidth}{\hfill\vfill}}}}}
+\if\gxsp@showembeds1%
+\AtBeginDocument{\grcxsp@coverEmbeds}
+\else
+\let\grcxsp@coverEmbeds\relax
+\fi
+\def\grcxsp@maxDim{5000}
+\newcommand{\gxsp@embedEPS}[2]{%
+ \gxsp@literalps@out{gsave \gxsp@setPSCoor
+ [ /BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]\space/_objdef {Embedded:#2}
+ /BP pdfmark grestore}%
+ \message{<Embedding #1>}%
+ \includegraphics{#1}%
+ \gxsp@literalps@out{[ /EP pdfmark}%
+}
+\def\gcxsp@wrapEmbeddedFigure#1#2#3{%
+ \def\Gin@transparencygroup{#1}\def\Gin@transparency{#3}%
+ \gxsp@literalps@out{gsave \gxsp@setPSCoor
+ \ifGin@clip
+ [/BBox [\llxOf{#2}\space\llyOf{#2}\space
+ \urxOf{#2}\space\uryOf{#2}]
+ \else
+ [ /BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]
+ \fi\space /_objdef {#2}
+ \ifx\Gin@transparencygroup\@empty\else
+ \ifx\Gin@transparencygroup\Gin@exclamation
+ /Group << /S/Transparency >>%
+ \else
+ /Group << /S/Transparency \Gin@transparencygroup >>%
+ \fi
+ \fi\space
+ /BP pdfmark
+ [ {Embedded:#2} /SP pdfmark
+ [/EP pdfmark
+ grestore}%
+}
+\newcommand{\sp@createImage}[3][]{%
+ \@ifundefined{#3Gin@llx}{}{%
+ \PackageError{graphicxsp}%
+ {The name, #3, on line \the\inputlineno\space\MessageBreak
+ is already defined. All embedded graphics\MessageBreak
+ must be assigned a unique name}
+ {Give this embedded graphic a unique name.}%
+ }%
+ \setkeys{Gin}{#1}\def\Gin@name{#3}%
+ \edef\@gtempa{#2 }%
+ \expandafter\Gread@parse@bb\@gtempa \\%
+ \begingroup\grxcsp@createImage
+}
+\let\postEP\@empty
+\long\def\grxcsp@createImage#1\end#2{%
+ \def\reserved@a{#2}\ifx\reserved@a\@currenvir
+ \end{#2}\else\@badend{#2}\fi
+ \edef\temp@transparencyGroup{%
+ \ifx\Gin@transparencygroup\@empty\else
+ \ifx\Gin@transparencygroup\Gin@exclamation
+ /Group << /S/Transparency >>%
+ \else
+ /Group << /S/Transparency \Gin@transparencygroup >>%
+ \fi
+ \fi}%
+ \grcxsp@setPictureDimen%
+ {\Gin@name}{\Gin@llx}{\Gin@lly}{\Gin@urx}{\Gin@ury}%
+ \edef\@tempa{%
+ \noexpand\AddToEmbeddedEPSs{\noexpand\AtPageLowerLeft{%
+ \noexpand\gxsp@literalps@out{gsave \gxsp@setPSCoor
+ [ /BBox [\Gin@llx\space\Gin@lly\space\Gin@urx\space\Gin@ury]
+ /_objdef {\Gin@name} \temp@transparencyGroup\space/BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ {#1} ?pdfmark
+ [ /EP pdfmark
+ grestore
+ }%
+ }}}\@tempa
+ \endgroup
+}
+\let\createImage\sp@createImage
+\let\endcreateImage\endsp@createImage
+\@onlypreamble{\createImage}
+\def\xsp@sanitize{\catcode`\_=12\relax}
+\newcommand{\insertEPS}{\bgroup\xsp@sanitize
+ \@ifstar
+ {\Gin@cliptrue\let\gcxsp@star*\gcxsp@insertEPS}%
+ {\Gin@clipfalse\let\gcxsp@star\@empty\gcxsp@insertEPS}}
+\newcommand{\gcxsp@insertEPS}[2][]%
+ {\expandafter\includegraphics\gcxsp@star[name=#2,#1]{}\egroup}
+\newif\if@Ginnamed\@Ginnamedfalse
+\define@key{Gin}{name}[]{\def\Gin@name{#1}%
+ \@Ginnamedtrue\let\Ginclude@eps\Ginclude@eps@SP}
+\def\Gin@name{}
+\define@key{Gin}{transparencyGroup}[!]{\def\Gin@transparencygroup{#1}}
+\def\Gin@transparencygroup{}
+\define@key{Gin}{transparency}[]{\def\Gin@transparency{#1}}%
+\def\Gin@transparency{}%
+\define@key{Gin}{SMask}[]{\def\Gin@SMask{#1}}%
+\def\Gin@SMask{}%
+\define@key{Gin}{presp}{\def\Gin@presp{#1}}
+\def\Gin@presp{}
+\define@key{Gin}{postsp}{\def\Gin@postsp{#1}}
+\def\Gin@postsp{}
+\define@key{Gin}{SMask}[]{\def\GinSP@SMask{#1}}
+\def\GinSP@SMask{}
+\define@key{GinSP}{subtype}[Luminosity]{\def\GinSP@subtype{#1}}
+\def\GinSP@subtype{Luminosity}
+\define@key{GinSP}{group}[]{\def\GinSP@group{#1}}
+\def\GinSP@group{}
+\define@key{GinSP}{bc}[]{\def\GinSP@bc{#1}}
+\def\GinSP@bc{}
+\define@key{GinSP}{tr}[]{\def\GinSP@tr{#1}}
+\define@key{GinSP}{None}[None]{\def\SMaskSP@None{#1}}
+\def\GinSP@tr{}
+\def\SMaskSP@None{}
+\def\SMaskSP@Identity{Identity}
+\def\sp@setSMask{%
+ \ifx\GinSP@SMask\SMaskSP@None[ /SMask/None /SetTransparency pdfmark
+ \else
+ [ /SMask << /S/\GinSP@subtype\space
+ \ifx\GinSP@bc\@empty\else/BC\GinSP@bc\space\fi
+ \ifx\GinSP@tr\@empty\else\ifx\GinSP@tr\SMaskSP@Identity%
+ /TR/Identity\else/TR {\GinSP@tr}\space\fi\fi
+ /G {\GinSP@group} >> /SetTransparency pdfmark
+ \fi
+}
+\newcommand{\setSMask}[2][]{%
+ \setkeys{GinSP}{#1}\def\GinSP@group{#2}%
+ \special{ps: \sp@setSMask}%
+}
+\def\Gin@setfile#1#2#3{%
+ \ifx\\#2\\\Gread@false\fi
+ \ifGin@bbox\else
+ \ifGread@
+\if@Ginnamed %dps (08/16/07)
+ \edef\Gin@llx{\csname\Gin@name Gin@llx\endcsname}%
+ \edef\Gin@lly{\csname\Gin@name Gin@lly\endcsname}%
+ \edef\Gin@urx{\csname\Gin@name Gin@urx\endcsname}%
+ \edef\Gin@ury{\csname\Gin@name Gin@ury\endcsname}%
+\else
+ \csname Gread@%
+ \expandafter\ifx\csname Gread@#1\endcsname\relax
+ eps%
+ \else
+ #1%
+ \fi
+ \endcsname{\Gin@base#2}%
+\fi
+ \else
+ \Gin@nosize{#3}%
+ \fi
+ \fi
+ \Gin@viewport@code
+ \Gin@nat@height\Gin@ury bp%
+ \advance\Gin@nat@height-\Gin@lly bp%
+ \Gin@nat@width\Gin@urx bp%
+ \advance\Gin@nat@width-\Gin@llx bp%
+ \Gin@req@sizes
+ \expandafter\ifx\csname Ginclude@#1\endcsname\relax
+ \Gin@drafttrue
+ \expandafter\ifx\csname Gread@#1\endcsname\relax
+ \@latex@error{Can not include graphics of type: #1}\@ehc
+ \global\expandafter\let\csname Gread@#1\endcsname\@empty
+ \fi
+ \fi
+ \leavevmode
+ \ifGin@draft
+ \hb@xt@\Gin@req@width{%
+ \vrule\hss
+ \vbox to \Gin@req@height{%
+ \hrule \@width \Gin@req@width
+ \vss
+ \if@Ginnamed %dps (08/18/07)
+ \if@spx@shownameindraft
+ \rlap{ \ttfamily\Gin@name}\fi
+ \else
+ \edef\@tempa{#3}%
+ \rlap{ \ttfamily\expandafter\strip@prefix\meaning\@tempa}%
+ \fi
+ \vss
+ \hrule}%
+ \hss\vrule}%
+ \else
+\if@Ginnamed\else % dps (08/16/07)
+ \@addtofilelist{#3}%
+ \ProvidesFile{#3}[Graphic file (type #1)]%
+\fi
+ \setbox\z@\hbox{\csname Ginclude@#1\endcsname{#3}}%
+ \dp\z@\z@
+ \ht\z@\Gin@req@height
+ \wd\z@\Gin@req@width
+ \ifpreview{\setlength{\fboxsep}{0pt}\fbox{\box\z@}}\else\box\z@\fi%
+ \fi}
+\def\Gin@getbase#1{%
+ \edef\Gin@tempa{%
+ \def\noexpand\@tempa####1#1\space{%
+ \def\noexpand\Gin@base{####1}}}%
+ \if@Ginnamed
+ \edef\Gin@ext{#1}\edef\Gin@base{\Gin@name}%dps (08/18/07)
+ \else
+ \IfFileExists{\filename@area\filename@base#1}%
+ {\Gin@tempa
+ \expandafter\@tempa\@filef@und
+ \edef\Gin@ext{#1}}{}%
+ \fi
+}%
+\def\Gin@computeSF{%
+ \def\@tempa{!}%
+ \edef\gxsp@scaleFactor@x{\Gin@scalex}%
+ \edef\gxsp@scaleFactor@y{\Gin@scaley}%
+ \ifx\Gin@scaley\@tempa % proportional height
+ \ifx\Gin@scalex\@tempa % proportional width
+ \def\gxsp@scaleFactor@x{1}%
+ \def\gxsp@scaleFactor@y{1}%
+ \else % specified width
+ \edef\gxsp@scaleFactor@y{\Gin@scalex}%
+ \fi
+ \else % specified height
+ \ifx\Gin@scalex\@tempa % proportional width
+ \edef\gxsp@scaleFactor@x{\Gin@scaley}%
+ \fi
+ \fi
+}
+\def\gxsp@setBBox{%
+ \ifGin@clip
+ [/BBox [\Gin@llx\space\Gin@lly\space\Gin@urx\space\Gin@ury]
+ \else
+ [/BBox [-\grcxsp@maxDim\space-\grcxsp@maxDim\space
+ \grcxsp@maxDim\space\grcxsp@maxDim]
+ \fi
+}
+\def\Ginclude@eps@SP#1{%
+ \bgroup
+ \ifx\GinSP@SMask\@empty\else
+ \edef\sp@expand@temp{\noexpand\setkeys{GinSP}{\GinSP@SMask}}%
+ \sp@expand@temp
+ \ifx\SMaskSP@None\@empty\ifx\GinSP@group\@empty
+ \PackageError{graphicxsp}{The group key is required when you
+ specify a SMask.}{Specify a group name for the group key.}%
+ \fi\fi\fi
+ \Gin@computeSF
+ \ifGin@bbox
+ \gxsp@literalps@out{%
+ gsave \gxsp@setPSCoor
+ \ifx\GinSP@SMask\@empty\else\sp@setSMask\fi
+ \gxsp@setBBox\space
+ (\Gin@name:bbox@) grcxspObjDef
+ /graphicxspretn exch cvx cvn def
+ /_objdef {//graphicxspretn} /BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ [ {\Gin@name} /SP pdfmark
+ [ /EP pdfmark
+ \gxsp@scaleFactor@x\space\gxsp@scaleFactor@y\space scale
+ -\Gin@llx\space -\Gin@lly\space moveto
+ currentpoint translate
+ \Gin@presp
+ [ {//graphicxspretn} /SP pdfmark
+ \Gin@postsp
+ grestore
+ }%
+ \else
+ \gxsp@literalps@out{%
+ gsave \gxsp@setPSCoor
+ \ifx\GinSP@SMask\@empty\else\sp@setSMask\fi
+ \gxsp@setBBox\space
+ (\Gin@name:grxsp@) grcxspObjDef
+ /graphicxspretn exch cvx cvn def
+ /_objdef {//graphicxspretn} /BP pdfmark
+ \ifx\Gin@transparency\@empty\else
+ [ \Gin@transparency\space/SetTransparency pdfmark\fi
+ [ {\Gin@name} /SP pdfmark
+ [ /EP pdfmark
+ \gxsp@scaleFactor@x\space\gxsp@scaleFactor@y\space scale
+ \ifx\Gin@viewport@code\relax\else
+ -\Gin@llx\space-\Gin@lly\space moveto
+ currentpoint translate\fi
+ \Gin@presp
+ [ {//graphicxspretn} /SP pdfmark
+ \Gin@postsp
+ grestore
+ }%
+ \fi
+ \egroup}
+\endinput
+%%
+%% End of file `graphicxsp.sty'.